Apply item classifications

This commit is contained in:
Scipio Wright
2024-07-04 17:32:53 -04:00
parent 801ff78839
commit 0418b92745
2 changed files with 159 additions and 156 deletions

View File

@@ -60,7 +60,8 @@ enemy_encounters: Dict[str, EncounterData] = {
}
def has_combat_logic(encounter_data: List[EncounterData], state: CollectionState, player: int) -> bool:
def has_combat_logic(encounters: List[str], state: CollectionState, player: int) -> bool:
encounter_data: List[EncounterData] = [enemy_encounters[name] for name in encounters]
# if you do not meet the item requirements for any of the encounters, you cannot proceed
for data in encounter_data:
if not has_required_items(data.items_required, data.stick_required, state, player):

View File

@@ -1,169 +1,171 @@
from itertools import groupby
from typing import Dict, List, Set, NamedTuple
from BaseClasses import ItemClassification
from typing import Dict, List, Set, NamedTuple, Optional
from BaseClasses import ItemClassification as IC
class TunicItemData(NamedTuple):
classification: ItemClassification
classification: IC
quantity_in_item_pool: int
item_id_offset: int
item_group: str = ""
# classification if combat logic is on
combat_ic: Optional[IC] = None
item_base_id = 509342400
item_table: Dict[str, TunicItemData] = {
"Firecracker x2": TunicItemData(ItemClassification.filler, 3, 0, "Bombs"),
"Firecracker x3": TunicItemData(ItemClassification.filler, 3, 1, "Bombs"),
"Firecracker x4": TunicItemData(ItemClassification.filler, 3, 2, "Bombs"),
"Firecracker x5": TunicItemData(ItemClassification.filler, 1, 3, "Bombs"),
"Firecracker x6": TunicItemData(ItemClassification.filler, 2, 4, "Bombs"),
"Fire Bomb x2": TunicItemData(ItemClassification.filler, 2, 5, "Bombs"),
"Fire Bomb x3": TunicItemData(ItemClassification.filler, 1, 6, "Bombs"),
"Ice Bomb x2": TunicItemData(ItemClassification.filler, 2, 7, "Bombs"),
"Ice Bomb x3": TunicItemData(ItemClassification.filler, 2, 8, "Bombs"),
"Ice Bomb x5": TunicItemData(ItemClassification.filler, 1, 9, "Bombs"),
"Lure": TunicItemData(ItemClassification.filler, 4, 10, "Consumables"),
"Lure x2": TunicItemData(ItemClassification.filler, 1, 11, "Consumables"),
"Pepper x2": TunicItemData(ItemClassification.filler, 4, 12, "Consumables"),
"Ivy x3": TunicItemData(ItemClassification.filler, 2, 13, "Consumables"),
"Effigy": TunicItemData(ItemClassification.useful, 12, 14, "Money"),
"HP Berry": TunicItemData(ItemClassification.filler, 2, 15, "Consumables"),
"HP Berry x2": TunicItemData(ItemClassification.filler, 4, 16, "Consumables"),
"HP Berry x3": TunicItemData(ItemClassification.filler, 2, 17, "Consumables"),
"MP Berry": TunicItemData(ItemClassification.filler, 4, 18, "Consumables"),
"MP Berry x2": TunicItemData(ItemClassification.filler, 2, 19, "Consumables"),
"MP Berry x3": TunicItemData(ItemClassification.filler, 7, 20, "Consumables"),
"Fairy": TunicItemData(ItemClassification.progression, 20, 21),
"Stick": TunicItemData(ItemClassification.progression, 1, 22, "Weapons"),
"Sword": TunicItemData(ItemClassification.progression, 3, 23, "Weapons"),
"Sword Upgrade": TunicItemData(ItemClassification.progression, 4, 24, "Weapons"),
"Magic Wand": TunicItemData(ItemClassification.progression, 1, 25, "Weapons"),
"Magic Dagger": TunicItemData(ItemClassification.progression, 1, 26),
"Magic Orb": TunicItemData(ItemClassification.progression, 1, 27),
"Hero's Laurels": TunicItemData(ItemClassification.progression, 1, 28),
"Lantern": TunicItemData(ItemClassification.progression, 1, 29),
"Gun": TunicItemData(ItemClassification.useful, 1, 30, "Weapons"),
"Shield": TunicItemData(ItemClassification.useful, 1, 31),
"Dath Stone": TunicItemData(ItemClassification.useful, 1, 32),
"Hourglass": TunicItemData(ItemClassification.useful, 1, 33),
"Old House Key": TunicItemData(ItemClassification.progression, 1, 34, "Keys"),
"Key": TunicItemData(ItemClassification.progression, 2, 35, "Keys"),
"Fortress Vault Key": TunicItemData(ItemClassification.progression, 1, 36, "Keys"),
"Flask Shard": TunicItemData(ItemClassification.useful, 12, 37),
"Potion Flask": TunicItemData(ItemClassification.useful, 5, 38, "Flask"),
"Golden Coin": TunicItemData(ItemClassification.progression, 17, 39),
"Card Slot": TunicItemData(ItemClassification.useful, 4, 40),
"Red Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 41, "Hexagons"),
"Green Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 42, "Hexagons"),
"Blue Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 43, "Hexagons"),
"Gold Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 0, 44, "Hexagons"),
"ATT Offering": TunicItemData(ItemClassification.useful, 4, 45, "Offerings"),
"DEF Offering": TunicItemData(ItemClassification.useful, 4, 46, "Offerings"),
"Potion Offering": TunicItemData(ItemClassification.useful, 3, 47, "Offerings"),
"HP Offering": TunicItemData(ItemClassification.useful, 6, 48, "Offerings"),
"MP Offering": TunicItemData(ItemClassification.useful, 3, 49, "Offerings"),
"SP Offering": TunicItemData(ItemClassification.useful, 2, 50, "Offerings"),
"Hero Relic - ATT": TunicItemData(ItemClassification.progression_skip_balancing, 1, 51, "Hero Relics"),
"Hero Relic - DEF": TunicItemData(ItemClassification.progression_skip_balancing, 1, 52, "Hero Relics"),
"Hero Relic - HP": TunicItemData(ItemClassification.progression_skip_balancing, 1, 53, "Hero Relics"),
"Hero Relic - MP": TunicItemData(ItemClassification.progression_skip_balancing, 1, 54, "Hero Relics"),
"Hero Relic - POTION": TunicItemData(ItemClassification.progression_skip_balancing, 1, 55, "Hero Relics"),
"Hero Relic - SP": TunicItemData(ItemClassification.progression_skip_balancing, 1, 56, "Hero Relics"),
"Orange Peril Ring": TunicItemData(ItemClassification.useful, 1, 57, "Cards"),
"Tincture": TunicItemData(ItemClassification.useful, 1, 58, "Cards"),
"Scavenger Mask": TunicItemData(ItemClassification.progression, 1, 59, "Cards"),
"Cyan Peril Ring": TunicItemData(ItemClassification.useful, 1, 60, "Cards"),
"Bracer": TunicItemData(ItemClassification.useful, 1, 61, "Cards"),
"Dagger Strap": TunicItemData(ItemClassification.useful, 1, 62, "Cards"),
"Inverted Ash": TunicItemData(ItemClassification.useful, 1, 63, "Cards"),
"Lucky Cup": TunicItemData(ItemClassification.useful, 1, 64, "Cards"),
"Magic Echo": TunicItemData(ItemClassification.useful, 1, 65, "Cards"),
"Anklet": TunicItemData(ItemClassification.useful, 1, 66, "Cards"),
"Muffling Bell": TunicItemData(ItemClassification.useful, 1, 67, "Cards"),
"Glass Cannon": TunicItemData(ItemClassification.useful, 1, 68, "Cards"),
"Perfume": TunicItemData(ItemClassification.useful, 1, 69, "Cards"),
"Louder Echo": TunicItemData(ItemClassification.useful, 1, 70, "Cards"),
"Aura's Gem": TunicItemData(ItemClassification.useful, 1, 71, "Cards"),
"Bone Card": TunicItemData(ItemClassification.useful, 1, 72, "Cards"),
"Mr Mayor": TunicItemData(ItemClassification.useful, 1, 73, "Golden Treasures"),
"Secret Legend": TunicItemData(ItemClassification.useful, 1, 74, "Golden Treasures"),
"Sacred Geometry": TunicItemData(ItemClassification.useful, 1, 75, "Golden Treasures"),
"Vintage": TunicItemData(ItemClassification.useful, 1, 76, "Golden Treasures"),
"Just Some Pals": TunicItemData(ItemClassification.useful, 1, 77, "Golden Treasures"),
"Regal Weasel": TunicItemData(ItemClassification.useful, 1, 78, "Golden Treasures"),
"Spring Falls": TunicItemData(ItemClassification.useful, 1, 79, "Golden Treasures"),
"Power Up": TunicItemData(ItemClassification.useful, 1, 80, "Golden Treasures"),
"Back To Work": TunicItemData(ItemClassification.useful, 1, 81, "Golden Treasures"),
"Phonomath": TunicItemData(ItemClassification.useful, 1, 82, "Golden Treasures"),
"Dusty": TunicItemData(ItemClassification.useful, 1, 83, "Golden Treasures"),
"Forever Friend": TunicItemData(ItemClassification.useful, 1, 84, "Golden Treasures"),
"Fool Trap": TunicItemData(ItemClassification.trap, 0, 85),
"Money x1": TunicItemData(ItemClassification.filler, 3, 86, "Money"),
"Money x10": TunicItemData(ItemClassification.filler, 1, 87, "Money"),
"Money x15": TunicItemData(ItemClassification.filler, 10, 88, "Money"),
"Money x16": TunicItemData(ItemClassification.filler, 1, 89, "Money"),
"Money x20": TunicItemData(ItemClassification.filler, 17, 90, "Money"),
"Money x25": TunicItemData(ItemClassification.filler, 14, 91, "Money"),
"Money x30": TunicItemData(ItemClassification.filler, 4, 92, "Money"),
"Money x32": TunicItemData(ItemClassification.filler, 4, 93, "Money"),
"Money x40": TunicItemData(ItemClassification.filler, 3, 94, "Money"),
"Money x48": TunicItemData(ItemClassification.filler, 1, 95, "Money"),
"Money x50": TunicItemData(ItemClassification.filler, 7, 96, "Money"),
"Money x64": TunicItemData(ItemClassification.filler, 1, 97, "Money"),
"Money x100": TunicItemData(ItemClassification.filler, 5, 98, "Money"),
"Money x128": TunicItemData(ItemClassification.useful, 3, 99, "Money"),
"Money x200": TunicItemData(ItemClassification.useful, 1, 100, "Money"),
"Money x255": TunicItemData(ItemClassification.useful, 1, 101, "Money"),
"Pages 0-1": TunicItemData(ItemClassification.useful, 1, 102, "Pages"),
"Pages 2-3": TunicItemData(ItemClassification.useful, 1, 103, "Pages"),
"Pages 4-5": TunicItemData(ItemClassification.useful, 1, 104, "Pages"),
"Pages 6-7": TunicItemData(ItemClassification.useful, 1, 105, "Pages"),
"Pages 8-9": TunicItemData(ItemClassification.useful, 1, 106, "Pages"),
"Pages 10-11": TunicItemData(ItemClassification.useful, 1, 107, "Pages"),
"Pages 12-13": TunicItemData(ItemClassification.useful, 1, 108, "Pages"),
"Pages 14-15": TunicItemData(ItemClassification.useful, 1, 109, "Pages"),
"Pages 16-17": TunicItemData(ItemClassification.useful, 1, 110, "Pages"),
"Pages 18-19": TunicItemData(ItemClassification.useful, 1, 111, "Pages"),
"Pages 20-21": TunicItemData(ItemClassification.useful, 1, 112, "Pages"),
"Pages 22-23": TunicItemData(ItemClassification.useful, 1, 113, "Pages"),
"Pages 24-25 (Prayer)": TunicItemData(ItemClassification.progression, 1, 114, "Pages"),
"Pages 26-27": TunicItemData(ItemClassification.useful, 1, 115, "Pages"),
"Pages 28-29": TunicItemData(ItemClassification.useful, 1, 116, "Pages"),
"Pages 30-31": TunicItemData(ItemClassification.useful, 1, 117, "Pages"),
"Pages 32-33": TunicItemData(ItemClassification.useful, 1, 118, "Pages"),
"Pages 34-35": TunicItemData(ItemClassification.useful, 1, 119, "Pages"),
"Pages 36-37": TunicItemData(ItemClassification.useful, 1, 120, "Pages"),
"Pages 38-39": TunicItemData(ItemClassification.useful, 1, 121, "Pages"),
"Pages 40-41": TunicItemData(ItemClassification.useful, 1, 122, "Pages"),
"Pages 42-43 (Holy Cross)": TunicItemData(ItemClassification.progression, 1, 123, "Pages"),
"Pages 44-45": TunicItemData(ItemClassification.useful, 1, 124, "Pages"),
"Pages 46-47": TunicItemData(ItemClassification.useful, 1, 125, "Pages"),
"Pages 48-49": TunicItemData(ItemClassification.useful, 1, 126, "Pages"),
"Pages 50-51": TunicItemData(ItemClassification.useful, 1, 127, "Pages"),
"Pages 52-53 (Icebolt)": TunicItemData(ItemClassification.progression, 1, 128, "Pages"),
"Pages 54-55": TunicItemData(ItemClassification.useful, 1, 129, "Pages"),
"Ladders near Weathervane": TunicItemData(ItemClassification.progression, 0, 130, "Ladders"),
"Ladders near Overworld Checkpoint": TunicItemData(ItemClassification.progression, 0, 131, "Ladders"),
"Ladders near Patrol Cave": TunicItemData(ItemClassification.progression, 0, 132, "Ladders"),
"Ladder near Temple Rafters": TunicItemData(ItemClassification.progression, 0, 133, "Ladders"),
"Ladders near Dark Tomb": TunicItemData(ItemClassification.progression, 0, 134, "Ladders"),
"Ladder to Quarry": TunicItemData(ItemClassification.progression, 0, 135, "Ladders"),
"Ladders to West Bell": TunicItemData(ItemClassification.progression, 0, 136, "Ladders"),
"Ladders in Overworld Town": TunicItemData(ItemClassification.progression, 0, 137, "Ladders"),
"Ladder to Ruined Atoll": TunicItemData(ItemClassification.progression, 0, 138, "Ladders"),
"Ladder to Swamp": TunicItemData(ItemClassification.progression, 0, 139, "Ladders"),
"Ladders in Well": TunicItemData(ItemClassification.progression, 0, 140, "Ladders"),
"Ladder in Dark Tomb": TunicItemData(ItemClassification.progression, 0, 141, "Ladders"),
"Ladder to East Forest": TunicItemData(ItemClassification.progression, 0, 142, "Ladders"),
"Ladders to Lower Forest": TunicItemData(ItemClassification.progression, 0, 143, "Ladders"),
"Ladder to Beneath the Vault": TunicItemData(ItemClassification.progression, 0, 144, "Ladders"),
"Ladders in Hourglass Cave": TunicItemData(ItemClassification.progression, 0, 145, "Ladders"),
"Ladders in South Atoll": TunicItemData(ItemClassification.progression, 0, 146, "Ladders"),
"Ladders to Frog's Domain": TunicItemData(ItemClassification.progression, 0, 147, "Ladders"),
"Ladders in Library": TunicItemData(ItemClassification.progression, 0, 148, "Ladders"),
"Ladders in Lower Quarry": TunicItemData(ItemClassification.progression, 0, 149, "Ladders"),
"Ladders in Swamp": TunicItemData(ItemClassification.progression, 0, 150, "Ladders"),
"Firecracker x2": TunicItemData(IC.filler, 3, 0, "Bombs"),
"Firecracker x3": TunicItemData(IC.filler, 3, 1, "Bombs"),
"Firecracker x4": TunicItemData(IC.filler, 3, 2, "Bombs"),
"Firecracker x5": TunicItemData(IC.filler, 1, 3, "Bombs"),
"Firecracker x6": TunicItemData(IC.filler, 2, 4, "Bombs"),
"Fire Bomb x2": TunicItemData(IC.filler, 2, 5, "Bombs"),
"Fire Bomb x3": TunicItemData(IC.filler, 1, 6, "Bombs"),
"Ice Bomb x2": TunicItemData(IC.filler, 2, 7, "Bombs"),
"Ice Bomb x3": TunicItemData(IC.filler, 2, 8, "Bombs"),
"Ice Bomb x5": TunicItemData(IC.filler, 1, 9, "Bombs"),
"Lure": TunicItemData(IC.filler, 4, 10, "Consumables"),
"Lure x2": TunicItemData(IC.filler, 1, 11, "Consumables"),
"Pepper x2": TunicItemData(IC.filler, 4, 12, "Consumables"),
"Ivy x3": TunicItemData(IC.filler, 2, 13, "Consumables"),
"Effigy": TunicItemData(IC.useful, 12, 14, "Money"),
"HP Berry": TunicItemData(IC.filler, 2, 15, "Consumables"),
"HP Berry x2": TunicItemData(IC.filler, 4, 16, "Consumables"),
"HP Berry x3": TunicItemData(IC.filler, 2, 17, "Consumables"),
"MP Berry": TunicItemData(IC.filler, 4, 18, "Consumables"),
"MP Berry x2": TunicItemData(IC.filler, 2, 19, "Consumables"),
"MP Berry x3": TunicItemData(IC.filler, 7, 20, "Consumables"),
"Fairy": TunicItemData(IC.progression, 20, 21),
"Stick": TunicItemData(IC.progression | IC.useful, 1, 22, "Weapons"),
"Sword": TunicItemData(IC.progression | IC.useful, 3, 23, "Weapons"),
"Sword Upgrade": TunicItemData(IC.progression | IC.useful, 4, 24, "Weapons"),
"Magic Wand": TunicItemData(IC.progression | IC.useful, 1, 25, "Weapons"),
"Magic Dagger": TunicItemData(IC.progression | IC.useful, 1, 26),
"Magic Orb": TunicItemData(IC.progression | IC.useful, 1, 27),
"Hero's Laurels": TunicItemData(IC.progression | IC.useful, 1, 28),
"Lantern": TunicItemData(IC.progression, 1, 29),
"Gun": TunicItemData(IC.useful, 1, 30, "Weapons", combat_ic=IC.progression | IC.useful),
"Shield": TunicItemData(IC.useful, 1, 31, combat_ic=IC.progression | IC.useful),
"Dath Stone": TunicItemData(IC.useful, 1, 32),
"Hourglass": TunicItemData(IC.useful, 1, 33),
"Old House Key": TunicItemData(IC.progression, 1, 34, "Keys"),
"Key": TunicItemData(IC.progression, 2, 35, "Keys"),
"Fortress Vault Key": TunicItemData(IC.progression, 1, 36, "Keys"),
"Flask Shard": TunicItemData(IC.useful, 12, 37),
"Potion Flask": TunicItemData(IC.useful, 5, 38, "Flask"),
"Golden Coin": TunicItemData(IC.progression, 17, 39),
"Card Slot": TunicItemData(IC.useful, 4, 40),
"Red Questagon": TunicItemData(IC.progression_skip_balancing, 1, 41, "Hexagons"),
"Green Questagon": TunicItemData(IC.progression_skip_balancing, 1, 42, "Hexagons"),
"Blue Questagon": TunicItemData(IC.progression_skip_balancing, 1, 43, "Hexagons"),
"Gold Questagon": TunicItemData(IC.progression_skip_balancing, 0, 44, "Hexagons"),
"ATT Offering": TunicItemData(IC.useful, 4, 45, "Offerings", combat_ic=IC.progression),
"DEF Offering": TunicItemData(IC.useful, 4, 46, "Offerings", combat_ic=IC.progression),
"Potion Offering": TunicItemData(IC.useful, 3, 47, "Offerings", combat_ic=IC.progression),
"HP Offering": TunicItemData(IC.useful, 6, 48, "Offerings", combat_ic=IC.progression),
"MP Offering": TunicItemData(IC.useful, 3, 49, "Offerings", combat_ic=IC.progression),
"SP Offering": TunicItemData(IC.useful, 2, 50, "Offerings"),
"Hero Relic - ATT": TunicItemData(IC.progression_skip_balancing, 1, 51, "Hero Relics", combat_ic=IC.progression),
"Hero Relic - DEF": TunicItemData(IC.progression_skip_balancing, 1, 52, "Hero Relics", combat_ic=IC.progression),
"Hero Relic - HP": TunicItemData(IC.progression_skip_balancing, 1, 53, "Hero Relics", combat_ic=IC.progression),
"Hero Relic - MP": TunicItemData(IC.progression_skip_balancing, 1, 54, "Hero Relics", combat_ic=IC.progression),
"Hero Relic - POTION": TunicItemData(IC.progression_skip_balancing, 1, 55, "Hero Relics", combat_ic=IC.progression),
"Hero Relic - SP": TunicItemData(IC.progression_skip_balancing, 1, 56, "Hero Relics"),
"Orange Peril Ring": TunicItemData(IC.useful, 1, 57, "Cards"),
"Tincture": TunicItemData(IC.useful, 1, 58, "Cards"),
"Scavenger Mask": TunicItemData(IC.progression, 1, 59, "Cards"),
"Cyan Peril Ring": TunicItemData(IC.useful, 1, 60, "Cards"),
"Bracer": TunicItemData(IC.useful, 1, 61, "Cards"),
"Dagger Strap": TunicItemData(IC.useful, 1, 62, "Cards"),
"Inverted Ash": TunicItemData(IC.useful, 1, 63, "Cards"),
"Lucky Cup": TunicItemData(IC.useful, 1, 64, "Cards"),
"Magic Echo": TunicItemData(IC.useful, 1, 65, "Cards"),
"Anklet": TunicItemData(IC.useful, 1, 66, "Cards"),
"Muffling Bell": TunicItemData(IC.useful, 1, 67, "Cards"),
"Glass Cannon": TunicItemData(IC.useful, 1, 68, "Cards"),
"Perfume": TunicItemData(IC.useful, 1, 69, "Cards"),
"Louder Echo": TunicItemData(IC.useful, 1, 70, "Cards"),
"Aura's Gem": TunicItemData(IC.useful, 1, 71, "Cards"),
"Bone Card": TunicItemData(IC.useful, 1, 72, "Cards"),
"Mr Mayor": TunicItemData(IC.useful, 1, 73, "Golden Treasures"),
"Secret Legend": TunicItemData(IC.useful, 1, 74, "Golden Treasures", combat_ic=IC.progression),
"Sacred Geometry": TunicItemData(IC.useful, 1, 75, "Golden Treasures", combat_ic=IC.progression),
"Vintage": TunicItemData(IC.useful, 1, 76, "Golden Treasures", combat_ic=IC.progression),
"Just Some Pals": TunicItemData(IC.useful, 1, 77, "Golden Treasures", combat_ic=IC.progression),
"Regal Weasel": TunicItemData(IC.useful, 1, 78, "Golden Treasures"),
"Spring Falls": TunicItemData(IC.useful, 1, 79, "Golden Treasures", combat_ic=IC.progression),
"Power Up": TunicItemData(IC.useful, 1, 80, "Golden Treasures"),
"Back To Work": TunicItemData(IC.useful, 1, 81, "Golden Treasures", combat_ic=IC.progression),
"Phonomath": TunicItemData(IC.useful, 1, 82, "Golden Treasures", combat_ic=IC.progression),
"Dusty": TunicItemData(IC.useful, 1, 83, "Golden Treasures", combat_ic=IC.progression),
"Forever Friend": TunicItemData(IC.useful, 1, 84, "Golden Treasures"),
"Fool Trap": TunicItemData(IC.trap, 0, 85),
"Money x1": TunicItemData(IC.filler, 3, 86, "Money"),
"Money x10": TunicItemData(IC.filler, 1, 87, "Money"),
"Money x15": TunicItemData(IC.filler, 10, 88, "Money"),
"Money x16": TunicItemData(IC.filler, 1, 89, "Money"),
"Money x20": TunicItemData(IC.filler, 17, 90, "Money"),
"Money x25": TunicItemData(IC.filler, 14, 91, "Money"),
"Money x30": TunicItemData(IC.filler, 4, 92, "Money"),
"Money x32": TunicItemData(IC.filler, 4, 93, "Money"),
"Money x40": TunicItemData(IC.filler, 3, 94, "Money"),
"Money x48": TunicItemData(IC.filler, 1, 95, "Money"),
"Money x50": TunicItemData(IC.filler, 7, 96, "Money"),
"Money x64": TunicItemData(IC.filler, 1, 97, "Money"),
"Money x100": TunicItemData(IC.filler, 5, 98, "Money"),
"Money x128": TunicItemData(IC.useful, 3, 99, "Money"),
"Money x200": TunicItemData(IC.useful, 1, 100, "Money"),
"Money x255": TunicItemData(IC.useful, 1, 101, "Money"),
"Pages 0-1": TunicItemData(IC.useful, 1, 102, "Pages"),
"Pages 2-3": TunicItemData(IC.useful, 1, 103, "Pages"),
"Pages 4-5": TunicItemData(IC.useful, 1, 104, "Pages"),
"Pages 6-7": TunicItemData(IC.useful, 1, 105, "Pages"),
"Pages 8-9": TunicItemData(IC.useful, 1, 106, "Pages"),
"Pages 10-11": TunicItemData(IC.useful, 1, 107, "Pages"),
"Pages 12-13": TunicItemData(IC.useful, 1, 108, "Pages"),
"Pages 14-15": TunicItemData(IC.useful, 1, 109, "Pages"),
"Pages 16-17": TunicItemData(IC.useful, 1, 110, "Pages"),
"Pages 18-19": TunicItemData(IC.useful, 1, 111, "Pages"),
"Pages 20-21": TunicItemData(IC.useful, 1, 112, "Pages"),
"Pages 22-23": TunicItemData(IC.useful, 1, 113, "Pages"),
"Pages 24-25 (Prayer)": TunicItemData(IC.progression | IC.useful, 1, 114, "Pages"),
"Pages 26-27": TunicItemData(IC.useful, 1, 115, "Pages"),
"Pages 28-29": TunicItemData(IC.useful, 1, 116, "Pages"),
"Pages 30-31": TunicItemData(IC.useful, 1, 117, "Pages"),
"Pages 32-33": TunicItemData(IC.useful, 1, 118, "Pages"),
"Pages 34-35": TunicItemData(IC.useful, 1, 119, "Pages"),
"Pages 36-37": TunicItemData(IC.useful, 1, 120, "Pages"),
"Pages 38-39": TunicItemData(IC.useful, 1, 121, "Pages"),
"Pages 40-41": TunicItemData(IC.useful, 1, 122, "Pages"),
"Pages 42-43 (Holy Cross)": TunicItemData(IC.progression | IC.useful, 1, 123, "Pages"),
"Pages 44-45": TunicItemData(IC.useful, 1, 124, "Pages"),
"Pages 46-47": TunicItemData(IC.useful, 1, 125, "Pages"),
"Pages 48-49": TunicItemData(IC.useful, 1, 126, "Pages"),
"Pages 50-51": TunicItemData(IC.useful, 1, 127, "Pages"),
"Pages 52-53 (Icebolt)": TunicItemData(IC.progression, 1, 128, "Pages"),
"Pages 54-55": TunicItemData(IC.useful, 1, 129, "Pages"),
"Ladders near Weathervane": TunicItemData(IC.progression, 0, 130, "Ladders"),
"Ladders near Overworld Checkpoint": TunicItemData(IC.progression, 0, 131, "Ladders"),
"Ladders near Patrol Cave": TunicItemData(IC.progression, 0, 132, "Ladders"),
"Ladder near Temple Rafters": TunicItemData(IC.progression, 0, 133, "Ladders"),
"Ladders near Dark Tomb": TunicItemData(IC.progression, 0, 134, "Ladders"),
"Ladder to Quarry": TunicItemData(IC.progression, 0, 135, "Ladders"),
"Ladders to West Bell": TunicItemData(IC.progression, 0, 136, "Ladders"),
"Ladders in Overworld Town": TunicItemData(IC.progression, 0, 137, "Ladders"),
"Ladder to Ruined Atoll": TunicItemData(IC.progression, 0, 138, "Ladders"),
"Ladder to Swamp": TunicItemData(IC.progression, 0, 139, "Ladders"),
"Ladders in Well": TunicItemData(IC.progression, 0, 140, "Ladders"),
"Ladder in Dark Tomb": TunicItemData(IC.progression, 0, 141, "Ladders"),
"Ladder to East Forest": TunicItemData(IC.progression, 0, 142, "Ladders"),
"Ladders to Lower Forest": TunicItemData(IC.progression, 0, 143, "Ladders"),
"Ladder to Beneath the Vault": TunicItemData(IC.progression, 0, 144, "Ladders"),
"Ladders in Hourglass Cave": TunicItemData(IC.progression, 0, 145, "Ladders"),
"Ladders in South Atoll": TunicItemData(IC.progression, 0, 146, "Ladders"),
"Ladders to Frog's Domain": TunicItemData(IC.progression, 0, 147, "Ladders"),
"Ladders in Library": TunicItemData(IC.progression, 0, 148, "Ladders"),
"Ladders in Lower Quarry": TunicItemData(IC.progression, 0, 149, "Ladders"),
"Ladders in Swamp": TunicItemData(IC.progression, 0, 150, "Ladders"),
}
# items to be replaced by fool traps
@@ -208,7 +210,7 @@ slot_data_item_names = [
item_name_to_id: Dict[str, int] = {name: item_base_id + data.item_id_offset for name, data in item_table.items()}
filler_items: List[str] = [name for name, data in item_table.items() if data.classification == ItemClassification.filler]
filler_items: List[str] = [name for name, data in item_table.items() if data.classification == IC.filler]
def get_item_group(item_name: str) -> str: