diff --git a/WebHostLib/templates/macros.html b/WebHostLib/templates/macros.html index 9a92edbb..307e6b7f 100644 --- a/WebHostLib/templates/macros.html +++ b/WebHostLib/templates/macros.html @@ -43,7 +43,7 @@ {% elif patch.game | supports_apdeltapatch %} Download Patch File... - {% elif patch.game == "Dark Souls III" %} + {% elif patch.game == "Dark Souls III" and patch.data %} Download JSON File... {% else %} diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index 0b062b3a..e13329ea 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -1,6 +1,7 @@ # world/dark_souls_3/__init__.py import json import os +from typing import Dict from .Items import DarkSouls3Item from .Locations import DarkSouls3Location @@ -237,7 +238,9 @@ class DarkSouls3World(World): for i in range(item_pool_len, total_required_locations): 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 item_dictionary_copy = item_dictionary.copy() if self.multiworld.randomize_weapons_level[self.player]: @@ -271,7 +274,7 @@ class DarkSouls3World(World): else: locations_target.append(0) - data = { + slot_data = { "options": { "auto_equip": self.multiworld.auto_equip[self.player].value, "lock_equip": self.multiworld.lock_equip[self.player].value, @@ -287,7 +290,4 @@ class DarkSouls3World(World): "itemsAddress": items_address } - # generate the file - 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) + return slot_data diff --git a/worlds/dark_souls_3/docs/setup_en.md b/worlds/dark_souls_3/docs/setup_en.md index 3d8606a5..b4705ad5 100644 --- a/worlds/dark_souls_3/docs/setup_en.md +++ b/worlds/dark_souls_3/docs/setup_en.md @@ -8,9 +8,7 @@ ## General Concept 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. - -The randomization is performed by the AP.json file, an output file generated by the Archipelago server. +prompt where you can read information about your run and write any command to interact with the Archipelago server. ## Installation Procedures @@ -19,15 +17,13 @@ The randomization is performed by the AP.json file, an output file generated by 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). -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"): -- **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. +Get the dinput8.dll from the [Dark Souls III AP Client](https://github.com/Marechal-L/Dark-Souls-III-Archipelago-client/releases) and +add it at the root folder of your game (e.g. "SteamLibrary\steamapps\common\DARK SOULS III\Game") ## Joining a MultiWorld Game 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 4. You can quit and launch at anytime during a game diff --git a/worlds/dark_souls_3/docs/setup_fr.md b/worlds/dark_souls_3/docs/setup_fr.md index f33b6951..6ad86c4a 100644 --- a/worlds/dark_souls_3/docs/setup_fr.md +++ b/worlds/dark_souls_3/docs/setup_fr.md @@ -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 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 @@ -19,16 +17,13 @@ Le mélange des objets est réalisé par le fichier AP.json, un fichier génér 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). -Vous devez ensuite ajouter les deux fichiers suivants à la racine du jeu -(ex: "SteamLibrary\steamapps\common\DARK SOULS III\Game"): -- **dinput8.dll** -- **AP.json** : Le fichier .json téléchargé depuis la room ou donné par l'hôte de la partie, nommé AP-{ROOM_ID}.json, doit être renommé en AP.json. +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 +placez-le à la racine du jeu (ex: "SteamLibrary\steamapps\common\DARK SOULS III\Game") ## Rejoindre une partie Multiworld 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 4. Vous pouvez quitter et lancer le jeu n'importe quand pendant une partie