From 2524ddc0757cceb9986e925a4099191e05d3721a Mon Sep 17 00:00:00 2001 From: CaitSith2 Date: Sun, 24 Dec 2023 17:30:53 -0800 Subject: [PATCH] Dark Souls 3: Use options_dataclass --- worlds/dark_souls_3/Options.py | 69 +++++++++++++++++---------------- worlds/dark_souls_3/__init__.py | 5 ++- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/worlds/dark_souls_3/Options.py b/worlds/dark_souls_3/Options.py index df0bb953b8..212117c17e 100644 --- a/worlds/dark_souls_3/Options.py +++ b/worlds/dark_souls_3/Options.py @@ -1,6 +1,7 @@ import typing -from Options import Toggle, DefaultOnToggle, Option, Range, Choice, ItemDict, DeathLink +from Options import Toggle, DefaultOnToggle, Option, Range, Choice, ItemDict, DeathLink, PerGameCommonOptions +from dataclasses import dataclass class RandomizeWeaponLocations(DefaultOnToggle): @@ -200,36 +201,36 @@ class EnableDLCOption(Toggle): display_name = "Enable DLC" -dark_souls_options: typing.Dict[str, Option] = { - "enable_weapon_locations": RandomizeWeaponLocations, - "enable_shield_locations": RandomizeShieldLocations, - "enable_armor_locations": RandomizeArmorLocations, - "enable_ring_locations": RandomizeRingLocations, - "enable_spell_locations": RandomizeSpellLocations, - "enable_key_locations": RandomizeKeyLocations, - "enable_boss_locations": RandomizeBossSoulLocations, - "enable_npc_locations": RandomizeNPCLocations, - "enable_misc_locations": RandomizeMiscLocations, - "enable_health_upgrade_locations": RandomizeHealthLocations, - "enable_progressive_locations": RandomizeProgressiveLocationsOption, - "pool_type": PoolTypeOption, - "guaranteed_items": GuaranteedItemsOption, - "auto_equip": AutoEquipOption, - "lock_equip": LockEquipOption, - "no_weapon_requirements": NoWeaponRequirementsOption, - "randomize_infusion": RandomizeInfusionOption, - "randomize_infusion_percentage": RandomizeInfusionPercentageOption, - "randomize_weapon_level": RandomizeWeaponLevelOption, - "randomize_weapon_level_percentage": RandomizeWeaponLevelPercentageOption, - "min_levels_in_5": MinLevelsIn5WeaponPoolOption, - "max_levels_in_5": MaxLevelsIn5WeaponPoolOption, - "min_levels_in_10": MinLevelsIn10WeaponPoolOption, - "max_levels_in_10": MaxLevelsIn10WeaponPoolOption, - "early_banner": EarlySmallLothricBanner, - "late_basin_of_vows": LateBasinOfVowsOption, - "late_dlc": LateDLCOption, - "no_spell_requirements": NoSpellRequirementsOption, - "no_equip_load": NoEquipLoadOption, - "death_link": DeathLink, - "enable_dlc": EnableDLCOption, -} +@dataclass +class DarkSouls3Options(PerGameCommonOptions): + enable_weapon_locations: RandomizeWeaponLocations + enable_shield_locations: RandomizeShieldLocations + enable_armor_locations: RandomizeArmorLocations + enable_ring_locations: RandomizeRingLocations + enable_spell_locations: RandomizeSpellLocations + enable_key_locations: RandomizeKeyLocations + enable_boss_locations: RandomizeBossSoulLocations + enable_npc_locations: RandomizeNPCLocations + enable_misc_locations: RandomizeMiscLocations + enable_health_upgrade_locations: RandomizeHealthLocations + enable_progressive_locations: RandomizeProgressiveLocationsOption + pool_type: PoolTypeOption + guaranteed_items: GuaranteedItemsOption + auto_equip: AutoEquipOption + lock_equip: LockEquipOption + no_weapon_requirements: NoWeaponRequirementsOption + randomize_infusion: RandomizeInfusionOption + randomize_infusion_percentage: RandomizeInfusionPercentageOption + randomize_weapon_level: RandomizeWeaponLevelOption + randomize_weapon_level_percentage: RandomizeWeaponLevelPercentageOption + min_levels_in_5: MinLevelsIn5WeaponPoolOption + max_levels_in_5: MaxLevelsIn5WeaponPoolOption + min_levels_in_10: MinLevelsIn10WeaponPoolOption + max_levels_in_10: MaxLevelsIn10WeaponPoolOption + early_banner: EarlySmallLothricBanner + late_basin_of_vows: LateBasinOfVowsOption + late_dlc: LateDLCOption + no_spell_requirements: NoSpellRequirementsOption + no_equip_load: NoEquipLoadOption + death_link: DeathLink + enable_dlc: EnableDLCOption diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index e55deaafc3..dde2fbebcd 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -9,7 +9,7 @@ from worlds.generic.Rules import set_rule, add_rule, add_item_rule from .Items import DarkSouls3Item, DS3ItemCategory, item_dictionary, key_item_names, item_descriptions from .Locations import DarkSouls3Location, DS3LocationCategory, location_tables, location_dictionary -from .Options import RandomizeWeaponLevelOption, PoolTypeOption, EarlySmallLothricBanner, dark_souls_options +from .Options import RandomizeWeaponLevelOption, PoolTypeOption, EarlySmallLothricBanner, DarkSouls3Options class DarkSouls3Web(WebWorld): @@ -43,7 +43,8 @@ class DarkSouls3World(World): """ game: str = "Dark Souls III" - option_definitions = dark_souls_options + options = DarkSouls3Options + options_dataclass = DarkSouls3Options topology_present: bool = True web = DarkSouls3Web() data_version = 8