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:
		| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
| </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. | ||||
|  | ||||
| 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 | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
|  | ||||
| <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>   | ||||
| 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 <em>room</em> 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 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Ludovic Marechal
					Ludovic Marechal