From 5b7e5d8338af6568603e6d64e03fac43564e1abb Mon Sep 17 00:00:00 2001 From: Zunawe Date: Sat, 20 May 2023 18:25:04 -0700 Subject: [PATCH 1/5] DS3: Add randomized infusion code (only works for Broadsword) --- worlds/dark_souls_3/Options.py | 21 ++++++++++++++++++--- worlds/dark_souls_3/__init__.py | 32 +++++++++++++++++++------------- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/worlds/dark_souls_3/Options.py b/worlds/dark_souls_3/Options.py index 712c78217e92..61cb64c7b368 100644 --- a/worlds/dark_souls_3/Options.py +++ b/worlds/dark_souls_3/Options.py @@ -83,10 +83,23 @@ class NoEquipLoadOption(Toggle): display_name = "No Equip Load" +class RandomizeInfusionOption(Toggle): + """Enable this option to infuse a percentage of the pool of weapons and shields.""" + display_name = "Randomize Infusion" + + +class RandomizeInfusionPercentageOption(Range): + """The percentage of weapons/shields in the pool to be infused if Randomize Infusion is toggled""" + display_name = "Percentage of Infused Weapons" + range_start = 0 + range_end = 100 + default = 33 + + class RandomizeWeaponLevelOption(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""" @@ -100,7 +113,7 @@ class RandomizeWeaponLevelOption(Choice): class RandomizeWeaponLevelPercentageOption(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_start = 0 range_end = 100 default = 33 @@ -170,8 +183,10 @@ class EnableDLCOption(Toggle): "auto_equip": AutoEquipOption, "lock_equip": LockEquipOption, "no_weapon_requirements": NoWeaponRequirementsOption, + "randomize_infusion": RandomizeInfusionOption, + "randomize_infusion_percentage": RandomizeInfusionPercentageOption, "randomize_weapon_level": RandomizeWeaponLevelOption, - "randomize_weapon_percentage": RandomizeWeaponLevelPercentageOption, + "randomize_weapon_level_percentage": RandomizeWeaponLevelPercentageOption, "min_levels_in_5": MinLevelsIn5WeaponPoolOption, "max_levels_in_5": MaxLevelsIn5WeaponPoolOption, "min_levels_in_10": MinLevelsIn10WeaponPoolOption, diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index ec3e046e0439..42009aa92194 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -3,7 +3,7 @@ from .Items import DarkSouls3Item, DS3ItemCategory, item_dictionary, key_item_names from .Locations import DarkSouls3Location, DS3LocationCategory, location_tables, location_dictionary -from .Options import dark_souls_options +from .Options import RandomizeWeaponLevelOption, dark_souls_options from ..AutoWorld import World, WebWorld from BaseClasses import MultiWorld, Region, Item, Entrance, Tutorial, ItemClassification from Options import Toggle @@ -376,18 +376,24 @@ def fill_slot_data(self) -> Dict[str, object]: min_5 = min(self.multiworld.min_levels_in_5[self.player], max_5) max_10 = self.multiworld.max_levels_in_10[self.player] min_10 = min(self.multiworld.min_levels_in_10[self.player], max_10) - weapon_percentage = self.multiworld.randomize_weapon_percentage[self.player] - - # Randomize some weapons upgrades - if self.multiworld.randomize_weapon_level[self.player] in [1, 3]: # Options are either all or +5 - for name in [item.name for item in item_dictionary.values() if item.category == DS3ItemCategory.WEAPON_UPGRADE_5]: - if self.multiworld.per_slot_randoms[self.player].randint(1, 100) < weapon_percentage: - name_to_ds3_code[name] += self.multiworld.per_slot_randoms[self.player].randint(min_5, max_5) - - if self.multiworld.randomize_weapon_level[self.player] in [1, 2]: # Options are either all or +10 - for name in [item.name for item in item_dictionary.values() if item.category == DS3ItemCategory.WEAPON_UPGRADE_10]: - if self.multiworld.per_slot_randoms[self.player].randint(1, 100) < weapon_percentage: - name_to_ds3_code[name] += self.multiworld.per_slot_randoms[self.player].randint(min_10, max_10) + weapon_level_percentage = self.multiworld.randomize_weapon_level_percentage[self.player] + infusion_percentage = self.multiworld.randomize_infusion_percentage[self.player] + + # Randomize some weapon upgrades + if self.multiworld.randomize_weapon_level[self.player] != RandomizeWeaponLevelOption.option_none: + for item in item_dictionary.values(): + if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < weapon_level_percentage: + if item.category == DS3ItemCategory.WEAPON_UPGRADE_5: + name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_5, max_5) + elif item.category == DS3ItemCategory.WEAPON_UPGRADE_10: + name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_10, max_10) + + # Randomize some weapon infusions + if self.multiworld.randomize_infusion[self.player] == Toggle.option_true: + for item in item_dictionary.values(): + if item.name == "Broadsword": # TODO: Detect if a weapon can be infused here + if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < infusion_percentage: + name_to_ds3_code[item.name] += 100 * self.multiworld.per_slot_randoms[self.player].randint(0, 15) # Create the mandatory lists to generate the player's output file items_id = [] From c19d352339ba7abed4dc09611c2d78e168a7af55 Mon Sep 17 00:00:00 2001 From: Zunawe Date: Sat, 20 May 2023 23:28:41 -0700 Subject: [PATCH 2/5] DS3: Make varied item pool an option --- worlds/dark_souls_3/Options.py | 11 +++++ worlds/dark_souls_3/__init__.py | 71 +++++++++++++++++---------------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/worlds/dark_souls_3/Options.py b/worlds/dark_souls_3/Options.py index 61cb64c7b368..4b39d32e17af 100644 --- a/worlds/dark_souls_3/Options.py +++ b/worlds/dark_souls_3/Options.py @@ -56,6 +56,16 @@ class RandomizeProgressiveLocationsOption(Toggle): display_name = "Randomize Progressive Locations" +class PoolTypeOption(Choice): + """Changes which non-progression items you add to the pool + + Shuffle: Items are picked from the locations being randomized + Various: Items are picked from a list of all items in the game, but are the same type of item they replace""" + display_name = "Pool Type" + option_shuffle = 0 + option_various = 1 + + class AutoEquipOption(Toggle): """Automatically equips any received armor or left/right weapons.""" display_name = "Auto-Equip" @@ -180,6 +190,7 @@ class EnableDLCOption(Toggle): "enable_misc_locations": RandomizeMiscLocations, "enable_health_upgrade_locations": RandomizeHealthLocations, "enable_progressive_locations": RandomizeProgressiveLocationsOption, + "pool_type": PoolTypeOption, "auto_equip": AutoEquipOption, "lock_equip": LockEquipOption, "no_weapon_requirements": NoWeaponRequirementsOption, diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index 42009aa92194..f1c00e39e090 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -3,7 +3,7 @@ from .Items import DarkSouls3Item, DS3ItemCategory, item_dictionary, key_item_names from .Locations import DarkSouls3Location, DS3LocationCategory, location_tables, location_dictionary -from .Options import RandomizeWeaponLevelOption, dark_souls_options +from .Options import RandomizeWeaponLevelOption, PoolTypeOption, dark_souls_options from ..AutoWorld import World, WebWorld from BaseClasses import MultiWorld, Region, Item, Entrance, Tutorial, ItemClassification from Options import Toggle @@ -224,40 +224,41 @@ def create_items(self): itempool_by_category[location.category].append(location.default_item_name) # Replace each item category with a random sample of items of those types - def create_random_replacement_list(item_categories: Set[DS3ItemCategory], num_items: int): - candidates = [ - item.name for item - in item_dictionary.values() - if (item.category in item_categories and - (not item.is_dlc or dlc_enabled)) - ] - return self.multiworld.random.sample(candidates, num_items) - - if DS3LocationCategory.WEAPON in self.enabled_location_categories: - itempool_by_category[DS3LocationCategory.WEAPON] = create_random_replacement_list( - {DS3ItemCategory.WEAPON_UPGRADE_5, DS3ItemCategory.WEAPON_UPGRADE_10}, - len(itempool_by_category[DS3LocationCategory.WEAPON]) - ) - if DS3LocationCategory.SHIELD in self.enabled_location_categories: - itempool_by_category[DS3LocationCategory.SHIELD] = create_random_replacement_list( - {DS3ItemCategory.SHIELD}, - len(itempool_by_category[DS3LocationCategory.SHIELD]) - ) - if DS3LocationCategory.ARMOR in self.enabled_location_categories: - itempool_by_category[DS3LocationCategory.ARMOR] = create_random_replacement_list( - {DS3ItemCategory.ARMOR}, - len(itempool_by_category[DS3LocationCategory.ARMOR]) - ) - if DS3LocationCategory.RING in self.enabled_location_categories: - itempool_by_category[DS3LocationCategory.RING] = create_random_replacement_list( - {DS3ItemCategory.RING}, - len(itempool_by_category[DS3LocationCategory.RING]) - ) - if DS3LocationCategory.SPELL in self.enabled_location_categories: - itempool_by_category[DS3LocationCategory.SPELL] = create_random_replacement_list( - {DS3ItemCategory.SPELL}, - len(itempool_by_category[DS3LocationCategory.SPELL]) - ) + if self.multiworld.pool_type[self.player] == PoolTypeOption.option_various: + def create_random_replacement_list(item_categories: Set[DS3ItemCategory], num_items: int): + candidates = [ + item.name for item + in item_dictionary.values() + if (item.category in item_categories and + (not item.is_dlc or dlc_enabled)) + ] + return self.multiworld.random.sample(candidates, num_items) + + if DS3LocationCategory.WEAPON in self.enabled_location_categories: + itempool_by_category[DS3LocationCategory.WEAPON] = create_random_replacement_list( + {DS3ItemCategory.WEAPON_UPGRADE_5, DS3ItemCategory.WEAPON_UPGRADE_10}, + len(itempool_by_category[DS3LocationCategory.WEAPON]) + ) + if DS3LocationCategory.SHIELD in self.enabled_location_categories: + itempool_by_category[DS3LocationCategory.SHIELD] = create_random_replacement_list( + {DS3ItemCategory.SHIELD}, + len(itempool_by_category[DS3LocationCategory.SHIELD]) + ) + if DS3LocationCategory.ARMOR in self.enabled_location_categories: + itempool_by_category[DS3LocationCategory.ARMOR] = create_random_replacement_list( + {DS3ItemCategory.ARMOR}, + len(itempool_by_category[DS3LocationCategory.ARMOR]) + ) + if DS3LocationCategory.RING in self.enabled_location_categories: + itempool_by_category[DS3LocationCategory.RING] = create_random_replacement_list( + {DS3ItemCategory.RING}, + len(itempool_by_category[DS3LocationCategory.RING]) + ) + if DS3LocationCategory.SPELL in self.enabled_location_categories: + itempool_by_category[DS3LocationCategory.SPELL] = create_random_replacement_list( + {DS3ItemCategory.SPELL}, + len(itempool_by_category[DS3LocationCategory.SPELL]) + ) # Add items to itempool for category in self.enabled_location_categories: From 16487d5edacf7abb49bfc64618b6657309d5d69e Mon Sep 17 00:00:00 2001 From: Zunawe Date: Sun, 21 May 2023 15:04:53 -0700 Subject: [PATCH 3/5] DS3: Add infusion categories and some cleanup of items --- worlds/dark_souls_3/Items.py | 362 ++++++++++++++++--------------- worlds/dark_souls_3/Locations.py | 2 +- worlds/dark_souls_3/__init__.py | 15 +- 3 files changed, 201 insertions(+), 178 deletions(-) diff --git a/worlds/dark_souls_3/Items.py b/worlds/dark_souls_3/Items.py index 7a8b4a20ab90..5a4c965eea89 100644 --- a/worlds/dark_souls_3/Items.py +++ b/worlds/dark_souls_3/Items.py @@ -7,13 +7,15 @@ class DS3ItemCategory(Enum): WEAPON_UPGRADE_5 = 0 WEAPON_UPGRADE_10 = 1 - SHIELD = 2 - ARMOR = 3 - RING = 4 - SPELL = 5 - MISC = 6 - KEY = 7 - SKIP = 8 + WEAPON_UPGRADE_10_INFUSIBLE = 2 + SHIELD = 3 + SHIELD_INFUSIBLE = 4 + ARMOR = 5 + RING = 6 + SPELL = 7 + MISC = 8 + KEY = 9 + SKIP = 10 class DS3ItemData(NamedTuple): @@ -55,66 +57,87 @@ def get_name_to_id() -> dict: _vanilla_items = [DS3ItemData(row[0], row[1], False, row[2]) for row in [ - ("Dagger", 0x000F4240, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Bandit's Knife", 0x000F6950, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Parrying Dagger", 0x000F9060, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Rotten Ghru Dagger", 0x000FDE80, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Harpe", 0x00102CA0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + # Ammunition + ("Standard Arrow", 0x00061A80, DS3ItemCategory.SKIP), + ("Fire Arrow", 0x00061AE4, DS3ItemCategory.SKIP), + ("Poison Arrow", 0x00061B48, DS3ItemCategory.SKIP), + ("Large Arrow", 0x00061BAC, DS3ItemCategory.SKIP), + ("Feather Arrow", 0x00061C10, DS3ItemCategory.SKIP), + ("Moonlight Arrow", 0x00061C74, DS3ItemCategory.SKIP), + ("Wood Arrow", 0x00061CD8, DS3ItemCategory.SKIP), + ("Dark Arrow", 0x00061D3C, DS3ItemCategory.SKIP), + ("Dragonslayer Greatarrow", 0x00062250, DS3ItemCategory.SKIP), + ("Dragonslayer Lightning Arrow", 0x00062318, DS3ItemCategory.SKIP), + ("Onislayer Greatarrow", 0x0006237C, DS3ItemCategory.SKIP), + ("Standard Bolt", 0x00062A20, DS3ItemCategory.SKIP), + ("Heavy Bolt", 0x00062A84, DS3ItemCategory.SKIP), + ("Sniper Bolt", 0x00062AE8, DS3ItemCategory.SKIP), + ("Wood Bolt", 0x00062B4C, DS3ItemCategory.SKIP), + ("Lightning Bolt", 0x00062BB0, DS3ItemCategory.SKIP), + ("Splintering Bolt", 0x00062C14, DS3ItemCategory.SKIP), + ("Exploding Bolt", 0x00062C78, DS3ItemCategory.SKIP), + + # Weapons + ("Dagger", 0x000F4240, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Bandit's Knife", 0x000F6950, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Parrying Dagger", 0x000F9060, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Rotten Ghru Dagger", 0x000FDE80, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Harpe", 0x00102CA0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Scholar's Candlestick", 0x001053B0, DS3ItemCategory.WEAPON_UPGRADE_10), ("Tailbone Short Sword", 0x00107AC0, DS3ItemCategory.WEAPON_UPGRADE_10), - ("Corvian Greatknife", 0x0010A1D0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Corvian Greatknife", 0x0010A1D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Handmaid's Dagger", 0x00111700, DS3ItemCategory.WEAPON_UPGRADE_10), - ("Shortsword", 0x001E8480, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Longsword", 0x001EAB90, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Broadsword", 0x001ED2A0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Broken Straight Sword", 0x001EF9B0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Lothric Knight Sword", 0x001F6EE0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Shortsword", 0x001E8480, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Longsword", 0x001EAB90, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Broadsword", 0x001ED2A0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Broken Straight Sword", 0x001EF9B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Lothric Knight Sword", 0x001F6EE0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Sunlight Straight Sword", 0x00203230, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Rotten Ghru Curved Sword", 0x00205940, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Rotten Ghru Curved Sword", 0x00205940, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Irithyll Straight Sword", 0x0020A760, DS3ItemCategory.WEAPON_UPGRADE_5), ("Cleric's Candlestick", 0x0020F580, DS3ItemCategory.WEAPON_UPGRADE_5), ("Morion Blade", 0x002143A0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Astora's Straight Sword", 0x002191C0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Barbed Straight Sword", 0x0021B8D0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Astora's Straight Sword", 0x002191C0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Barbed Straight Sword", 0x0021B8D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Executioner's Greatsword", 0x0021DFE0, DS3ItemCategory.WEAPON_UPGRADE_10), ("Anri's Straight Sword", 0x002206F0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Estoc", 0x002DC6C0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Mail Breaker", 0x002DEDD0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Rapier", 0x002E14E0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Ricard's Rapier", 0x002E3BF0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Estoc", 0x002DC6C0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Mail Breaker", 0x002DEDD0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Rapier", 0x002E14E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Ricard's Rapier", 0x002E3BF0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Crystal Sage's Rapier", 0x002E6300, DS3ItemCategory.WEAPON_UPGRADE_5), ("Irithyll Rapier", 0x002E8A10, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Shotel", 0x003D3010, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Scimitar", 0x003D7E30, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Falchion", 0x003DA540, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Carthus Curved Sword", 0x003DCC50, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Carthus Curved Greatsword", 0x003DF360, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Shotel", 0x003D3010, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Scimitar", 0x003D7E30, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Falchion", 0x003DA540, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Carthus Curved Sword", 0x003DCC50, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Carthus Curved Greatsword", 0x003DF360, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Pontiff Knight Curved Sword", 0x003E1A70, DS3ItemCategory.WEAPON_UPGRADE_5), ("Storm Curved Sword", 0x003E4180, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Painting Guardian's Curved Sword", 0x003E6890, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Painting Guardian's Curved Sword", 0x003E6890, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Crescent Moon Sword", 0x003E8FA0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Carthus Shotel", 0x003EB6B0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Uchigatana", 0x004C4B40, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Washing Pole", 0x004C7250, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Carthus Shotel", 0x003EB6B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Uchigatana", 0x004C4B40, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Washing Pole", 0x004C7250, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Chaos Blade", 0x004C9960, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Black Blade", 0x004CC070, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Black Blade", 0x004CC070, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Bloodlust", 0x004CE780, DS3ItemCategory.WEAPON_UPGRADE_5), ("Darkdrift", 0x004D0E90, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Bastard Sword", 0x005B8D80, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Claymore", 0x005BDBA0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Zweihander", 0x005C29C0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Greatsword", 0x005C50D0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Astora Greatsword", 0x005C9EF0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Murakumo", 0x005CC600, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Lothric Knight Greatsword", 0x005D1420, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Flamberge", 0x005DB060, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Exile Greatsword", 0x005DD770, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Bastard Sword", 0x005B8D80, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Claymore", 0x005BDBA0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Zweihander", 0x005C29C0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Greatsword", 0x005C50D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Astora Greatsword", 0x005C9EF0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Murakumo", 0x005CC600, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Lothric Knight Greatsword", 0x005D1420, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Flamberge", 0x005DB060, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Exile Greatsword", 0x005DD770, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Greatsword of Judgment", 0x005E2590, DS3ItemCategory.WEAPON_UPGRADE_5), ("Profaned Greatsword", 0x005E4CA0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Cathedral Knight Greatsword", 0x005E73B0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Cathedral Knight Greatsword", 0x005E73B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Farron Greatsword", 0x005E9AC0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Yhorm's Great Machete", 0x005F0FF0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Dark Sword", 0x005F3700, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Dark Sword", 0x005F3700, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Black Knight Sword", 0x005F5E10, DS3ItemCategory.WEAPON_UPGRADE_5), ("Lorian's Greatsword", 0x005F8520, DS3ItemCategory.WEAPON_UPGRADE_5), ("Twin Princes' Greatsword", 0x005FAC30, DS3ItemCategory.WEAPON_UPGRADE_5), @@ -124,79 +147,80 @@ def get_name_to_id() -> dict: ("Greatsword of Artorias", 0x0060216A, DS3ItemCategory.WEAPON_UPGRADE_5), ("Hollowslayer Greatsword", 0x00604870, DS3ItemCategory.WEAPON_UPGRADE_5), ("Moonlight Greatsword", 0x00606F80, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Drakeblood Greatsword", 0x00609690, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Drakeblood Greatsword", 0x00609690, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Firelink Greatsword", 0x0060BDA0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Fume Ultra Greatsword", 0x0060E4B0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Old Wolf Curved Sword", 0x00610BC0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Storm Ruler", 0x006132D0, DS3ItemCategory.KEY), - ("Hand Axe", 0x006ACFC0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Deep Battle Axe", 0x006AFA54, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE? - ("Brigand Axe", 0x006B1DE0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Crescent Axe", 0x006B6C00, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Great Axe", 0x006B9310, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Hand Axe", 0x006ACFC0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Battle Axe", 0x006AF6D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Deep Battle Axe", 0x006AFA54, DS3ItemCategory.WEAPON_UPGRADE_10), + ("Brigand Axe", 0x006B1DE0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Crescent Axe", 0x006B6C00, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Great Axe", 0x006B9310, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Butcher Knife", 0x006BE130, DS3ItemCategory.WEAPON_UPGRADE_10), - ("Dragonslayer's Axe", 0x006C0840, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Thrall Axe", 0x006C5660, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Dragonslayer's Axe", 0x006C0840, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Thrall Axe", 0x006C5660, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Dragonslayer Greataxe", 0x006C7D70, DS3ItemCategory.WEAPON_UPGRADE_5), ("Demon's Greataxe", 0x006CA480, DS3ItemCategory.WEAPON_UPGRADE_5), ("Eleonora", 0x006CCB90, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Man Serpent Hatchet", 0x006D19B0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Man Serpent Hatchet", 0x006D19B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Dragon King Greataxe", 0x006D40C0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Club", 0x007A1200, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Mace", 0x007A3910, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Morning Star", 0x007A6020, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Reinforced Club", 0x007A8730, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Large Club", 0x007AFC60, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Great Club", 0x007B4A80, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Great Mace", 0x007BBFB0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Great Wooden Hammer", 0x007C8300, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Club", 0x007A1200, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Mace", 0x007A3910, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Morning Star", 0x007A6020, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Reinforced Club", 0x007A8730, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Large Club", 0x007AFC60, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Great Club", 0x007B4A80, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Great Mace", 0x007BBFB0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Great Wooden Hammer", 0x007C8300, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Gargoyle Flame Hammer", 0x007CAA10, DS3ItemCategory.WEAPON_UPGRADE_5), ("Vordt's Great Hammer", 0x007CD120, DS3ItemCategory.WEAPON_UPGRADE_5), ("Old King's Great Hammer", 0x007CF830, DS3ItemCategory.WEAPON_UPGRADE_5), ("Heysel Pick", 0x007D6D60, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Warpick", 0x007DBB80, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Pickaxe", 0x007DE290, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Warpick", 0x007DBB80, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Pickaxe", 0x007DE290, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Dragon Tooth", 0x007E09A0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Smough's Great Hammer", 0x007E30B0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Blacksmith Hammer", 0x007E57C0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Blacksmith Hammer", 0x007E57C0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Morne's Great Hammer", 0x007E7ED0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Spiked Mace", 0x007EA5E0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Spear", 0x00895440, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Winged Spear", 0x00897B50, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Partizan", 0x0089C970, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Greatlance", 0x008A8CC0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Lothric Knight Long Spear", 0x008AB3D0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Spiked Mace", 0x007EA5E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Spear", 0x00895440, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Winged Spear", 0x00897B50, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Partizan", 0x0089C970, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Greatlance", 0x008A8CC0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Lothric Knight Long Spear", 0x008AB3D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Gargoyle Flame Spear", 0x008B01F0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Rotten Ghru Spear", 0x008B2900, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Rotten Ghru Spear", 0x008B2900, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Tailbone Spear", 0x008B5010, DS3ItemCategory.WEAPON_UPGRADE_5), ("Soldering Iron", 0x008B7720, DS3ItemCategory.WEAPON_UPGRADE_10), ("Arstor's Spear", 0x008BEC50, DS3ItemCategory.WEAPON_UPGRADE_5), ("Saint Bident", 0x008C1360, DS3ItemCategory.WEAPON_UPGRADE_10), ("Yorshka's Spear", 0x008C3A70, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Pike", 0x008C6180, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Pike", 0x008C6180, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Channeler's Trident", 0x008C8890, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Heavy Four-pronged Plow", 0x008C88F4, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Heavy Four-pronged Plow", 0x008C88F4, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Dragonslayer Spear", 0x008CAFA0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Great Scythe", 0x00989680, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Lucerne", 0x0098BD90, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Glaive", 0x0098E4A0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Halberd", 0x00990BB0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Great Scythe", 0x00989680, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Lucerne", 0x0098BD90, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Glaive", 0x0098E4A0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Halberd", 0x00990BB0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Black Knight Greataxe", 0x009959D0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Pontiff Knight Great Scythe", 0x0099A7F0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Great Corvian Scythe", 0x0099CF00, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Winged Knight Halberd", 0x0099F610, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Great Corvian Scythe", 0x0099CF00, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Winged Knight Halberd", 0x0099F610, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Gundyr's Halberd", 0x009A1D20, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Red Hilted Halberd", 0x009AB960, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Red Hilted Halberd", 0x009AB960, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Black Knight Glaive", 0x009AE070, DS3ItemCategory.WEAPON_UPGRADE_5), ("Immolation Tinder", 0x009B0780, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Claw", 0x00A7D8C0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Caestus", 0x00A7FFD0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Manikin Claws", 0x00A826E0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Claw", 0x00A7D8C0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Caestus", 0x00A7FFD0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Manikin Claws", 0x00A826E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Demon's Fist", 0x00A84DF0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Dark Hand", 0x00A87500, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Whip", 0x00B71B00, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Whip", 0x00B71B00, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Witch's Locks", 0x00B7B740, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Notched Whip", 0x00B7DE50, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Notched Whip", 0x00B7DE50, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Spotted Whip", 0x00B80560, DS3ItemCategory.WEAPON_UPGRADE_10), ("Talisman", 0x00C72090, DS3ItemCategory.WEAPON_UPGRADE_10), ("Sorcerer's Staff", 0x00C747A0, DS3ItemCategory.WEAPON_UPGRADE_10), @@ -237,76 +261,79 @@ def get_name_to_id() -> dict: ("Black Bow of Pharis", 0x00D7E970, DS3ItemCategory.WEAPON_UPGRADE_10), ("Shield Crossbow", 0x00D81080, DS3ItemCategory.WEAPON_UPGRADE_10), ("Sniper Crossbow", 0x00D83790, DS3ItemCategory.WEAPON_UPGRADE_10), - ("Sellsword Twinblades", 0x00F42400, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Warden Twinblades", 0x00F47220, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Winged Knight Twinaxes", 0x00F49930, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Sellsword Twinblades", 0x00F42400, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Warden Twinblades", 0x00F47220, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Winged Knight Twinaxes", 0x00F49930, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Dancer's Enchanted Swords", 0x00F4C040, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Great Machete", 0x00F4E750, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Brigand Twindaggers", 0x00F50E60, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Gotthard Twinswords", 0x00F53570, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Onikiri and Ubadachi", 0x00F58390, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Drang Twinspears", 0x00F5AAA0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Drang Hammers", 0x00F61FD0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Great Machete", 0x00F4E750, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Brigand Twindaggers", 0x00F50E60, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Gotthard Twinswords", 0x00F53570, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Onikiri and Ubadachi", 0x00F58390, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Drang Twinspears", 0x00F5AAA0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Drang Hammers", 0x00F61FD0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), - ("Buckler", 0x01312D00, DS3ItemCategory.SHIELD), #INFUSABLE - ("Small Leather Shield", 0x01315410, DS3ItemCategory.SHIELD), #INFUSABLE - ("Round Shield", 0x0131A230, DS3ItemCategory.SHIELD), #INFUSABLE - ("Large Leather Shield", 0x0131C940, DS3ItemCategory.SHIELD), #INFUSABLE - ("Hawkwood's Shield", 0x01323E70, DS3ItemCategory.SHIELD), #INFUSABLE - ("Iron Round Shield", 0x01326580, DS3ItemCategory.SHIELD), #INFUSABLE - ("Wooden Shield", 0x0132DAB0, DS3ItemCategory.SHIELD), #INFUSABLE - ("Kite Shield", 0x013301C0, DS3ItemCategory.SHIELD), #INFUSABLE - ("Ghru Rotshield", 0x013328D0, DS3ItemCategory.SHIELD), #INFUSABLE + # Shields + ("Buckler", 0x01312D00, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Small Leather Shield", 0x01315410, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Round Shield", 0x0131A230, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Large Leather Shield", 0x0131C940, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Hawkwood's Shield", 0x01323E70, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Iron Round Shield", 0x01326580, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Wooden Shield", 0x0132DAB0, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Kite Shield", 0x013301C0, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Ghru Rotshield", 0x013328D0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Havel's Greatshield", 0x013376F0, DS3ItemCategory.SHIELD), - ("Target Shield", 0x01339E00, DS3ItemCategory.SHIELD), #INFUSABLE - ("Elkhorn Round Shield", 0x0133C510, DS3ItemCategory.SHIELD), #INFUSABLE - ("Warrior's Round Shield", 0x0133EC20, DS3ItemCategory.SHIELD), #INFUSABLE - ("Caduceus Round Shield", 0x01341330, DS3ItemCategory.SHIELD), #INFUSABLE - ("Blessed Red and White Shield", 0x01343FB9, DS3ItemCategory.SHIELD), #INFUSABLE? - ("Plank Shield", 0x01346150, DS3ItemCategory.SHIELD), #INFUSABLE - ("Leather Shield", 0x01348860, DS3ItemCategory.SHIELD), #INFUSABLE - ("Crimson Parma", 0x0134AF70, DS3ItemCategory.SHIELD), #INFUSABLE - ("Eastern Iron Shield", 0x0134D680, DS3ItemCategory.SHIELD), #INFUSABLE - ("Llewellyn Shield", 0x0134FD90, DS3ItemCategory.SHIELD), #INFUSABLE - ("Golden Falcon Shield", 0x01354BB0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Target Shield", 0x01339E00, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Elkhorn Round Shield", 0x0133C510, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Warrior's Round Shield", 0x0133EC20, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Caduceus Round Shield", 0x01341330, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Red and White Shield", 0x01343A40, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Blessed Red and White Shield", 0x01343FB9, DS3ItemCategory.SHIELD), + ("Plank Shield", 0x01346150, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Leather Shield", 0x01348860, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Crimson Parma", 0x0134AF70, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Eastern Iron Shield", 0x0134D680, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Llewellyn Shield", 0x0134FD90, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Golden Falcon Shield", 0x01354BB0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Sacred Bloom Shield", 0x013572C0, DS3ItemCategory.SHIELD), - ("Lothric Knight Shield", 0x01409650, DS3ItemCategory.SHIELD), #INFUSABLE - ("Knight Shield", 0x01410B80, DS3ItemCategory.SHIELD), #INFUSABLE + ("Ancient Dragon Greatshield", 0x013599D0, DS3ItemCategory.SKIP), # Cut Content + ("Lothric Knight Shield", 0x01409650, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Knight Shield", 0x01410B80, DS3ItemCategory.SHIELD_INFUSIBLE), ("Pontiff Knight Shield", 0x014159A0, DS3ItemCategory.SHIELD), - ("Carthus Shield", 0x014180B0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Carthus Shield", 0x014180B0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Black Knight Shield", 0x0141F5E0, DS3ItemCategory.SHIELD), ("Silver Knight Shield", 0x01424400, DS3ItemCategory.SHIELD), - ("Spiked Shield", 0x01426B10, DS3ItemCategory.SHIELD), #INFUSABLE - ("Pierce Shield", 0x01429220, DS3ItemCategory.SHIELD), #INFUSABLE - ("East-West Shield", 0x0142B930, DS3ItemCategory.SHIELD), #INFUSABLE - ("Sunlight Shield", 0x0142E040, DS3ItemCategory.SHIELD), #INFUSABLE + ("Spiked Shield", 0x01426B10, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Pierce Shield", 0x01429220, DS3ItemCategory.SHIELD_INFUSIBLE), + ("East-West Shield", 0x0142B930, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Sunlight Shield", 0x0142E040, DS3ItemCategory.SHIELD_INFUSIBLE), ("Crest Shield", 0x01430750, DS3ItemCategory.SHIELD), ("Dragon Crest Shield", 0x01432E60, DS3ItemCategory.SHIELD), - ("Spider Shield", 0x01435570, DS3ItemCategory.SHIELD), #INFUSABLE + ("Spider Shield", 0x01435570, DS3ItemCategory.SHIELD_INFUSIBLE), ("Grass Crest Shield", 0x01437C80, DS3ItemCategory.SHIELD), - ("Sunset Shield", 0x0143A390, DS3ItemCategory.SHIELD), #INFUSABLE + ("Sunset Shield", 0x0143A390, DS3ItemCategory.SHIELD_INFUSIBLE), ("Golden Wing Crest Shield", 0x0143CAA0, DS3ItemCategory.SHIELD), - ("Blue Wooden Shield", 0x0143F1B0, DS3ItemCategory.SHIELD), #INFUSABLE - ("Silver Eagle Kite Shield", 0x014418C0, DS3ItemCategory.SHIELD), #INFUSABLE - ("Stone Parma", 0x01443FD0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Blue Wooden Shield", 0x0143F1B0, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Silver Eagle Kite Shield", 0x014418C0, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Stone Parma", 0x01443FD0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Spirit Tree Crest Shield", 0x014466E0, DS3ItemCategory.SHIELD), - ("Porcine Shield", 0x01448DF0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Porcine Shield", 0x01448DF0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Shield of Want", 0x0144B500, DS3ItemCategory.SHIELD), - ("Wargod Wooden Shield", 0x0144DC10, DS3ItemCategory.SHIELD), #INFUSABLE - ("Lothric Knight Greatshield", 0x014FD890, DS3ItemCategory.SHIELD), #INFUSABLE - ("Cathedral Knight Greatshield", 0x014FFFA0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Wargod Wooden Shield", 0x0144DC10, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Lothric Knight Greatshield", 0x014FD890, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Cathedral Knight Greatshield", 0x014FFFA0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Dragonslayer Greatshield", 0x01504DC0, DS3ItemCategory.SHIELD), ("Moaning Shield", 0x015074D0, DS3ItemCategory.SHIELD), ("Yhorm's Greatshield", 0x0150C2F0, DS3ItemCategory.SHIELD), - ("Black Iron Greatshield", 0x0150EA00, DS3ItemCategory.SHIELD), #INFUSABLE + ("Black Iron Greatshield", 0x0150EA00, DS3ItemCategory.SHIELD_INFUSIBLE), ("Wolf Knight's Greatshield", 0x01511110, DS3ItemCategory.SHIELD), - ("Twin Dragon Greatshield", 0x01513820, DS3ItemCategory.SHIELD), #INFUSABLE + ("Twin Dragon Greatshield", 0x01513820, DS3ItemCategory.SHIELD_INFUSIBLE), ("Greatshield of Glory", 0x01515F30, DS3ItemCategory.SHIELD), ("Curse Ward Greatshield", 0x01518640, DS3ItemCategory.SHIELD), - ("Bonewheel Shield", 0x0151AD50, DS3ItemCategory.SHIELD), #INFUSABLE - ("Stone Greatshield", 0x0151D460, DS3ItemCategory.SHIELD), #INFUSABLE - ("Ancient Dragon Greatshield", 0x013599D0, DS3ItemCategory.SHIELD), + ("Bonewheel Shield", 0x0151AD50, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Stone Greatshield", 0x0151D460, DS3ItemCategory.SHIELD_INFUSIBLE), + # Armor ("Fallen Knight Helm", 0x1121EAC0, DS3ItemCategory.ARMOR), ("Fallen Knight Armor", 0x1121EEA8, DS3ItemCategory.ARMOR), ("Fallen Knight Gauntlets", 0x1121F290, DS3ItemCategory.ARMOR), @@ -348,7 +375,7 @@ def get_name_to_id() -> dict: ("Morne's Helm", 0x1175D720, DS3ItemCategory.ARMOR), ("Morne's Armor", 0x1175DB08, DS3ItemCategory.ARMOR), ("Morne's Gauntlets", 0x1175DEF0, DS3ItemCategory.ARMOR), - ("Morne's Leggings", 0x1175E2D8, DS3ItemCategory.ARMOR), #STOPPED HERE + ("Morne's Leggings", 0x1175E2D8, DS3ItemCategory.ARMOR), ("Silver Mask", 0x117D7840, DS3ItemCategory.ARMOR), ("Leonhard's Garb", 0x117D7C28, DS3ItemCategory.ARMOR), ("Leonhard's Gauntlets", 0x117D8010, DS3ItemCategory.ARMOR), @@ -412,7 +439,7 @@ def get_name_to_id() -> dict: ("Evangelist Robe", 0x12DC6FE8, DS3ItemCategory.ARMOR), ("Evangelist Gloves", 0x12DC73D0, DS3ItemCategory.ARMOR), ("Evangelist Trousers", 0x12DC77B8, DS3ItemCategory.ARMOR), - ("Scholar's Shed Skin", 0x12E40D20, DS3ItemCategory.ARMOR), + ("Scholar's Shed Skin", 0x12E40D20, DS3ItemCategory.SKIP), # Cut Content ("Scholar's Robe", 0x12E41108, DS3ItemCategory.ARMOR), ("Winged Knight Helm", 0x12EBAE40, DS3ItemCategory.ARMOR), ("Winged Knight Armor", 0x12EBB228, DS3ItemCategory.ARMOR), @@ -615,6 +642,7 @@ def get_name_to_id() -> dict: ("Karla's Gloves", 0x15E6A690, DS3ItemCategory.ARMOR), ("Karla's Trousers", 0x15E6AA78, DS3ItemCategory.ARMOR), + # Covenants ("Blade of the Darkmoon", 0x20002710, DS3ItemCategory.SKIP), ("Watchdogs of Farron", 0x20002724, DS3ItemCategory.SKIP), ("Aldrich Faithful", 0x2000272E, DS3ItemCategory.SKIP), @@ -624,6 +652,7 @@ def get_name_to_id() -> dict: ("Blue Sentinels", 0x20002756, DS3ItemCategory.SKIP), ("Rosaria's Fingers", 0x20002760, DS3ItemCategory.SKIP), + # Rings ("Life Ring", 0x20004E20, DS3ItemCategory.RING), ("Life Ring+1", 0x20004E21, DS3ItemCategory.RING), ("Life Ring+2", 0x20004E22, DS3ItemCategory.RING), @@ -734,6 +763,7 @@ def get_name_to_id() -> dict: ("Pontiff's Left Eye", 0x20005136, DS3ItemCategory.RING), ("Dragonscale Ring", 0x2000515E, DS3ItemCategory.RING), + # Items ("Roster of Knights", 0x4000006C, DS3ItemCategory.SKIP), ("Cracked Red Eye Orb", 0x4000006F, DS3ItemCategory.SKIP), ("Divine Blessing", 0x400000F0, DS3ItemCategory.MISC), @@ -821,7 +851,7 @@ def get_name_to_id() -> dict: ("Dark Sigil", 0x400001EA, DS3ItemCategory.SKIP), ("Ember", 0x400001F4, DS3ItemCategory.MISC), ("Soul of Champion Gundyr", 0x400002C8, DS3ItemCategory.MISC), - ("Soul of a Wicked Spirit", 0x400002C9, DS3ItemCategory.MISC), + ("Soul of a Wicked Spirit", 0x400002C9, DS3ItemCategory.SKIP), # Cut Content ("Soul of the Dancer", 0x400002CA, DS3ItemCategory.MISC), ("Soul of a Crystal Sage", 0x400002CB, DS3ItemCategory.MISC), ("Soul of the Blood of the Wolf", 0x400002CD, DS3ItemCategory.MISC), @@ -892,10 +922,12 @@ def get_name_to_id() -> dict: ("Loretta's Bone", 0x40000846, DS3ItemCategory.KEY), ("Braille Divine Tome of Carim", 0x40000847, DS3ItemCategory.MISC), ("Braille Divine Tome of Lothric", 0x40000848, DS3ItemCategory.MISC), + ("Cinders of a Lord - Abyss Watcher", 0x4000084B, DS3ItemCategory.KEY), ("Cinders of a Lord - Aldrich", 0x4000084C, DS3ItemCategory.KEY), ("Cinders of a Lord - Yhorm the Giant", 0x4000084D, DS3ItemCategory.KEY), ("Cinders of a Lord - Lothric Prince", 0x4000084E, DS3ItemCategory.KEY), + ("Great Swamp Pyromancy Tome", 0x4000084F, DS3ItemCategory.MISC), ("Carthus Pyromancy Tome", 0x40000850, DS3ItemCategory.MISC), ("Izalith Pyromancy Tome", 0x40000851, DS3ItemCategory.MISC), @@ -922,26 +954,7 @@ def get_name_to_id() -> dict: ("Dragon Chaser's Ashes", 0x40000867, DS3ItemCategory.MISC), ("Easterner's Ashes", 0x40000868, DS3ItemCategory.MISC), - # AMMUNITION IN THIS SECTION, NOT SURE IF WE WANT TO INCLUDE THIS, BUT WE HAVE IT - ("Standard Arrow", 0x00061A80, DS3ItemCategory.SKIP), - ("Fire Arrow", 0x00061AE4, DS3ItemCategory.SKIP), - ("Poison Arrow", 0x00061B48, DS3ItemCategory.SKIP), - ("Large Arrow", 0x00061BAC, DS3ItemCategory.SKIP), - ("Feather Arrow", 0x00061C10, DS3ItemCategory.SKIP), - ("Moonlight Arrow", 0x00061C74, DS3ItemCategory.SKIP), - ("Wood Arrow", 0x00061CD8, DS3ItemCategory.SKIP), - ("Dark Arrow", 0x00061D3C, DS3ItemCategory.SKIP), - ("Dragonslayer Greatarrow", 0x00062250, DS3ItemCategory.SKIP), - ("Dragonslayer Lightning Arrow", 0x00062318, DS3ItemCategory.SKIP), - ("Onislayer Greatarrow", 0x0006237C, DS3ItemCategory.SKIP), - ("Standard Bolt", 0x00062A20, DS3ItemCategory.SKIP), - ("Heavy Bolt", 0x00062A84, DS3ItemCategory.SKIP), - ("Sniper Bolt", 0x00062AE8, DS3ItemCategory.SKIP), - ("Wood Bolt", 0x00062B4C, DS3ItemCategory.SKIP), - ("Lightning Bolt", 0x00062BB0, DS3ItemCategory.SKIP), - ("Splintering Bolt", 0x00062C14, DS3ItemCategory.SKIP), - ("Exploding Bolt", 0x00062C78, DS3ItemCategory.SKIP), - + # Spells ("Farron Dart", 0x40124F80, DS3ItemCategory.SPELL), ("Great Farron Dart", 0x40127690, DS3ItemCategory.SPELL), ("Soul Arrow", 0x4013D620, DS3ItemCategory.SPELL), @@ -1044,42 +1057,46 @@ def get_name_to_id() -> dict: _dlc_items = [DS3ItemData(row[0], row[1], True, row[2]) for row in [ + # Ammunition + ("Millwood Greatarrow", 0x000623E0, DS3ItemCategory.SKIP), + + # Weapons ("Onyx Blade", 0x00222E00, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Follower Sabre", 0x003EDDC0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Millwood Battle Axe", 0x006D67D0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Follower Sabre", 0x003EDDC0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Millwood Battle Axe", 0x006D67D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Earth Seeker", 0x006D8EE0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Quakestone Hammer", 0x007ECCF0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Follower Javelin", 0x008CD6B0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Follower Javelin", 0x008CD6B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Friede's Great Scythe", 0x009B55A0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Crow Talons", 0x00A89C10, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Crow Talons", 0x00A89C10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Rose of Ariandel", 0x00B82C70, DS3ItemCategory.WEAPON_UPGRADE_5), ("Pyromancer's Parting Flame", 0x00CC9ED0, DS3ItemCategory.WEAPON_UPGRADE_10), ("Millwood Greatbow", 0x00D85EA0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Valorheart", 0x00F646E0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Crow Quills", 0x00F66DF0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Crow Quills", 0x00F66DF0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Follower Torch", 0x015F1AD0, DS3ItemCategory.WEAPON_UPGRADE_10), ("Aquamarine Dagger", 0x00116520, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Murky Hand Scythe", 0x00118C30, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Murky Hand Scythe", 0x00118C30, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Ringed Knight Straight Sword", 0x00225510, DS3ItemCategory.WEAPON_UPGRADE_5), ("Gael's Greatsword", 0x00227C20, DS3ItemCategory.WEAPON_UPGRADE_5), ("Demon's Scar", 0x003F04D0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Frayed Blade", 0x004D35A0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Herald Curved Greatsword", 0x006159E0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Herald Curved Greatsword", 0x006159E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Ledo's Great Hammer", 0x007EF400, DS3ItemCategory.WEAPON_UPGRADE_5), ("Ringed Knight Spear", 0x008CFDC0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Lothric War Banner", 0x008D24D0, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE + ("Lothric War Banner", 0x008D24D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Crucifix of the Mad King", 0x008D4BE0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Splitleaf Greatsword", 0x009B2E90, DS3ItemCategory.WEAPON_UPGRADE_10), #INFUSABLE - ("Murky Longstaff", 0x00CCC5E0, DS3ItemCategory.WEAPON_UPGRADE_10), + ("Splitleaf Greatsword", 0x009B2E90, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Murky Longstaff", 0x00CCC5E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Sacred Chime of Filianore", 0x00CCECF0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Preacher's Right Arm", 0x00CD1400, DS3ItemCategory.WEAPON_UPGRADE_5), ("White Birch Bow", 0x00D77440, DS3ItemCategory.WEAPON_UPGRADE_5), ("Repeating Crossbow", 0x00D885B0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Ringed Knight Paired Greatswords", 0x00F69500, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Followers Shield", 0x0135C0E0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Followers Shield", 0x0135C0E0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Ethereal Oak Shield", 0x01450320, DS3ItemCategory.SHIELD), - ("Giant Door Shield", 0x00F5F8C0, DS3ItemCategory.SHIELD), #INFUSABLE + ("Giant Door Shield", 0x00F5F8C0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Follower Shield", 0x0135C0E0, DS3ItemCategory.SHIELD), ("Dragonhead Shield", 0x0135E7F0, DS3ItemCategory.SHIELD), ("Dragonhead Greatshield", 0x01452A30, DS3ItemCategory.SHIELD), @@ -1105,6 +1122,7 @@ def get_name_to_id() -> dict: ("Ordained Trousers", 0x135E2AD8, DS3ItemCategory.ARMOR), ("Antiquated Plain Garb", 0x11B2E408, DS3ItemCategory.ARMOR), ("Violet Wrappings", 0x11B2E7F0, DS3ItemCategory.ARMOR), + ("Loincloth 2", 0x11B2EBD8, DS3ItemCategory.ARMOR), ("Shira's Crown", 0x11C22260, DS3ItemCategory.ARMOR), ("Shira's Armor", 0x11C22648, DS3ItemCategory.ARMOR), ("Shira's Gloves", 0x11C22A30, DS3ItemCategory.ARMOR), diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index 131a04c24c38..81c9ebcf7d9b 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -555,7 +555,7 @@ def get_name_to_id() -> dict: DS3LocationData("RC: Violet Wrappings", "Violet Wrappings", DS3LocationCategory.ARMOR), DS3LocationData("RC: Soul of Darkeater Midir", "Soul of Darkeater Midir", DS3LocationCategory.MISC), DS3LocationData("RC: Soul of Slave Knight Gael", "Soul of Slave Knight Gael", DS3LocationCategory.MISC), - DS3LocationData("RC: Blood of the Dark Souls", "Blood of the Dark Soul", DS3LocationCategory.KEY), + DS3LocationData("RC: Blood of the Dark Soul", "Blood of the Dark Soul", DS3LocationCategory.KEY), DS3LocationData("RC: Chloranthy Ring+3", "Chloranthy Ring+3", DS3LocationCategory.RING), DS3LocationData("RC: Ring of Steel Protection+3", "Ring of Steel Protection+3", DS3LocationCategory.RING), DS3LocationData("RC: Covetous Gold Serpent Ring+3", "Covetous Gold Serpent Ring+3", DS3LocationCategory.RING), diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index f1c00e39e090..5ba3a17c3c06 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -236,12 +236,16 @@ def create_random_replacement_list(item_categories: Set[DS3ItemCategory], num_it if DS3LocationCategory.WEAPON in self.enabled_location_categories: itempool_by_category[DS3LocationCategory.WEAPON] = create_random_replacement_list( - {DS3ItemCategory.WEAPON_UPGRADE_5, DS3ItemCategory.WEAPON_UPGRADE_10}, + { + DS3ItemCategory.WEAPON_UPGRADE_5, + DS3ItemCategory.WEAPON_UPGRADE_10, + DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE + }, len(itempool_by_category[DS3LocationCategory.WEAPON]) ) if DS3LocationCategory.SHIELD in self.enabled_location_categories: itempool_by_category[DS3LocationCategory.SHIELD] = create_random_replacement_list( - {DS3ItemCategory.SHIELD}, + {DS3ItemCategory.SHIELD, DS3ItemCategory.SHIELD_INFUSIBLE}, len(itempool_by_category[DS3LocationCategory.SHIELD]) ) if DS3LocationCategory.ARMOR in self.enabled_location_categories: @@ -273,7 +277,8 @@ def create_item(self, name: str) -> Item: if name in key_item_names: item_classification = ItemClassification.progression - elif item_dictionary[name].category in {DS3ItemCategory.WEAPON_UPGRADE_5, DS3ItemCategory.WEAPON_UPGRADE_10}: + elif item_dictionary[name].category in \ + {DS3ItemCategory.WEAPON_UPGRADE_5, DS3ItemCategory.WEAPON_UPGRADE_10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE}: item_classification = ItemClassification.useful else: item_classification = ItemClassification.filler @@ -386,13 +391,13 @@ def fill_slot_data(self) -> Dict[str, object]: if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < weapon_level_percentage: if item.category == DS3ItemCategory.WEAPON_UPGRADE_5: name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_5, max_5) - elif item.category == DS3ItemCategory.WEAPON_UPGRADE_10: + elif item.category in {DS3ItemCategory.WEAPON_UPGRADE_10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE}: name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_10, max_10) # Randomize some weapon infusions if self.multiworld.randomize_infusion[self.player] == Toggle.option_true: for item in item_dictionary.values(): - if item.name == "Broadsword": # TODO: Detect if a weapon can be infused here + if item.category in {DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE, DS3ItemCategory.SHIELD_INFUSIBLE}: if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < infusion_percentage: name_to_ds3_code[item.name] += 100 * self.multiworld.per_slot_randoms[self.player].randint(0, 15) From 9e3384fb71ad7272218cd7383964d5e8f20f04db Mon Sep 17 00:00:00 2001 From: Zunawe Date: Sun, 21 May 2023 15:25:58 -0700 Subject: [PATCH 4/5] DS3: Fix item ordering --- worlds/dark_souls_3/Items.py | 134 +++++++++++++++---------------- worlds/dark_souls_3/Locations.py | 2 +- 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/worlds/dark_souls_3/Items.py b/worlds/dark_souls_3/Items.py index 5a4c965eea89..c1b7121478e1 100644 --- a/worlds/dark_souls_3/Items.py +++ b/worlds/dark_souls_3/Items.py @@ -392,10 +392,10 @@ def get_name_to_id() -> dict: ("Cornyx's Garb", 0x11945F88, DS3ItemCategory.ARMOR), ("Cornyx's Wrap", 0x11946370, DS3ItemCategory.ARMOR), ("Cornyx's Skirt", 0x11946758, DS3ItemCategory.ARMOR), - ("Executioner Helm", 0x118CBA80, DS3ItemCategory.ARMOR), - ("Executioner Armor", 0x118CBE68, DS3ItemCategory.ARMOR), - ("Executioner Gauntlets", 0x118CC250, DS3ItemCategory.ARMOR), - ("Executioner Leggings", 0x118CC638, DS3ItemCategory.ARMOR), + ("Executioner Helm", 0x119BFCC0, DS3ItemCategory.ARMOR), + ("Executioner Armor", 0x119C00A8, DS3ItemCategory.ARMOR), + ("Executioner Gauntlets", 0x119C0490, DS3ItemCategory.ARMOR), + ("Executioner Leggings", 0x119C0878, DS3ItemCategory.ARMOR), ("Billed Mask", 0x11A39DE0, DS3ItemCategory.ARMOR), ("Black Dress", 0x11A3A1C8, DS3ItemCategory.ARMOR), ("Black Gauntlets", 0x11A3A5B0, DS3ItemCategory.ARMOR), @@ -866,10 +866,10 @@ def get_name_to_id() -> dict: ("Soul of the Rotted Greatwood", 0x400002D7, DS3ItemCategory.MISC), ("Soul of Rosaria", 0x400002D8, DS3ItemCategory.MISC), ("Soul of the Deacons of the Deep", 0x400002D9, DS3ItemCategory.MISC), + ("Soul of the Twin Princes", 0x400002DB, DS3ItemCategory.MISC), ("Soul of Yhorm the Giant", 0x400002DC, DS3ItemCategory.MISC), ("Soul of the Lords", 0x400002DD, DS3ItemCategory.MISC), ("Soul of a Demon", 0x400002E3, DS3ItemCategory.MISC), - ("Soul of the Twin Princes", 0x400002DB, DS3ItemCategory.MISC), ("Soul of a Stray Demon", 0x400002E7, DS3ItemCategory.MISC), ("Titanite Shard", 0x400003E8, DS3ItemCategory.MISC), ("Large Titanite Shard", 0x400003E9, DS3ItemCategory.MISC), @@ -877,22 +877,22 @@ def get_name_to_id() -> dict: ("Titanite Slab", 0x400003EB, DS3ItemCategory.MISC), ("Titanite Scale", 0x400003FC, DS3ItemCategory.MISC), ("Twinkling Titanite", 0x40000406, DS3ItemCategory.MISC), - ("Heavy Gem", 0x4000044C, DS3ItemCategory.MISC),# COULD - ("Sharp Gem", 0x40000456, DS3ItemCategory.MISC),# ADD - ("Refined Gem", 0x40000460, DS3ItemCategory.MISC),# THESE - ("Crystal Gem", 0x4000046A, DS3ItemCategory.MISC),# TO - ("Simple Gem", 0x40000474, DS3ItemCategory.MISC),# THE - ("Fire Gem", 0x4000047E, DS3ItemCategory.MISC),# LOCATION - ("Chaos Gem", 0x40000488, DS3ItemCategory.MISC),# POOL - ("Lightning Gem", 0x40000492, DS3ItemCategory.MISC),# IF - ("Deep Gem", 0x4000049C, DS3ItemCategory.MISC),# WE - ("Dark Gem", 0x400004A6, DS3ItemCategory.MISC),# WANTED - ("Poison Gem", 0x400004B0, DS3ItemCategory.MISC),# TO - ("Blood Gem", 0x400004BA, DS3ItemCategory.MISC),# ADD - ("Raw Gem", 0x400004C4, DS3ItemCategory.MISC),# A - ("Blessed Gem", 0x400004CE, DS3ItemCategory.MISC),# COUPLE - ("Hollow Gem", 0x400004D8, DS3ItemCategory.MISC),# OF - ("Shriving Stone", 0x400004E2, DS3ItemCategory.MISC),# EACH + ("Heavy Gem", 0x4000044C, DS3ItemCategory.MISC), + ("Sharp Gem", 0x40000456, DS3ItemCategory.MISC), + ("Refined Gem", 0x40000460, DS3ItemCategory.MISC), + ("Crystal Gem", 0x4000046A, DS3ItemCategory.MISC), + ("Simple Gem", 0x40000474, DS3ItemCategory.MISC), + ("Fire Gem", 0x4000047E, DS3ItemCategory.MISC), + ("Chaos Gem", 0x40000488, DS3ItemCategory.MISC), + ("Lightning Gem", 0x40000492, DS3ItemCategory.MISC), + ("Deep Gem", 0x4000049C, DS3ItemCategory.MISC), + ("Dark Gem", 0x400004A6, DS3ItemCategory.MISC), + ("Poison Gem", 0x400004B0, DS3ItemCategory.MISC), + ("Blood Gem", 0x400004BA, DS3ItemCategory.MISC), + ("Raw Gem", 0x400004C4, DS3ItemCategory.MISC), + ("Blessed Gem", 0x400004CE, DS3ItemCategory.MISC), + ("Hollow Gem", 0x400004D8, DS3ItemCategory.MISC), + ("Shriving Stone", 0x400004E2, DS3ItemCategory.MISC), ("Lift Chamber Key", 0x400007D1, DS3ItemCategory.KEY), ("Small Doll", 0x400007D5, DS3ItemCategory.KEY), ("Jailbreaker's Key", 0x400007D7, DS3ItemCategory.KEY), @@ -922,12 +922,10 @@ def get_name_to_id() -> dict: ("Loretta's Bone", 0x40000846, DS3ItemCategory.KEY), ("Braille Divine Tome of Carim", 0x40000847, DS3ItemCategory.MISC), ("Braille Divine Tome of Lothric", 0x40000848, DS3ItemCategory.MISC), - ("Cinders of a Lord - Abyss Watcher", 0x4000084B, DS3ItemCategory.KEY), ("Cinders of a Lord - Aldrich", 0x4000084C, DS3ItemCategory.KEY), ("Cinders of a Lord - Yhorm the Giant", 0x4000084D, DS3ItemCategory.KEY), ("Cinders of a Lord - Lothric Prince", 0x4000084E, DS3ItemCategory.KEY), - ("Great Swamp Pyromancy Tome", 0x4000084F, DS3ItemCategory.MISC), ("Carthus Pyromancy Tome", 0x40000850, DS3ItemCategory.MISC), ("Izalith Pyromancy Tome", 0x40000851, DS3ItemCategory.MISC), @@ -936,8 +934,8 @@ def get_name_to_id() -> dict: ("Sage's Scroll", 0x40000854, DS3ItemCategory.MISC), ("Logan's Scroll", 0x40000855, DS3ItemCategory.MISC), ("Crystal Scroll", 0x40000856, DS3ItemCategory.MISC), - ("Transposing Kiln", 0x40000857, DS3ItemCategory.SKIP), # WE COULD ADD THIS, BUT IT WOULD SHIFT ALL LOCATIONS DATA PAST UNDEAD SETTLEMENT - ("Coiled Sword ", 0x40000859, DS3ItemCategory.SKIP), # CAN PUT IN COILED SWORD EVEN WHEN YOU DONT HAVE IT. POINTLESS TO RANDOMIZE ATM + ("Transposing Kiln", 0x40000857, DS3ItemCategory.SKIP), + ("Coiled Sword", 0x40000859, DS3ItemCategory.SKIP), # Useless ("Eyes of a Fire Keeper", 0x4000085A, DS3ItemCategory.KEY), ("Sword of Avowal", 0x4000085B, DS3ItemCategory.KEY), ("Golden Scroll", 0x4000085C, DS3ItemCategory.MISC), @@ -1055,71 +1053,56 @@ def get_name_to_id() -> dict: ("Atonement", 0x4039ADA0, DS3ItemCategory.SPELL), ]] - _dlc_items = [DS3ItemData(row[0], row[1], True, row[2]) for row in [ # Ammunition ("Millwood Greatarrow", 0x000623E0, DS3ItemCategory.SKIP), # Weapons - ("Onyx Blade", 0x00222E00, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Follower Sabre", 0x003EDDC0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), - ("Millwood Battle Axe", 0x006D67D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), - ("Earth Seeker", 0x006D8EE0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Quakestone Hammer", 0x007ECCF0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Follower Javelin", 0x008CD6B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), - ("Friede's Great Scythe", 0x009B55A0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Crow Talons", 0x00A89C10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), - ("Rose of Ariandel", 0x00B82C70, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Pyromancer's Parting Flame", 0x00CC9ED0, DS3ItemCategory.WEAPON_UPGRADE_10), - ("Millwood Greatbow", 0x00D85EA0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Valorheart", 0x00F646E0, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Crow Quills", 0x00F66DF0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), - ("Follower Torch", 0x015F1AD0, DS3ItemCategory.WEAPON_UPGRADE_10), ("Aquamarine Dagger", 0x00116520, DS3ItemCategory.WEAPON_UPGRADE_5), ("Murky Hand Scythe", 0x00118C30, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Onyx Blade", 0x00222E00, DS3ItemCategory.WEAPON_UPGRADE_5), ("Ringed Knight Straight Sword", 0x00225510, DS3ItemCategory.WEAPON_UPGRADE_5), ("Gael's Greatsword", 0x00227C20, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Follower Sabre", 0x003EDDC0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Demon's Scar", 0x003F04D0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Frayed Blade", 0x004D35A0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Herald Curved Greatsword", 0x006159E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Millwood Battle Axe", 0x006D67D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Earth Seeker", 0x006D8EE0, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Quakestone Hammer", 0x007ECCF0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Ledo's Great Hammer", 0x007EF400, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Follower Javelin", 0x008CD6B0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Ringed Knight Spear", 0x008CFDC0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Lothric War Banner", 0x008D24D0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Crucifix of the Mad King", 0x008D4BE0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Splitleaf Greatsword", 0x009B2E90, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Friede's Great Scythe", 0x009B55A0, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Crow Talons", 0x00A89C10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), + ("Rose of Ariandel", 0x00B82C70, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Pyromancer's Parting Flame", 0x00CC9ED0, DS3ItemCategory.WEAPON_UPGRADE_10), ("Murky Longstaff", 0x00CCC5E0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Sacred Chime of Filianore", 0x00CCECF0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Preacher's Right Arm", 0x00CD1400, DS3ItemCategory.WEAPON_UPGRADE_5), ("White Birch Bow", 0x00D77440, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Millwood Greatbow", 0x00D85EA0, DS3ItemCategory.WEAPON_UPGRADE_5), ("Repeating Crossbow", 0x00D885B0, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Giant Door Shield", 0x00F5F8C0, DS3ItemCategory.SHIELD_INFUSIBLE), + ("Valorheart", 0x00F646E0, DS3ItemCategory.WEAPON_UPGRADE_5), + ("Crow Quills", 0x00F66DF0, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE), ("Ringed Knight Paired Greatswords", 0x00F69500, DS3ItemCategory.WEAPON_UPGRADE_5), - ("Followers Shield", 0x0135C0E0, DS3ItemCategory.SHIELD_INFUSIBLE), - ("Ethereal Oak Shield", 0x01450320, DS3ItemCategory.SHIELD), - ("Giant Door Shield", 0x00F5F8C0, DS3ItemCategory.SHIELD_INFUSIBLE), - ("Follower Shield", 0x0135C0E0, DS3ItemCategory.SHIELD), + # Shields + ("Follower Shield", 0x0135C0E0, DS3ItemCategory.SHIELD_INFUSIBLE), ("Dragonhead Shield", 0x0135E7F0, DS3ItemCategory.SHIELD), + ("Ethereal Oak Shield", 0x01450320, DS3ItemCategory.SHIELD), ("Dragonhead Greatshield", 0x01452A30, DS3ItemCategory.SHIELD), + ("Follower Torch", 0x015F1AD0, DS3ItemCategory.SHIELD), - ("Follower Helm", 0x137CA3A0, DS3ItemCategory.ARMOR), - ("Follower Armor", 0x137CA788, DS3ItemCategory.ARMOR), - ("Follower Gloves", 0x137CAB70, DS3ItemCategory.ARMOR), - ("Follower Boots", 0x137CAF58, DS3ItemCategory.ARMOR), - ("Slave Knight Hood", 0x134EDCE0, DS3ItemCategory.ARMOR), - ("Slave Knight Armor", 0x134EE0C8, DS3ItemCategory.ARMOR), - ("Slave Knight Gauntlets", 0x134EE4B0, DS3ItemCategory.ARMOR), - ("Slave Knight Leggings", 0x134EE898, DS3ItemCategory.ARMOR), + # Armor ("Vilhelm's Helm", 0x11312D00, DS3ItemCategory.ARMOR), ("Vilhelm's Armor", 0x113130E8, DS3ItemCategory.ARMOR), ("Vilhelm's Gauntlets", 0x113134D0, DS3ItemCategory.ARMOR), ("Vilhelm's Leggings", 0x113138B8, DS3ItemCategory.ARMOR), - ("Millwood Knight Helm", 0x139B2820, DS3ItemCategory.ARMOR), - ("Millwood Knight Armor", 0x139B2C08, DS3ItemCategory.ARMOR), - ("Millwood Knight Gauntlets", 0x139B2FF0, DS3ItemCategory.ARMOR), - ("Millwood Knight Leggings", 0x139B33D8, DS3ItemCategory.ARMOR), - ("Ordained Hood", 0x135E1F20, DS3ItemCategory.ARMOR), - ("Ordained Dress", 0x135E2308, DS3ItemCategory.ARMOR), - ("Ordained Trousers", 0x135E2AD8, DS3ItemCategory.ARMOR), ("Antiquated Plain Garb", 0x11B2E408, DS3ItemCategory.ARMOR), ("Violet Wrappings", 0x11B2E7F0, DS3ItemCategory.ARMOR), ("Loincloth 2", 0x11B2EBD8, DS3ItemCategory.ARMOR), @@ -1131,6 +1114,21 @@ def get_name_to_id() -> dict: ("Lapp's Armor", 0x11E84BE8, DS3ItemCategory.ARMOR), ("Lapp's Gauntlets", 0x11E84FD0, DS3ItemCategory.ARMOR), ("Lapp's Leggings", 0x11E853B8, DS3ItemCategory.ARMOR), + ("Slave Knight Hood", 0x134EDCE0, DS3ItemCategory.ARMOR), + ("Slave Knight Armor", 0x134EE0C8, DS3ItemCategory.ARMOR), + ("Slave Knight Gauntlets", 0x134EE4B0, DS3ItemCategory.ARMOR), + ("Slave Knight Leggings", 0x134EE898, DS3ItemCategory.ARMOR), + ("Ordained Hood", 0x135E1F20, DS3ItemCategory.ARMOR), + ("Ordained Dress", 0x135E2308, DS3ItemCategory.ARMOR), + ("Ordained Trousers", 0x135E2AD8, DS3ItemCategory.ARMOR), + ("Follower Helm", 0x137CA3A0, DS3ItemCategory.ARMOR), + ("Follower Armor", 0x137CA788, DS3ItemCategory.ARMOR), + ("Follower Gloves", 0x137CAB70, DS3ItemCategory.ARMOR), + ("Follower Boots", 0x137CAF58, DS3ItemCategory.ARMOR), + ("Millwood Knight Helm", 0x139B2820, DS3ItemCategory.ARMOR), + ("Millwood Knight Armor", 0x139B2C08, DS3ItemCategory.ARMOR), + ("Millwood Knight Gauntlets", 0x139B2FF0, DS3ItemCategory.ARMOR), + ("Millwood Knight Leggings", 0x139B33D8, DS3ItemCategory.ARMOR), ("Ringed Knight Hood", 0x13C8EEE0, DS3ItemCategory.ARMOR), ("Ringed Knight Armor", 0x13C8F2C8, DS3ItemCategory.ARMOR), ("Ringed Knight Gauntlets", 0x13C8F6B0, DS3ItemCategory.ARMOR), @@ -1151,16 +1149,17 @@ def get_name_to_id() -> dict: ("Desert Pyromancer Garb", 0x14DB9B48, DS3ItemCategory.ARMOR), ("Desert Pyromancer Gloves", 0x14DB9F30, DS3ItemCategory.ARMOR), ("Desert Pyromancer Skirt", 0x14DBA318, DS3ItemCategory.ARMOR), - ("Black Witch Veil", 0x14FA1BE0, DS3ItemCategory.ARMOR), ("Black Witch Hat", 0x14EAD9A0, DS3ItemCategory.ARMOR), ("Black Witch Garb", 0x14EADD88, DS3ItemCategory.ARMOR), ("Black Witch Wrappings", 0x14EAE170, DS3ItemCategory.ARMOR), ("Black Witch Trousers", 0x14EAE558, DS3ItemCategory.ARMOR), + ("Black Witch Veil", 0x14FA1BE0, DS3ItemCategory.ARMOR), ("Blindfold Mask", 0x15095E20, DS3ItemCategory.ARMOR), + # Covenants ("Spear of the Church", 0x2000276A, DS3ItemCategory.SKIP), - ("Chillbite Ring", 0x20005208, DS3ItemCategory.RING), + # Rings ("Chloranthy Ring+3", 0x20004E2D, DS3ItemCategory.RING), ("Havel's Ring+3", 0x20004E37, DS3ItemCategory.RING), ("Ring of Favor+3", 0x20004E41, DS3ItemCategory.RING), @@ -1169,33 +1168,34 @@ def get_name_to_id() -> dict: ("Covetous Gold Serpent Ring+3", 0x20004FA9, DS3ItemCategory.RING), ("Covetous Silver Serpent Ring+3", 0x20004FB3, DS3ItemCategory.RING), ("Ring of the Evil Eye+3", 0x20005071, DS3ItemCategory.RING), + ("Chillbite Ring", 0x20005208, DS3ItemCategory.RING), + # Items ("Church Guardian Shiv", 0x4000013B, DS3ItemCategory.MISC), ("Filianore's Spear Ornament", 0x4000017B, DS3ItemCategory.SKIP), ("Ritual Spear Fragment", 0x4000028A, DS3ItemCategory.MISC), ("Divine Spear Fragment", 0x4000028B, DS3ItemCategory.SKIP), - ("Old Woman's Ashes", 0x4000086D, DS3ItemCategory.SKIP), - ("Soul of Sister Friede", 0x400002E8, DS3ItemCategory.MISC), ("Soul of Slave Knight Gael", 0x400002E9, DS3ItemCategory.MISC), ("Soul of the Demon Prince", 0x400002EA, DS3ItemCategory.MISC), ("Soul of Darkeater Midir", 0x400002EB, DS3ItemCategory.MISC), - ("Champion's Bones", 0x40000869, DS3ItemCategory.SKIP), ("Captain's Ashes", 0x4000086A, DS3ItemCategory.MISC), ("Contraption Key", 0x4000086B, DS3ItemCategory.KEY), ("Small Envoy Banner", 0x4000086C, DS3ItemCategory.KEY), + ("Old Woman's Ashes", 0x4000086D, DS3ItemCategory.SKIP), ("Blood of the Dark Soul", 0x4000086E, DS3ItemCategory.SKIP), + # Spells ("Frozen Weapon", 0x401408E8, DS3ItemCategory.SPELL), - ("Snap Freeze", 0x401A90C8, DS3ItemCategory.SPELL), - ("Floating Chaos", 0x40257DA8, DS3ItemCategory.SPELL), - ("Way of White Corona", 0x403642A0, DS3ItemCategory.SPELL), ("Old Moonlight", 0x4014FF00, DS3ItemCategory.SPELL), ("Great Soul Dregs", 0x401879A0, DS3ItemCategory.SPELL), + ("Snap Freeze", 0x401A90C8, DS3ItemCategory.SPELL), + ("Floating Chaos", 0x40257DA8, DS3ItemCategory.SPELL), ("Flame Fan", 0x40258190, DS3ItemCategory.SPELL), ("Seething Chaos", 0x402896A0, DS3ItemCategory.SPELL), ("Lightning Arrow", 0x40358B08, DS3ItemCategory.SPELL), + ("Way of White Corona", 0x403642A0, DS3ItemCategory.SPELL), ("Projected Heal", 0x40364688, DS3ItemCategory.SPELL), ]] diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index 81c9ebcf7d9b..22bd13a03350 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -482,7 +482,7 @@ def get_name_to_id() -> dict: DS3LocationData("PW: Crow Talons", "Crow Talons", DS3LocationCategory.WEAPON), DS3LocationData("PW: Quakestone Hammer", "Quakestone Hammer", DS3LocationCategory.WEAPON), DS3LocationData("PW: Earth Seeker", "Earth Seeker", DS3LocationCategory.WEAPON), - DS3LocationData("PW: Follower Torch", "Follower Torch", DS3LocationCategory.WEAPON), + DS3LocationData("PW: Follower Torch", "Follower Torch", DS3LocationCategory.SHIELD), DS3LocationData("PW: Follower Shield", "Follower Shield", DS3LocationCategory.SHIELD), DS3LocationData("PW: Follower Sabre", "Follower Sabre", DS3LocationCategory.WEAPON), DS3LocationData("PW: Snap Freeze", "Snap Freeze", DS3LocationCategory.SPELL), From 8324017790b6c1926a3d3c01f5ee6be8ba5367f5 Mon Sep 17 00:00:00 2001 From: Zunawe Date: Sun, 21 May 2023 16:36:14 -0700 Subject: [PATCH 5/5] DS3: Fix infusion/upgrade code extra if --- worlds/dark_souls_3/__init__.py | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index 5ba3a17c3c06..b7b9246c3b79 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -374,32 +374,32 @@ def set_rules(self) -> None: 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 + # Depending on the specified option, modify items hexadecimal value to add an upgrade level or infusion name_to_ds3_code = {item.name: item.ds3_code for item in item_dictionary.values()} - if self.multiworld.randomize_weapon_level[self.player] > 0: + + # Randomize some weapon upgrades + if self.multiworld.randomize_weapon_level[self.player] != RandomizeWeaponLevelOption.option_none: # if the user made an error and set a min higher than the max we default to the max max_5 = self.multiworld.max_levels_in_5[self.player] min_5 = min(self.multiworld.min_levels_in_5[self.player], max_5) max_10 = self.multiworld.max_levels_in_10[self.player] min_10 = min(self.multiworld.min_levels_in_10[self.player], max_10) weapon_level_percentage = self.multiworld.randomize_weapon_level_percentage[self.player] - infusion_percentage = self.multiworld.randomize_infusion_percentage[self.player] - # Randomize some weapon upgrades - if self.multiworld.randomize_weapon_level[self.player] != RandomizeWeaponLevelOption.option_none: - for item in item_dictionary.values(): - if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < weapon_level_percentage: - if item.category == DS3ItemCategory.WEAPON_UPGRADE_5: - name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_5, max_5) - elif item.category in {DS3ItemCategory.WEAPON_UPGRADE_10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE}: - name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_10, max_10) - - # Randomize some weapon infusions - if self.multiworld.randomize_infusion[self.player] == Toggle.option_true: - for item in item_dictionary.values(): - if item.category in {DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE, DS3ItemCategory.SHIELD_INFUSIBLE}: - if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < infusion_percentage: - name_to_ds3_code[item.name] += 100 * self.multiworld.per_slot_randoms[self.player].randint(0, 15) + for item in item_dictionary.values(): + if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < weapon_level_percentage: + if item.category == DS3ItemCategory.WEAPON_UPGRADE_5: + name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_5, max_5) + elif item.category in {DS3ItemCategory.WEAPON_UPGRADE_10, DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE}: + name_to_ds3_code[item.name] += self.multiworld.per_slot_randoms[self.player].randint(min_10, max_10) + + # Randomize some weapon infusions + if self.multiworld.randomize_infusion[self.player] == Toggle.option_true: + infusion_percentage = self.multiworld.randomize_infusion_percentage[self.player] + for item in item_dictionary.values(): + if item.category in {DS3ItemCategory.WEAPON_UPGRADE_10_INFUSIBLE, DS3ItemCategory.SHIELD_INFUSIBLE}: + if self.multiworld.per_slot_randoms[self.player].randint(0, 99) < infusion_percentage: + name_to_ds3_code[item.name] += 100 * self.multiworld.per_slot_randoms[self.player].randint(0, 15) # Create the mandatory lists to generate the player's output file items_id = []