671 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			671 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import typing
 | ||
| 
 | ||
| from BaseClasses import Item
 | ||
| from .Names import ItemName
 | ||
| from .Subclasses import ItemData
 | ||
| 
 | ||
| # 0x130000
 | ||
| Reports_Table = {
 | ||
|     ItemName.SecretAnsemsReport1:  ItemData(1, 226, 0x36C4, 6),
 | ||
|     ItemName.SecretAnsemsReport2:  ItemData(1, 227, 0x36C4, 7),
 | ||
|     ItemName.SecretAnsemsReport3:  ItemData(1, 228, 0x36C5, 0),
 | ||
|     ItemName.SecretAnsemsReport4:  ItemData(1, 229, 0x36C5, 1),
 | ||
|     ItemName.SecretAnsemsReport5:  ItemData(1, 230, 0x36C5, 2),
 | ||
|     ItemName.SecretAnsemsReport6:  ItemData(1, 231, 0x36C5, 3),
 | ||
|     ItemName.SecretAnsemsReport7:  ItemData(1, 232, 0x36C5, 4),
 | ||
|     ItemName.SecretAnsemsReport8:  ItemData(1, 233, 0x36C5, 5),
 | ||
|     ItemName.SecretAnsemsReport9:  ItemData(1, 234, 0x36C5, 6),
 | ||
|     ItemName.SecretAnsemsReport10: ItemData(1, 235, 0x36C5, 7),
 | ||
|     ItemName.SecretAnsemsReport11: ItemData(1, 236, 0x36C6, 0),
 | ||
|     ItemName.SecretAnsemsReport12: ItemData(1, 237, 0x36C6, 1),
 | ||
|     ItemName.SecretAnsemsReport13: ItemData(1, 238, 0x36C6, 2),
 | ||
| }
 | ||
| 
 | ||
| Progression_Table = {
 | ||
|     ItemName.ProofofConnection:   ItemData(1, 593, 0x36B2),
 | ||
|     ItemName.ProofofNonexistence: ItemData(1, 594, 0x36B3),
 | ||
|     ItemName.ProofofPeace:        ItemData(1, 595, 0x36B4),
 | ||
|     ItemName.PromiseCharm:        ItemData(1, 524, 0x3694),
 | ||
|     ItemName.NamineSketches:      ItemData(1, 368, 0x3642),
 | ||
|     ItemName.CastleKey:           ItemData(2, 460, 0x365D),  # dummy 13
 | ||
|     ItemName.BattlefieldsofWar:   ItemData(2, 54, 0x35AE),
 | ||
|     ItemName.SwordoftheAncestor:  ItemData(2, 55, 0x35AF),
 | ||
|     ItemName.BeastsClaw:          ItemData(2, 59, 0x35B3),
 | ||
|     ItemName.BoneFist:            ItemData(2, 60, 0x35B4),
 | ||
|     ItemName.ProudFang:           ItemData(2, 61, 0x35B5),
 | ||
|     ItemName.SkillandCrossbones:  ItemData(2, 62, 0x35B6),
 | ||
|     ItemName.Scimitar:            ItemData(2, 72, 0x35C0),
 | ||
|     ItemName.MembershipCard:      ItemData(2, 369, 0x3643),
 | ||
|     ItemName.IceCream:            ItemData(3, 375, 0x3649),
 | ||
|     # Changed to 3 instead of one poster, picture and ice cream respectively
 | ||
|     ItemName.WaytotheDawn:        ItemData(2, 73, 0x35C1),
 | ||
|     # currently first visit locking doesn't work for twtnw.When goa is updated should be 2
 | ||
|     ItemName.IdentityDisk:        ItemData(2, 74, 0x35C2),
 | ||
|     ItemName.TornPages:           ItemData(5, 32, 0x3598),
 | ||
| 
 | ||
| }
 | ||
| Forms_Table = {
 | ||
|     ItemName.ValorForm:  ItemData(1, 26, 0x36C0, 1),
 | ||
|     ItemName.WisdomForm: ItemData(1, 27, 0x36C0, 2),
 | ||
|     ItemName.LimitForm:  ItemData(1, 563, 0x36CA, 3),
 | ||
|     ItemName.MasterForm: ItemData(1, 31, 0x36C0, 6),
 | ||
|     ItemName.FinalForm:  ItemData(1, 29, 0x36C0, 4),
 | ||
|     ItemName.AntiForm:   ItemData(1, 30, 0x36C0, 5)
 | ||
| }
 | ||
| Magic_Table = {
 | ||
|     ItemName.FireElement:     ItemData(3, 21, 0x3594),
 | ||
|     ItemName.BlizzardElement: ItemData(3, 22, 0x3595),
 | ||
|     ItemName.ThunderElement:  ItemData(3, 23, 0x3596),
 | ||
|     ItemName.CureElement:     ItemData(3, 24, 0x3597),
 | ||
|     ItemName.MagnetElement:   ItemData(3, 87, 0x35CF),
 | ||
|     ItemName.ReflectElement:  ItemData(3, 88, 0x35D0),
 | ||
| }
 | ||
| Summon_Table = {
 | ||
|     ItemName.Genie:         ItemData(1, 159, 0x36C4, 4),
 | ||
|     ItemName.PeterPan:      ItemData(1, 160, 0x36C4, 5),
 | ||
|     ItemName.Stitch:        ItemData(1, 25, 0x36C0, 0),
 | ||
|     ItemName.ChickenLittle: ItemData(1, 383, 0x36C0, 3),
 | ||
| }
 | ||
| Movement_Table = {
 | ||
|     ItemName.HighJump:    ItemData(4, 94, 0x05E, ability=True),
 | ||
|     ItemName.QuickRun:    ItemData(4, 98, 0x062, ability=True),
 | ||
|     ItemName.DodgeRoll:   ItemData(4, 564, 0x234, ability=True),
 | ||
|     ItemName.AerialDodge: ItemData(4, 102, 0x066, ability=True),
 | ||
|     ItemName.Glide:       ItemData(4, 106, 0x06A, ability=True),
 | ||
| }
 | ||
| 
 | ||
| Keyblade_Table = {
 | ||
|     ItemName.Oathkeeper:      ItemData(1, 42, 0x35A2),
 | ||
|     ItemName.Oblivion:        ItemData(1, 43, 0x35A3),
 | ||
|     ItemName.StarSeeker:      ItemData(1, 480, 0x367B),
 | ||
|     ItemName.HiddenDragon:    ItemData(1, 481, 0x367C),
 | ||
|     ItemName.HerosCrest:      ItemData(1, 484, 0x367F),
 | ||
|     ItemName.Monochrome:      ItemData(1, 485, 0x3680),
 | ||
|     ItemName.FollowtheWind:   ItemData(1, 486, 0x3681),
 | ||
|     ItemName.CircleofLife:    ItemData(1, 487, 0x3682),
 | ||
|     ItemName.PhotonDebugger:  ItemData(1, 488, 0x3683),
 | ||
|     ItemName.GullWing:        ItemData(1, 489, 0x3684),
 | ||
|     ItemName.RumblingRose:    ItemData(1, 490, 0x3685),
 | ||
|     ItemName.GuardianSoul:    ItemData(1, 491, 0x3686),
 | ||
|     ItemName.WishingLamp:     ItemData(1, 492, 0x3687),
 | ||
|     ItemName.DecisivePumpkin: ItemData(1, 493, 0x3688),
 | ||
|     ItemName.SleepingLion:    ItemData(1, 494, 0x3689),
 | ||
|     ItemName.SweetMemories:   ItemData(1, 495, 0x368A),
 | ||
|     ItemName.MysteriousAbyss: ItemData(1, 496, 0x368B),
 | ||
|     ItemName.TwoBecomeOne:    ItemData(1, 543, 0x3698),
 | ||
|     ItemName.FatalCrest:      ItemData(1, 497, 0x368C),
 | ||
|     ItemName.BondofFlame:     ItemData(1, 498, 0x368D),
 | ||
|     ItemName.Fenrir:          ItemData(1, 499, 0x368E),
 | ||
|     ItemName.UltimaWeapon:    ItemData(1, 500, 0x368F),
 | ||
|     ItemName.WinnersProof:    ItemData(1, 544, 0x3699),
 | ||
|     ItemName.Pureblood:       ItemData(1, 71, 0x35BF),
 | ||
| }
 | ||
| Staffs_Table = {
 | ||
|     ItemName.Centurion2:        ItemData(1, 546, 0x369B),
 | ||
|     ItemName.MeteorStaff:       ItemData(1, 150, 0x35F1),
 | ||
|     ItemName.NobodyLance:       ItemData(1, 155, 0x35F6),
 | ||
|     ItemName.PreciousMushroom:  ItemData(1, 549, 0x369E),
 | ||
|     ItemName.PreciousMushroom2: ItemData(1, 550, 0x369F),
 | ||
|     ItemName.PremiumMushroom:   ItemData(1, 551, 0x36A0),
 | ||
|     ItemName.RisingDragon:      ItemData(1, 154, 0x35F5),
 | ||
|     ItemName.SaveTheQueen2:     ItemData(1, 503, 0x3692),
 | ||
|     ItemName.ShamansRelic:      ItemData(1, 156, 0x35F7),
 | ||
| }
 | ||
| Shields_Table = {
 | ||
|     ItemName.AkashicRecord:     ItemData(1, 146, 0x35ED),
 | ||
|     ItemName.FrozenPride2:      ItemData(1, 553, 0x36A2),
 | ||
|     ItemName.GenjiShield:       ItemData(1, 145, 0x35EC),
 | ||
|     ItemName.MajesticMushroom:  ItemData(1, 556, 0x36A5),
 | ||
|     ItemName.MajesticMushroom2: ItemData(1, 557, 0x36A6),
 | ||
|     ItemName.NobodyGuard:       ItemData(1, 147, 0x35EE),
 | ||
|     ItemName.OgreShield:        ItemData(1, 141, 0x35E8),
 | ||
|     ItemName.SaveTheKing2:      ItemData(1, 504, 0x3693),
 | ||
|     ItemName.UltimateMushroom:  ItemData(1, 558, 0x36A7),
 | ||
| }
 | ||
