DS3: Use slot_data instead of the external Json file (#1155)
* Update items_data.py added `Red and White Round Shield`, `Crystal Scroll`, `Magic Stoneplate Ring`, and `Outrider Knight` gear. * Update locations_data.py Added `US: Red and White Round Shield`, `CKG: Magic Stoneplate Ring`, `GA: Outrider Knight` set, and `GA: Crystal Scroll` * Update __init__.py Add `Karla's Ashes` requirements * Update items_data.py Add `Irithyll Rapier, Hollow's Ashes, Irina's Ashes, Karla's Ashes, Cornyx's Ashes, and Orbeck's Ashes` * Update locations_data.py Add `Irithyll Rapier, Hollow's Ashes, Irina's Ashes, Karla's Ashes, Orbeck's Ashes, and Cornyx's Ashes` * Update items_data.py removed "hollows ashes" * Update locations_data.py remove "hollows ashes" * Revert "WebHost: Add the DarkSouls3 entry to upload and download the client file" This reverts commit 5e7c2d4cee485e373ffe60932134013548192c8e. * ds3: Use fill_slot_data instead of generate_output * DS3: Increment data_version * DS3: Fix item name in rule * DS3: Set required client version to 0.3.6 and added offsets between items and location tables for backward compatibility * DS3: Resolve Python 3.8 compatibility * DS3: Removed useless region for locations IDs consistency * DS3: Changed i in loop * DS3: Remove AP.json from the documentation * DS3: Put back json upload and download * DS3: Avoid empty downloads (cherry picked from commit c4c485140d2c427fe49c5b23444a4f1dd111d5b7) Co-authored-by: Br00ty <83629348+Br00ty@users.noreply.github.com>
This commit is contained in:
parent
bf142b32c9
commit
ab9f3767e2
|
@ -43,7 +43,7 @@
|
||||||
{% elif patch.game | supports_apdeltapatch %}
|
{% elif patch.game | supports_apdeltapatch %}
|
||||||
<a href="{{ url_for("download_patch", patch_id=patch.id, room_id=room.id) }}" download>
|
<a href="{{ url_for("download_patch", patch_id=patch.id, room_id=room.id) }}" download>
|
||||||
Download Patch File...</a>
|
Download Patch File...</a>
|
||||||
{% elif patch.game == "Dark Souls III" %}
|
{% elif patch.game == "Dark Souls III" and patch.data %}
|
||||||
<a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}" download>
|
<a href="{{ url_for("download_slot_file", room_id=room.id, player_id=patch.player_id) }}" download>
|
||||||
Download JSON File...</a>
|
Download JSON File...</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# world/dark_souls_3/__init__.py
|
# world/dark_souls_3/__init__.py
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
from .Items import DarkSouls3Item
|
from .Items import DarkSouls3Item
|
||||||
from .Locations import DarkSouls3Location
|
from .Locations import DarkSouls3Location
|
||||||
|
@ -237,7 +238,9 @@ class DarkSouls3World(World):
|
||||||
for i in range(item_pool_len, total_required_locations):
|
for i in range(item_pool_len, total_required_locations):
|
||||||
self.multiworld.itempool += [self.create_item("Soul of an Intrepid Hero")]
|
self.multiworld.itempool += [self.create_item("Soul of an Intrepid Hero")]
|
||||||
|
|
||||||
def generate_output(self, output_directory: str):
|
def fill_slot_data(self) -> Dict[str, object]:
|
||||||
|
slot_data: Dict[str, object] = {}
|
||||||
|
|
||||||
# Depending on the specified option, modify items hexadecimal value to add an upgrade level
|
# Depending on the specified option, modify items hexadecimal value to add an upgrade level
|
||||||
item_dictionary_copy = item_dictionary.copy()
|
item_dictionary_copy = item_dictionary.copy()
|
||||||
if self.multiworld.randomize_weapons_level[self.player]:
|
if self.multiworld.randomize_weapons_level[self.player]:
|
||||||
|
@ -271,7 +274,7 @@ class DarkSouls3World(World):
|
||||||
else:
|
else:
|
||||||
locations_target.append(0)
|
locations_target.append(0)
|
||||||
|
|
||||||
data = {
|
slot_data = {
|
||||||
"options": {
|
"options": {
|
||||||
"auto_equip": self.multiworld.auto_equip[self.player].value,
|
"auto_equip": self.multiworld.auto_equip[self.player].value,
|
||||||
"lock_equip": self.multiworld.lock_equip[self.player].value,
|
"lock_equip": self.multiworld.lock_equip[self.player].value,
|
||||||
|
@ -287,7 +290,4 @@ class DarkSouls3World(World):
|
||||||
"itemsAddress": items_address
|
"itemsAddress": items_address
|
||||||
}
|
}
|
||||||
|
|
||||||
# generate the file
|
return slot_data
|
||||||
filename = f"AP-{self.multiworld.seed_name}-P{self.player}-{self.multiworld.player_name[self.player]}.json"
|
|
||||||
with open(os.path.join(output_directory, filename), 'w') as outfile:
|
|
||||||
json.dump(data, outfile)
|
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
The Dark Souls III AP Client is a dinput8.dll triggered when launching Dark Souls III. This .dll file will launch a command
|
The Dark Souls III AP Client is a dinput8.dll triggered when launching Dark Souls III. This .dll file will launch a command
|
||||||
prompt where you can read information about your run and write any command to interact with the Archipelago server.
|
prompt where you can read information about your run and write any command to interact with the Archipelago server.
|
||||||
|
|
||||||
The randomization is performed by the AP.json file, an output file generated by the Archipelago server.
|
|
||||||
|
|
||||||
## Installation Procedures
|
## Installation Procedures
|
||||||
|
|
||||||
<span style="color:tomato">
|
<span style="color:tomato">
|
||||||
|
@ -19,15 +17,13 @@ The randomization is performed by the AP.json file, an output file generated by
|
||||||
</span>
|
</span>
|
||||||
This client has only been tested with the Official Steam version of the game (v1.15/1.35) not matter which DLCs are installed.
|
This client has only been tested with the Official Steam version of the game (v1.15/1.35) not matter which DLCs are installed.
|
||||||
|
|
||||||
Get the dinput8.dll from the [Dark Souls III AP Client](https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/releases).
|
Get the dinput8.dll from the [Dark Souls III AP Client](https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/releases) and
|
||||||
Then you need to add the two following files at the root folder of your game (e.g. "SteamLibrary\steamapps\common\DARK SOULS III\Game"):
|
add it at the root folder of your game (e.g. "SteamLibrary\steamapps\common\DARK SOULS III\Game")
|
||||||
- **dinput8.dll**
|
|
||||||
- **AP.json** : The .json file downloaded from the multiworld room or provided by the host, named AP-{ROOM_ID}.json, has to be renamed to AP.json.
|
|
||||||
|
|
||||||
## Joining a MultiWorld Game
|
## Joining a MultiWorld Game
|
||||||
|
|
||||||
1. Run DarkSoulsIII.exe or run the game through Steam
|
1. Run DarkSoulsIII.exe or run the game through Steam
|
||||||
2. Type in "/connect {SERVER_IP}:{SERVER_PORT}" in the "Windows Command Prompt" that opened
|
2. Type in "/connect {SERVER_IP}:{SERVER_PORT} {SLOT_NAME}" in the "Windows Command Prompt" that opened
|
||||||
3. Once connected, create a new game, choose a class and wait for the others before starting
|
3. Once connected, create a new game, choose a class and wait for the others before starting
|
||||||
4. You can quit and launch at anytime during a game
|
4. You can quit and launch at anytime during a game
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
Le client Archipelago de Dark Souls III est un fichier dinput8.dll. Cette .dll va lancer une invite de commande Windows
|
Le client Archipelago de Dark Souls III est un fichier dinput8.dll. Cette .dll va lancer une invite de commande Windows
|
||||||
permettant de lire des informations de la partie et écrire des commandes pour intéragir avec le serveur Archipelago.
|
permettant de lire des informations de la partie et écrire des commandes pour intéragir avec le serveur Archipelago.
|
||||||
|
|
||||||
Le mélange des objets est réalisé par le fichier AP.json, un fichier généré par le serveur Archipelago.
|
|
||||||
|
|
||||||
## Procédures d'installation
|
## Procédures d'installation
|
||||||
|
|
||||||
<span style="color:tomato">
|
<span style="color:tomato">
|
||||||
|
@ -19,16 +17,13 @@ Le mélange des objets est réalisé par le fichier AP.json, un fichier génér
|
||||||
</span>
|
</span>
|
||||||
Ce client a été testé sur la version Steam officielle du jeu (v1.15/1.35), peu importe les DLCs actuellement installés.
|
Ce client a été testé sur la version Steam officielle du jeu (v1.15/1.35), peu importe les DLCs actuellement installés.
|
||||||
|
|
||||||
Télécharger le fichier dinput8.dll disponible dans le [Client AP de Dark Souls III](https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/releases).
|
Télécharger le fichier dinput8.dll disponible dans le [Client AP de Dark Souls III](https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/releases) et
|
||||||
Vous devez ensuite ajouter les deux fichiers suivants à la racine du jeu
|
placez-le à la racine du jeu (ex: "SteamLibrary\steamapps\common\DARK SOULS III\Game")
|
||||||
(ex: "SteamLibrary\steamapps\common\DARK SOULS III\Game"):
|
|
||||||
- **dinput8.dll**
|
|
||||||
- **AP.json** : Le fichier .json téléchargé depuis la <em>room</em> ou donné par l'hôte de la partie, nommé AP-{ROOM_ID}.json, doit être renommé en AP.json.
|
|
||||||
|
|
||||||
## Rejoindre une partie Multiworld
|
## Rejoindre une partie Multiworld
|
||||||
|
|
||||||
1. Lancer DarkSoulsIII.exe ou lancer le jeu depuis Steam
|
1. Lancer DarkSoulsIII.exe ou lancer le jeu depuis Steam
|
||||||
2. Ecrire "/connect {SERVER_IP}:{SERVER_PORT}" dans l'invite de commande Windows ouverte au lancement du jeu
|
2. Ecrire "/connect {SERVER_IP}:{SERVER_PORT} {SLOT_NAME}" dans l'invite de commande Windows ouverte au lancement du jeu
|
||||||
3. Une fois connecté, créez une nouvelle partie, choisissez une classe et attendez que les autres soient prêts avant de lancer
|
3. Une fois connecté, créez une nouvelle partie, choisissez une classe et attendez que les autres soient prêts avant de lancer
|
||||||
4. Vous pouvez quitter et lancer le jeu n'importe quand pendant une partie
|
4. Vous pouvez quitter et lancer le jeu n'importe quand pendant une partie
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue