Add World/Options documentation and remove some unused objets

This commit is contained in:
Marechal-l
2022-07-09 13:28:46 +02:00
parent 07c0801cd5
commit e4f2739370
6 changed files with 91 additions and 92 deletions

View File

@@ -3,26 +3,31 @@ from Options import Toggle, Option
class AutoEquipOption(Toggle):
display_name = "Auto Equip"
"""Automatically equips any received armor or left/right weapons."""
display_name = "Auto-equip"
class LockEquipOption(Toggle):
display_name = "Lock Equip"
"""Lock the equipment slots so you cannot change your armor or your left/right weapons. Works great with the
Auto-equip option."""
display_name = "Lock Equipement Slots"
class NoWeaponRequirementsOption(Toggle):
"""Disable the weapon requirements by removing any movement or damage penalties.
Permitting you to use any weapon early"""
display_name = "No Weapon Requirements"
class RandomizeWeaponsLevelOption(Toggle):
"""Enable this option to upgrade 33% ( based on the probability chance ) of the pool of weapons to a random value
between +1 and +5/+10"""
display_name = "Randomize weapons level"
class PriorityLocationsPresetOption(Toggle):
display_name = "Priority locations preset"
class LateBasinOfVowsOption(Toggle):
"""Force the Basin of Vows to be located as a reward of defeating Pontiff Sulyvahn. It permits to ease the
progression by preventing having to kill the Dancer of the Boreal Valley as the first boss"""
display_name = "Late Basin of Vows"
@@ -31,7 +36,6 @@ dark_souls_options: typing.Dict[str, type(Option)] = {
"lock_equip": LockEquipOption,
"no_weapon_requirements": NoWeaponRequirementsOption,
"randomize_weapons_level": RandomizeWeaponsLevelOption,
"priority_locations_preset": PriorityLocationsPresetOption,
"late_basin_of_vows": LateBasinOfVowsOption,
}

View File

