Archipelago/worlds/dark_souls_3/Options.py

119 lines
4.1 KiB
Python

import typing
from Options import Toggle, Option, Range, Choice, DeathLink
class AutoEquipOption(Toggle):
"""Automatically equips any received armor or left/right weapons."""
display_name = "Auto-equip"
class LockEquipOption(Toggle):
"""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 NoSpellRequirementsOption(Toggle):
"""Disable the spell requirements permitting you to use any spell"""
display_name = "No Spell Requirements"
class NoEquipLoadOption(Toggle):
"""Disable the equip load constraint from the game"""
display_name = "No Equip load"
class RandomizeWeaponsLevelOption(Choice):
"""Enable this option to upgrade a percentage of the pool of weapons to a random value between the minimum and
maximum levels defined.
all: All weapons are eligible, both basic and epic
basic: Only weapons that can be upgraded to +10
epic: Only weapons that can be upgraded to +5"""
display_name = "Randomize weapons level"
option_none = 0
option_all = 1
option_basic = 2
option_epic = 3
class RandomizeWeaponsLevelPercentageOption(Range):
"""The percentage of weapons in the pool to be upgraded if randomize weapons level is toggled"""
display_name = "Percentage of randomized weapons"
range_start = 1
range_end = 100
default = 33
class MinLevelsIn5WeaponPoolOption(Range):
"""The minimum upgraded value of a weapon in the pool of weapons that can only reach +5"""
display_name = "Minimum level of +5 weapons"
range_start = 1
range_end = 5
default = 1
class MaxLevelsIn5WeaponPoolOption(Range):
"""The maximum upgraded value of a weapon in the pool of weapons that can only reach +5"""
display_name = "Maximum level of +5 weapons"
range_start = 1
range_end = 5
default = 5
class MinLevelsIn10WeaponPoolOption(Range):
"""The minimum upgraded value of a weapon in the pool of weapons that can reach +10"""
display_name = "Minimum level of +10 weapons"
range_start = 1
range_end = 10
default = 1
class MaxLevelsIn10WeaponPoolOption(Range):
"""The maximum upgraded value of a weapon in the pool of weapons that can reach +10"""
display_name = "Maximum level of +10 weapons"
range_start = 1
range_end = 10
default = 10
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"
class EnableProgressiveLocationsOption(Toggle):
"""Randomize upgrade materials such as the titanite shards, the estus shards and the consumables"""
display_name = "Randomize materials, Estus shards and consumables (+196 checks/items)"
class EnableDLCOption(Toggle):
"""To use this option, you must own both the ASHES OF ARIANDEL and the RINGED CITY DLC"""
display_name = "Add the DLC Items and Locations to the pool (+81 checks/items)"
dark_souls_options: typing.Dict[str, type(Option)] = {
"auto_equip": AutoEquipOption,
"lock_equip": LockEquipOption,
"no_weapon_requirements": NoWeaponRequirementsOption,
"randomize_weapons_level": RandomizeWeaponsLevelOption,
"randomize_weapons_percentage": RandomizeWeaponsLevelPercentageOption,
"min_levels_in_5": MinLevelsIn5WeaponPoolOption,
"max_levels_in_5": MaxLevelsIn5WeaponPoolOption,
"min_levels_in_10": MinLevelsIn10WeaponPoolOption,
"max_levels_in_10": MaxLevelsIn10WeaponPoolOption,
"late_basin_of_vows": LateBasinOfVowsOption,
"no_spell_requirements": NoSpellRequirementsOption,
"no_equip_load": NoEquipLoadOption,
"death_link": DeathLink,
"enable_progressive_locations": EnableProgressiveLocationsOption,
"enable_dlc": EnableDLCOption,
}