from typing import Dict, NamedTuple, Optional, Set from BaseClasses import Item, ItemClassification class KHRECOMItem(Item): game: str = "Kingdom Hearts RE Chain of Memories" class KHRECOMItemData(NamedTuple): category: str sub: str = "None" code: int = 0 classification: ItemClassification = ItemClassification.filler def get_items_by_category(category: str, exclude: list) -> Dict[str, KHRECOMItemData]: item_dict: Dict[str, KHRECOMItemData] = {} for name, data in item_table.items(): if data.category == category and all(x not in name for x in exclude): item_dict.setdefault(name, data) return item_dict item_table: Dict[str, KHRECOMItemData] = { #Victory "Victory": KHRECOMItemData("VIC", code = 268_0000, classification = ItemClassification.progression), #"Card Set Kingdom Key": KHRECOMItemData("Sets", code = 268_1001, classification = ItemClassification.filler), "Card Set Three Wishes": KHRECOMItemData("Sets", code = 268_1002, classification = ItemClassification.filler), "Card Set Crabclaw": KHRECOMItemData("Sets", code = 268_1003, classification = ItemClassification.filler), "Card Set Pumpkinhead": KHRECOMItemData("Sets", code = 268_1004, classification = ItemClassification.filler), "Card Set Fairy Harp": KHRECOMItemData("Sets", code = 268_1005, classification = ItemClassification.filler), "Card Set Wishing Star": KHRECOMItemData("Sets", code = 268_1006, classification = ItemClassification.filler), "Card Set Spellbinder": KHRECOMItemData("Sets", code = 268_1007, classification = ItemClassification.filler), "Card Set Metal Chocobo": KHRECOMItemData("Sets", code = 268_1008, classification = ItemClassification.filler), "Card Set Olympia": KHRECOMItemData("Sets", code = 268_1009, classification = ItemClassification.filler), "Card Set Lionheart": KHRECOMItemData("Sets", code = 268_1010, classification = ItemClassification.filler), "Card Set Lady Luck": KHRECOMItemData("Sets", code = 268_1011, classification = ItemClassification.filler), "Card Set Divine Rose": KHRECOMItemData("Sets", code = 268_1012, classification = ItemClassification.filler), "Card Set Oathkeeper": KHRECOMItemData("Sets", code = 268_1013, classification = ItemClassification.filler), "Card Set Oblivion": KHRECOMItemData("Sets", code = 268_1014, classification = ItemClassification.filler), "Card Set Ultima Weapon": KHRECOMItemData("Sets", code = 268_1015, classification = ItemClassification.filler), "Card Set Diamond Dust": KHRECOMItemData("Sets", code = 268_1016, classification = ItemClassification.filler), "Card Set One Winged Angel": KHRECOMItemData("Sets", code = 268_1017, classification = ItemClassification.filler), "Card Set Soul Eater": KHRECOMItemData("Sets", code = 268_1018, classification = ItemClassification.filler), "Card Set Star Seeker": KHRECOMItemData("Sets", code = 268_1019, classification = ItemClassification.filler), "Card Set Total Eclipse": KHRECOMItemData("Sets", code = 268_1020, classification = ItemClassification.filler), "Card Set Midnight Roar": KHRECOMItemData("Sets", code = 268_1021, classification = ItemClassification.filler), "Card Set Maverick Flare": KHRECOMItemData("Sets", code = 268_1022, classification = ItemClassification.filler), "Card Set Two Become One": KHRECOMItemData("Sets", code = 268_1023, classification = ItemClassification.filler), "Card Set Bond of Flame": KHRECOMItemData("Sets", code = 268_1024, classification = ItemClassification.filler), "Card Set Fire": KHRECOMItemData("Sets", code = 268_1049, classification = ItemClassification.filler), "Card Set Blizzard": KHRECOMItemData("Sets", code = 268_1050, classification = ItemClassification.filler), "Card Set Thunder": KHRECOMItemData("Sets", code = 268_1051, classification = ItemClassification.filler), "Card Set Cure": KHRECOMItemData("Sets", code = 268_1052, classification = ItemClassification.filler), "Card Set Gravity": KHRECOMItemData("Sets", code = 268_1053, classification = ItemClassification.filler), "Card Set Stop": KHRECOMItemData("Sets", code = 268_1054, classification = ItemClassification.filler), "Card Set Aero": KHRECOMItemData("Sets", code = 268_1055, classification = ItemClassification.filler), "Card Set Simba": KHRECOMItemData("Sets", code = 268_1058, classification = ItemClassification.filler), "Card Set Genie": KHRECOMItemData("Sets", code = 268_1059, classification = ItemClassification.filler), "Card Set Bambi": KHRECOMItemData("Sets", code = 268_1060, classification = ItemClassification.filler), "Card Set Dumbo": KHRECOMItemData("Sets", code = 268_1061, classification = ItemClassification.filler), "Card Set Tinker Bell": KHRECOMItemData("Sets", code = 268_1062, classification = ItemClassification.filler), "Card Set Mushu": KHRECOMItemData("Sets", code = 268_1063, classification = ItemClassification.filler), "Card Set Cloud": KHRECOMItemData("Sets", code = 268_1064, classification = ItemClassification.filler), "Card Set Potion": KHRECOMItemData("Sets", code = 268_1081, classification = ItemClassification.filler), "Card Set Hi-Potion": KHRECOMItemData("Sets", code = 268_1082, classification = ItemClassification.filler), "Card Set Mega-Potion": KHRECOMItemData("Sets", code = 268_1083, classification = ItemClassification.filler), "Card Set Ether": KHRECOMItemData("Sets", code = 268_1084, classification = ItemClassification.filler), "Card Set Mega-Ether": KHRECOMItemData("Sets", code = 268_1085, classification = ItemClassification.filler), "Card Set Elixir": KHRECOMItemData("Sets", code = 268_1086, classification = ItemClassification.filler), "Card Set Megalixir": KHRECOMItemData("Sets", code = 268_1087, classification = ItemClassification.filler), "Enemy Card Shadow": KHRECOMItemData("Enemy Cards", code = 268_1201, classification = ItemClassification.useful), "Enemy Card Soldier": KHRECOMItemData("Enemy Cards", code = 268_1202, classification = ItemClassification.useful), "Enemy Card Large Body": KHRECOMItemData("Enemy Cards", code = 268_1203, classification = ItemClassification.useful), "Enemy Card Red Nocturne": KHRECOMItemData("Enemy Cards", code = 268_1204, classification = ItemClassification.useful), "Enemy Card Blue Rhapsody": KHRECOMItemData("Enemy Cards", code = 268_1205, classification = ItemClassification.useful), "Enemy Card Yellow Opera": KHRECOMItemData("Enemy Cards", code = 268_1206, classification = ItemClassification.useful), "Enemy Card Green Requiem": KHRECOMItemData("Enemy Cards", code = 268_1207, classification = ItemClassification.useful), "Enemy Card Powerwild": KHRECOMItemData("Enemy Cards", code = 268_1208, classification = ItemClassification.useful), "Enemy Card Bouncywild": KHRECOMItemData("Enemy Cards", code = 268_1209, classification = ItemClassification.useful), "Enemy Card Air Soldier": KHRECOMItemData("Enemy Cards", code = 268_1210, classification = ItemClassification.useful), "Enemy Card Bandit": KHRECOMItemData("Enemy Cards", code = 268_1211, classification = ItemClassification.useful), "Enemy Card Fat Bandit": KHRECOMItemData("Enemy Cards", code = 268_1212, classification = ItemClassification.useful), "Enemy Card Barrel Spider": KHRECOMItemData("Enemy Cards", code = 268_1213, classification = ItemClassification.useful), "Enemy Card Search Ghost": KHRECOMItemData("Enemy Cards", code = 268_1214, classification = ItemClassification.useful), "Enemy Card Sea Neon": KHRECOMItemData("Enemy Cards", code = 268_1215, classification = ItemClassification.useful), "Enemy Card Screwdiver": KHRECOMItemData("Enemy Cards", code = 268_1216, classification = ItemClassification.useful), "Enemy Card Aquatank": KHRECOMItemData("Enemy Cards", code = 268_1217, classification = ItemClassification.useful), "Enemy Card Wight Knight": KHRECOMItemData("Enemy Cards", code = 268_1218, classification = ItemClassification.useful), "Enemy Card Gargoyle": KHRECOMItemData("Enemy Cards", code = 268_1219, classification = ItemClassification.useful), "Enemy Card Pirate": KHRECOMItemData("Enemy Cards", code = 268_1220, classification = ItemClassification.useful), "Enemy Card Air Pirate": KHRECOMItemData("Enemy Cards", code = 268_1221, classification = ItemClassification.useful), "Enemy Card Darkball": KHRECOMItemData("Enemy Cards", code = 268_1222, classification = ItemClassification.useful), "Enemy Card Defender": KHRECOMItemData("Enemy Cards", code = 268_1223, classification = ItemClassification.useful), "Enemy Card Wyvern": KHRECOMItemData("Enemy Cards", code = 268_1224, classification = ItemClassification.useful), "Enemy Card Wizard": KHRECOMItemData("Enemy Cards", code = 268_1225, classification = ItemClassification.useful), "Enemy Card Neoshadow": KHRECOMItemData("Enemy Cards", code = 268_1226, classification = ItemClassification.useful), "Enemy Card White Mushroom": KHRECOMItemData("Enemy Cards", code = 268_1227, classification = ItemClassification.useful), "Enemy Card Black Fungus": KHRECOMItemData("Enemy Cards", code = 268_1228, classification = ItemClassification.useful), "Enemy Card Creeper Plant": KHRECOMItemData("Enemy Cards", code = 268_1229, classification = ItemClassification.useful), "Enemy Card Tornado Step": KHRECOMItemData("Enemy Cards", code = 268_1230, classification = ItemClassification.useful), "Enemy Card Crescendo": KHRECOMItemData("Enemy Cards", code = 268_1231, classification = ItemClassification.useful), "Enemy Card Guard Armor": KHRECOMItemData("Enemy Cards", code = 268_1232, classification = ItemClassification.useful), "Enemy Card Parasite Cage": KHRECOMItemData("Enemy Cards", code = 268_1233, classification = ItemClassification.useful), "Enemy Card Trickmaster": KHRECOMItemData("Enemy Cards", code = 268_1234, classification = ItemClassification.useful), "Enemy Card Darkside": KHRECOMItemData("Enemy Cards", code = 268_1235, classification = ItemClassification.useful), "Enemy Card Card Soldier": KHRECOMItemData("Enemy Cards", code = 268_1236, classification = ItemClassification.useful), "Enemy Card Hades": KHRECOMItemData("Enemy Cards", code = 268_1237, classification = ItemClassification.useful), "Enemy Card Jafar": KHRECOMItemData("Enemy Cards", code = 268_1238, classification = ItemClassification.useful), "Enemy Card Oogie Boogie": KHRECOMItemData("Enemy Cards", code = 268_1239, classification = ItemClassification.useful), "Enemy Card Ursula": KHRECOMItemData("Enemy Cards", code = 268_1240, classification = ItemClassification.useful), "Enemy Card Hook": KHRECOMItemData("Enemy Cards", code = 268_1241, classification = ItemClassification.useful), "Enemy Card Dragon Maleficent": KHRECOMItemData("Enemy Cards", code = 268_1242, classification = ItemClassification.useful), "Enemy Card Riku": KHRECOMItemData("Enemy Cards", code = 268_1243, classification = ItemClassification.useful), "Enemy Card Axel": KHRECOMItemData("Enemy Cards", code = 268_1244, classification = ItemClassification.useful), "Enemy Card Larxene": KHRECOMItemData("Enemy Cards", code = 268_1245, classification = ItemClassification.useful), "Enemy Card Vexen": KHRECOMItemData("Enemy Cards", code = 268_1246, classification = ItemClassification.useful), "Enemy Card Marluxia": KHRECOMItemData("Enemy Cards", code = 268_1247, classification = ItemClassification.useful), "Enemy Card Lexaeus": KHRECOMItemData("Enemy Cards", code = 268_1248, classification = ItemClassification.useful), "Enemy Card Ansem": KHRECOMItemData("Enemy Cards", code = 268_1249, classification = ItemClassification.useful), "Enemy Card Zexion": KHRECOMItemData("Enemy Cards", code = 268_1250, classification = ItemClassification.useful), "Enemy Card Xemnas": KHRECOMItemData("Enemy Cards", code = 268_1251, classification = ItemClassification.useful), "Enemy Card Xigbar": KHRECOMItemData("Enemy Cards", code = 268_1252, classification = ItemClassification.useful), "Enemy Card Xaldin": KHRECOMItemData("Enemy Cards", code = 268_1253, classification = ItemClassification.useful), "Enemy Card Saix": KHRECOMItemData("Enemy Cards", code = 268_1254, classification = ItemClassification.useful), "Enemy Card Demyx": KHRECOMItemData("Enemy Cards", code = 268_1255, classification = ItemClassification.useful), "Enemy Card Luxord": KHRECOMItemData("Enemy Cards", code = 268_1256, classification = ItemClassification.useful), "Enemy Card Roxas": KHRECOMItemData("Enemy Cards", code = 268_1257, classification = ItemClassification.useful), "Sleight Sliding Dash": KHRECOMItemData("Sleights", code = 268_2001, classification = ItemClassification.useful), "Sleight Blitz": KHRECOMItemData("Sleights", code = 268_2002, classification = ItemClassification.useful), "Sleight Stun Impact": KHRECOMItemData("Sleights", code = 268_2003, classification = ItemClassification.useful), "Sleight Zantetsuken": KHRECOMItemData("Sleights", code = 268_2004, classification = ItemClassification.useful), "Sleight Strike Raid": KHRECOMItemData("Sleights", code = 268_2005, classification = ItemClassification.useful), "Sleight Sonic Blade": KHRECOMItemData("Sleights", code = 268_2006, classification = ItemClassification.useful), "Sleight Ars Arcanum": KHRECOMItemData("Sleights", code = 268_2007, classification = ItemClassification.useful), "Sleight Ragnarok": KHRECOMItemData("Sleights", code = 268_2008, classification = ItemClassification.useful), "Sleight Trinity Limit": KHRECOMItemData("Sleights", code = 268_2009, classification = ItemClassification.useful), "Sleight Fira": KHRECOMItemData("Sleights", code = 268_2010, classification = ItemClassification.useful), "Sleight Blizzara": KHRECOMItemData("Sleights", code = 268_2011, classification = ItemClassification.useful), "Sleight Thundara": KHRECOMItemData("Sleights", code = 268_2012, classification = ItemClassification.useful), "Sleight Cura": KHRECOMItemData("Sleights", code = 268_2013, classification = ItemClassification.useful), "Sleight Gravira": KHRECOMItemData("Sleights", code = 268_2014, classification = ItemClassification.useful), "Sleight Stopra": KHRECOMItemData("Sleights", code = 268_2015, classification = ItemClassification.useful), "Sleight Aerora": KHRECOMItemData("Sleights", code = 268_2016, classification = ItemClassification.useful), "Sleight Firaga": KHRECOMItemData("Sleights", code = 268_2017, classification = ItemClassification.useful), "Sleight Blizzaga": KHRECOMItemData("Sleights", code = 268_2018, classification = ItemClassification.useful), "Sleight Thundaga": KHRECOMItemData("Sleights", code = 268_2019, classification = ItemClassification.useful), "Sleight Curaga": KHRECOMItemData("Sleights", code = 268_2020, classification = ItemClassification.useful), "Sleight Graviga": KHRECOMItemData("Sleights", code = 268_2021, classification = ItemClassification.useful), "Sleight Stopga": KHRECOMItemData("Sleights", code = 268_2022, classification = ItemClassification.useful), "Sleight Aeroga": KHRECOMItemData("Sleights", code = 268_2023, classification = ItemClassification.useful), "Sleight Fire Raid": KHRECOMItemData("Sleights", code = 268_2024, classification = ItemClassification.useful), "Sleight Blizzard Raid": KHRECOMItemData("Sleights", code = 268_2025, classification = ItemClassification.useful), "Sleight Thunder Raid": KHRECOMItemData("Sleights", code = 268_2026, classification = ItemClassification.useful), "Sleight Reflect Raid": KHRECOMItemData("Sleights", code = 268_2027, classification = ItemClassification.useful), "Sleight Judgement": KHRECOMItemData("Sleights", code = 268_2028, classification = ItemClassification.useful), "Sleight Firaga Burst": KHRECOMItemData("Sleights", code = 268_2029, classification = ItemClassification.useful), "Sleight Raging Storm": KHRECOMItemData("Sleights", code = 268_2030, classification = ItemClassification.useful), "Sleight Mega Flare": KHRECOMItemData("Sleights", code = 268_2031, classification = ItemClassification.useful), "Sleight Freeze": KHRECOMItemData("Sleights", code = 268_2032, classification = ItemClassification.useful), "Sleight Homing Blizzara": KHRECOMItemData("Sleights", code = 268_2033, classification = ItemClassification.useful), "Sleight Aqua Splash": KHRECOMItemData("Sleights", code = 268_2034, classification = ItemClassification.useful), "Sleight Magnet Spiral": KHRECOMItemData("Sleights", code = 268_2035, classification = ItemClassification.useful), "Sleight Lethal Frame": KHRECOMItemData("Sleights", code = 268_2036, classification = ItemClassification.useful), "Sleight Shock Impact": KHRECOMItemData("Sleights", code = 268_2037, classification = ItemClassification.useful), "Sleight Tornado": KHRECOMItemData("Sleights", code = 268_2038, classification = ItemClassification.useful), "Sleight Quake": KHRECOMItemData("Sleights", code = 268_2039, classification = ItemClassification.useful), "Sleight Warpinator": KHRECOMItemData("Sleights", code = 268_2040, classification = ItemClassification.useful), "Sleight Warp": KHRECOMItemData("Sleights", code = 268_2041, classification = ItemClassification.useful), "Sleight Bind": KHRECOMItemData("Sleights", code = 268_2042, classification = ItemClassification.useful), "Sleight Confuse": KHRECOMItemData("Sleights", code = 268_2043, classification = ItemClassification.useful), "Sleight Terror": KHRECOMItemData("Sleights", code = 268_2044, classification = ItemClassification.useful), "Sleight Synchro": KHRECOMItemData("Sleights", code = 268_2045, classification = ItemClassification.useful), "Sleight Gifted Miracle": KHRECOMItemData("Sleights", code = 268_2046, classification = ItemClassification.useful), "Sleight Teleport": KHRECOMItemData("Sleights", code = 268_2047, classification = ItemClassification.useful), "Sleight Holy": KHRECOMItemData("Sleights", code = 268_2048, classification = ItemClassification.useful), "Sleight Proud Roar LV2": KHRECOMItemData("Sleights", code = 268_2049, classification = ItemClassification.useful), "Sleight Proud Roar LV3": KHRECOMItemData("Sleights", code = 268_2050, classification = ItemClassification.useful), "Sleight Splash LV2": KHRECOMItemData("Sleights", code = 268_2051, classification = ItemClassification.useful), "Sleight Splash LV3": KHRECOMItemData("Sleights", code = 268_2052, classification = ItemClassification.useful), "Sleight Paradise LV2": KHRECOMItemData("Sleights", code = 268_2053, classification = ItemClassification.useful), "Sleight Paradise LV3": KHRECOMItemData("Sleights", code = 268_2054, classification = ItemClassification.useful), "Sleight Idyll Romp": KHRECOMItemData("Sleights", code = 268_2055, classification = ItemClassification.useful), "Sleight Flare Breath LV2": KHRECOMItemData("Sleights", code = 268_2056, classification = ItemClassification.useful), "Sleight Flare Breath LV3": KHRECOMItemData("Sleights", code = 268_2057, classification = ItemClassification.useful), "Sleight Showtime LV2": KHRECOMItemData("Sleights", code = 268_2058, classification = ItemClassification.useful), "Sleight Showtime LV3": KHRECOMItemData("Sleights", code = 268_2059, classification = ItemClassification.useful), "Sleight Twinkle LV2": KHRECOMItemData("Sleights", code = 268_2060, classification = ItemClassification.useful), "Sleight Twinkle LV3": KHRECOMItemData("Sleights", code = 268_2061, classification = ItemClassification.useful), "Sleight Cross-slash": KHRECOMItemData("Sleights", code = 268_2062, classification = ItemClassification.useful), "Sleight Omnislash": KHRECOMItemData("Sleights", code = 268_2063, classification = ItemClassification.useful), "Sleight Cross-slash+": KHRECOMItemData("Sleights", code = 268_2064, classification = ItemClassification.useful), "Sleight Magic LV2": KHRECOMItemData("Sleights", code = 268_2065, classification = ItemClassification.useful), "Sleight Magic LV3": KHRECOMItemData("Sleights", code = 268_2066, classification = ItemClassification.useful), "Sleight Stardust Blitz": KHRECOMItemData("Sleights", code = 268_2067, classification = ItemClassification.useful), "Sleight Goofy Tornado LV2": KHRECOMItemData("Sleights", code = 268_2068, classification = ItemClassification.useful), "Sleight Goofy Tornado LV3": KHRECOMItemData("Sleights", code = 268_2069, classification = ItemClassification.useful), "Sleight Goofy Smash": KHRECOMItemData("Sleights", code = 268_2070, classification = ItemClassification.useful), "Sleight Wild Crush": KHRECOMItemData("Sleights", code = 268_2071, classification = ItemClassification.useful), "Sleight Sandstorm LV2": KHRECOMItemData("Sleights", code = 268_2072, classification = ItemClassification.useful), "Sleight Sandstorm LV3": KHRECOMItemData("Sleights", code = 268_2073, classification = ItemClassification.useful), "Sleight Surprise! LV2": KHRECOMItemData("Sleights", code = 268_2074, classification = ItemClassification.useful), "Sleight Surprise! LV3": KHRECOMItemData("Sleights", code = 268_2075, classification = ItemClassification.useful), "Sleight Spiral Wave LV2": KHRECOMItemData("Sleights", code = 268_2076, classification = ItemClassification.useful), "Sleight Spiral Wave LV3": KHRECOMItemData("Sleights", code = 268_2077, classification = ItemClassification.useful), "Sleight Hummingbird LV2": KHRECOMItemData("Sleights", code = 268_2078, classification = ItemClassification.useful), "Sleight Hummingbird LV3": KHRECOMItemData("Sleights", code = 268_2079, classification = ItemClassification.useful), "Sleight Furious Volley LV2": KHRECOMItemData("Sleights", code = 268_2080, classification = ItemClassification.useful), "Sleight Furious Volley LV3": KHRECOMItemData("Sleights", code = 268_2081, classification = ItemClassification.useful), "Sleight Lucky Bounty LV2": KHRECOMItemData("Sleights", code = 268_2082, classification = ItemClassification.useful), "Sleight Lucky Bounty LV3": KHRECOMItemData("Sleights", code = 268_2083, classification = ItemClassification.useful), "World Card Agrabah": KHRECOMItemData("World Unlocks", code = 268_3002, classification = ItemClassification.progression), "World Card Olympus Coliseum": KHRECOMItemData("World Unlocks", code = 268_3003, classification = ItemClassification.progression), "World Card Wonderland": KHRECOMItemData("World Unlocks", code = 268_3004, classification = ItemClassification.progression), "World Card Monstro": KHRECOMItemData("World Unlocks", code = 268_3005, classification = ItemClassification.progression), "World Card Halloween Town": KHRECOMItemData("World Unlocks", code = 268_3006, classification = ItemClassification.progression), "World Card Atlantica": KHRECOMItemData("World Unlocks", code = 268_3007, classification = ItemClassification.progression), "World Card Neverland": KHRECOMItemData("World Unlocks", code = 268_3008, classification = ItemClassification.progression), "World Card Hollow Bastion": KHRECOMItemData("World Unlocks", code = 268_3009, classification = ItemClassification.progression), "World Card 100 Acre Wood": KHRECOMItemData("World Unlocks", code = 268_3010, classification = ItemClassification.progression), "World Card Twilight Town": KHRECOMItemData("World Unlocks", code = 268_3011, classification = ItemClassification.progression), "World Card Destiny Islands": KHRECOMItemData("World Unlocks", code = 268_3012, classification = ItemClassification.progression), #"World Card Castle Oblivion": KHRECOMItemData("World Unlocks", code = 268_3013, classification = ItemClassification.progression), "Key to Rewards Traverse Town": KHRECOMItemData("Gold Map Cards", code = 268_3301, classification = ItemClassification.progression), "Key to Rewards Agrabah": KHRECOMItemData("Gold Map Cards", code = 268_3302, classification = ItemClassification.progression), "Key to Rewards Olympus Coliseum": KHRECOMItemData("Gold Map Cards", code = 268_3303, classification = ItemClassification.progression), "Key to Rewards Wonderland": KHRECOMItemData("Gold Map Cards", code = 268_3304, classification = ItemClassification.progression), "Key to Rewards Monstro": KHRECOMItemData("Gold Map Cards", code = 268_3305, classification = ItemClassification.progression), "Key to Rewards Halloween Town": KHRECOMItemData("Gold Map Cards", code = 268_3306, classification = ItemClassification.progression), "Key to Rewards Atlantica": KHRECOMItemData("Gold Map Cards", code = 268_3307, classification = ItemClassification.progression), "Key to Rewards Neverland": KHRECOMItemData("Gold Map Cards", code = 268_3308, classification = ItemClassification.progression), "Key to Rewards Hollow Bastion": KHRECOMItemData("Gold Map Cards", code = 268_3309, classification = ItemClassification.progression), "Key to Rewards Twilight Town": KHRECOMItemData("Gold Map Cards", code = 268_3311, classification = ItemClassification.progression), "Key to Rewards Destiny Islands": KHRECOMItemData("Gold Map Cards", code = 268_3312, classification = ItemClassification.progression), "Key to Rewards Castle Oblivion": KHRECOMItemData("Gold Map Cards", code = 268_3313, classification = ItemClassification.progression), #Friend Cards "Friend Card Donald": KHRECOMItemData("Friend Cards", code = 268_5001, classification = ItemClassification.progression), "Friend Card Goofy": KHRECOMItemData("Friend Cards", code = 268_5002, classification = ItemClassification.progression), "Friend Card Aladdin": KHRECOMItemData("Friend Cards", code = 268_5003, classification = ItemClassification.progression), "Friend Card Ariel": KHRECOMItemData("Friend Cards", code = 268_5004, classification = ItemClassification.progression), "Friend Card Beast": KHRECOMItemData("Friend Cards", code = 268_5005, classification = ItemClassification.progression), "Friend Card Peter Pan": KHRECOMItemData("Friend Cards", code = 268_5006, classification = ItemClassification.progression), "Friend Card Jack": KHRECOMItemData("Friend Cards", code = 268_5007, classification = ItemClassification.progression), "Friend Card Pluto": KHRECOMItemData("Friend Cards", code = 268_5008, classification = ItemClassification.progression), } # Make item categories item_name_groups: Dict[str, Set[str]] = {} for item in item_table.keys(): category = item_table[item].category if category not in item_name_groups.keys(): item_name_groups[category] = set() item_name_groups[category].add(item)