| Accessory_Table = {
 | ||
|     ItemName.AbilityRing:     ItemData(1, 8, 0x3587),
 | ||
|     ItemName.EngineersRing:   ItemData(1, 9, 0x3588),
 | ||
|     ItemName.TechniciansRing: ItemData(1, 10, 0x3589),
 | ||
|     ItemName.SkillRing:       ItemData(1, 38, 0x359F),
 | ||
|     ItemName.SkillfulRing:    ItemData(1, 39, 0x35A0),
 | ||
|     ItemName.ExpertsRing:     ItemData(1, 11, 0x358A),
 | ||
|     ItemName.MastersRing:     ItemData(1, 34, 0x359B),
 | ||
|     ItemName.CosmicRing:      ItemData(1, 52, 0x35AD),
 | ||
|     ItemName.ExecutivesRing:  ItemData(1, 599, 0x36B5),
 | ||
|     ItemName.SardonyxRing:    ItemData(1, 12, 0x358B),
 | ||
|     ItemName.TourmalineRing:  ItemData(1, 13, 0x358C),
 | ||
|     ItemName.AquamarineRing:  ItemData(1, 14, 0x358D),
 | ||
|     ItemName.GarnetRing:      ItemData(1, 15, 0x358E),
 | ||
|     ItemName.DiamondRing:     ItemData(1, 16, 0x358F),
 | ||
|     ItemName.SilverRing:      ItemData(1, 17, 0x3590),
 | ||
|     ItemName.GoldRing:        ItemData(1, 18, 0x3591),
 | ||
|     ItemName.PlatinumRing:    ItemData(1, 19, 0x3592),
 | ||
|     ItemName.MythrilRing:     ItemData(1, 20, 0x3593),
 | ||
|     ItemName.OrichalcumRing:  ItemData(1, 28, 0x359A),
 | ||
|     ItemName.SoldierEarring:  ItemData(1, 40, 0x35A6),
 | ||
|     ItemName.FencerEarring:   ItemData(1, 46, 0x35A7),
 | ||
|     ItemName.MageEarring:     ItemData(1, 47, 0x35A8),
 | ||
|     ItemName.SlayerEarring:   ItemData(1, 48, 0x35AC),
 | ||
|     ItemName.Medal:           ItemData(1, 53, 0x35B0),
 | ||
|     ItemName.MoonAmulet:      ItemData(1, 35, 0x359C),
 | ||
|     ItemName.StarCharm:       ItemData(1, 36, 0x359E),
 | ||
|     ItemName.CosmicArts:      ItemData(1, 56, 0x35B1),
 | ||
|     ItemName.ShadowArchive:   ItemData(1, 57, 0x35B2),
 | ||
|     ItemName.ShadowArchive2:  ItemData(1, 58, 0x35B7),
 | ||
|     ItemName.FullBloom:       ItemData(1, 64, 0x35B9),
 | ||
|     ItemName.FullBloom2:      ItemData(1, 66, 0x35BB),
 | ||
|     ItemName.DrawRing:        ItemData(1, 65, 0x35BA),
 | ||
|     ItemName.LuckyRing:       ItemData(1, 63, 0x35B8),
 | ||
| }
 | ||
| Armor_Table = {
 | ||
|     ItemName.ElvenBandana:     ItemData(1, 67, 0x35BC),
 | ||
|     ItemName.DivineBandana:    ItemData(1, 68, 0x35BD),
 | ||
|     ItemName.ProtectBelt:      ItemData(1, 78, 0x35C7),
 | ||
|     ItemName.GaiaBelt:         ItemData(1, 79, 0x35CA),
 | ||
|     ItemName.PowerBand:        ItemData(1, 69, 0x35BE),
 | ||
|     ItemName.BusterBand:       ItemData(1, 70, 0x35C6),
 | ||
|     ItemName.CosmicBelt:       ItemData(1, 111, 0x35D1),
 | ||
|     ItemName.FireBangle:       ItemData(1, 173, 0x35D7),
 | ||
|     ItemName.FiraBangle:       ItemData(1, 174, 0x35D8),
 | ||
|     ItemName.FiragaBangle:     ItemData(1, 197, 0x35D9),
 | ||
|     ItemName.FiragunBangle:    ItemData(1, 284, 0x35DA),
 | ||
|     ItemName.BlizzardArmlet:   ItemData(1, 286, 0x35DC),
 | ||
|     ItemName.BlizzaraArmlet:   ItemData(1, 287, 0x35DD),
 | ||
|     ItemName.BlizzagaArmlet:   ItemData(1, 288, 0x35DE),
 | ||
|     ItemName.BlizzagunArmlet:  ItemData(1, 289, 0x35DF),
 | ||
|     ItemName.ThunderTrinket:   ItemData(1, 291, 0x35E2),
 | ||
|     ItemName.ThundaraTrinket:  ItemData(1, 292, 0x35E3),
 | ||
|     ItemName.ThundagaTrinket:  ItemData(1, 293, 0x35E4),
 | ||
|     ItemName.ThundagunTrinket: ItemData(1, 294, 0x35E5),
 | ||
|     ItemName.ShockCharm:       ItemData(1, 132, 0x35D2),
 | ||
|     ItemName.ShockCharm2:      ItemData(1, 133, 0x35D3),
 | ||
|     ItemName.ShadowAnklet:     ItemData(1, 296, 0x35F9),
 | ||
|     ItemName.DarkAnklet:       ItemData(1, 297, 0x35FB),
 | ||
|     ItemName.MidnightAnklet:   ItemData(1, 298, 0x35FC),
 | ||
|     ItemName.ChaosAnklet:      ItemData(1, 299, 0x35FD),
 | ||
|     ItemName.ChampionBelt:     ItemData(1, 305, 0x3603),
 | ||
|     ItemName.AbasChain:        ItemData(1, 301, 0x35FF),
 | ||
|     ItemName.AegisChain:       ItemData(1, 302, 0x3600),
 | ||
|     ItemName.Acrisius:         ItemData(1, 303, 0x3601),
 | ||
|     ItemName.Acrisius2:        ItemData(1, 307, 0x3605),
 | ||
|     ItemName.CosmicChain:      ItemData(1, 308, 0x3606),
 | ||
|     ItemName.PetiteRibbon:     ItemData(1, 306, 0x3604),
 | ||
|     ItemName.Ribbon:           ItemData(1, 304, 0x3602),
 | ||
|     ItemName.GrandRibbon:      ItemData(1, 157, 0x35D4),
 | ||
| }
 | ||
