Archipelago/worlds/kh2/Items.py

1022 lines
43 KiB
Python
Raw Normal View History

2023-03-20 16:19:55 +00:00
import typing
from BaseClasses import Item
from .Names import ItemName
class KH2Item(Item):
game: str = "Kingdom Hearts 2"
class ItemData(typing.NamedTuple):
code: typing.Optional[int]
quantity: int = 0
kh2id: int = 0
# Save+ mem addr
memaddr: int = 0
# some items have bitmasks. if bitmask>0 bitor to give item else
bitmask: int = 0
# if ability then
ability: bool = False
Reports_Table = {
ItemName.SecretAnsemsReport1: ItemData(0x130000, 1, 226, 0x36C4, 6),
ItemName.SecretAnsemsReport2: ItemData(0x130001, 1, 227, 0x36C4, 7),
ItemName.SecretAnsemsReport3: ItemData(0x130002, 1, 228, 0x36C5, 0),
ItemName.SecretAnsemsReport4: ItemData(0x130003, 1, 229, 0x36C5, 1),
ItemName.SecretAnsemsReport5: ItemData(0x130004, 1, 230, 0x36C5, 2),
ItemName.SecretAnsemsReport6: ItemData(0x130005, 1, 231, 0x36C5, 3),
ItemName.SecretAnsemsReport7: ItemData(0x130006, 1, 232, 0x36C5, 4),
ItemName.SecretAnsemsReport8: ItemData(0x130007, 1, 233, 0x36C5, 5),
ItemName.SecretAnsemsReport9: ItemData(0x130008, 1, 234, 0x36C5, 6),
ItemName.SecretAnsemsReport10: ItemData(0x130009, 1, 235, 0x36C5, 7),
ItemName.SecretAnsemsReport11: ItemData(0x13000A, 1, 236, 0x36C6, 0),
ItemName.SecretAnsemsReport12: ItemData(0x13000B, 1, 237, 0x36C6, 1),
ItemName.SecretAnsemsReport13: ItemData(0x13000C, 1, 238, 0x36C6, 2),
}
Progression_Table = {
ItemName.ProofofConnection: ItemData(0x13000D, 1, 593, 0x36B2),
ItemName.ProofofNonexistence: ItemData(0x13000E, 1, 594, 0x36B3),
ItemName.ProofofPeace: ItemData(0x13000F, 1, 595, 0x36B4),
ItemName.PromiseCharm: ItemData(0x130010, 1, 524, 0x3694),
ItemName.NamineSketches: ItemData(0x130011, 1, 368, 0x3642),
ItemName.CastleKey: ItemData(0x130012, 2, 460, 0x365D), # dummy 13
ItemName.BattlefieldsofWar: ItemData(0x130013, 2, 54, 0x35AE),
ItemName.SwordoftheAncestor: ItemData(0x130014, 2, 55, 0x35AF),
ItemName.BeastsClaw: ItemData(0x130015, 2, 59, 0x35B3),
ItemName.BoneFist: ItemData(0x130016, 2, 60, 0x35B4),
ItemName.ProudFang: ItemData(0x130017, 2, 61, 0x35B5),
ItemName.SkillandCrossbones: ItemData(0x130018, 2, 62, 0x35B6),
ItemName.Scimitar: ItemData(0x130019, 2, 72, 0x35C0),
ItemName.MembershipCard: ItemData(0x13001A, 2, 369, 0x3643),
ItemName.IceCream: ItemData(0x13001B, 3, 375, 0x3649),
# Changed to 3 instead of one poster, picture and ice cream respectively
ItemName.WaytotheDawn: ItemData(0x13001C, 1, 73, 0x35C1),
# currently first visit locking doesn't work for twtnw.When goa is updated should be 2
ItemName.IdentityDisk: ItemData(0x13001D, 2, 74, 0x35C2),
ItemName.TornPages: ItemData(0x13001E, 5, 32, 0x3598),
}
Forms_Table = {
ItemName.ValorForm: ItemData(0x13001F, 1, 26, 0x36C0, 1),
ItemName.WisdomForm: ItemData(0x130020, 1, 27, 0x36C0, 2),
ItemName.LimitForm: ItemData(0x130021, 1, 563, 0x36CA, 3),
ItemName.MasterForm: ItemData(0x130022, 1, 31, 0x36C0, 6),
ItemName.FinalForm: ItemData(0x130023, 1, 29, 0x36C0, 4),
}
Magic_Table = {
ItemName.FireElement: ItemData(0x130024, 3, 21, 0x3594),
ItemName.BlizzardElement: ItemData(0x130025, 3, 22, 0x3595),
ItemName.ThunderElement: ItemData(0x130026, 3, 23, 0x3596),
ItemName.CureElement: ItemData(0x130027, 3, 24, 0x3597),
ItemName.MagnetElement: ItemData(0x130028, 3, 87, 0x35CF),
ItemName.ReflectElement: ItemData(0x130029, 3, 88, 0x35D0),
ItemName.Genie: ItemData(0x13002A, 1, 159, 0x36C4, 4),
ItemName.PeterPan: ItemData(0x13002B, 1, 160, 0x36C4, 5),
ItemName.Stitch: ItemData(0x13002C, 1, 25, 0x36C0, 0),
ItemName.ChickenLittle: ItemData(0x13002D, 1, 383, 0x36C0, 3),
}
Movement_Table = {
ItemName.HighJump: ItemData(0x13002E, 4, 94, 0x05E, 0, True),
ItemName.QuickRun: ItemData(0x13002F, 4, 98, 0x062, 0, True),
ItemName.DodgeRoll: ItemData(0x130030, 4, 564, 0x234, 0, True),
ItemName.AerialDodge: ItemData(0x130031, 4, 102, 0x066, 0, True),
ItemName.Glide: ItemData(0x130032, 4, 106, 0x06A, 0, True),
}
Keyblade_Table = {
ItemName.Oathkeeper: ItemData(0x130033, 1, 42, 0x35A2),
ItemName.Oblivion: ItemData(0x130034, 1, 43, 0x35A3),
ItemName.StarSeeker: ItemData(0x130035, 1, 480, 0x367B),
ItemName.HiddenDragon: ItemData(0x130036, 1, 481, 0x367C),
ItemName.HerosCrest: ItemData(0x130037, 1, 484, 0x367F),
ItemName.Monochrome: ItemData(0x130038, 1, 485, 0x3680),
ItemName.FollowtheWind: ItemData(0x130039, 1, 486, 0x3681),
ItemName.CircleofLife: ItemData(0x13003A, 1, 487, 0x3682),
ItemName.PhotonDebugger: ItemData(0x13003B, 1, 488, 0x3683),
ItemName.GullWing: ItemData(0x13003C, 1, 489, 0x3684),
ItemName.RumblingRose: ItemData(0x13003D, 1, 490, 0x3685),
ItemName.GuardianSoul: ItemData(0x13003E, 1, 491, 0x3686),
ItemName.WishingLamp: ItemData(0x13003F, 1, 492, 0x3687),
ItemName.DecisivePumpkin: ItemData(0x130040, 1, 493, 0x3688),
ItemName.SleepingLion: ItemData(0x130041, 1, 494, 0x3689),
ItemName.SweetMemories: ItemData(0x130042, 1, 495, 0x368A),
ItemName.MysteriousAbyss: ItemData(0x130043, 1, 496, 0x368B),
ItemName.TwoBecomeOne: ItemData(0x130044, 1, 543, 0x3698),
ItemName.FatalCrest: ItemData(0x130045, 1, 497, 0x368C),
ItemName.BondofFlame: ItemData(0x130046, 1, 498, 0x368D),
ItemName.Fenrir: ItemData(0x130047, 1, 499, 0x368E),
ItemName.UltimaWeapon: ItemData(0x130048, 1, 500, 0x368F),
ItemName.WinnersProof: ItemData(0x130049, 1, 544, 0x3699),
ItemName.Pureblood: ItemData(0x13004A, 1, 71, 0x35BF),
}
Staffs_Table = {
ItemName.Centurion2: ItemData(0x13004B, 1, 546, 0x369B),
ItemName.MeteorStaff: ItemData(0x13004C, 1, 150, 0x35F1),
ItemName.NobodyLance: ItemData(0x13004D, 1, 155, 0x35F6),
ItemName.PreciousMushroom: ItemData(0x13004E, 1, 549, 0x369E),
ItemName.PreciousMushroom2: ItemData(0x13004F, 1, 550, 0x369F),
ItemName.PremiumMushroom: ItemData(0x130050, 1, 551, 0x36A0),
ItemName.RisingDragon: ItemData(0x130051, 1, 154, 0x35F5),
ItemName.SaveTheQueen2: ItemData(0x130052, 1, 503, 0x3692),
ItemName.ShamansRelic: ItemData(0x130053, 1, 156, 0x35F7),
}
Shields_Table = {
ItemName.AkashicRecord: ItemData(0x130054, 1, 146, 0x35ED),
ItemName.FrozenPride2: ItemData(0x130055, 1, 553, 0x36A2),
ItemName.GenjiShield: ItemData(0x130056, 1, 145, 0x35EC),
ItemName.MajesticMushroom: ItemData(0x130057, 1, 556, 0x36A5),
ItemName.MajesticMushroom2: ItemData(0x130058, 1, 557, 0x36A6),
ItemName.NobodyGuard: ItemData(0x130059, 1, 147, 0x35EE),
ItemName.OgreShield: ItemData(0x13005A, 1, 141, 0x35E8),
ItemName.SaveTheKing2: ItemData(0x13005B, 1, 504, 0x3693),
ItemName.UltimateMushroom: ItemData(0x13005C, 1, 558, 0x36A7),
}
Accessory_Table = {
ItemName.AbilityRing: ItemData(0x13005D, 1, 8, 0x3587),
ItemName.EngineersRing: ItemData(0x13005E, 1, 9, 0x3588),
ItemName.TechniciansRing: ItemData(0x13005F, 1, 10, 0x3589),
ItemName.SkillRing: ItemData(0x130060, 1, 38, 0x359F),
ItemName.SkillfulRing: ItemData(0x130061, 1, 39, 0x35A0),
ItemName.ExpertsRing: ItemData(0x130062, 1, 11, 0x358A),
ItemName.MastersRing: ItemData(0x130063, 1, 34, 0x359B),
ItemName.CosmicRing: ItemData(0x130064, 1, 52, 0x35AD),
ItemName.ExecutivesRing: ItemData(0x130065, 1, 599, 0x36B5),
ItemName.SardonyxRing: ItemData(0x130066, 1, 12, 0x358B),
ItemName.TourmalineRing: ItemData(0x130067, 1, 13, 0x358C),
ItemName.AquamarineRing: ItemData(0x130068, 1, 14, 0x358D),
ItemName.GarnetRing: ItemData(0x130069, 1, 15, 0x358E),
ItemName.DiamondRing: ItemData(0x13006A, 1, 16, 0x358F),
ItemName.SilverRing: ItemData(0x13006B, 1, 17, 0x3590),
ItemName.GoldRing: ItemData(0x13006C, 1, 18, 0x3591),
ItemName.PlatinumRing: ItemData(0x13006D, 1, 19, 0x3592),
ItemName.MythrilRing: ItemData(0x13006E, 1, 20, 0x3593),
ItemName.OrichalcumRing: ItemData(0x13006F, 1, 28, 0x359A),
ItemName.SoldierEarring: ItemData(0x130070, 1, 40, 0x35A6),
ItemName.FencerEarring: ItemData(0x130071, 1, 46, 0x35A7),
ItemName.MageEarring: ItemData(0x130072, 1, 47, 0x35A8),
ItemName.SlayerEarring: ItemData(0x130073, 1, 48, 0x35AC),
ItemName.Medal: ItemData(0x130074, 1, 53, 0x35B0),
2023-03-20 16:19:55 +00:00
ItemName.MoonAmulet: ItemData(0x130075, 1, 35, 0x359C),
ItemName.StarCharm: ItemData(0x130076, 1, 36, 0x359E),
ItemName.CosmicArts: ItemData(0x130077, 1, 56, 0x35B1),
ItemName.ShadowArchive: ItemData(0x130078, 1, 57, 0x35B2),
ItemName.ShadowArchive2: ItemData(0x130079, 1, 58, 0x35B7),
ItemName.FullBloom: ItemData(0x13007A, 1, 64, 0x35B9),
ItemName.FullBloom2: ItemData(0x13007B, 1, 66, 0x35BB),
ItemName.DrawRing: ItemData(0x13007C, 1, 65, 0x35BA),
ItemName.LuckyRing: ItemData(0x13007D, 1, 63, 0x35B8),
}
Armor_Table = {
ItemName.ElvenBandana: ItemData(0x13007E, 1, 67, 0x35BC),
ItemName.DivineBandana: ItemData(0x13007F, 1, 68, 0x35BD),
ItemName.ProtectBelt: ItemData(0x130080, 1, 78, 0x35C7),
ItemName.GaiaBelt: ItemData(0x130081, 1, 79, 0x35CA),
ItemName.PowerBand: ItemData(0x130082, 1, 69, 0x35BE),
ItemName.BusterBand: ItemData(0x130083, 1, 70, 0x35C6),
ItemName.CosmicBelt: ItemData(0x130084, 1, 111, 0x35D1),
ItemName.FireBangle: ItemData(0x130085, 1, 173, 0x35D7),
ItemName.FiraBangle: ItemData(0x130086, 1, 174, 0x35D8),
ItemName.FiragaBangle: ItemData(0x130087, 1, 197, 0x35D9),
ItemName.FiragunBangle: ItemData(0x130088, 1, 284, 0x35DA),
ItemName.BlizzardArmlet: ItemData(0x130089, 1, 286, 0x35DC),
ItemName.BlizzaraArmlet: ItemData(0x13008A, 1, 287, 0x35DD),
ItemName.BlizzagaArmlet: ItemData(0x13008B, 1, 288, 0x35DE),
ItemName.BlizzagunArmlet: ItemData(0x13008C, 1, 289, 0x35DF),
ItemName.ThunderTrinket: ItemData(0x13008D, 1, 291, 0x35E2),
ItemName.ThundaraTrinket: ItemData(0x13008E, 1, 292, 0x35E3),
ItemName.ThundagaTrinket: ItemData(0x13008F, 1, 293, 0x35E4),
ItemName.ThundagunTrinket: ItemData(0x130090, 1, 294, 0x35E5),
ItemName.ShockCharm: ItemData(0x130091, 1, 132, 0x35D2),
ItemName.ShockCharm2: ItemData(0x130092, 1, 133, 0x35D3),
ItemName.ShadowAnklet: ItemData(0x130093, 1, 296, 0x35F9),
ItemName.DarkAnklet: ItemData(0x130094, 1, 297, 0x35FB),
ItemName.MidnightAnklet: ItemData(0x130095, 1, 298, 0x35FC),
ItemName.ChaosAnklet: ItemData(0x130096, 1, 299, 0x35FD),
ItemName.ChampionBelt: ItemData(0x130097, 1, 305, 0x3603),
ItemName.AbasChain: ItemData(0x130098, 1, 301, 0x35FF),
ItemName.AegisChain: ItemData(0x130099, 1, 302, 0x3600),
ItemName.Acrisius: ItemData(0x13009A, 1, 303, 0x3601),
ItemName.Acrisius2: ItemData(0x13009B, 1, 307, 0x3605),
ItemName.CosmicChain: ItemData(0x13009C, 1, 308, 0x3606),
ItemName.PetiteRibbon: ItemData(0x13009D, 1, 306, 0x3604),
ItemName.Ribbon: ItemData(0x13009E, 1, 304, 0x3602),
ItemName.GrandRibbon: ItemData(0x13009F, 1, 157, 0x35D4),
}
Usefull_Table = {
ItemName.MickyMunnyPouch: ItemData(0x1300A0, 3, 535, 0x3695), # 5000 munny per
ItemName.OletteMunnyPouch: ItemData(0x1300A1, 6, 362, 0x363C), # 2500 munny per
ItemName.HadesCupTrophy: ItemData(0x1300A2, 1, 537, 0x3696),
ItemName.UnknownDisk: ItemData(0x1300A3, 1, 462, 0x365F),
ItemName.OlympusStone: ItemData(0x1300A4, 1, 370, 0x3644),
ItemName.MaxHPUp: ItemData(0x1300A5, 20, 470, 0x3671),
ItemName.MaxMPUp: ItemData(0x1300A6, 4, 471, 0x3672),
ItemName.DriveGaugeUp: ItemData(0x1300A7, 6, 472, 0x3673),
ItemName.ArmorSlotUp: ItemData(0x1300A8, 3, 473, 0x3674),
ItemName.AccessorySlotUp: ItemData(0x1300A9, 3, 474, 0x3675),
ItemName.ItemSlotUp: ItemData(0x1300AA, 5, 463, 0x3660),
}
SupportAbility_Table = {
ItemName.Scan: ItemData(0x1300AB, 2, 138, 0x08A, 0, True),
ItemName.AerialRecovery: ItemData(0x1300AC, 1, 158, 0x09E, 0, True),
ItemName.ComboMaster: ItemData(0x1300AD, 1, 539, 0x21B, 0, True),
ItemName.ComboPlus: ItemData(0x1300AE, 3, 162, 0x0A2, 0, True),
ItemName.AirComboPlus: ItemData(0x1300AF, 3, 163, 0x0A3, 0, True),
ItemName.ComboBoost: ItemData(0x1300B0, 2, 390, 0x186, 0, True),
ItemName.AirComboBoost: ItemData(0x1300B1, 2, 391, 0x187, 0, True),
ItemName.ReactionBoost: ItemData(0x1300B2, 3, 392, 0x188, 0, True),
ItemName.FinishingPlus: ItemData(0x1300B3, 3, 393, 0x189, 0, True),
ItemName.NegativeCombo: ItemData(0x1300B4, 2, 394, 0x18A, 0, True),
ItemName.BerserkCharge: ItemData(0x1300B5, 2, 395, 0x18B, 0, True),
ItemName.DamageDrive: ItemData(0x1300B6, 2, 396, 0x18C, 0, True),
ItemName.DriveBoost: ItemData(0x1300B7, 2, 397, 0x18D, 0, True),
ItemName.FormBoost: ItemData(0x1300B8, 3, 398, 0x18E, 0, True),
ItemName.SummonBoost: ItemData(0x1300B9, 1, 399, 0x18F, 0, True),
ItemName.ExperienceBoost: ItemData(0x1300BA, 2, 401, 0x191, 0, True),
ItemName.Draw: ItemData(0x1300BB, 4, 405, 0x195, 0, True),
ItemName.Jackpot: ItemData(0x1300BC, 2, 406, 0x196, 0, True),
ItemName.LuckyLucky: ItemData(0x1300BD, 3, 407, 0x197, 0, True),
ItemName.DriveConverter: ItemData(0x1300BE, 2, 540, 0x21C, 0, True),
ItemName.FireBoost: ItemData(0x1300BF, 2, 408, 0x198, 0, True),
ItemName.BlizzardBoost: ItemData(0x1300C0, 2, 409, 0x199, 0, True),
ItemName.ThunderBoost: ItemData(0x1300C1, 2, 410, 0x19A, 0, True),
ItemName.ItemBoost: ItemData(0x1300C2, 2, 411, 0x19B, 0, True),
ItemName.MPRage: ItemData(0x1300C3, 2, 412, 0x19C, 0, True),
ItemName.MPHaste: ItemData(0x1300C4, 2, 413, 0x19D, 0, True),
ItemName.MPHastera: ItemData(0x1300C5, 2, 421, 0x1A5, 0, True),
ItemName.MPHastega: ItemData(0x1300C6, 1, 422, 0x1A6, 0, True),
ItemName.Defender: ItemData(0x1300C7, 2, 414, 0x19E, 0, True),
ItemName.DamageControl: ItemData(0x1300C8, 2, 542, 0x21E, 0, True),
ItemName.NoExperience: ItemData(0x1300C9, 1, 404, 0x194, 0, True),
ItemName.LightDarkness: ItemData(0x1300CA, 1, 541, 0x21D, 0, True),
ItemName.MagicLock: ItemData(0x1300CB, 1, 403, 0x193, 0, True),
ItemName.LeafBracer: ItemData(0x1300CC, 1, 402, 0x192, 0, True),
ItemName.CombinationBoost: ItemData(0x1300CD, 1, 400, 0x190, 0, True),
ItemName.OnceMore: ItemData(0x1300CE, 1, 416, 0x1A0, 0, True),
ItemName.SecondChance: ItemData(0x1300CF, 1, 415, 0x19F, 0, True),
}
ActionAbility_Table = {
ItemName.Guard: ItemData(0x1300D0, 1, 82, 0x052, 0, True),
ItemName.UpperSlash: ItemData(0x1300D1, 1, 137, 0x089, 0, True),
ItemName.HorizontalSlash: ItemData(0x1300D2, 1, 271, 0x10F, 0, True),
ItemName.FinishingLeap: ItemData(0x1300D3, 1, 267, 0x10B, 0, True),
ItemName.RetaliatingSlash: ItemData(0x1300D4, 1, 273, 0x111, 0, True),
ItemName.Slapshot: ItemData(0x1300D5, 1, 262, 0x106, 0, True),
ItemName.DodgeSlash: ItemData(0x1300D6, 1, 263, 0x107, 0, True),
ItemName.FlashStep: ItemData(0x1300D7, 1, 559, 0x22F, 0, True),
ItemName.SlideDash: ItemData(0x1300D8, 1, 264, 0x108, 0, True),
ItemName.VicinityBreak: ItemData(0x1300D9, 1, 562, 0x232, 0, True),
ItemName.GuardBreak: ItemData(0x1300DA, 1, 265, 0x109, 0, True),
ItemName.Explosion: ItemData(0x1300DB, 1, 266, 0x10A, 0, True),
ItemName.AerialSweep: ItemData(0x1300DC, 1, 269, 0x10D, 0, True),
ItemName.AerialDive: ItemData(0x1300DD, 1, 560, 0x230, 0, True),
ItemName.AerialSpiral: ItemData(0x1300DE, 1, 270, 0x10E, 0, True),
ItemName.AerialFinish: ItemData(0x1300DF, 1, 272, 0x110, 0, True),
ItemName.MagnetBurst: ItemData(0x1300E0, 1, 561, 0x231, 0, True),
ItemName.Counterguard: ItemData(0x1300E1, 1, 268, 0x10C, 0, True),
ItemName.AutoValor: ItemData(0x1300E2, 1, 385, 0x181, 0, True),
ItemName.AutoWisdom: ItemData(0x1300E3, 1, 386, 0x182, 0, True),
ItemName.AutoLimit: ItemData(0x1300E4, 1, 568, 0x238, 0, True),
ItemName.AutoMaster: ItemData(0x1300E5, 1, 387, 0x183, 0, True),
ItemName.AutoFinal: ItemData(0x1300E6, 1, 388, 0x184, 0, True),
ItemName.AutoSummon: ItemData(0x1300E7, 1, 389, 0x185, 0, True),
ItemName.TrinityLimit: ItemData(0x1300E8, 1, 198, 0x0C6, 0, True),
}
Items_Table = {
ItemName.PowerBoost: ItemData(0x1300E9, 1, 276, 0x3666),
ItemName.MagicBoost: ItemData(0x1300EA, 1, 277, 0x3667),
ItemName.DefenseBoost: ItemData(0x1300EB, 1, 278, 0x3668),
ItemName.APBoost: ItemData(0x1300EC, 1, 279, 0x3669),
}
# These items cannot be in other games so these are done locally in kh2
DonaldAbility_Table = {
ItemName.DonaldFire: ItemData(0x1300ED, 1, 165, 0xA5, 0, True),
ItemName.DonaldBlizzard: ItemData(0x1300EE, 1, 166, 0xA6, 0, True),
ItemName.DonaldThunder: ItemData(0x1300EF, 1, 167, 0xA7, 0, True),
ItemName.DonaldCure: ItemData(0x1300F0, 1, 168, 0xA8, 0, True),
ItemName.Fantasia: ItemData(0x1300F1, 1, 199, 0xC7, 0, True),
ItemName.FlareForce: ItemData(0x1300F2, 1, 200, 0xC8, 0, True),
ItemName.DonaldMPRage: ItemData(0x1300F3, 3, 412, 0x19C, 0, True),
ItemName.DonaldJackpot: ItemData(0x1300F4, 1, 406, 0x196, 0, True),
ItemName.DonaldLuckyLucky: ItemData(0x1300F5, 3, 407, 0x197, 0, True),
ItemName.DonaldFireBoost: ItemData(0x1300F6, 2, 408, 0x198, 0, True),
ItemName.DonaldBlizzardBoost: ItemData(0x1300F7, 2, 409, 0x199, 0, True),
ItemName.DonaldThunderBoost: ItemData(0x1300F8, 2, 410, 0x19A, 0, True),
ItemName.DonaldMPHaste: ItemData(0x1300F9, 1, 413, 0x19D, 0, True),
ItemName.DonaldMPHastera: ItemData(0x1300FA, 2, 421, 0x1A5, 0, True),
ItemName.DonaldMPHastega: ItemData(0x1300FB, 2, 422, 0x1A6, 0, True),
ItemName.DonaldAutoLimit: ItemData(0x1300FC, 1, 417, 0x1A1, 0, True),
ItemName.DonaldHyperHealing: ItemData(0x1300FD, 2, 419, 0x1A3, 0, True),
ItemName.DonaldAutoHealing: ItemData(0x1300FE, 1, 420, 0x1A4, 0, True),
ItemName.DonaldItemBoost: ItemData(0x1300FF, 1, 411, 0x19B, 0, True),
ItemName.DonaldDamageControl: ItemData(0x130100, 2, 542, 0x21E, 0, True),
ItemName.DonaldDraw: ItemData(0x130101, 1, 405, 0x195, 0, True),
}
GoofyAbility_Table = {
ItemName.GoofyTornado: ItemData(0x130102, 1, 423, 0x1A7, 0, True),
ItemName.GoofyTurbo: ItemData(0x130103, 1, 425, 0x1A9, 0, True),
ItemName.GoofyBash: ItemData(0x130104, 1, 429, 0x1AD, 0, True),
ItemName.TornadoFusion: ItemData(0x130105, 1, 201, 0xC9, 0, True),
ItemName.Teamwork: ItemData(0x130106, 1, 202, 0xCA, 0, True),
ItemName.GoofyDraw: ItemData(0x130107, 1, 405, 0x195, 0, True),
ItemName.GoofyJackpot: ItemData(0x130108, 1, 406, 0x196, 0, True),
ItemName.GoofyLuckyLucky: ItemData(0x130109, 1, 407, 0x197, 0, True),
ItemName.GoofyItemBoost: ItemData(0x13010A, 2, 411, 0x19B, 0, True),
ItemName.GoofyMPRage: ItemData(0x13010B, 2, 412, 0x19C, 0, True),
ItemName.GoofyDefender: ItemData(0x13010C, 2, 414, 0x19E, 0, True),
ItemName.GoofyDamageControl: ItemData(0x13010D, 3, 542, 0x21E, 0, True),
ItemName.GoofyAutoLimit: ItemData(0x13010E, 1, 417, 0x1A1, 0, True),
ItemName.GoofySecondChance: ItemData(0x13010F, 1, 415, 0x19F, 0, True),
ItemName.GoofyOnceMore: ItemData(0x130110, 1, 416, 0x1A0, 0, True),
ItemName.GoofyAutoChange: ItemData(0x130111, 1, 418, 0x1A2, 0, True),
ItemName.GoofyHyperHealing: ItemData(0x130112, 2, 419, 0x1A3, 0, True),
ItemName.GoofyAutoHealing: ItemData(0x130113, 1, 420, 0x1A4, 0, True),
ItemName.GoofyMPHaste: ItemData(0x130114, 1, 413, 0x19D, 0, True),
ItemName.GoofyMPHastera: ItemData(0x130115, 1, 421, 0x1A5, 0, True),
ItemName.GoofyMPHastega: ItemData(0x130116, 1, 422, 0x1A6, 0, True),
ItemName.GoofyProtect: ItemData(0x130117, 2, 596, 0x254, 0, True),
ItemName.GoofyProtera: ItemData(0x130118, 2, 597, 0x255, 0, True),
ItemName.GoofyProtega: ItemData(0x130119, 2, 598, 0x256, 0, True),
}
Misc_Table = {
ItemName.LuckyEmblem: ItemData(0x13011A, 0, 367, 0x3641), # letter item
ItemName.Victory: ItemData(0x13011B, 0, 263, 0x111),
ItemName.Bounty: ItemData(0x13011C, 0, 461, 0, 0), # Dummy 14
# ItemName.UniversalKey:ItemData(0x130129,0,365,0x363F,0)#Tournament Poster
}
# Items that are prone to duping.
# anchors for checking form keyblade
# Save+32F4 Valor Form Save+339C Master Form Save+33D4 Final Form
# Have to use the kh2id for checking stuff that sora has equipped
# Equipped abilities have an offset of 0x8000 so check for if whatever || whatever+0x8000
CheckDupingItems = {
"Items": {
ItemName.ProofofConnection,
ItemName.ProofofNonexistence,
ItemName.ProofofPeace,
ItemName.PromiseCharm,
ItemName.NamineSketches,
ItemName.CastleKey,
ItemName.BattlefieldsofWar,
ItemName.SwordoftheAncestor,
ItemName.BeastsClaw,
ItemName.BoneFist,
ItemName.ProudFang,
ItemName.SkillandCrossbones,
ItemName.Scimitar,
ItemName.MembershipCard,
ItemName.IceCream,
ItemName.WaytotheDawn,
ItemName.IdentityDisk,
ItemName.TornPages,
ItemName.LuckyEmblem,
ItemName.MickyMunnyPouch,
ItemName.OletteMunnyPouch,
ItemName.HadesCupTrophy,
ItemName.UnknownDisk,
ItemName.OlympusStone,
},
"Magic": {
ItemName.FireElement,
ItemName.BlizzardElement,
ItemName.ThunderElement,
ItemName.CureElement,
ItemName.MagnetElement,
ItemName.ReflectElement,
},
"Bitmask": {
ItemName.ValorForm,
ItemName.WisdomForm,
ItemName.LimitForm,
ItemName.MasterForm,
ItemName.FinalForm,
ItemName.Genie,
ItemName.PeterPan,
ItemName.Stitch,
ItemName.ChickenLittle,
ItemName.SecretAnsemsReport1,
ItemName.SecretAnsemsReport2,
ItemName.SecretAnsemsReport3,
ItemName.SecretAnsemsReport4,
ItemName.SecretAnsemsReport5,
ItemName.SecretAnsemsReport6,
ItemName.SecretAnsemsReport7,
ItemName.SecretAnsemsReport8,
ItemName.SecretAnsemsReport9,
ItemName.SecretAnsemsReport10,
ItemName.SecretAnsemsReport11,
ItemName.SecretAnsemsReport12,
ItemName.SecretAnsemsReport13,
},
"Weapons": {
"Keyblades": {
ItemName.Oathkeeper,
ItemName.Oblivion,
ItemName.StarSeeker,
ItemName.HiddenDragon,
ItemName.HerosCrest,
ItemName.Monochrome,
ItemName.FollowtheWind,
ItemName.CircleofLife,
ItemName.PhotonDebugger,
ItemName.GullWing,
ItemName.RumblingRose,
ItemName.GuardianSoul,
ItemName.WishingLamp,
ItemName.DecisivePumpkin,
ItemName.SleepingLion,
ItemName.SweetMemories,
ItemName.MysteriousAbyss,
ItemName.TwoBecomeOne,
ItemName.FatalCrest,
ItemName.BondofFlame,
ItemName.Fenrir,
ItemName.UltimaWeapon,
ItemName.WinnersProof,
ItemName.Pureblood,
},
"Staffs": {
ItemName.Centurion2,
ItemName.MeteorStaff,
ItemName.NobodyLance,
ItemName.PreciousMushroom,
ItemName.PreciousMushroom2,
ItemName.PremiumMushroom,
ItemName.RisingDragon,
ItemName.SaveTheQueen2,
ItemName.ShamansRelic,
},
"Shields": {
ItemName.AkashicRecord,
ItemName.FrozenPride2,
ItemName.GenjiShield,
ItemName.MajesticMushroom,
ItemName.MajesticMushroom2,
ItemName.NobodyGuard,
ItemName.OgreShield,
ItemName.SaveTheKing2,
ItemName.UltimateMushroom,
}
},
"Equipment": {
"Accessories": {
ItemName.AbilityRing,
ItemName.EngineersRing,
ItemName.TechniciansRing,
ItemName.SkillRing,
ItemName.SkillfulRing,
ItemName.ExpertsRing,
ItemName.MastersRing,
ItemName.CosmicRing,
ItemName.ExecutivesRing,
ItemName.SardonyxRing,
ItemName.TourmalineRing,
ItemName.AquamarineRing,
ItemName.GarnetRing,
ItemName.DiamondRing,
ItemName.SilverRing,
ItemName.GoldRing,
ItemName.PlatinumRing,
ItemName.MythrilRing,
ItemName.OrichalcumRing,
ItemName.SoldierEarring,
ItemName.FencerEarring,
ItemName.MageEarring,
ItemName.SlayerEarring,
ItemName.Medal,
ItemName.MoonAmulet,
ItemName.StarCharm,
ItemName.CosmicArts,
ItemName.ShadowArchive,
ItemName.ShadowArchive2,
ItemName.FullBloom,
ItemName.FullBloom2,
ItemName.DrawRing,
ItemName.LuckyRing,
},
"Armor": {
ItemName.ElvenBandana,
ItemName.DivineBandana,
ItemName.ProtectBelt,
ItemName.GaiaBelt,
ItemName.PowerBand,
ItemName.BusterBand,
ItemName.CosmicBelt,
ItemName.FireBangle,
ItemName.FiraBangle,
ItemName.FiragaBangle,
ItemName.FiragunBangle,
ItemName.BlizzardArmlet,
ItemName.BlizzaraArmlet,
ItemName.BlizzagaArmlet,
ItemName.BlizzagunArmlet,
ItemName.ThunderTrinket,
ItemName.ThundaraTrinket,
ItemName.ThundagaTrinket,
ItemName.ThundagunTrinket,
ItemName.ShockCharm,
ItemName.ShockCharm2,
ItemName.ShadowAnklet,
ItemName.DarkAnklet,
ItemName.MidnightAnklet,
ItemName.ChaosAnklet,
ItemName.ChampionBelt,
ItemName.AbasChain,
ItemName.AegisChain,
ItemName.Acrisius,
ItemName.Acrisius2,
ItemName.CosmicChain,
ItemName.PetiteRibbon,
ItemName.Ribbon,
ItemName.GrandRibbon,
}
},
"Stat Increases": {
ItemName.MaxHPUp,
ItemName.MaxMPUp,
ItemName.DriveGaugeUp,
ItemName.ArmorSlotUp,
ItemName.AccessorySlotUp,
ItemName.ItemSlotUp,
},
"Abilities": {
"Sora": {
ItemName.Scan,
ItemName.AerialRecovery,
ItemName.ComboMaster,
ItemName.ComboPlus,
ItemName.AirComboPlus,
ItemName.ComboBoost,
ItemName.AirComboBoost,
ItemName.ReactionBoost,
ItemName.FinishingPlus,
ItemName.NegativeCombo,
ItemName.BerserkCharge,
ItemName.DamageDrive,
ItemName.DriveBoost,
ItemName.FormBoost,
ItemName.SummonBoost,
ItemName.ExperienceBoost,
ItemName.Draw,
ItemName.Jackpot,
ItemName.LuckyLucky,
ItemName.DriveConverter,
ItemName.FireBoost,
ItemName.BlizzardBoost,
ItemName.ThunderBoost,
ItemName.ItemBoost,
ItemName.MPRage,
ItemName.MPHaste,
ItemName.MPHastera,
ItemName.MPHastega,
ItemName.Defender,
ItemName.DamageControl,
ItemName.NoExperience,
ItemName.LightDarkness,
ItemName.MagicLock,
ItemName.LeafBracer,
ItemName.CombinationBoost,
ItemName.OnceMore,
ItemName.SecondChance,
ItemName.Guard,
ItemName.UpperSlash,
ItemName.HorizontalSlash,
ItemName.FinishingLeap,
ItemName.RetaliatingSlash,
ItemName.Slapshot,
ItemName.DodgeSlash,
ItemName.FlashStep,
ItemName.SlideDash,
ItemName.VicinityBreak,
ItemName.GuardBreak,
ItemName.Explosion,
ItemName.AerialSweep,
ItemName.AerialDive,
ItemName.AerialSpiral,
ItemName.AerialFinish,
ItemName.MagnetBurst,
ItemName.Counterguard,
ItemName.AutoValor,
ItemName.AutoWisdom,
ItemName.AutoLimit,
ItemName.AutoMaster,
ItemName.AutoFinal,
ItemName.AutoSummon,
ItemName.TrinityLimit,
ItemName.HighJump,
ItemName.QuickRun,
ItemName.DodgeRoll,
ItemName.AerialDodge,
ItemName.Glide,
},
"Donald": {
ItemName.DonaldFire,
ItemName.DonaldBlizzard,
ItemName.DonaldThunder,
ItemName.DonaldCure,
ItemName.Fantasia,
ItemName.FlareForce,
ItemName.DonaldMPRage,
ItemName.DonaldJackpot,
ItemName.DonaldLuckyLucky,
ItemName.DonaldFireBoost,
ItemName.DonaldBlizzardBoost,
ItemName.DonaldThunderBoost,
ItemName.DonaldMPHaste,
ItemName.DonaldMPHastera,
ItemName.DonaldMPHastega,
ItemName.DonaldAutoLimit,
ItemName.DonaldHyperHealing,
ItemName.DonaldAutoHealing,
ItemName.DonaldItemBoost,
ItemName.DonaldDamageControl,
ItemName.DonaldDraw,
},
"Goofy": {
ItemName.GoofyTornado,
ItemName.GoofyTurbo,
ItemName.GoofyBash,
ItemName.TornadoFusion,
ItemName.Teamwork,
ItemName.GoofyDraw,
ItemName.GoofyJackpot,
ItemName.GoofyLuckyLucky,
ItemName.GoofyItemBoost,
ItemName.GoofyMPRage,
ItemName.GoofyDefender,
ItemName.GoofyDamageControl,
ItemName.GoofyAutoLimit,
ItemName.GoofySecondChance,
ItemName.GoofyOnceMore,
ItemName.GoofyAutoChange,
ItemName.GoofyHyperHealing,
ItemName.GoofyAutoHealing,
ItemName.GoofyMPHaste,
ItemName.GoofyMPHastera,
ItemName.GoofyMPHastega,
ItemName.GoofyProtect,
ItemName.GoofyProtera,
ItemName.GoofyProtega,
}
},
"Boosts": {
ItemName.PowerBoost,
ItemName.MagicBoost,
ItemName.DefenseBoost,
ItemName.APBoost,
}
}
Progression_Dicts = {
# Items that are classified as progression
"Progression": {
# Wincons
ItemName.Victory,
ItemName.LuckyEmblem,
ItemName.Bounty,
ItemName.ProofofConnection,
ItemName.ProofofNonexistence,
ItemName.ProofofPeace,
ItemName.PromiseCharm,
# visit locking
ItemName.NamineSketches,
# dummy 13
ItemName.CastleKey,
ItemName.BattlefieldsofWar,
ItemName.SwordoftheAncestor,
ItemName.BeastsClaw,
ItemName.BoneFist,
ItemName.ProudFang,
ItemName.SkillandCrossbones,
ItemName.Scimitar,
ItemName.MembershipCard,
ItemName.IceCream,
ItemName.WaytotheDawn,
ItemName.IdentityDisk,
ItemName.TornPages,
# forms
ItemName.ValorForm,
ItemName.WisdomForm,
ItemName.LimitForm,
ItemName.MasterForm,
ItemName.FinalForm,
# magic
ItemName.FireElement,
ItemName.BlizzardElement,
ItemName.ThunderElement,
ItemName.CureElement,
ItemName.MagnetElement,
ItemName.ReflectElement,
ItemName.Genie,
ItemName.PeterPan,
ItemName.Stitch,
ItemName.ChickenLittle,
# movement
ItemName.HighJump,
ItemName.QuickRun,
ItemName.DodgeRoll,
ItemName.AerialDodge,
ItemName.Glide,
# abilities
ItemName.Scan,
ItemName.AerialRecovery,
ItemName.ComboMaster,
ItemName.ComboPlus,
ItemName.AirComboPlus,
ItemName.ComboBoost,
ItemName.AirComboBoost,
ItemName.ReactionBoost,
ItemName.FinishingPlus,
ItemName.NegativeCombo,
ItemName.BerserkCharge,
ItemName.DamageDrive,
ItemName.DriveBoost,
ItemName.FormBoost,
ItemName.SummonBoost,
ItemName.ExperienceBoost,
ItemName.Draw,
ItemName.Jackpot,
ItemName.LuckyLucky,
ItemName.DriveConverter,
ItemName.FireBoost,
ItemName.BlizzardBoost,
ItemName.ThunderBoost,
ItemName.ItemBoost,
ItemName.MPRage,
ItemName.MPHaste,
ItemName.MPHastera,
ItemName.MPHastega,
ItemName.Defender,
ItemName.DamageControl,
ItemName.NoExperience,
ItemName.LightDarkness,
ItemName.MagicLock,
ItemName.LeafBracer,
ItemName.CombinationBoost,
ItemName.OnceMore,
ItemName.SecondChance,
ItemName.Guard,
ItemName.UpperSlash,
ItemName.HorizontalSlash,
ItemName.FinishingLeap,
ItemName.RetaliatingSlash,
ItemName.Slapshot,
ItemName.DodgeSlash,
ItemName.FlashStep,
ItemName.SlideDash,
ItemName.VicinityBreak,
ItemName.GuardBreak,
ItemName.Explosion,
ItemName.AerialSweep,
ItemName.AerialDive,
ItemName.AerialSpiral,
ItemName.AerialFinish,
ItemName.MagnetBurst,
ItemName.Counterguard,
ItemName.AutoValor,
ItemName.AutoWisdom,
ItemName.AutoLimit,
ItemName.AutoMaster,
ItemName.AutoFinal,
ItemName.AutoSummon,
ItemName.TrinityLimit,
# keyblades
ItemName.Oathkeeper,
ItemName.Oblivion,
ItemName.StarSeeker,
ItemName.HiddenDragon,
ItemName.HerosCrest,
ItemName.Monochrome,
ItemName.FollowtheWind,
ItemName.CircleofLife,
ItemName.PhotonDebugger,
ItemName.GullWing,
ItemName.RumblingRose,
ItemName.GuardianSoul,
ItemName.WishingLamp,
ItemName.DecisivePumpkin,
ItemName.SleepingLion,
ItemName.SweetMemories,
ItemName.MysteriousAbyss,
ItemName.TwoBecomeOne,
ItemName.FatalCrest,
ItemName.BondofFlame,
ItemName.Fenrir,
ItemName.UltimaWeapon,
ItemName.WinnersProof,
ItemName.Pureblood,
# Staffs
ItemName.Centurion2,
ItemName.MeteorStaff,
ItemName.NobodyLance,
ItemName.PreciousMushroom,
ItemName.PreciousMushroom2,
ItemName.PremiumMushroom,
ItemName.RisingDragon,
ItemName.SaveTheQueen2,
ItemName.ShamansRelic,
# Shields
ItemName.AkashicRecord,
ItemName.FrozenPride2,
ItemName.GenjiShield,
ItemName.MajesticMushroom,
ItemName.MajesticMushroom2,
ItemName.NobodyGuard,
ItemName.OgreShield,
ItemName.SaveTheKing2,
ItemName.UltimateMushroom,
# Party Limits
ItemName.FlareForce,
ItemName.Fantasia,
ItemName.Teamwork,
ItemName.TornadoFusion
},
"2VisitLocking": {
ItemName.CastleKey,
ItemName.BattlefieldsofWar,
ItemName.SwordoftheAncestor,
ItemName.BeastsClaw,
ItemName.BoneFist,
ItemName.ProudFang,
ItemName.SkillandCrossbones,
ItemName.Scimitar,
ItemName.MembershipCard,
ItemName.IceCream,
ItemName.WaytotheDawn,
ItemName.IdentityDisk,
ItemName.IceCream,
ItemName.NamineSketches
},
"AllVisitLocking": {
ItemName.CastleKey,
ItemName.CastleKey,
ItemName.BattlefieldsofWar,
ItemName.BattlefieldsofWar,
ItemName.SwordoftheAncestor,
ItemName.SwordoftheAncestor,
ItemName.BeastsClaw,
ItemName.BeastsClaw,
ItemName.BoneFist,
ItemName.BoneFist,
ItemName.ProudFang,
ItemName.ProudFang,
ItemName.SkillandCrossbones,
ItemName.SkillandCrossbones,
ItemName.Scimitar,
ItemName.Scimitar,
ItemName.MembershipCard,
ItemName.MembershipCard,
ItemName.WaytotheDawn,
ItemName.IdentityDisk,
ItemName.IdentityDisk,
ItemName.IceCream,
ItemName.IceCream,
ItemName.IceCream,
ItemName.NamineSketches,
}
}
exclusionItem_table = {
"Ability": {
ItemName.Scan,
ItemName.AerialRecovery,
ItemName.ComboMaster,
ItemName.ComboPlus,
ItemName.AirComboPlus,
ItemName.ComboBoost,
ItemName.AirComboBoost,
ItemName.ReactionBoost,
ItemName.FinishingPlus,
ItemName.NegativeCombo,
ItemName.BerserkCharge,
ItemName.DamageDrive,
ItemName.DriveBoost,
ItemName.FormBoost,
ItemName.SummonBoost,
ItemName.ExperienceBoost,
ItemName.Draw,
ItemName.Jackpot,
ItemName.LuckyLucky,
ItemName.DriveConverter,
ItemName.FireBoost,
ItemName.BlizzardBoost,
ItemName.ThunderBoost,
ItemName.ItemBoost,
ItemName.MPRage,
ItemName.MPHaste,
ItemName.MPHastera,
ItemName.MPHastega,
ItemName.Defender,
ItemName.DamageControl,
ItemName.NoExperience,
ItemName.LightDarkness,
ItemName.MagicLock,
ItemName.LeafBracer,
ItemName.CombinationBoost,
ItemName.DamageDrive,
ItemName.OnceMore,
ItemName.SecondChance,
ItemName.Guard,
ItemName.UpperSlash,
ItemName.HorizontalSlash,
ItemName.FinishingLeap,
ItemName.RetaliatingSlash,
ItemName.Slapshot,
ItemName.DodgeSlash,
ItemName.FlashStep,
ItemName.SlideDash,
ItemName.VicinityBreak,
ItemName.GuardBreak,
ItemName.Explosion,
ItemName.AerialSweep,
ItemName.AerialDive,
ItemName.AerialSpiral,
ItemName.AerialFinish,
ItemName.MagnetBurst,
ItemName.Counterguard,
ItemName.AutoValor,
ItemName.AutoWisdom,
ItemName.AutoLimit,
ItemName.AutoMaster,
ItemName.AutoFinal,
ItemName.AutoSummon,
ItemName.TrinityLimit,
ItemName.HighJump,
ItemName.QuickRun,
ItemName.DodgeRoll,
ItemName.AerialDodge,
ItemName.Glide,
},
"StatUps": {
ItemName.MaxHPUp,
ItemName.MaxMPUp,
ItemName.DriveGaugeUp,
ItemName.ArmorSlotUp,
ItemName.AccessorySlotUp,
ItemName.ItemSlotUp,
},
}
item_dictionary_table = {**Reports_Table,
**Progression_Table,
**Forms_Table,
**Magic_Table,
**Armor_Table,
**Movement_Table,
**Staffs_Table,
**Shields_Table,
**Keyblade_Table,
**Accessory_Table,
**Usefull_Table,
**SupportAbility_Table,
**ActionAbility_Table,
**Items_Table,
**Misc_Table,
**Items_Table,
**DonaldAbility_Table,
**GoofyAbility_Table,
}
lookup_id_to_name: typing.Dict[int, str] = {data.code: item_name for item_name, data in item_dictionary_table.items() if
data.code}
item_groups: typing.Dict[str, list] = {"Drive Form": [item_name for item_name in Forms_Table.keys()],
"Growth": [item_name for item_name in Movement_Table.keys()],
"Donald Limit": [ItemName.FlareForce, ItemName.Fantasia],
"Goofy Limit": [ItemName.Teamwork, ItemName.TornadoFusion],
"Magic": [ItemName.FireElement, ItemName.BlizzardElement,
ItemName.ThunderElement,
ItemName.CureElement, ItemName.MagnetElement,
ItemName.ReflectElement],
"Summon": [ItemName.ChickenLittle, ItemName.Genie, ItemName.Stitch,
ItemName.PeterPan],
"Gap Closer": [ItemName.SlideDash, ItemName.FlashStep],
"Ground Finisher": [ItemName.GuardBreak, ItemName.Explosion,
ItemName.FinishingLeap],
"Visit Lock": [item_name for item_name in
Progression_Dicts["2VisitLocking"]],
"Keyblade": [item_name for item_name in Keyblade_Table.keys()],
"Fire": [ItemName.FireElement],
"Blizzard": [ItemName.BlizzardElement],
"Thunder": [ItemName.ThunderElement],
"Cure": [ItemName.CureElement],
"Magnet": [ItemName.MagnetElement],
"Reflect": [ItemName.ReflectElement],
"Proof": [ItemName.ProofofNonexistence, ItemName.ProofofPeace,
ItemName.ProofofConnection],
"Filler": [
ItemName.PowerBoost, ItemName.MagicBoost,
ItemName.DefenseBoost, ItemName.APBoost]
}
# lookup_kh2id_to_name: typing.Dict[int, str] = {data.kh2id: item_name for item_name, data in
# item_dictionary_table.items() if data.kh2id}