from typing import Dict, NamedTuple, Optional, Set

from BaseClasses import Item, ItemClassification


class KH1Item(Item):
    game: str = "Kingdom Hearts"


class KH1ItemData(NamedTuple):
    category: str
    code: int
    classification: ItemClassification = ItemClassification.filler
    max_quantity: int = 1
    weight: int = 1


def get_items_by_category(category: str) -> Dict[str, KH1ItemData]:
    item_dict: Dict[str, KH1ItemData] = {}
    for name, data in item_table.items():
        if data.category == category:
            item_dict.setdefault(name, data)

    return item_dict


item_table: Dict[str, KH1ItemData] = {
    "Victory":                           KH1ItemData("VIC",              code = 264_0000, classification = ItemClassification.progression,                  ),
    "Potion":                            KH1ItemData("Item",             code = 264_1001, classification = ItemClassification.filler,                       ),
    "Hi-Potion":                         KH1ItemData("Item",             code = 264_1002, classification = ItemClassification.filler,                       ),
    "Ether":                             KH1ItemData("Item",             code = 264_1003, classification = ItemClassification.filler,                       ),
    "Elixir":                            KH1ItemData("Item",             code = 264_1004, classification = ItemClassification.filler,                       ),
    #"B05":                              KH1ItemData("Item",             code = 264_1005, classification = ItemClassification.filler,                       ),
    "Mega-Potion":                       KH1ItemData("Item",             code = 264_1006, classification = ItemClassification.filler,                       ),
    "Mega-Ether":                        KH1ItemData("Item",             code = 264_1007, classification = ItemClassification.filler,                       ),
    "Megalixir":                         KH1ItemData("Item",             code = 264_1008, classification = ItemClassification.filler,                       ),
    #"Fury Stone":                       KH1ItemData("Synthesis",        code = 264_1009, classification = ItemClassification.filler,                       ),
    #"Power Stone":                      KH1ItemData("Synthesis",        code = 264_1010, classification = ItemClassification.filler,                       ),
    #"Energy Stone":                     KH1ItemData("Synthesis",        code = 264_1011, classification = ItemClassification.filler,                       ),
    #"Blazing Stone":                    KH1ItemData("Synthesis",        code = 264_1012, classification = ItemClassification.filler,                       ),
    #"Frost Stone":                      KH1ItemData("Synthesis",        code = 264_1013, classification = ItemClassification.filler,                       ),
    #"Lightning Stone":                  KH1ItemData("Synthesis",        code = 264_1014, classification = ItemClassification.filler,                       ),
    #"Dazzling Stone":                   KH1ItemData("Synthesis",        code = 264_1015, classification = ItemClassification.filler,                       ),
    #"Stormy Stone":                     KH1ItemData("Synthesis",        code = 264_1016, classification = ItemClassification.filler,                       ),
    "Protect Chain":                     KH1ItemData("Accessory",        code = 264_1017, classification = ItemClassification.useful,                       ),
    "Protera Chain":                     KH1ItemData("Accessory",        code = 264_1018, classification = ItemClassification.useful,                       ),
    "Protega Chain":                     KH1ItemData("Accessory",        code = 264_1019, classification = ItemClassification.useful,                       ),
    "Fire Ring":                         KH1ItemData("Accessory",        code = 264_1020, classification = ItemClassification.useful,                       ),
    "Fira Ring":                         KH1ItemData("Accessory",        code = 264_1021, classification = ItemClassification.useful,                       ),
    "Firaga Ring":                       KH1ItemData("Accessory",        code = 264_1022, classification = ItemClassification.useful,                       ),
    "Blizzard Ring":                     KH1ItemData("Accessory",        code = 264_1023, classification = ItemClassification.useful,                       ),
    "Blizzara Ring":                     KH1ItemData("Accessory",        code = 264_1024, classification = ItemClassification.useful,                       ),
    "Blizzaga Ring":                     KH1ItemData("Accessory",        code = 264_1025, classification = ItemClassification.useful,                       ),
    "Thunder Ring":                      KH1ItemData("Accessory",        code = 264_1026, classification = ItemClassification.useful,                       ),
    "Thundara Ring":                     KH1ItemData("Accessory",        code = 264_1027, classification = ItemClassification.useful,                       ),
    "Thundaga Ring":                     KH1ItemData("Accessory",        code = 264_1028, classification = ItemClassification.useful,                       ),
    "Ability Stud":                      KH1ItemData("Accessory",        code = 264_1029, classification = ItemClassification.useful,                       ),
    "Guard Earring":                     KH1ItemData("Accessory",        code = 264_1030, classification = ItemClassification.useful,                       ),
    "Master Earring":                    KH1ItemData("Accessory",        code = 264_1031, classification = ItemClassification.useful,                       ),
    "Chaos Ring":                        KH1ItemData("Accessory",        code = 264_1032, classification = ItemClassification.useful,                       ),
    "Dark Ring":                         KH1ItemData("Accessory",        code = 264_1033, classification = ItemClassification.useful,                       ),
    "Element Ring":                      KH1ItemData("Accessory",        code = 264_1034, classification = ItemClassification.useful,                       ),
    "Three Stars":                       KH1ItemData("Accessory",        code = 264_1035, classification = ItemClassification.useful,                       ),
    "Power Chain":                       KH1ItemData("Accessory",        code = 264_1036, classification = ItemClassification.useful,                       ),
    "Golem Chain":                       KH1ItemData("Accessory",        code = 264_1037, classification = ItemClassification.useful,                       ),
    "Titan Chain":                       KH1ItemData("Accessory",        code = 264_1038, classification = ItemClassification.useful,                       ),
    "Energy Bangle":                     KH1ItemData("Accessory",        code = 264_1039, classification = ItemClassification.useful,                       ),
    "Angel Bangle":                      KH1ItemData("Accessory",        code = 264_1040, classification = ItemClassification.useful,                       ),
    "Gaia Bangle":                       KH1ItemData("Accessory",        code = 264_1041, classification = ItemClassification.useful,                       ),
    "Magic Armlet":                      KH1ItemData("Accessory",        code = 264_1042, classification = ItemClassification.useful,                       ),
    "Rune Armlet":                       KH1ItemData("Accessory",        code = 264_1043, classification = ItemClassification.useful,                       ),
    "Atlas Armlet":                      KH1ItemData("Accessory",        code = 264_1044, classification = ItemClassification.useful,                       ),
    "Heartguard":                        KH1ItemData("Accessory",        code = 264_1045, classification = ItemClassification.useful,                       ),
    "Ribbon":                            KH1ItemData("Accessory",        code = 264_1046, classification = ItemClassification.useful,                       ),
    "Crystal Crown":                     KH1ItemData("Accessory",        code = 264_1047, classification = ItemClassification.useful,                       ),
    "Brave Warrior":                     KH1ItemData("Accessory",        code = 264_1048, classification = ItemClassification.useful,                       ),
    "Ifrit's Horn":                      KH1ItemData("Accessory",        code = 264_1049, classification = ItemClassification.useful,                       ),
    "Inferno Band":                      KH1ItemData("Accessory",        code = 264_1050, classification = ItemClassification.useful,                       ),
    "White Fang":                        KH1ItemData("Accessory",        code = 264_1051, classification = ItemClassification.useful,                       ),
    "Ray of Light":                      KH1ItemData("Accessory",        code = 264_1052, classification = ItemClassification.useful,                       ),
    "Holy Circlet":                      KH1ItemData("Accessory",        code = 264_1053, classification = ItemClassification.useful,                       ),
    "Raven's Claw":                      KH1ItemData("Accessory",        code = 264_1054, classification = ItemClassification.useful,                       ),
    "Omega Arts":                        KH1ItemData("Accessory",        code = 264_1055, classification = ItemClassification.useful,                       ),
    "EXP Earring":                       KH1ItemData("Accessory",        code = 264_1056, classification = ItemClassification.useful,                       ),
    #"A41":                              KH1ItemData("Accessory",        code = 264_1057, classification = ItemClassification.useful,                       ),
    "EXP Ring":                          KH1ItemData("Accessory",        code = 264_1058, classification = ItemClassification.useful,                       ),
    "EXP Bracelet":                      KH1ItemData("Accessory",        code = 264_1059, classification = ItemClassification.useful,                       ),
    "EXP Necklace":                      KH1ItemData("Accessory",        code = 264_1060, classification = ItemClassification.useful,                       ),
    "Firagun Band":                      KH1ItemData("Accessory",        code = 264_1061, classification = ItemClassification.useful,                       ),
    "Blizzagun Band":                    KH1ItemData("Accessory",        code = 264_1062, classification = ItemClassification.useful,                       ),
    "Thundagun Band":                    KH1ItemData("Accessory",        code = 264_1063, classification = ItemClassification.useful,                       ),
    "Ifrit Belt":                        KH1ItemData("Accessory",        code = 264_1064, classification = ItemClassification.useful,                       ),
    "Shiva Belt":                        KH1ItemData("Accessory",        code = 264_1065, classification = ItemClassification.useful,                       ),
    "Ramuh Belt":                        KH1ItemData("Accessory",        code = 264_1066, classification = ItemClassification.useful,                       ),
    "Moogle Badge":                      KH1ItemData("Accessory",        code = 264_1067, classification = ItemClassification.useful,                       ),
    "Cosmic Arts":                       KH1ItemData("Accessory",        code = 264_1068, classification = ItemClassification.useful,                       ),
    "Royal Crown":                       KH1ItemData("Accessory",        code = 264_1069, classification = ItemClassification.useful,                       ),
    "Prime Cap":                         KH1ItemData("Accessory",        code = 264_1070, classification = ItemClassification.useful,                       ),
    "Obsidian Ring":                     KH1ItemData("Accessory",        code = 264_1071, classification = ItemClassification.useful,                       ),
    #"A56":                              KH1ItemData("Accessory",        code = 264_1072, classification = ItemClassification.filler,                       ),
    #"A57":                              KH1ItemData("Accessory",        code = 264_1073, classification = ItemClassification.filler,                       ),
    #"A58":                              KH1ItemData("Accessory",        code = 264_1074, classification = ItemClassification.filler,                       ),
    #"A59":                              KH1ItemData("Accessory",        code = 264_1075, classification = ItemClassification.filler,                       ),
    #"A60":                              KH1ItemData("Accessory",        code = 264_1076, classification = ItemClassification.filler,                       ),
    #"A61":                              KH1ItemData("Accessory",        code = 264_1077, classification = ItemClassification.filler,                       ),
    #"A62":                              KH1ItemData("Accessory",        code = 264_1078, classification = ItemClassification.filler,                       ),
    #"A63":                              KH1ItemData("Accessory",        code = 264_1079, classification = ItemClassification.filler,                       ),
    #"A64":                              KH1ItemData("Accessory",        code = 264_1080, classification = ItemClassification.filler,                       ),
    #"Kingdom Key":                      KH1ItemData("Keyblades",        code = 264_1081, classification = ItemClassification.useful,                       ),
    #"Dream Sword":                      KH1ItemData("Keyblades",        code = 264_1082, classification = ItemClassification.useful,                       ),
    #"Dream Shield":                     KH1ItemData("Keyblades",        code = 264_1083, classification = ItemClassification.useful,                       ),
    #"Dream Rod":                        KH1ItemData("Keyblades",        code = 264_1084, classification = ItemClassification.useful,                       ),
    "Wooden Sword":                      KH1ItemData("Keyblades",        code = 264_1085, classification = ItemClassification.useful,                       ),
    "Jungle King":                       KH1ItemData("Keyblades",        code = 264_1086, classification = ItemClassification.progression,                  ),
    "Three Wishes":                      KH1ItemData("Keyblades",        code = 264_1087, classification = ItemClassification.progression,                  ),
    "Fairy Harp":                        KH1ItemData("Keyblades",        code = 264_1088, classification = ItemClassification.progression,                  ),
    "Pumpkinhead":                       KH1ItemData("Keyblades",        code = 264_1089, classification = ItemClassification.progression,                  ),
    "Crabclaw":                          KH1ItemData("Keyblades",        code = 264_1090, classification = ItemClassification.useful,                       ),
    "Divine Rose":                       KH1ItemData("Keyblades",        code = 264_1091, classification = ItemClassification.progression,                  ),
    "Spellbinder":                       KH1ItemData("Keyblades",        code = 264_1092, classification = ItemClassification.useful,                       ),
    "Olympia":                           KH1ItemData("Keyblades",        code = 264_1093, classification = ItemClassification.progression,                  ),
    "Lionheart":                         KH1ItemData("Keyblades",        code = 264_1094, classification = ItemClassification.progression,                  ),
    "Metal Chocobo":                     KH1ItemData("Keyblades",        code = 264_1095, classification = ItemClassification.useful,                       ),
    "Oathkeeper":                        KH1ItemData("Keyblades",        code = 264_1096, classification = ItemClassification.progression,                  ),
    "Oblivion":                          KH1ItemData("Keyblades",        code = 264_1097, classification = ItemClassification.progression,                  ),
    "Lady Luck":                         KH1ItemData("Keyblades",        code = 264_1098, classification = ItemClassification.progression,                  ),
    "Wishing Star":                      KH1ItemData("Keyblades",        code = 264_1099, classification = ItemClassification.progression,                  ),
    "Ultima Weapon":                     KH1ItemData("Keyblades",        code = 264_1100, classification = ItemClassification.useful,                       ),
    "Diamond Dust":                      KH1ItemData("Keyblades",        code = 264_1101, classification = ItemClassification.useful,                       ),
    "One-Winged Angel":                  KH1ItemData("Keyblades",        code = 264_1102, classification = ItemClassification.useful,                       ),
    #"Mage's Staff":                     KH1ItemData("Weapons",          code = 264_1103, classification = ItemClassification.filler,                       ),
    "Morning Star":                      KH1ItemData("Weapons",          code = 264_1104, classification = ItemClassification.useful,                       ),
    "Shooting Star":                     KH1ItemData("Weapons",          code = 264_1105, classification = ItemClassification.useful,                       ),
    "Magus Staff":                       KH1ItemData("Weapons",          code = 264_1106, classification = ItemClassification.useful,                       ),
    "Wisdom Staff":                      KH1ItemData("Weapons",          code = 264_1107, classification = ItemClassification.useful,                       ),
    "Warhammer":                         KH1ItemData("Weapons",          code = 264_1108, classification = ItemClassification.useful,                       ),
    "Silver Mallet":                     KH1ItemData("Weapons",          code = 264_1109, classification = ItemClassification.useful,                       ),
    "Grand Mallet":                      KH1ItemData("Weapons",          code = 264_1110, classification = ItemClassification.useful,                       ),
    "Lord Fortune":                      KH1ItemData("Weapons",          code = 264_1111, classification = ItemClassification.useful,                       ),
    "Violetta":                          KH1ItemData("Weapons",          code = 264_1112, classification = ItemClassification.useful,                       ),
    "Dream Rod (Donald)":                KH1ItemData("Weapons",          code = 264_1113, classification = ItemClassification.useful,                       ),
    "Save the Queen":                    KH1ItemData("Weapons",          code = 264_1114, classification = ItemClassification.useful,                       ),
    "Wizard's Relic":                    KH1ItemData("Weapons",          code = 264_1115, classification = ItemClassification.useful,                       ),
    "Meteor Strike":                     KH1ItemData("Weapons",          code = 264_1116, classification = ItemClassification.useful,                       ),
    "Fantasista":                        KH1ItemData("Weapons",          code = 264_1117, classification = ItemClassification.useful,                       ),
    #"Unused (Donald)":                  KH1ItemData("Weapons",          code = 264_1118, classification = ItemClassification.filler,                       ),
    #"Knight's Shield":                  KH1ItemData("Weapons",          code = 264_1119, classification = ItemClassification.filler,                       ),
    "Mythril Shield":                    KH1ItemData("Weapons",          code = 264_1120, classification = ItemClassification.useful,                       ),
    "Onyx Shield":                       KH1ItemData("Weapons",          code = 264_1121, classification = ItemClassification.useful,                       ),
    "Stout Shield":                      KH1ItemData("Weapons",          code = 264_1122, classification = ItemClassification.useful,                       ),
    "Golem Shield":                      KH1ItemData("Weapons",          code = 264_1123, classification = ItemClassification.useful,                       ),
    "Adamant Shield":                    KH1ItemData("Weapons",          code = 264_1124, classification = ItemClassification.useful,                       ),
    "Smasher":                           KH1ItemData("Weapons",          code = 264_1125, classification = ItemClassification.useful,                       ),
    "Gigas Fist":                        KH1ItemData("Weapons",          code = 264_1126, classification = ItemClassification.useful,                       ),
    "Genji Shield":                      KH1ItemData("Weapons",          code = 264_1127, classification = ItemClassification.useful,                       ),
    "Herc's Shield":                     KH1ItemData("Weapons",          code = 264_1128, classification = ItemClassification.useful,                       ),
    "Dream Shield (Goofy)":              KH1ItemData("Weapons",          code = 264_1129, classification = ItemClassification.useful,                       ),
    "Save the King":                     KH1ItemData("Weapons",          code = 264_1130, classification = ItemClassification.useful,                       ),
    "Defender":                          KH1ItemData("Weapons",          code = 264_1131, classification = ItemClassification.useful,                       ),
    "Mighty Shield":                     KH1ItemData("Weapons",          code = 264_1132, classification = ItemClassification.useful,                       ),
    "Seven Elements":                    KH1ItemData("Weapons",          code = 264_1133, classification = ItemClassification.useful,                       ),
    #"Unused (Goofy)":                   KH1ItemData("Weapons",          code = 264_1134, classification = ItemClassification.filler,                       ),
    #"Spear":                            KH1ItemData("Weapons",          code = 264_1135, classification = ItemClassification.filler,                       ),
    #"No Weapon":                        KH1ItemData("Weapons",          code = 264_1136, classification = ItemClassification.filler,                       ),
    #"Genie":                            KH1ItemData("Weapons",          code = 264_1137, classification = ItemClassification.filler,                       ),
    #"No Weapon":                        KH1ItemData("Weapons",          code = 264_1138, classification = ItemClassification.filler,                       ),
    #"No Weapon":                        KH1ItemData("Weapons",          code = 264_1139, classification = ItemClassification.filler,                       ),
    #"Tinker Bell":                      KH1ItemData("Weapons",          code = 264_1140, classification = ItemClassification.filler,                       ),
    #"Claws":                            KH1ItemData("Weapons",          code = 264_1141, classification = ItemClassification.filler,                       ),
    "Tent":                              KH1ItemData("Camping",          code = 264_1142, classification = ItemClassification.filler,                       ),
    "Camping Set":                       KH1ItemData("Camping",          code = 264_1143, classification = ItemClassification.filler,                       ),
    "Cottage":                           KH1ItemData("Camping",          code = 264_1144, classification = ItemClassification.filler,                       ),
    #"C04":                              KH1ItemData("Camping",          code = 264_1145, classification = ItemClassification.filler,                       ),
    #"C05":                              KH1ItemData("Camping",          code = 264_1146, classification = ItemClassification.filler,                       ),
    #"C06":                              KH1ItemData("Camping",          code = 264_1147, classification = ItemClassification.filler,                       ),
    #"C07":                              KH1ItemData("Camping",          code = 264_1148, classification = ItemClassification.filler,                       ),
    "Ansem's Report 11":                 KH1ItemData("Reports",          code = 264_1149, classification = ItemClassification.progression,                  ),
    "Ansem's Report 12":                 KH1ItemData("Reports",          code = 264_1150, classification = ItemClassification.progression,                  ),
    "Ansem's Report 13":                 KH1ItemData("Reports",          code = 264_1151, classification = ItemClassification.progression,                  ),
    "Power Up":                          KH1ItemData("Stat Ups",         code = 264_1152, classification = ItemClassification.filler,                       ),
    "Defense Up":                        KH1ItemData("Stat Ups",         code = 264_1153, classification = ItemClassification.filler,                       ),
    "AP Up":                             KH1ItemData("Stat Ups",         code = 264_1154, classification = ItemClassification.filler,                       ),
    #"Serenity Power":                   KH1ItemData("Synthesis",        code = 264_1155, classification = ItemClassification.filler,                       ),
    #"Dark Matter":                      KH1ItemData("Synthesis",        code = 264_1156, classification = ItemClassification.filler,                       ),
    #"Mythril Stone":                    KH1ItemData("Synthesis",        code = 264_1157, classification = ItemClassification.filler,                       ),
    "Fire Arts":                         KH1ItemData("Key",              code = 264_1158, classification = ItemClassification.progression,                  ),
    "Blizzard Arts":                     KH1ItemData("Key",              code = 264_1159, classification = ItemClassification.progression,                  ),
    "Thunder Arts":                      KH1ItemData("Key",              code = 264_1160, classification = ItemClassification.progression,                  ),
    "Cure Arts":                         KH1ItemData("Key",              code = 264_1161, classification = ItemClassification.progression,                  ),
    "Gravity Arts":                      KH1ItemData("Key",              code = 264_1162, classification = ItemClassification.progression,                  ),
    "Stop Arts":                         KH1ItemData("Key",              code = 264_1163, classification = ItemClassification.progression,                  ),
    "Aero Arts":                         KH1ItemData("Key",              code = 264_1164, classification = ItemClassification.progression,                  ),
    #"Shiitank Rank":                    KH1ItemData("Synthesis",        code = 264_1165, classification = ItemClassification.filler,                       ),
    #"Matsutake Rank":                   KH1ItemData("Synthesis",        code = 264_1166, classification = ItemClassification.filler,                       ),
    #"Mystery Mold":                     KH1ItemData("Synthesis",        code = 264_1167, classification = ItemClassification.filler,                       ),
    "Ansem's Report 1":                  KH1ItemData("Reports",          code = 264_1168, classification = ItemClassification.progression,                  ),
    "Ansem's Report 2":                  KH1ItemData("Reports",          code = 264_1169, classification = ItemClassification.progression,                  ),
    "Ansem's Report 3":                  KH1ItemData("Reports",          code = 264_1170, classification = ItemClassification.progression,                  ),
    "Ansem's Report 4":                  KH1ItemData("Reports",          code = 264_1171, classification = ItemClassification.progression,                  ),
    "Ansem's Report 5":                  KH1ItemData("Reports",          code = 264_1172, classification = ItemClassification.progression,                  ),
    "Ansem's Report 6":                  KH1ItemData("Reports",          code = 264_1173, classification = ItemClassification.progression,                  ),
    "Ansem's Report 7":                  KH1ItemData("Reports",          code = 264_1174, classification = ItemClassification.progression,                  ),
    "Ansem's Report 8":                  KH1ItemData("Reports",          code = 264_1175, classification = ItemClassification.progression,                  ),
    "Ansem's Report 9":                  KH1ItemData("Reports",          code = 264_1176, classification = ItemClassification.progression,                  ),
    "Ansem's Report 10":                 KH1ItemData("Reports",          code = 264_1177, classification = ItemClassification.progression,                  ),
    #"Khama Vol. 8":                     KH1ItemData("Key",              code = 264_1178, classification = ItemClassification.progression,                  ),
    #"Salegg Vol. 6":                    KH1ItemData("Key",              code = 264_1179, classification = ItemClassification.progression,                  ),
    #"Azal Vol. 3":                      KH1ItemData("Key",              code = 264_1180, classification = ItemClassification.progression,                  ),
    #"Mava Vol. 3":                      KH1ItemData("Key",              code = 264_1181, classification = ItemClassification.progression,                  ),
    #"Mava Vol. 6":                      KH1ItemData("Key",              code = 264_1182, classification = ItemClassification.progression,                  ),
    "Theon Vol. 6":                      KH1ItemData("Key",              code = 264_1183, classification = ItemClassification.progression,                  ),
    #"Nahara Vol. 5":                    KH1ItemData("Key",              code = 264_1184, classification = ItemClassification.progression,                  ),
    #"Hafet Vol. 4":                     KH1ItemData("Key",              code = 264_1185, classification = ItemClassification.progression,                  ),
    "Empty Bottle":                      KH1ItemData("Key",              code = 264_1186, classification = ItemClassification.progression, max_quantity = 6 ),
    #"Old Book":                         KH1ItemData("Key",              code = 264_1187, classification = ItemClassification.progression,                  ),
    "Emblem Piece (Flame)":              KH1ItemData("Key",              code = 264_1188, classification = ItemClassification.progression,                  ),
    "Emblem Piece (Chest)":              KH1ItemData("Key",              code = 264_1189, classification = ItemClassification.progression,                  ),
    "Emblem Piece (Statue)":             KH1ItemData("Key",              code = 264_1190, classification = ItemClassification.progression,                  ),
    "Emblem Piece (Fountain)":           KH1ItemData("Key",              code = 264_1191, classification = ItemClassification.progression,                  ),
    #"Log":                              KH1ItemData("Key",              code = 264_1192, classification = ItemClassification.progression,                  ),
    #"Cloth":                            KH1ItemData("Key",              code = 264_1193, classification = ItemClassification.progression,                  ),
    #"Rope":                             KH1ItemData("Key",              code = 264_1194, classification = ItemClassification.progression,                  ),
    #"Seagull Egg":                      KH1ItemData("Key",              code = 264_1195, classification = ItemClassification.progression,                  ),
    #"Fish":                             KH1ItemData("Key",              code = 264_1196, classification = ItemClassification.progression,                  ),
    #"Mushroom":                         KH1ItemData("Key",              code = 264_1197, classification = ItemClassification.progression,                  ),
    #"Coconut":                          KH1ItemData("Key",              code = 264_1198, classification = ItemClassification.progression,                  ),
    #"Drinking Water":                   KH1ItemData("Key",              code = 264_1199, classification = ItemClassification.progression,                  ),
    #"Navi-G Piece 1":                   KH1ItemData("Key",              code = 264_1200, classification = ItemClassification.progression,                  ),
    #"Navi-G Piece 2":                   KH1ItemData("Key",              code = 264_1201, classification = ItemClassification.progression,                  ),
    #"Navi-Gummi Unused":                KH1ItemData("Key",              code = 264_1202, classification = ItemClassification.progression,                  ),
    #"Navi-G Piece 3":                   KH1ItemData("Key",              code = 264_1203, classification = ItemClassification.progression,                  ),
    #"Navi-G Piece 4":                   KH1ItemData("Key",              code = 264_1204, classification = ItemClassification.progression,                  ),
    #"Navi-Gummi":                       KH1ItemData("Key",              code = 264_1205, classification = ItemClassification.progression,                  ),
    #"Watergleam":                       KH1ItemData("Key",              code = 264_1206, classification = ItemClassification.progression,                  ),
    #"Naturespark":                      KH1ItemData("Key",              code = 264_1207, classification = ItemClassification.progression,                  ),
    #"Fireglow":                         KH1ItemData("Key",              code = 264_1208, classification = ItemClassification.progression,                  ),
    #"Earthshine":                       KH1ItemData("Key",              code = 264_1209, classification = ItemClassification.progression,                  ),
    "Crystal Trident":                   KH1ItemData("Key",              code = 264_1210, classification = ItemClassification.progression,                  ),
    "Postcard":                          KH1ItemData("Key",              code = 264_1211, classification = ItemClassification.progression, max_quantity = 10),
    "Torn Page 1":                       KH1ItemData("Torn Pages",       code = 264_1212, classification = ItemClassification.progression,                  ),
    "Torn Page 2":                       KH1ItemData("Torn Pages",       code = 264_1213, classification = ItemClassification.progression,                  ),
    "Torn Page 3":                       KH1ItemData("Torn Pages",       code = 264_1214, classification = ItemClassification.progression,                  ),
    "Torn Page 4":                       KH1ItemData("Torn Pages",       code = 264_1215, classification = ItemClassification.progression,                  ),
    "Torn Page 5":                       KH1ItemData("Torn Pages",       code = 264_1216, classification = ItemClassification.progression,                  ),
    "Slides":                            KH1ItemData("Key",              code = 264_1217, classification = ItemClassification.progression,                  ),
    #"Slide 2":                          KH1ItemData("Key",              code = 264_1218, classification = ItemClassification.progression,                  ),
    #"Slide 3":                          KH1ItemData("Key",              code = 264_1219, classification = ItemClassification.progression,                  ),
    #"Slide 4":                          KH1ItemData("Key",              code = 264_1220, classification = ItemClassification.progression,                  ),
    #"Slide 5":                          KH1ItemData("Key",              code = 264_1221, classification = ItemClassification.progression,                  ),
    #"Slide 6":                          KH1ItemData("Key",              code = 264_1222, classification = ItemClassification.progression,                  ),
    "Footprints":                        KH1ItemData("Key",              code = 264_1223, classification = ItemClassification.progression,                  ),
    #"Claw Marks":                       KH1ItemData("Key",              code = 264_1224, classification = ItemClassification.progression,                  ),
    #"Stench":                           KH1ItemData("Key",              code = 264_1225, classification = ItemClassification.progression,                  ),
    #"Antenna":                          KH1ItemData("Key",              code = 264_1226, classification = ItemClassification.progression,                  ),
    "Forget-Me-Not":                     KH1ItemData("Key",              code = 264_1227, classification = ItemClassification.progression,                  ),
    "Jack-In-The-Box":                   KH1ItemData("Key",              code = 264_1228, classification = ItemClassification.progression,                  ),
    "Entry Pass":                        KH1ItemData("Key",              code = 264_1229, classification = ItemClassification.progression,                  ),
    #"Hero License":                     KH1ItemData("Key",              code = 264_1230, classification = ItemClassification.progression,                  ),
    #"Pretty Stone":                     KH1ItemData("Synthesis",        code = 264_1231, classification = ItemClassification.filler,                       ),
    #"N41":                              KH1ItemData("Synthesis",        code = 264_1232, classification = ItemClassification.filler,                       ),
    #"Lucid Shard":                      KH1ItemData("Synthesis",        code = 264_1233, classification = ItemClassification.filler,                       ),
    #"Lucid Gem":                        KH1ItemData("Synthesis",        code = 264_1234, classification = ItemClassification.filler,                       ),
    #"Lucid Crystal":                    KH1ItemData("Synthesis",        code = 264_1235, classification = ItemClassification.filler,                       ),
    #"Spirit Shard":                     KH1ItemData("Synthesis",        code = 264_1236, classification = ItemClassification.filler,                       ),
    #"Spirit Gem":                       KH1ItemData("Synthesis",        code = 264_1237, classification = ItemClassification.filler,                       ),
    #"Power Shard":                      KH1ItemData("Synthesis",        code = 264_1238, classification = ItemClassification.filler,                       ),
    #"Power Gem":                        KH1ItemData("Synthesis",        code = 264_1239, classification = ItemClassification.filler,                       ),
    #"Power Crystal":                    KH1ItemData("Synthesis",        code = 264_1240, classification = ItemClassification.filler,                       ),
    #"Blaze Shard":                      KH1ItemData("Synthesis",        code = 264_1241, classification = ItemClassification.filler,                       ),
    #"Blaze Gem":                        KH1ItemData("Synthesis",        code = 264_1242, classification = ItemClassification.filler,                       ),
    #"Frost Shard":                      KH1ItemData("Synthesis",        code = 264_1243, classification = ItemClassification.filler,                       ),
    #"Frost Gem":                        KH1ItemData("Synthesis",        code = 264_1244, classification = ItemClassification.filler,                       ),
    #"Thunder Shard":                    KH1ItemData("Synthesis",        code = 264_1245, classification = ItemClassification.filler,                       ),
    #"Thunder Gem":                      KH1ItemData("Synthesis",        code = 264_1246, classification = ItemClassification.filler,                       ),
    #"Shiny Crystal":                    KH1ItemData("Synthesis",        code = 264_1247, classification = ItemClassification.filler,                       ),
    #"Bright Shard":                     KH1ItemData("Synthesis",        code = 264_1248, classification = ItemClassification.filler,                       ),
    #"Bright Gem":                       KH1ItemData("Synthesis",        code = 264_1249, classification = ItemClassification.filler,                       ),
    #"Bright Crystal":                   KH1ItemData("Synthesis",        code = 264_1250, classification = ItemClassification.filler,                       ),
    #"Mystery Goo":                      KH1ItemData("Synthesis",        code = 264_1251, classification = ItemClassification.filler,                       ),
    #"Gale":                             KH1ItemData("Synthesis",        code = 264_1252, classification = ItemClassification.filler,                       ),
    #"Mythril Shard":                    KH1ItemData("Synthesis",        code = 264_1253, classification = ItemClassification.filler,                       ),
    #"Mythril":                          KH1ItemData("Synthesis",        code = 264_1254, classification = ItemClassification.filler,                       ),
    #"Orichalcum":                       KH1ItemData("Synthesis",        code = 264_1255, classification = ItemClassification.filler,                       ),
    "High Jump":                         KH1ItemData("Shared Abilities", code = 264_2001, classification = ItemClassification.progression,                  ),
    "Mermaid Kick":                      KH1ItemData("Shared Abilities", code = 264_2002, classification = ItemClassification.progression,                  ),
    "Progressive Glide":                 KH1ItemData("Shared Abilities", code = 264_2003, classification = ItemClassification.progression, max_quantity = 2 ),
    #"Superglide":                       KH1ItemData("Shared Abilities", code = 264_2004, classification = ItemClassification.progression,                  ),
    "Puppy 01":                          KH1ItemData("Puppies",          code = 264_2101, classification = ItemClassification.progression,                  ),
    "Puppy 02":                          KH1ItemData("Puppies",          code = 264_2102, classification = ItemClassification.progression,                  ),
    "Puppy 03":                          KH1ItemData("Puppies",          code = 264_2103, classification = ItemClassification.progression,                  ),
    "Puppy 04":                          KH1ItemData("Puppies",          code = 264_2104, classification = ItemClassification.progression,                  ),
    "Puppy 05":                          KH1ItemData("Puppies",          code = 264_2105, classification = ItemClassification.progression,                  ),
    "Puppy 06":                          KH1ItemData("Puppies",          code = 264_2106, classification = ItemClassification.progression,                  ),
    "Puppy 07":                          KH1ItemData("Puppies",          code = 264_2107, classification = ItemClassification.progression,                  ),
    "Puppy 08":                          KH1ItemData("Puppies",          code = 264_2108, classification = ItemClassification.progression,                  ),
    "Puppy 09":                          KH1ItemData("Puppies",          code = 264_2109, classification = ItemClassification.progression,                  ),
    "Puppy 10":                          KH1ItemData("Puppies",          code = 264_2110, classification = ItemClassification.progression,                  ),
    "Puppy 11":                          KH1ItemData("Puppies",          code = 264_2111, classification = ItemClassification.progression,                  ),
    "Puppy 12":                          KH1ItemData("Puppies",          code = 264_2112, classification = ItemClassification.progression,                  ),
    "Puppy 13":                          KH1ItemData("Puppies",          code = 264_2113, classification = ItemClassification.progression,                  ),
    "Puppy 14":                          KH1ItemData("Puppies",          code = 264_2114, classification = ItemClassification.progression,                  ),
    "Puppy 15":                          KH1ItemData("Puppies",          code = 264_2115, classification = ItemClassification.progression,                  ),
    "Puppy 16":                          KH1ItemData("Puppies",          code = 264_2116, classification = ItemClassification.progression,                  ),
    "Puppy 17":                          KH1ItemData("Puppies",          code = 264_2117, classification = ItemClassification.progression,                  ),
    "Puppy 18":                          KH1ItemData("Puppies",          code = 264_2118, classification = ItemClassification.progression,                  ),
    "Puppy 19":                          KH1ItemData("Puppies",          code = 264_2119, classification = ItemClassification.progression,                  ),
    "Puppy 20":                          KH1ItemData("Puppies",          code = 264_2120, classification = ItemClassification.progression,                  ),
    "Puppy 21":                          KH1ItemData("Puppies",          code = 264_2121, classification = ItemClassification.progression,                  ),
    "Puppy 22":                          KH1ItemData("Puppies",          code = 264_2122, classification = ItemClassification.progression,                  ),
    "Puppy 23":                          KH1ItemData("Puppies",          code = 264_2123, classification = ItemClassification.progression,                  ),
    "Puppy 24":                          KH1ItemData("Puppies",          code = 264_2124, classification = ItemClassification.progression,                  ),
    "Puppy 25":                          KH1ItemData("Puppies",          code = 264_2125, classification = ItemClassification.progression,                  ),
    "Puppy 26":                          KH1ItemData("Puppies",          code = 264_2126, classification = ItemClassification.progression,                  ),
    "Puppy 27":                          KH1ItemData("Puppies",          code = 264_2127, classification = ItemClassification.progression,                  ),
    "Puppy 28":                          KH1ItemData("Puppies",          code = 264_2128, classification = ItemClassification.progression,                  ),
    "Puppy 29":                          KH1ItemData("Puppies",          code = 264_2129, classification = ItemClassification.progression,                  ),
    "Puppy 30":                          KH1ItemData("Puppies",          code = 264_2130, classification = ItemClassification.progression,                  ),
    "Puppy 31":                          KH1ItemData("Puppies",          code = 264_2131, classification = ItemClassification.progression,                  ),
    "Puppy 32":                          KH1ItemData("Puppies",          code = 264_2132, classification = ItemClassification.progression,                  ),
    "Puppy 33":                          KH1ItemData("Puppies",          code = 264_2133, classification = ItemClassification.progression,                  ),
    "Puppy 34":                          KH1ItemData("Puppies",          code = 264_2134, classification = ItemClassification.progression,                  ),
    "Puppy 35":                          KH1ItemData("Puppies",          code = 264_2135, classification = ItemClassification.progression,                  ),
    "Puppy 36":                          KH1ItemData("Puppies",          code = 264_2136, classification = ItemClassification.progression,                  ),
    "Puppy 37":                          KH1ItemData("Puppies",          code = 264_2137, classification = ItemClassification.progression,                  ),
    "Puppy 38":                          KH1ItemData("Puppies",          code = 264_2138, classification = ItemClassification.progression,                  ),
    "Puppy 39":                          KH1ItemData("Puppies",          code = 264_2139, classification = ItemClassification.progression,                  ),
    "Puppy 40":                          KH1ItemData("Puppies",          code = 264_2140, classification = ItemClassification.progression,                  ),
    "Puppy 41":                          KH1ItemData("Puppies",          code = 264_2141, classification = ItemClassification.progression,                  ),
    "Puppy 42":                          KH1ItemData("Puppies",          code = 264_2142, classification = ItemClassification.progression,                  ),
    "Puppy 43":                          KH1ItemData("Puppies",          code = 264_2143, classification = ItemClassification.progression,                  ),
    "Puppy 44":                          KH1ItemData("Puppies",          code = 264_2144, classification = ItemClassification.progression,                  ),
    "Puppy 45":                          KH1ItemData("Puppies",          code = 264_2145, classification = ItemClassification.progression,                  ),
    "Puppy 46":                          KH1ItemData("Puppies",          code = 264_2146, classification = ItemClassification.progression,                  ),
    "Puppy 47":                          KH1ItemData("Puppies",          code = 264_2147, classification = ItemClassification.progression,                  ),
    "Puppy 48":                          KH1ItemData("Puppies",          code = 264_2148, classification = ItemClassification.progression,                  ),
    "Puppy 49":                          KH1ItemData("Puppies",          code = 264_2149, classification = ItemClassification.progression,                  ),
    "Puppy 50":                          KH1ItemData("Puppies",          code = 264_2150, classification = ItemClassification.progression,                  ),
    "Puppy 51":                          KH1ItemData("Puppies",          code = 264_2151, classification = ItemClassification.progression,                  ),
    "Puppy 52":                          KH1ItemData("Puppies",          code = 264_2152, classification = ItemClassification.progression,                  ),
    "Puppy 53":                          KH1ItemData("Puppies",          code = 264_2153, classification = ItemClassification.progression,                  ),
    "Puppy 54":                          KH1ItemData("Puppies",          code = 264_2154, classification = ItemClassification.progression,                  ),
    "Puppy 55":                          KH1ItemData("Puppies",          code = 264_2155, classification = ItemClassification.progression,                  ),
    "Puppy 56":                          KH1ItemData("Puppies",          code = 264_2156, classification = ItemClassification.progression,                  ),
    "Puppy 57":                          KH1ItemData("Puppies",          code = 264_2157, classification = ItemClassification.progression,                  ),
    "Puppy 58":                          KH1ItemData("Puppies",          code = 264_2158, classification = ItemClassification.progression,                  ),
    "Puppy 59":                          KH1ItemData("Puppies",          code = 264_2159, classification = ItemClassification.progression,                  ),
    "Puppy 60":                          KH1ItemData("Puppies",          code = 264_2160, classification = ItemClassification.progression,                  ),
    "Puppy 61":                          KH1ItemData("Puppies",          code = 264_2161, classification = ItemClassification.progression,                  ),
    "Puppy 62":                          KH1ItemData("Puppies",          code = 264_2162, classification = ItemClassification.progression,                  ),
    "Puppy 63":                          KH1ItemData("Puppies",          code = 264_2163, classification = ItemClassification.progression,                  ),
    "Puppy 64":                          KH1ItemData("Puppies",          code = 264_2164, classification = ItemClassification.progression,                  ),
    "Puppy 65":                          KH1ItemData("Puppies",          code = 264_2165, classification = ItemClassification.progression,                  ),
    "Puppy 66":                          KH1ItemData("Puppies",          code = 264_2166, classification = ItemClassification.progression,                  ),
    "Puppy 67":                          KH1ItemData("Puppies",          code = 264_2167, classification = ItemClassification.progression,                  ),
    "Puppy 68":                          KH1ItemData("Puppies",          code = 264_2168, classification = ItemClassification.progression,                  ),
    "Puppy 69":                          KH1ItemData("Puppies",          code = 264_2169, classification = ItemClassification.progression,                  ),
    "Puppy 70":                          KH1ItemData("Puppies",          code = 264_2170, classification = ItemClassification.progression,                  ),
    "Puppy 71":                          KH1ItemData("Puppies",          code = 264_2171, classification = ItemClassification.progression,                  ),
    "Puppy 72":                          KH1ItemData("Puppies",          code = 264_2172, classification = ItemClassification.progression,                  ),
    "Puppy 73":                          KH1ItemData("Puppies",          code = 264_2173, classification = ItemClassification.progression,                  ),
    "Puppy 74":                          KH1ItemData("Puppies",          code = 264_2174, classification = ItemClassification.progression,                  ),
    "Puppy 75":                          KH1ItemData("Puppies",          code = 264_2175, classification = ItemClassification.progression,                  ),
    "Puppy 76":                          KH1ItemData("Puppies",          code = 264_2176, classification = ItemClassification.progression,                  ),
    "Puppy 77":                          KH1ItemData("Puppies",          code = 264_2177, classification = ItemClassification.progression,                  ),
    "Puppy 78":                          KH1ItemData("Puppies",          code = 264_2178, classification = ItemClassification.progression,                  ),
    "Puppy 79":                          KH1ItemData("Puppies",          code = 264_2179, classification = ItemClassification.progression,                  ),
    "Puppy 80":                          KH1ItemData("Puppies",          code = 264_2180, classification = ItemClassification.progression,                  ),
    "Puppy 81":                          KH1ItemData("Puppies",          code = 264_2181, classification = ItemClassification.progression,                  ),
    "Puppy 82":                          KH1ItemData("Puppies",          code = 264_2182, classification = ItemClassification.progression,                  ),
    "Puppy 83":                          KH1ItemData("Puppies",          code = 264_2183, classification = ItemClassification.progression,                  ),
    "Puppy 84":                          KH1ItemData("Puppies",          code = 264_2184, classification = ItemClassification.progression,                  ),
    "Puppy 85":                          KH1ItemData("Puppies",          code = 264_2185, classification = ItemClassification.progression,                  ),
    "Puppy 86":                          KH1ItemData("Puppies",          code = 264_2186, classification = ItemClassification.progression,                  ),
    "Puppy 87":                          KH1ItemData("Puppies",          code = 264_2187, classification = ItemClassification.progression,                  ),
    "Puppy 88":                          KH1ItemData("Puppies",          code = 264_2188, classification = ItemClassification.progression,                  ),
    "Puppy 89":                          KH1ItemData("Puppies",          code = 264_2189, classification = ItemClassification.progression,                  ),
    "Puppy 90":                          KH1ItemData("Puppies",          code = 264_2190, classification = ItemClassification.progression,                  ),
    "Puppy 91":                          KH1ItemData("Puppies",          code = 264_2191, classification = ItemClassification.progression,                  ),
    "Puppy 92":                          KH1ItemData("Puppies",          code = 264_2192, classification = ItemClassification.progression,                  ),
    "Puppy 93":                          KH1ItemData("Puppies",          code = 264_2193, classification = ItemClassification.progression,                  ),
    "Puppy 94":                          KH1ItemData("Puppies",          code = 264_2194, classification = ItemClassification.progression,                  ),
    "Puppy 95":                          KH1ItemData("Puppies",          code = 264_2195, classification = ItemClassification.progression,                  ),
    "Puppy 96":                          KH1ItemData("Puppies",          code = 264_2196, classification = ItemClassification.progression,                  ),
    "Puppy 97":                          KH1ItemData("Puppies",          code = 264_2197, classification = ItemClassification.progression,                  ),
    "Puppy 98":                          KH1ItemData("Puppies",          code = 264_2198, classification = ItemClassification.progression,                  ),
    "Puppy 99":                          KH1ItemData("Puppies",          code = 264_2199, classification = ItemClassification.progression,                  ),
    "Puppies 01-03":                     KH1ItemData("Puppies",          code = 264_2201, classification = ItemClassification.progression,                  ),
    "Puppies 04-06":                     KH1ItemData("Puppies",          code = 264_2202, classification = ItemClassification.progression,                  ),
    "Puppies 07-09":                     KH1ItemData("Puppies",          code = 264_2203, classification = ItemClassification.progression,                  ),
    "Puppies 10-12":                     KH1ItemData("Puppies",          code = 264_2204, classification = ItemClassification.progression,                  ),
    "Puppies 13-15":                     KH1ItemData("Puppies",          code = 264_2205, classification = ItemClassification.progression,                  ),
    "Puppies 16-18":                     KH1ItemData("Puppies",          code = 264_2206, classification = ItemClassification.progression,                  ),
    "Puppies 19-21":                     KH1ItemData("Puppies",          code = 264_2207, classification = ItemClassification.progression,                  ),
    "Puppies 22-24":                     KH1ItemData("Puppies",          code = 264_2208, classification = ItemClassification.progression,                  ),
    "Puppies 25-27":                     KH1ItemData("Puppies",          code = 264_2209, classification = ItemClassification.progression,                  ),
    "Puppies 28-30":                     KH1ItemData("Puppies",          code = 264_2210, classification = ItemClassification.progression,                  ),
    "Puppies 31-33":                     KH1ItemData("Puppies",          code = 264_2211, classification = ItemClassification.progression,                  ),
    "Puppies 34-36":                     KH1ItemData("Puppies",          code = 264_2212, classification = ItemClassification.progression,                  ),
    "Puppies 37-39":                     KH1ItemData("Puppies",          code = 264_2213, classification = ItemClassification.progression,                  ),
    "Puppies 40-42":                     KH1ItemData("Puppies",          code = 264_2214, classification = ItemClassification.progression,                  ),
    "Puppies 43-45":                     KH1ItemData("Puppies",          code = 264_2215, classification = ItemClassification.progression,                  ),
    "Puppies 46-48":                     KH1ItemData("Puppies",          code = 264_2216, classification = ItemClassification.progression,                  ),
    "Puppies 49-51":                     KH1ItemData("Puppies",          code = 264_2217, classification = ItemClassification.progression,                  ),
    "Puppies 52-54":                     KH1ItemData("Puppies",          code = 264_2218, classification = ItemClassification.progression,                  ),
    "Puppies 55-57":                     KH1ItemData("Puppies",          code = 264_2219, classification = ItemClassification.progression,                  ),
    "Puppies 58-60":                     KH1ItemData("Puppies",          code = 264_2220, classification = ItemClassification.progression,                  ),
    "Puppies 61-63":                     KH1ItemData("Puppies",          code = 264_2221, classification = ItemClassification.progression,                  ),
    "Puppies 64-66":                     KH1ItemData("Puppies",          code = 264_2222, classification = ItemClassification.progression,                  ),
    "Puppies 67-69":                     KH1ItemData("Puppies",          code = 264_2223, classification = ItemClassification.progression,                  ),
    "Puppies 70-72":                     KH1ItemData("Puppies",          code = 264_2224, classification = ItemClassification.progression,                  ),
    "Puppies 73-75":                     KH1ItemData("Puppies",          code = 264_2225, classification = ItemClassification.progression,                  ),
    "Puppies 76-78":                     KH1ItemData("Puppies",          code = 264_2226, classification = ItemClassification.progression,                  ),
    "Puppies 79-81":                     KH1ItemData("Puppies",          code = 264_2227, classification = ItemClassification.progression,                  ),
    "Puppies 82-84":                     KH1ItemData("Puppies",          code = 264_2228, classification = ItemClassification.progression,                  ),
    "Puppies 85-87":                     KH1ItemData("Puppies",          code = 264_2229, classification = ItemClassification.progression,                  ),
    "Puppies 88-90":                     KH1ItemData("Puppies",          code = 264_2230, classification = ItemClassification.progression,                  ),
    "Puppies 91-93":                     KH1ItemData("Puppies",          code = 264_2231, classification = ItemClassification.progression,                  ),
    "Puppies 94-96":                     KH1ItemData("Puppies",          code = 264_2232, classification = ItemClassification.progression,                  ),
    "Puppies 97-99":                     KH1ItemData("Puppies",          code = 264_2233, classification = ItemClassification.progression,                  ),
    "All Puppies":                       KH1ItemData("Puppies",          code = 264_2240, classification = ItemClassification.progression,                  ),
    "Treasure Magnet":                   KH1ItemData("Abilities",        code = 264_3005, classification = ItemClassification.useful,      max_quantity = 2 ),
    "Combo Plus":                        KH1ItemData("Abilities",        code = 264_3006, classification = ItemClassification.useful,      max_quantity = 4 ),
    "Air Combo Plus":                    KH1ItemData("Abilities",        code = 264_3007, classification = ItemClassification.useful,      max_quantity = 2 ),
    "Critical Plus":                     KH1ItemData("Abilities",        code = 264_3008, classification = ItemClassification.useful,      max_quantity = 3 ),
    #"Second Wind":                      KH1ItemData("Abilities",        code = 264_3009, classification = ItemClassification.useful,                       ),
    "Scan":                              KH1ItemData("Abilities",        code = 264_3010, classification = ItemClassification.useful,                       ),
    "Sonic Blade":                       KH1ItemData("Abilities",        code = 264_3011, classification = ItemClassification.useful,                       ),
    "Ars Arcanum":                       KH1ItemData("Abilities",        code = 264_3012, classification = ItemClassification.useful,                       ),
    "Strike Raid":                       KH1ItemData("Abilities",        code = 264_3013, classification = ItemClassification.useful,                       ),
    "Ragnarok":                          KH1ItemData("Abilities",        code = 264_3014, classification = ItemClassification.useful,                       ),
    "Trinity Limit":                     KH1ItemData("Abilities",        code = 264_3015, classification = ItemClassification.useful,                       ),
    "Cheer":                             KH1ItemData("Abilities",        code = 264_3016, classification = ItemClassification.useful,                       ),
    "Vortex":                            KH1ItemData("Abilities",        code = 264_3017, classification = ItemClassification.useful,                       ),
    "Aerial Sweep":                      KH1ItemData("Abilities",        code = 264_3018, classification = ItemClassification.useful,                       ),
    "Counterattack":                     KH1ItemData("Abilities",        code = 264_3019, classification = ItemClassification.useful,                       ),
    "Blitz":                             KH1ItemData("Abilities",        code = 264_3020, classification = ItemClassification.useful,                       ),
    "Guard":                             KH1ItemData("Abilities",        code = 264_3021, classification = ItemClassification.progression,                  ),
    "Dodge Roll":                        KH1ItemData("Abilities",        code = 264_3022, classification = ItemClassification.progression,                  ),
    "MP Haste":                          KH1ItemData("Abilities",        code = 264_3023, classification = ItemClassification.useful,                       ),
    "MP Rage":                           KH1ItemData("Abilities",        code = 264_3024, classification = ItemClassification.progression,                  ),
    "Second Chance":                     KH1ItemData("Abilities",        code = 264_3025, classification = ItemClassification.progression,                  ),
    "Berserk":                           KH1ItemData("Abilities",        code = 264_3026, classification = ItemClassification.useful,                       ),
    "Jackpot":                           KH1ItemData("Abilities",        code = 264_3027, classification = ItemClassification.useful,                       ),
    "Lucky Strike":                      KH1ItemData("Abilities",        code = 264_3028, classification = ItemClassification.useful,                       ),
    #"Charge":                           KH1ItemData("Abilities",        code = 264_3029, classification = ItemClassification.useful,                       ),
    #"Rocket":                           KH1ItemData("Abilities",        code = 264_3030, classification = ItemClassification.useful,                       ),
    #"Tornado":                          KH1ItemData("Abilities",        code = 264_3031, classification = ItemClassification.useful,                       ),
    #"MP Gift":                          KH1ItemData("Abilities",        code = 264_3032, classification = ItemClassification.useful,                       ),
    #"Raging Boar":                      KH1ItemData("Abilities",        code = 264_3033, classification = ItemClassification.useful,                       ),
    #"Asp's Bite":                       KH1ItemData("Abilities",        code = 264_3034, classification = ItemClassification.useful,                       ),
    #"Healing Herb":                     KH1ItemData("Abilities",        code = 264_3035, classification = ItemClassification.useful,                       ),
    #"Wind Armor":                       KH1ItemData("Abilities",        code = 264_3036, classification = ItemClassification.useful,                       ),
    #"Crescent":                         KH1ItemData("Abilities",        code = 264_3037, classification = ItemClassification.useful,                       ),
    #"Sandstorm":                        KH1ItemData("Abilities",        code = 264_3038, classification = ItemClassification.useful,                       ),
    #"Applause!":                        KH1ItemData("Abilities",        code = 264_3039, classification = ItemClassification.useful,                       ),
    #"Blazing Fury":                     KH1ItemData("Abilities",        code = 264_3040, classification = ItemClassification.useful,                       ),
    #"Icy Terror":                       KH1ItemData("Abilities",        code = 264_3041, classification = ItemClassification.useful,                       ),
    #"Bolts of Sorrow":                  KH1ItemData("Abilities",        code = 264_3042, classification = ItemClassification.useful,                       ),
    #"Ghostly Scream":                   KH1ItemData("Abilities",        code = 264_3043, classification = ItemClassification.useful,                       ),
    #"Humming Bird":                     KH1ItemData("Abilities",        code = 264_3044, classification = ItemClassification.useful,                       ),
    #"Time-Out":                         KH1ItemData("Abilities",        code = 264_3045, classification = ItemClassification.useful,                       ),
    #"Storm's Eye":                      KH1ItemData("Abilities",        code = 264_3046, classification = ItemClassification.useful,                       ),
    #"Ferocious Lunge":                  KH1ItemData("Abilities",        code = 264_3047, classification = ItemClassification.useful,                       ),
    #"Furious Bellow":                   KH1ItemData("Abilities",        code = 264_3048, classification = ItemClassification.useful,                       ),
    #"Spiral Wave":                      KH1ItemData("Abilities",        code = 264_3049, classification = ItemClassification.useful,                       ),
    #"Thunder Potion":                   KH1ItemData("Abilities",        code = 264_3050, classification = ItemClassification.useful,                       ),
    #"Cure Potion":                      KH1ItemData("Abilities",        code = 264_3051, classification = ItemClassification.useful,                       ),
    #"Aero Potion":                      KH1ItemData("Abilities",        code = 264_3052, classification = ItemClassification.useful,                       ),
    "Slapshot":                          KH1ItemData("Abilities",        code = 264_3053, classification = ItemClassification.useful,                       ),
    "Sliding Dash":                      KH1ItemData("Abilities",        code = 264_3054, classification = ItemClassification.useful,                       ),
    "Hurricane Blast":                   KH1ItemData("Abilities",        code = 264_3055, classification = ItemClassification.useful,                       ),
    "Ripple Drive":                      KH1ItemData("Abilities",        code = 264_3056, classification = ItemClassification.useful,                       ),
    "Stun Impact":                       KH1ItemData("Abilities",        code = 264_3057, classification = ItemClassification.useful,                       ),
    "Gravity Break":                     KH1ItemData("Abilities",        code = 264_3058, classification = ItemClassification.useful,                       ),
    "Zantetsuken":                       KH1ItemData("Abilities",        code = 264_3059, classification = ItemClassification.useful,                       ),
    "Tech Boost":                        KH1ItemData("Abilities",        code = 264_3060, classification = ItemClassification.useful,      max_quantity = 4 ),
    "Encounter Plus":                    KH1ItemData("Abilities",        code = 264_3061, classification = ItemClassification.useful,                       ),
    "Leaf Bracer":                       KH1ItemData("Abilities",        code = 264_3062, classification = ItemClassification.progression,                  ),
    #"Evolution":                        KH1ItemData("Abilities",        code = 264_3063, classification = ItemClassification.useful,                       ),
    "EXP Zero":                          KH1ItemData("Abilities",        code = 264_3064, classification = ItemClassification.useful,                       ),
    "Combo Master":                      KH1ItemData("Abilities",        code = 264_3065, classification = ItemClassification.progression,                  ),
    "Max HP Increase":                   KH1ItemData("Level Up",         code = 264_4001, classification = ItemClassification.useful,      max_quantity = 15),
    "Max MP Increase":                   KH1ItemData("Level Up",         code = 264_4002, classification = ItemClassification.useful,      max_quantity = 15),
    "Max AP Increase":                   KH1ItemData("Level Up",         code = 264_4003, classification = ItemClassification.useful,      max_quantity = 15),
    "Strength Increase":                 KH1ItemData("Level Up",         code = 264_4004, classification = ItemClassification.useful,      max_quantity = 15),
    "Defense Increase":                  KH1ItemData("Level Up",         code = 264_4005, classification = ItemClassification.useful,      max_quantity = 15),
    "Accessory Slot Increase":           KH1ItemData("Limited Level Up", code = 264_4006, classification = ItemClassification.useful,      max_quantity = 15),
    "Item Slot Increase":                KH1ItemData("Limited Level Up", code = 264_4007, classification = ItemClassification.useful,      max_quantity = 15),
    "Dumbo":                             KH1ItemData("Summons",          code = 264_5000, classification = ItemClassification.progression,                  ),
    "Bambi":                             KH1ItemData("Summons",          code = 264_5001, classification = ItemClassification.progression,                  ),
    "Genie":                             KH1ItemData("Summons",          code = 264_5002, classification = ItemClassification.progression,                  ),
    "Tinker Bell":                       KH1ItemData("Summons",          code = 264_5003, classification = ItemClassification.progression,                  ),
    "Mushu":                             KH1ItemData("Summons",          code = 264_5004, classification = ItemClassification.progression,                  ),
    "Simba":                             KH1ItemData("Summons",          code = 264_5005, classification = ItemClassification.progression,                  ),
    "Progressive Fire":                  KH1ItemData("Magic",            code = 264_6001, classification = ItemClassification.progression, max_quantity = 3 ),
    "Progressive Blizzard":              KH1ItemData("Magic",            code = 264_6002, classification = ItemClassification.progression, max_quantity = 3 ),
    "Progressive Thunder":               KH1ItemData("Magic",            code = 264_6003, classification = ItemClassification.progression, max_quantity = 3 ),
    "Progressive Cure":                  KH1ItemData("Magic",            code = 264_6004, classification = ItemClassification.progression, max_quantity = 3 ),
    "Progressive Gravity":               KH1ItemData("Magic",            code = 264_6005, classification = ItemClassification.progression, max_quantity = 3 ),
    "Progressive Stop":                  KH1ItemData("Magic",            code = 264_6006, classification = ItemClassification.progression, max_quantity = 3 ),
    "Progressive Aero":                  KH1ItemData("Magic",            code = 264_6007, classification = ItemClassification.progression, max_quantity = 3 ),
    #"Traverse Town":                    KH1ItemData("Worlds",           code = 264_7001, classification = ItemClassification.progression,                  ),
    "Wonderland":                        KH1ItemData("Worlds",           code = 264_7002, classification = ItemClassification.progression,                  ),
    "Olympus Coliseum":                  KH1ItemData("Worlds",           code = 264_7003, classification = ItemClassification.progression,                  ),
    "Deep Jungle":                       KH1ItemData("Worlds",           code = 264_7004, classification = ItemClassification.progression,                  ),
    "Agrabah":                           KH1ItemData("Worlds",           code = 264_7005, classification = ItemClassification.progression,                  ),
    "Halloween Town":                    KH1ItemData("Worlds",           code = 264_7006, classification = ItemClassification.progression,                  ),
    "Atlantica":                         KH1ItemData("Worlds",           code = 264_7007, classification = ItemClassification.progression,                  ),
    "Neverland":                         KH1ItemData("Worlds",           code = 264_7008, classification = ItemClassification.progression,                  ),
    "Hollow Bastion":                    KH1ItemData("Worlds",           code = 264_7009, classification = ItemClassification.progression,                  ),
    "End of the World":                  KH1ItemData("Worlds",           code = 264_7010, classification = ItemClassification.progression,                  ),
    "Monstro":                           KH1ItemData("Worlds",           code = 264_7011, classification = ItemClassification.progression,                  ),
    "Blue Trinity":                      KH1ItemData("Trinities",        code = 264_8001, classification = ItemClassification.progression,                  ),
    "Red Trinity":                       KH1ItemData("Trinities",        code = 264_8002, classification = ItemClassification.progression,                  ),
    "Green Trinity":                     KH1ItemData("Trinities",        code = 264_8003, classification = ItemClassification.progression,                  ),
    "Yellow Trinity":                    KH1ItemData("Trinities",        code = 264_8004, classification = ItemClassification.progression,                  ),
    "White Trinity":                     KH1ItemData("Trinities",        code = 264_8005, classification = ItemClassification.progression,                  ),
    "Phil Cup":                          KH1ItemData("Cups",             code = 264_9001, classification = ItemClassification.progression,                  ),
    "Pegasus Cup":                       KH1ItemData("Cups",             code = 264_9002, classification = ItemClassification.progression,                  ),
    "Hercules Cup":                      KH1ItemData("Cups",             code = 264_9003, classification = ItemClassification.progression,                  ),
    #"Hades Cup":                        KH1ItemData("Cups",             code = 264_9004, classification = ItemClassification.progression,                  ),
}

event_item_table: Dict[str, KH1ItemData] = {}

#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)