| Usefull_Table = {
 | ||
|     ItemName.MickeyMunnyPouch: ItemData(1, 535, 0x3695),  # 5000 munny per
 | ||
|     ItemName.OletteMunnyPouch: ItemData(2, 362, 0x363C),  # 2500 munny per
 | ||
|     ItemName.HadesCupTrophy:   ItemData(1, 537, 0x3696),
 | ||
|     ItemName.UnknownDisk:      ItemData(1, 462, 0x365F),
 | ||
|     ItemName.OlympusStone:     ItemData(1, 370, 0x3644),
 | ||
|     ItemName.MaxHPUp:          ItemData(20, 112, 0x3671),  # 470 is DUMMY 23, 112 is Encampment Area Map
 | ||
|     ItemName.MaxMPUp:          ItemData(4, 113, 0x3672),  # 471 is DUMMY 24, 113 is Village Area Map
 | ||
|     ItemName.DriveGaugeUp:     ItemData(6, 114, 0x3673),  # 472 is DUMMY 25, 114 is Cornerstone Hill Map
 | ||
|     ItemName.ArmorSlotUp:      ItemData(3, 116, 0x3674),  # 473 is DUMMY 26, 116 is Lilliput Map
 | ||
|     ItemName.AccessorySlotUp:  ItemData(3, 117, 0x3675),  # 474 is DUMMY 27, 117 is Building Site Map
 | ||
|     ItemName.ItemSlotUp:       ItemData(5, 118, 0x3660),  # 463 is DUMMY 16, 118 is Mickey’s House Map
 | ||
| }
 | ||
| SupportAbility_Table = {
 | ||
|     ItemName.Scan:             ItemData(2, 138, 0x08A, ability=True),
 | ||
|     ItemName.AerialRecovery:   ItemData(1, 158, 0x09E, ability=True),
 | ||
|     ItemName.ComboMaster:      ItemData(1, 539, 0x21B, ability=True),
 | ||
|     ItemName.ComboPlus:        ItemData(3, 162, 0x0A2, ability=True),
 | ||
|     ItemName.AirComboPlus:     ItemData(3, 163, 0x0A3, ability=True),
 | ||
|     ItemName.ComboBoost:       ItemData(2, 390, 0x186, ability=True),
 | ||
|     ItemName.AirComboBoost:    ItemData(2, 391, 0x187, ability=True),
 | ||
|     ItemName.ReactionBoost:    ItemData(3, 392, 0x188, ability=True),
 | ||
|     ItemName.FinishingPlus:    ItemData(3, 393, 0x189, ability=True),
 | ||
|     ItemName.NegativeCombo:    ItemData(2, 394, 0x18A, ability=True),
 | ||
|     ItemName.BerserkCharge:    ItemData(2, 395, 0x18B, ability=True),
 | ||
|     ItemName.DamageDrive:      ItemData(2, 396, 0x18C, ability=True),
 | ||
|     ItemName.DriveBoost:       ItemData(2, 397, 0x18D, ability=True),
 | ||
|     ItemName.FormBoost:        ItemData(3, 398, 0x18E, ability=True),
 | ||
|     ItemName.SummonBoost:      ItemData(1, 399, 0x18F, ability=True),
 | ||
|     ItemName.ExperienceBoost:  ItemData(2, 401, 0x191, ability=True),
 | ||
|     ItemName.Draw:             ItemData(4, 405, 0x195, ability=True),
 | ||
|     ItemName.Jackpot:          ItemData(2, 406, 0x196, ability=True),
 | ||
|     ItemName.LuckyLucky:       ItemData(3, 407, 0x197, ability=True),
 | ||
|     ItemName.DriveConverter:   ItemData(2, 540, 0x21C, ability=True),
 | ||
|     ItemName.FireBoost:        ItemData(2, 408, 0x198, ability=True),
 | ||
|     ItemName.BlizzardBoost:    ItemData(2, 409, 0x199, ability=True),
 | ||
|     ItemName.ThunderBoost:     ItemData(2, 410, 0x19A, ability=True),
 | ||
|     ItemName.ItemBoost:        ItemData(2, 411, 0x19B, ability=True),
 | ||
|     ItemName.MPRage:           ItemData(2, 412, 0x19C, ability=True),
 | ||
|     ItemName.MPHaste:          ItemData(2, 413, 0x19D, ability=True),
 | ||
|     ItemName.MPHastera:        ItemData(2, 421, 0x1A5, ability=True),
 | ||
|     ItemName.MPHastega:        ItemData(1, 422, 0x1A6, ability=True),
 | ||
|     ItemName.Defender:         ItemData(2, 414, 0x19E, ability=True),
 | ||
|     ItemName.DamageControl:    ItemData(2, 542, 0x21E, ability=True),
 | ||
|     ItemName.NoExperience:     ItemData(0, 404, 0x194, ability=True),  # quantity changed to 0 because the player starts with one always.
 | ||
|     ItemName.LightDarkness:    ItemData(1, 541, 0x21D, ability=True),
 | ||
|     ItemName.MagicLock:        ItemData(1, 403, 0x193, ability=True),
 | ||
|     ItemName.LeafBracer:       ItemData(1, 402, 0x192, ability=True),
 | ||
|     ItemName.CombinationBoost: ItemData(1, 400, 0x190, ability=True),
 | ||
|     ItemName.OnceMore:         ItemData(1, 416, 0x1A0, ability=True),
 | ||
|     ItemName.SecondChance:     ItemData(1, 415, 0x19F, ability=True),
 | ||
| }
 | ||