@@ -12,14 +12,29 @@ from .data.locations_data import dictionary_table, cemetery_of_ash_table, fire_l
undead_settlement_table, road_of_sacrifice_table, consumed_king_garden_table, cathedral_of_the_deep_table, \
farron_keep_table, catacombs_of_carthus_table, smouldering_lake_table, irithyll_of_the_boreal_valley_table, \
irithyll_dungeon_table, profaned_capital_table, anor_londo_table, lothric_castle_table, grand_archives_table, \
untended_graves_table, archdragon_peak_table, firelink_shrine_bell_tower_table, main_path_location_list
from ..AutoWorld import World
from BaseClasses import MultiWorld, Location, Region, Item, RegionType, Entrance
untended_graves_table, archdragon_peak_table, firelink_shrine_bell_tower_table
from ..AutoWorld import World, WebWorld
from BaseClasses import MultiWorld, Location, Region, Item, RegionType, Entrance, Tutorial
from ..generic.Rules import set_rule
class DarkSouls3Web(WebWorld):
tutorials = [Tutorial(
"Multiworld Setup Tutorial",
"A guide to setting up the Archipelago Dark Souls 3 randomizer on your computer.",
"English",
"setup_en.md",
"setup/en",
["Marech"]
)]
class DarkSouls3World(World):
"""Insert description of the world/game here."""
"""
Dark souls 3 is an Action role-playing game and is part of the Souls series developed by FromSoftware.
Played in a third-person perspective, players have access to various weapons, armour, magic, and consumables that
they can use to fight their enemies.
"""
def __init__(self, world: MultiWorld, player: int):
super().__init__(world, player)
@@ -35,7 +50,6 @@ class DarkSouls3World(World):
menu_region = Region("Menu", RegionType.Generic, "Menu", self.player)
self.world.regions.append(menu_region)
self.main_path_locations = main_path_location_list
cemetery_of_ash_region = self.create_region("Cemetery Of Ash", cemetery_of_ash_table)
firelink_shrine_region = self.create_region("Firelink Shrine", fire_link_shrine_table)
firelink_shrine_bell_tower_region = self.create_region("Firelink Shrine Bell Tower", firelink_shrine_bell_tower_table)
@@ -106,7 +120,7 @@ class DarkSouls3World(World):
new_region = Region(name, RegionType.Generic, name, self.player)
if location_table is not None:
for name, address in self.location_name_to_id.items():
if location_table.get(name): # and name in self.main_path_locations:
if location_table.get(name):
location = Location(self.player, name, address, new_region)
new_region.locations.append(location)
self.world.regions.append(new_region)
@@ -118,8 +132,7 @@ class DarkSouls3World(World):
self.world.itempool += [self.create_item(name)]
def generate_early(self):
if self.world.priority_locations_preset[self.player]:
self.world.priority_locations[self.player].value.update(main_path_location_list)
pass
def set_rules(self) -> None:
set_rule(self.world.get_entrance("Goto Bell Tower", self.player),

View File

@@ -326,7 +326,7 @@ spells_table = {
}
key_items_table = {
misc_items_table = {
"Cell Key": 0x400007DA,
"Small Lothric Banner": 0x40000836,
"Mortician's Ashes": 0x4000083B,
@@ -374,31 +374,6 @@ key_items_table = {
"Wolf's Blood Swordgrass": 0x4000016E,
}
heals_table = {
"Ashen Estus Flask": 0x400000BF,
"Estus Flask Shard #1": 0x4000085D,
"Estus Flask Shard #2": 0x4000085D,
"Estus Flask Shard #3": 0x4000085D,
"Estus Flask Shard #4": 0x4000085D,
"Estus Flask Shard #5": 0x4000085D,
"Estus Flask Shard #6": 0x4000085D,
"Estus Flask Shard #7": 0x4000085D,
"Estus Flask Shard #8": 0x4000085D,
"Estus Flask Shard #9": 0x4000085D,
"Estus Flask Shard #10": 0x4000085D,
"Estus Flask Shard #11": 0x4000085D,
"Estus Flask Shard #12": 0x4000085D,
"Undead Bone Shard #1": 0x4000085F,
"Undead Bone Shard #2": 0x4000085F,
"Undead Bone Shard #3": 0x4000085F,
"Undead Bone Shard #4": 0x4000085F,
"Undead Bone Shard #5": 0x4000085F,
"Undead Bone Shard #6": 0x4000085F,
"Undead Bone Shard #7": 0x4000085F,
"Undead Bone Shard #8": 0x4000085F,
"Undead Bone Shard #9": 0x4000085F,
}
key_items_list = {
"Small Lothric Banner",
"Basin of Vows",
@@ -413,4 +388,4 @@ key_items_list = {
"Mortician's Ashes"
}
item_dictionary_table = {**weapons_upgrade_5_table, **weapons_upgrade_10_table, **shields_table, **armor_table, **rings_table, **spells_table, **key_items_table, **goods_table}
item_dictionary_table = {**weapons_upgrade_5_table, **weapons_upgrade_10_table, **shields_table, **armor_table, **rings_table, **spells_table, **misc_items_table, **goods_table}

View File

@@ -413,56 +413,6 @@ archdragon_peak_table = {
"AP: Soul of the Nameless King": 0x400002D2,
}
main_path_location_list = {
"FS: Broken Straight Sword",
"HWL: Soul of Boreal Valley Vordt",
"HWL: Basin of Vows",
"HWL: Small Lothric Banner",
"HWL: Soul of the Dancer",
"US: Soul of the Rotted Greatwood",
"CD: Small Doll",
"CD: Soul of the Deacons of the Deep",
"RS: Soul of a Crystal Sage",
"CC: Soul of High Lord Wolnir",
"IBV: Soul of Pontiff Sulyvahn",
"PC: Cinders of a Lord - Yhorm the Giant",
"PC: Soul of Yhorm the Giant",
"AL: Cinders of a Lord - Aldrich",
"AL: Soul of Aldrich",
"LC: Grand Archives Key",
"LC: Soul of Dragonslayer Armour",
"CKG: Soul of Consumed Oceiros",
"GA: Cinders of a Lord - Lothric Prince",
"GA: Soul of the Twin Princes",
"UG: Soul of Champion Gundyr",
"AP: Soul of the Nameless King",
}
heals_table = {
"Ashen Estus Flask": 0x400000BF,
"Estus Flask Shard #1": 0x4000085D,
"Estus Flask Shard #2": 0x4000085D,
"Estus Flask Shard #3": 0x4000085D,
"Estus Flask Shard #4": 0x4000085D,
"Estus Flask Shard #5": 0x4000085D,
"Estus Flask Shard #6": 0x4000085D,
"Estus Flask Shard #7": 0x4000085D,
"Estus Flask Shard #8": 0x4000085D,
"Estus Flask Shard #9": 0x4000085D,
"Estus Flask Shard #10": 0x4000085D,
"Estus Flask Shard #11": 0x4000085D,
"Estus Flask Shard #12": 0x4000085D,
"Undead Bone Shard #1": 0x4000085F,
"Undead Bone Shard #2": 0x4000085F,
"Undead Bone Shard #3": 0x4000085F,
"Undead Bone Shard #4": 0x4000085F,
"Undead Bone Shard #5": 0x4000085F,
"Undead Bone Shard #6": 0x4000085F,
"Undead Bone Shard #7": 0x4000085F,
"Undead Bone Shard #8": 0x4000085F,
"Undead Bone Shard #9": 0x4000085F,
}
dictionary_table = {**cemetery_of_ash_table, **fire_link_shrine_table, **firelink_shrine_bell_tower_table, **high_wall_of_lothric, **undead_settlement_table, **road_of_sacrifice_table,
**cathedral_of_the_deep_table, **farron_keep_table, **catacombs_of_carthus_table, **smouldering_lake_table, **irithyll_of_the_boreal_valley_table,
**irithyll_dungeon_table, **profaned_capital_table, **anor_londo_table, **lothric_castle_table, **consumed_king_garden_table,

View File

@@ -0,0 +1,22 @@
# Dark Souls 3
## Where is the settings page?
The [player settings page for this game](../player-settings) contains all the options you need to configure and export a
config file.
## What does randomization do to this game?
In Dark Souls 3, all unique items you can earn from a static corpse, a chest or the death of a Boss/NPC are randomized.
This exclude the upgrade materials such as the titanite shards, the estus shards and the consumables which remain at
the same location. I also added an option available from the settings page to randomize the level of the generated
weapons( from +0 to +10/+5 )
## What Dark Souls 3 items can appear in other players' worlds?
Every unique items from Dark Souls 3 can appear in other player's worlds, such as a piece of armor, an upgraded weapon
or a key item.
## What does another world's item look like in Dark Souls 3?
In Dark Souls 3, items which need to be sent to other worlds appear as a Prism Stone.

View File

@@ -0,0 +1,35 @@
# Dark Souls 3 Randomizer Setup Guide
## Required Software
- [Dark Souls 3](https://store.steampowered.com/app/374320/DARK_SOULS_III/)
- [Dark Souls 3 AP Client](https://github.com/Marechal-L/DarkSouls3-Archipelago-client)
## General Concept
The Dark Souls 3 AP Client is a dinput8.dll triggered when launching Dark Souls 3. 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.
## Installation Procedures
**This client has only been tested with the Official Steam version of the game (v1.15/1.35) not matter which DLCs are installed**
Follow the installation directions at the
[Dark Souls 3 AP Client](https://github.com/Marechal-L/DarkSouls3-Archipelago-client) page where you can find the
dinput8.dll file.
Basically, you just need to add those two files at the root folder of your game "SteamLibrary\steamapps\common\DARK SOULS III\Game" :
- dinput8.dll
- AP.json renamed from the generated file AP-{SEED}-{PLAYER_NUMBER}-{PLAYER_NAME}.json
## Joining a MultiWorld Game
1. Run DarkSoulsIII.exe or run the game through Steam
2. Type in /connect [server ip]
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
## Where do I get a config file?
The [Player Settings](../player-settings) page on the website allows you to
configure your personal settings and export them into a config file