| ActionAbility_Table = {
 | ||
|     ItemName.Guard:            ItemData(1, 82, 0x052, ability=True),
 | ||
|     ItemName.UpperSlash:       ItemData(1, 137, 0x089, ability=True),
 | ||
|     ItemName.HorizontalSlash:  ItemData(1, 271, 0x10F, ability=True),
 | ||
|     ItemName.FinishingLeap:    ItemData(1, 267, 0x10B, ability=True),
 | ||
|     ItemName.RetaliatingSlash: ItemData(1, 273, 0x111, ability=True),
 | ||
|     ItemName.Slapshot:         ItemData(1, 262, 0x106, ability=True),
 | ||
|     ItemName.DodgeSlash:       ItemData(1, 263, 0x107, ability=True),
 | ||
|     ItemName.FlashStep:        ItemData(1, 559, 0x22F, ability=True),
 | ||
|     ItemName.SlideDash:        ItemData(1, 264, 0x108, ability=True),
 | ||
|     ItemName.VicinityBreak:    ItemData(1, 562, 0x232, ability=True),
 | ||
|     ItemName.GuardBreak:       ItemData(1, 265, 0x109, ability=True),
 | ||
|     ItemName.Explosion:        ItemData(1, 266, 0x10A, ability=True),
 | ||
|     ItemName.AerialSweep:      ItemData(1, 269, 0x10D, ability=True),
 | ||
|     ItemName.AerialDive:       ItemData(1, 560, 0x230, ability=True),
 | ||
|     ItemName.AerialSpiral:     ItemData(1, 270, 0x10E, ability=True),
 | ||
|     ItemName.AerialFinish:     ItemData(1, 272, 0x110, ability=True),
 | ||
|     ItemName.MagnetBurst:      ItemData(1, 561, 0x231, ability=True),
 | ||
|     ItemName.Counterguard:     ItemData(1, 268, 0x10C, ability=True),
 | ||
|     ItemName.AutoValor:        ItemData(1, 385, 0x181, ability=True),
 | ||
|     ItemName.AutoWisdom:       ItemData(1, 386, 0x182, ability=True),
 | ||
|     ItemName.AutoLimit:        ItemData(1, 568, 0x238, ability=True),
 | ||
|     ItemName.AutoMaster:       ItemData(1, 387, 0x183, ability=True),
 | ||
|     ItemName.AutoFinal:        ItemData(1, 388, 0x184, ability=True),
 | ||
|     ItemName.AutoSummon:       ItemData(1, 389, 0x185, ability=True),
 | ||
|     ItemName.TrinityLimit:     ItemData(1, 198, 0x0C6, ability=True),
 | ||
| }
 | ||
| Boosts_Table = {
 | ||
|     ItemName.PowerBoost:   ItemData(1, 253, 0x359D),  # 276, 0x3666, market place map
 | ||
|     ItemName.MagicBoost:   ItemData(1, 586, 0x35E0),  # 277, 0x3667, dark rememberance map
 | ||
|     ItemName.DefenseBoost: ItemData(1, 590, 0x35F8),  # 278, 0x3668, depths of remembrance map
 | ||
|     ItemName.APBoost:      ItemData(1, 532, 0x35FE),  # 279, 0x3669, mansion map
 | ||
| }
 | ||
| 
 | ||
| # These items cannot be in other games so these are done locally in kh2
 | ||
| DonaldAbility_Table = {
 | ||
|     ItemName.DonaldFire:          ItemData(1, 165, 0xA5, ability=True),
 | ||
|     ItemName.DonaldBlizzard:      ItemData(1, 166, 0xA6, ability=True),
 | ||
|     ItemName.DonaldThunder:       ItemData(1, 167, 0xA7, ability=True),
 | ||
|     ItemName.DonaldCure:          ItemData(1, 168, 0xA8, ability=True),
 | ||
|     ItemName.Fantasia:            ItemData(1, 199, 0xC7, ability=True),
 | ||
|     ItemName.FlareForce:          ItemData(1, 200, 0xC8, ability=True),
 | ||
|     ItemName.DonaldMPRage:        ItemData(1, 412, 0x19C, ability=True),  # originally 3 but swapped to 1 because crit checks
 | ||
|     ItemName.DonaldJackpot:       ItemData(1, 406, 0x196, ability=True),
 | ||
|     ItemName.DonaldLuckyLucky:    ItemData(3, 407, 0x197, ability=True),
 | ||
|     ItemName.DonaldFireBoost:     ItemData(2, 408, 0x198, ability=True),
 | ||
|     ItemName.DonaldBlizzardBoost: ItemData(2, 409, 0x199, ability=True),
 | ||
|     ItemName.DonaldThunderBoost:  ItemData(2, 410, 0x19A, ability=True),
 | ||
|     ItemName.DonaldMPHaste:       ItemData(1, 413, 0x19D, ability=True),
 | ||
|     ItemName.DonaldMPHastera:     ItemData(2, 421, 0x1A5, ability=True),
 | ||
|     ItemName.DonaldMPHastega:     ItemData(2, 422, 0x1A6, ability=True),
 | ||
|     ItemName.DonaldAutoLimit:     ItemData(1, 417, 0x1A1, ability=True),
 | ||
|     ItemName.DonaldHyperHealing:  ItemData(2, 419, 0x1A3, ability=True),
 | ||
|     ItemName.DonaldAutoHealing:   ItemData(1, 420, 0x1A4, ability=True),
 | ||
|     ItemName.DonaldItemBoost:     ItemData(1, 411, 0x19B, ability=True),
 | ||
|     ItemName.DonaldDamageControl: ItemData(2, 542, 0x21E, ability=True),
 | ||
|     ItemName.DonaldDraw:          ItemData(1, 405, 0x195, ability=True),
 | ||
| }
 | ||
| 
 | ||
| GoofyAbility_Table = {
 | ||
|     ItemName.GoofyTornado:       ItemData(1, 423, 0x1A7, ability=True),
 | ||
|     ItemName.GoofyTurbo:         ItemData(1, 425, 0x1A9, ability=True),
 | ||
|     ItemName.GoofyBash:          ItemData(1, 429, 0x1AD, ability=True),
 | ||
|     ItemName.TornadoFusion:      ItemData(1, 201, 0xC9, ability=True),
 | ||
|     ItemName.Teamwork:           ItemData(1, 202, 0xCA, ability=True),
 | ||
|     ItemName.GoofyDraw:          ItemData(1, 405, 0x195, ability=True),
 | ||
|     ItemName.GoofyJackpot:       ItemData(1, 406, 0x196, ability=True),
 | ||
|     ItemName.GoofyLuckyLucky:    ItemData(1, 407, 0x197, ability=True),
 | ||
|     ItemName.GoofyItemBoost:     ItemData(2, 411, 0x19B, ability=True),
 | ||
|     ItemName.GoofyMPRage:        ItemData(2, 412, 0x19C, ability=True),
 | ||
|     ItemName.GoofyDefender:      ItemData(2, 414, 0x19E, ability=True),
 | ||
|     ItemName.GoofyDamageControl: ItemData(1, 542, 0x21E, ability=True),  # originally 3 but swapped to 1 because crit checks
 | ||
|     ItemName.GoofyAutoLimit:     ItemData(1, 417, 0x1A1, ability=True),
 | ||
|     ItemName.GoofySecondChance:  ItemData(1, 415, 0x19F, ability=True),
 | ||
|     ItemName.GoofyOnceMore:      ItemData(1, 416, 0x1A0, ability=True),
 | ||
|     ItemName.GoofyAutoChange:    ItemData(1, 418, 0x1A2, ability=True),
 | ||
|     ItemName.GoofyHyperHealing:  ItemData(2, 419, 0x1A3, ability=True),
 | ||
|     ItemName.GoofyAutoHealing:   ItemData(1, 420, 0x1A4, ability=True),
 | ||
|     ItemName.GoofyMPHaste:       ItemData(1, 413, 0x19D, ability=True),
 | ||
|     ItemName.GoofyMPHastera:     ItemData(1, 421, 0x1A5, ability=True),
 | ||
|     ItemName.GoofyMPHastega:     ItemData(1, 422, 0x1A6, ability=True),
 | ||
|     ItemName.GoofyProtect:       ItemData(2, 596, 0x254, ability=True),
 | ||
|     ItemName.GoofyProtera:       ItemData(2, 597, 0x255, ability=True),
 | ||
|     ItemName.GoofyProtega:       ItemData(2, 598, 0x256, ability=True),
 | ||
| 
 | ||
| }
 | ||
| 
 | ||
| Wincon_Table = {
 | ||
|     ItemName.LuckyEmblem: ItemData(kh2id=367, memaddr=0x3641),  # letter item
 | ||
|     # ItemName.Victory:     ItemData(kh2id=263, memaddr=0x111),
 | ||
|     ItemName.Bounty:      ItemData(kh2id=461, memaddr=0x365E),  # Dummy 14
 | ||
|     # ItemName.UniversalKey:ItemData(,365,0x363F,0)#Tournament Poster
 | ||
| }
 | ||
| 
 | ||
| Consumable_Table = {
 | ||
|     ItemName.Potion:            ItemData(1, 127, 0x36B8),  # 1, 0x3580, piglets house map
 | ||
|     ItemName.HiPotion:          ItemData(1, 126, 0x36B9),  # 2, 0x03581, rabbits house map
 | ||
|     ItemName.Ether:             ItemData(1, 128, 0x36BA),  # 3, 0x3582, kangas house map
 | ||
|     ItemName.Elixir:            ItemData(1, 129, 0x36BB),  # 4, 0x3583, spooky cave map
 | ||
|     ItemName.Megalixir:         ItemData(1, 124, 0x36BC),  # 7, 0x3586, starry hill map
 | ||
|     ItemName.Tent:              ItemData(1, 512, 0x36BD),  # 131,0x35E1, savannah map
 | ||
|     ItemName.DriveRecovery:     ItemData(1, 252, 0x36BE),  # 274,0x3664, pride rock map
 | ||
|     ItemName.HighDriveRecovery: ItemData(1, 511, 0x36BF),  # 275,0x3665, oasis map
 | ||
| }
 | ||
| 
 | ||
| Events_Table = {
 | ||
|     ItemName.HostileProgramEvent,
 | ||
|     ItemName.McpEvent,
 | ||
|     ItemName.ASLarxeneEvent,
 | ||
|     ItemName.DataLarxeneEvent,
 | ||
|     ItemName.BarbosaEvent,
 | ||
|     ItemName.GrimReaper1Event,
 | ||
|     ItemName.GrimReaper2Event,
 | ||
|     ItemName.DataLuxordEvent,
 | ||
|     ItemName.DataAxelEvent,
 | ||
|     ItemName.CerberusEvent,
 | ||
|     ItemName.OlympusPeteEvent,
 | ||
|     ItemName.HydraEvent,
 | ||
|     ItemName.OcPainAndPanicCupEvent,
 | ||
|     ItemName.OcCerberusCupEvent,
 | ||
|     ItemName.HadesEvent,
 | ||
|     ItemName.ASZexionEvent,
 | ||
|     ItemName.DataZexionEvent,
 | ||
|     ItemName.Oc2TitanCupEvent,
 | ||
|     ItemName.Oc2GofCupEvent,
 | ||
|     ItemName.Oc2CupsEvent,
 | ||
|     ItemName.HadesCupEvents,
 | ||
|     ItemName.PrisonKeeperEvent,
 | ||
|     ItemName.OogieBoogieEvent,
 | ||
|     ItemName.ExperimentEvent,
 | ||
|     ItemName.ASVexenEvent,
 | ||
|     ItemName.DataVexenEvent,
 | ||
|     ItemName.ShanYuEvent,
 | ||
|     ItemName.AnsemRikuEvent,
 | ||
|     ItemName.StormRiderEvent,
 | ||
|     ItemName.DataXigbarEvent,
 | ||
|     ItemName.RoxasEvent,
 | ||
|     ItemName.XigbarEvent,
 | ||
|     ItemName.LuxordEvent,
 | ||
|     ItemName.SaixEvent,
 | ||
|     ItemName.XemnasEvent,
 | ||
|     ItemName.ArmoredXemnasEvent,
 | ||
|     ItemName.ArmoredXemnas2Event,
 | ||
|     ItemName.FinalXemnasEvent,
 | ||
|     ItemName.DataXemnasEvent,
 | ||
|     ItemName.ThresholderEvent,
 | ||
|     ItemName.BeastEvent,
 | ||
|     ItemName.DarkThornEvent,
 | ||
|     ItemName.XaldinEvent,
 | ||
|     ItemName.DataXaldinEvent,
 | ||
|     ItemName.TwinLordsEvent,
 | ||
|     ItemName.GenieJafarEvent,
 | ||
|     ItemName.ASLexaeusEvent,
 | ||
|     ItemName.DataLexaeusEvent,
 | ||
|     ItemName.ScarEvent,
 | ||
|     ItemName.GroundShakerEvent,
 | ||
|     ItemName.DataSaixEvent,
 | ||
|     ItemName.HBDemyxEvent,
 | ||
|     ItemName.ThousandHeartlessEvent,
 | ||
|     ItemName.Mushroom13Event,
 | ||
|     ItemName.SephiEvent,
 | ||
|     ItemName.DataDemyxEvent,
 | ||
|     ItemName.CorFirstFightEvent,
 | ||
|     ItemName.CorSecondFightEvent,
 | ||
|     ItemName.TransportEvent,
 | ||
|     ItemName.OldPeteEvent,
 | ||
|     ItemName.FuturePeteEvent,
 | ||
|     ItemName.ASMarluxiaEvent,
 | ||
|     ItemName.DataMarluxiaEvent,
 | ||
|     ItemName.TerraEvent,
 | ||
|     ItemName.TwilightThornEvent,
 | ||
|     ItemName.Axel1Event,
 | ||
|     ItemName.Axel2Event,
 | ||
|     ItemName.DataRoxasEvent,
 | ||
| }
 | ||
| # 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":          {
 | ||
|         item_name for keys in [Progression_Table.keys(), Wincon_Table.keys(), Consumable_Table, [ItemName.MickeyMunnyPouch,
 | ||
|                                                                                                  ItemName.OletteMunnyPouch,
 | ||
|                                                                                                  ItemName.HadesCupTrophy,
 | ||
|                                                                                                  ItemName.UnknownDisk,
 | ||
|                                                                                                  ItemName.OlympusStone, ], Boosts_Table.keys()]
 | ||
|         for item_name in keys
 | ||
| 
 | ||
|     },
 | ||
|     "Magic":          {
 | ||
|         magic for magic in Magic_Table.keys()
 | ||
|     },
 | ||
|     "Bitmask":        {
 | ||
|         item_name for keys in [Forms_Table.keys(), Summon_Table.keys(), Reports_Table.keys()] for item_name in keys
 | ||
|     },
 | ||
|     "Weapons":        {
 | ||
|         "Keyblades": {
 | ||
|             keyblade for keyblade in Keyblade_Table.keys()
 | ||
|         },
 | ||
|         "Staffs":    {
 | ||
|             staff for staff in Staffs_Table.keys()
 | ||
|         },
 | ||
|         "Shields":   {
 | ||
|             shield for shield in Shields_Table.keys()
 | ||
|         }
 | ||
|     },
 | ||
|     "Equipment":      {
 | ||
|         "Accessories": {
 | ||
|             accessory for accessory in Accessory_Table.keys()
 | ||
|         },
 | ||
|         "Armor":       {
 | ||
|             armor for armor in Armor_Table.keys()
 | ||
|         }
 | ||
|     },
 | ||
|     "Stat Increases": {
 | ||
|         ItemName.MaxHPUp,
 | ||
|         ItemName.MaxMPUp,
 | ||
|         ItemName.DriveGaugeUp,
 | ||
|         ItemName.ArmorSlotUp,
 | ||
|         ItemName.AccessorySlotUp,
 | ||
|         ItemName.ItemSlotUp,
 | ||
|     },
 | ||
|     "Abilities":      {
 | ||
|         "Sora":   {
 | ||
|             item_name for keys in [SupportAbility_Table.keys(), ActionAbility_Table.keys(), Movement_Table.keys()] for item_name in keys
 | ||
|         },
 | ||
|         "Donald": {
 | ||
|             donald_ability for donald_ability in DonaldAbility_Table.keys()
 | ||
|         },
 | ||
|         "Goofy":  {
 | ||
|             goofy_ability for goofy_ability in GoofyAbility_Table.keys()
 | ||
|         }
 | ||
|     },
 | ||
| }
 | ||
| progression_set = {
 | ||
|     # abilities
 | ||
|     item_name for keys in [
 | ||
|         Wincon_Table.keys(),
 | ||
|         Progression_Table.keys(),
 | ||
|         Forms_Table.keys(),
 | ||
|         Magic_Table.keys(),
 | ||
|         Summon_Table.keys(),
 | ||
|         Movement_Table.keys(),
 | ||
|         Keyblade_Table.keys(),
 | ||
|         Staffs_Table.keys(),
 | ||
|         Shields_Table.keys(),
 | ||
|         [
 | ||
|             ItemName.AerialRecovery,
 | ||
|             ItemName.ComboMaster,
 | ||
|             ItemName.ComboPlus,
 | ||
|             ItemName.AirComboPlus,
 | ||
|             ItemName.FinishingPlus,
 | ||
|             ItemName.NegativeCombo,
 | ||
|             ItemName.BerserkCharge,
 | ||
|             ItemName.FormBoost,
 | ||
|             ItemName.LightDarkness,
 | ||
|             ItemName.OnceMore,
 | ||
|             ItemName.SecondChance,
 | ||
|             ItemName.Guard,
 | ||
|             ItemName.HorizontalSlash,
 | ||
|             ItemName.FinishingLeap,
 | ||
|             ItemName.Slapshot,
 | ||
|             ItemName.FlashStep,
 | ||
|             ItemName.SlideDash,
 | ||
|             ItemName.GuardBreak,
 | ||
|             ItemName.Explosion,
 | ||
|             ItemName.AerialSweep,
 | ||
|             ItemName.AerialDive,
 | ||
|             ItemName.AerialSpiral,
 | ||
|             ItemName.AerialFinish,
 | ||
|             ItemName.AutoValor,
 | ||
|             ItemName.AutoWisdom,
 | ||
|             ItemName.AutoLimit,
 | ||
|             ItemName.AutoMaster,
 | ||
|             ItemName.AutoFinal,
 | ||
|             ItemName.TrinityLimit,
 | ||
|             ItemName.DriveConverter,
 | ||
|             # Party Limits
 | ||
|             ItemName.FlareForce,
 | ||
|             ItemName.Fantasia,
 | ||
|             ItemName.Teamwork,
 | ||
|             ItemName.TornadoFusion,
 | ||
|             ItemName.HadesCupTrophy],
 | ||
|         Events_Table]
 | ||
|     for item_name in keys
 | ||
| }
 | ||
| party_filler_set = {
 | ||
|     ItemName.GoofyAutoHealing,
 | ||
|     ItemName.GoofyMPHaste,
 | ||
|     ItemName.GoofyMPHastera,
 | ||
|     ItemName.GoofyMPHastega,
 | ||
|     ItemName.GoofyProtect,
 | ||
|     ItemName.GoofyProtera,
 | ||
|     ItemName.GoofyProtega,
 | ||
|     ItemName.GoofyMPRage,
 | ||
|     ItemName.GoofyDefender,
 | ||
|     ItemName.GoofyDamageControl,
 | ||
| 
 | ||
|     ItemName.DonaldFireBoost,
 | ||
|     ItemName.DonaldBlizzardBoost,
 | ||
|     ItemName.DonaldThunderBoost,
 | ||
|     ItemName.DonaldMPHaste,
 | ||
|     ItemName.DonaldMPHastera,
 | ||
|     ItemName.DonaldMPHastega,
 | ||
|     ItemName.DonaldAutoHealing,
 | ||
|     ItemName.DonaldDamageControl,
 | ||
|     ItemName.DonaldDraw,
 | ||
|     ItemName.DonaldMPRage,
 | ||
| }
 | ||
| useful_set = {item_name for keys in [
 | ||
|     SupportAbility_Table.keys(),
 | ||
|     ActionAbility_Table.keys(),
 | ||
|     DonaldAbility_Table.keys(),
 | ||
|     GoofyAbility_Table.keys(),
 | ||
|     Armor_Table.keys(),
 | ||
|     Usefull_Table.keys(),
 | ||
|     Accessory_Table.keys()]
 | ||
|               for item_name in keys if item_name not in progression_set and item_name not in party_filler_set}
 | ||
| 
 | ||
| visit_locking_dict = {
 | ||
|     "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:          2,
 | ||
|         ItemName.BattlefieldsofWar:  2,
 | ||
|         ItemName.SwordoftheAncestor: 2,
 | ||
|         ItemName.BeastsClaw:         2,
 | ||
|         ItemName.BoneFist:           2,
 | ||
|         ItemName.ProudFang:          2,
 | ||
|         ItemName.SkillandCrossbones: 2,
 | ||
|         ItemName.Scimitar:           2,
 | ||
|         ItemName.MembershipCard:     2,
 | ||
|         ItemName.WaytotheDawn:       2,
 | ||
|         ItemName.IdentityDisk:       2,
 | ||
|         ItemName.IceCream:           3,
 | ||
|         ItemName.NamineSketches:     1,
 | ||
|     }
 | ||
| }
 | ||
| exclusion_item_table = {
 | ||
|     "StatUps": {
 | ||
|         ItemName.MaxHPUp,
 | ||
|         ItemName.MaxMPUp,
 | ||
|         ItemName.DriveGaugeUp,
 | ||
|         ItemName.ArmorSlotUp,
 | ||
|         ItemName.AccessorySlotUp,
 | ||
|         ItemName.ItemSlotUp,
 | ||
|     },
 | ||
|     "Ability": {
 | ||
|         item_name for keys in [SupportAbility_Table.keys(), ActionAbility_Table.keys(), Movement_Table.keys()] for item_name in keys
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| default_itempool_option = {
 | ||
|     item_name: ItemData.quantity for dic in [Magic_Table, Progression_Table, Summon_Table, Movement_Table, Forms_Table] for item_name, ItemData in dic.items()
 | ||
| }
 | ||
| item_dictionary_table = {
 | ||
|     **Reports_Table,
 | ||
|     **Progression_Table,
 | ||
|     **Forms_Table,
 | ||
|     **Magic_Table,
 | ||
|     **Summon_Table,
 | ||
|     **Armor_Table,
 | ||
|     **Movement_Table,
 | ||
|     **Staffs_Table,
 | ||
|     **Shields_Table,
 | ||
|     **Keyblade_Table,
 | ||
|     **Accessory_Table,
 | ||
|     **Usefull_Table,
 | ||
|     **SupportAbility_Table,
 | ||
|     **ActionAbility_Table,
 | ||
|     **Boosts_Table,
 | ||
|     **Wincon_Table,
 | ||
|     **Boosts_Table,
 | ||
|     **DonaldAbility_Table,
 | ||
|     **GoofyAbility_Table,
 | ||
|     **Consumable_Table
 | ||
| }
 | ||
| filler_items = [ItemName.PowerBoost, ItemName.MagicBoost, ItemName.DefenseBoost, ItemName.APBoost,
 | ||
|                 ItemName.Potion, ItemName.HiPotion, ItemName.Ether, ItemName.Elixir, ItemName.Megalixir,
 | ||
|                 ItemName.Tent, ItemName.DriveRecovery, ItemName.HighDriveRecovery,
 | ||
|                 ]
 | ||
| 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
 | ||
|                         visit_locking_dict["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],
 | ||
|     "hitlist":         [ItemName.Bounty],
 | ||
| }
 | 
