1164 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			1164 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import typing
 | 
						|
 | 
						|
from BaseClasses import MultiWorld, Region
 | 
						|
from . import Locations
 | 
						|
 | 
						|
from .Subclasses import KH2Location
 | 
						|
from .Names import LocationName, RegionName
 | 
						|
from .Items import Events_Table
 | 
						|
 | 
						|
KH2REGIONS: typing.Dict[str, typing.List[str]] = {
 | 
						|
    "Menu":                        [],
 | 
						|
    RegionName.GoA:                [
 | 
						|
        LocationName.GardenofAssemblageMap,
 | 
						|
        LocationName.GoALostIllusion,
 | 
						|
        LocationName.ProofofNonexistence,
 | 
						|
        # LocationName.DonaldStarting1,
 | 
						|
        # LocationName.DonaldStarting2,
 | 
						|
        # LocationName.GoofyStarting1,
 | 
						|
        # LocationName.GoofyStarting2
 | 
						|
    ],
 | 
						|
    RegionName.LoD:                [
 | 
						|
        LocationName.BambooGroveDarkShard,
 | 
						|
        LocationName.BambooGroveEther,
 | 
						|
        LocationName.BambooGroveMythrilShard,
 | 
						|
        LocationName.EncampmentAreaMap,
 | 
						|
        LocationName.Mission3,
 | 
						|
        LocationName.CheckpointHiPotion,
 | 
						|
        LocationName.CheckpointMythrilShard,
 | 
						|
        LocationName.MountainTrailLightningShard,
 | 
						|
        LocationName.MountainTrailRecoveryRecipe,
 | 
						|
        LocationName.MountainTrailEther,
 | 
						|
        LocationName.MountainTrailMythrilShard,
 | 
						|
        LocationName.VillageCaveAreaMap,
 | 
						|
        LocationName.VillageCaveAPBoost,
 | 
						|
        LocationName.VillageCaveDarkShard,
 | 
						|
        LocationName.VillageCaveBonus,
 | 
						|
        LocationName.RidgeFrostShard,
 | 
						|
        LocationName.RidgeAPBoost,
 | 
						|
    ],
 | 
						|
    RegionName.ShanYu:             [
 | 
						|
        LocationName.ShanYu,
 | 
						|
        LocationName.ShanYuGetBonus,
 | 
						|
        LocationName.HiddenDragon,
 | 
						|
        LocationName.GoofyShanYu,
 | 
						|
        LocationName.ShanYuEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.LoD2:               [],
 | 
						|
    RegionName.AnsemRiku:          [
 | 
						|
        LocationName.ThroneRoomTornPages,
 | 
						|
        LocationName.ThroneRoomPalaceMap,
 | 
						|
        LocationName.ThroneRoomAPBoost,
 | 
						|
        LocationName.ThroneRoomQueenRecipe,
 | 
						|
        LocationName.ThroneRoomAPBoost2,
 | 
						|
        LocationName.ThroneRoomOgreShield,
 | 
						|
        LocationName.ThroneRoomMythrilCrystal,
 | 
						|
        LocationName.ThroneRoomOrichalcum,
 | 
						|
        LocationName.AnsemRikuEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.StormRider:         [
 | 
						|
        LocationName.StormRider,
 | 
						|
        LocationName.GoofyStormRider,
 | 
						|
        LocationName.StormRiderEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DataXigbar:         [
 | 
						|
        LocationName.XigbarDataDefenseBoost,
 | 
						|
        LocationName.DataXigbarEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Ag:                 [
 | 
						|
        LocationName.AgrabahMap,
 | 
						|
        LocationName.AgrabahDarkShard,
 | 
						|
        LocationName.AgrabahMythrilShard,
 | 
						|
        LocationName.AgrabahHiPotion,
 | 
						|
        LocationName.AgrabahAPBoost,
 | 
						|
        LocationName.AgrabahMythrilStone,
 | 
						|
        LocationName.AgrabahMythrilShard2,
 | 
						|
        LocationName.AgrabahSerenityShard,
 | 
						|
        LocationName.BazaarMythrilGem,
 | 
						|
        LocationName.BazaarPowerShard,
 | 
						|
        LocationName.BazaarHiPotion,
 | 
						|
        LocationName.BazaarAPBoost,
 | 
						|
        LocationName.BazaarMythrilShard,
 | 
						|
        LocationName.PalaceWallsSkillRing,
 | 
						|
        LocationName.PalaceWallsMythrilStone,
 | 
						|
        LocationName.CaveEntrancePowerStone,
 | 
						|
        LocationName.CaveEntranceMythrilShard,
 | 
						|
        LocationName.ValleyofStoneMythrilStone,
 | 
						|
        LocationName.ValleyofStoneAPBoost,
 | 
						|
        LocationName.ValleyofStoneMythrilShard,
 | 
						|
        LocationName.ValleyofStoneHiPotion,
 | 
						|
        LocationName.AbuEscort,
 | 
						|
        LocationName.ChasmofChallengesCaveofWondersMap,
 | 
						|
        LocationName.ChasmofChallengesAPBoost,
 | 
						|
        LocationName.TreasureRoom,
 | 
						|
        LocationName.TreasureRoomAPBoost,
 | 
						|
        LocationName.TreasureRoomSerenityGem,
 | 
						|
        LocationName.GoofyTreasureRoom,
 | 
						|
        LocationName.DonaldAbuEscort
 | 
						|
    ],
 | 
						|
    RegionName.TwinLords:          [
 | 
						|
        LocationName.ElementalLords,
 | 
						|
        LocationName.LampCharm,
 | 
						|
        LocationName.TwinLordsEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Ag2:                [
 | 
						|
        LocationName.RuinedChamberTornPages,
 | 
						|
        LocationName.RuinedChamberRuinsMap,
 | 
						|
    ],
 | 
						|
    RegionName.GenieJafar:         [
 | 
						|
        LocationName.GenieJafar,
 | 
						|
        LocationName.WishingLamp,
 | 
						|
        LocationName.GenieJafarEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.DataLexaeus:        [
 | 
						|
        LocationName.LexaeusBonus,
 | 
						|
        LocationName.LexaeusASStrengthBeyondStrength,
 | 
						|
        LocationName.LexaeusDataLostIllusion,
 | 
						|
        LocationName.DataLexaeusEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Dc:                 [
 | 
						|
        LocationName.DCCourtyardMythrilShard,
 | 
						|
        LocationName.DCCourtyardStarRecipe,
 | 
						|
        LocationName.DCCourtyardAPBoost,
 | 
						|
        LocationName.DCCourtyardMythrilStone,
 | 
						|
        LocationName.DCCourtyardBlazingStone,
 | 
						|
        LocationName.DCCourtyardBlazingShard,
 | 
						|
        LocationName.DCCourtyardMythrilShard2,
 | 
						|
        LocationName.LibraryTornPages,
 | 
						|
        LocationName.DisneyCastleMap,
 | 
						|
        LocationName.MinnieEscort,
 | 
						|
        LocationName.MinnieEscortGetBonus
 | 
						|
    ],
 | 
						|
    RegionName.Tr:                 [
 | 
						|
        LocationName.CornerstoneHillMap,
 | 
						|
        LocationName.CornerstoneHillFrostShard,
 | 
						|
        LocationName.PierMythrilShard,
 | 
						|
        LocationName.PierHiPotion,
 | 
						|
    ],
 | 
						|
    RegionName.OldPete:            [
 | 
						|
        LocationName.WaterwayMythrilStone,
 | 
						|
        LocationName.WaterwayAPBoost,
 | 
						|
        LocationName.WaterwayFrostStone,
 | 
						|
        LocationName.WindowofTimeMap,
 | 
						|
        LocationName.BoatPete,
 | 
						|
        LocationName.DonaldBoatPete,
 | 
						|
        LocationName.DonaldBoatPeteGetBonus,
 | 
						|
        LocationName.OldPeteEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.FuturePete:         [
 | 
						|
        LocationName.FuturePete,
 | 
						|
        LocationName.FuturePeteGetBonus,
 | 
						|
        LocationName.Monochrome,
 | 
						|
        LocationName.WisdomForm,
 | 
						|
        LocationName.GoofyFuturePete,
 | 
						|
        LocationName.FuturePeteEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DataMarluxia:       [
 | 
						|
        LocationName.MarluxiaGetBonus,
 | 
						|
        LocationName.MarluxiaASEternalBlossom,
 | 
						|
        LocationName.MarluxiaDataLostIllusion,
 | 
						|
        LocationName.DataMarluxiaEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Terra:              [
 | 
						|
        LocationName.LingeringWillBonus,
 | 
						|
        LocationName.LingeringWillProofofConnection,
 | 
						|
        LocationName.LingeringWillManifestIllusion,
 | 
						|
        LocationName.TerraEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Ha1:                [
 | 
						|
        LocationName.PoohsHouse100AcreWoodMap,
 | 
						|
        LocationName.PoohsHouseAPBoost,
 | 
						|
        LocationName.PoohsHouseMythrilStone
 | 
						|
    ],
 | 
						|
    RegionName.Ha2:                [
 | 
						|
        LocationName.PigletsHouseDefenseBoost,
 | 
						|
        LocationName.PigletsHouseAPBoost,
 | 
						|
        LocationName.PigletsHouseMythrilGem
 | 
						|
    ],
 | 
						|
    RegionName.Ha3:                [
 | 
						|
        LocationName.RabbitsHouseDrawRing,
 | 
						|
        LocationName.RabbitsHouseMythrilCrystal,
 | 
						|
        LocationName.RabbitsHouseAPBoost,
 | 
						|
    ],
 | 
						|
    RegionName.Ha4:                [
 | 
						|
        LocationName.KangasHouseMagicBoost,
 | 
						|
        LocationName.KangasHouseAPBoost,
 | 
						|
        LocationName.KangasHouseOrichalcum,
 | 
						|
    ],
 | 
						|
    RegionName.Ha5:                [
 | 
						|
        LocationName.SpookyCaveMythrilGem,
 | 
						|
        LocationName.SpookyCaveAPBoost,
 | 
						|
        LocationName.SpookyCaveOrichalcum,
 | 
						|
        LocationName.SpookyCaveGuardRecipe,
 | 
						|
        LocationName.SpookyCaveMythrilCrystal,
 | 
						|
        LocationName.SpookyCaveAPBoost2,
 | 
						|
        LocationName.SweetMemories,
 | 
						|
        LocationName.SpookyCaveMap
 | 
						|
    ],
 | 
						|
    RegionName.Ha6:                [
 | 
						|
        LocationName.StarryHillCosmicRing,
 | 
						|
        LocationName.StarryHillStyleRecipe,
 | 
						|
        LocationName.StarryHillCureElement,
 | 
						|
        LocationName.StarryHillOrichalcumPlus
 | 
						|
    ],
 | 
						|
    RegionName.Pr:                 [
 | 
						|
        LocationName.RampartNavalMap,
 | 
						|
        LocationName.RampartMythrilStone,
 | 
						|
        LocationName.RampartDarkShard,
 | 
						|
        LocationName.TownDarkStone,
 | 
						|
        LocationName.TownAPBoost,
 | 
						|
        LocationName.TownMythrilShard,
 | 
						|
        LocationName.TownMythrilGem,
 | 
						|
        LocationName.CaveMouthBrightShard,
 | 
						|
        LocationName.CaveMouthMythrilShard,
 | 
						|
        LocationName.IsladeMuertaMap,
 | 
						|
        LocationName.BoatFight,
 | 
						|
        LocationName.InterceptorBarrels,
 | 
						|
        LocationName.PowderStoreAPBoost1,
 | 
						|
        LocationName.PowderStoreAPBoost2,
 | 
						|
        LocationName.MoonlightNookMythrilShard,
 | 
						|
        LocationName.MoonlightNookSerenityGem,
 | 
						|
        LocationName.MoonlightNookPowerStone,
 | 
						|
        LocationName.DonaldBoatFight,
 | 
						|
        LocationName.GoofyInterceptorBarrels,
 | 
						|
 | 
						|
    ],
 | 
						|
    RegionName.Barbosa:            [
 | 
						|
        LocationName.Barbossa,
 | 
						|
        LocationName.BarbossaGetBonus,
 | 
						|
        LocationName.FollowtheWind,
 | 
						|
        LocationName.GoofyBarbossa,
 | 
						|
        LocationName.GoofyBarbossaGetBonus,
 | 
						|
        LocationName.BarbosaEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Pr2:                [],
 | 
						|
    RegionName.GrimReaper1:        [
 | 
						|
        LocationName.GrimReaper1,
 | 
						|
        LocationName.InterceptorsHoldFeatherCharm,
 | 
						|
        LocationName.SeadriftKeepAPBoost,
 | 
						|
        LocationName.SeadriftKeepOrichalcum,
 | 
						|
        LocationName.SeadriftKeepMeteorStaff,
 | 
						|
        LocationName.SeadriftRowSerenityGem,
 | 
						|
        LocationName.SeadriftRowKingRecipe,
 | 
						|
        LocationName.SeadriftRowMythrilCrystal,
 | 
						|
        LocationName.SeadriftRowCursedMedallion,
 | 
						|
        LocationName.SeadriftRowShipGraveyardMap,
 | 
						|
        LocationName.GoofyGrimReaper1,
 | 
						|
        LocationName.GrimReaper1EventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.GrimReaper2:        [
 | 
						|
        LocationName.DonaladGrimReaper2,
 | 
						|
        LocationName.GrimReaper2,
 | 
						|
        LocationName.SecretAnsemReport6,
 | 
						|
        LocationName.GrimReaper2EventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.DataLuxord:         [
 | 
						|
        LocationName.LuxordDataAPBoost,
 | 
						|
        LocationName.DataLuxordEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Oc:                 [
 | 
						|
        LocationName.PassageMythrilShard,
 | 
						|
        LocationName.PassageMythrilStone,
 | 
						|
        LocationName.PassageEther,
 | 
						|
        LocationName.PassageAPBoost,
 | 
						|
        LocationName.PassageHiPotion,
 | 
						|
        LocationName.InnerChamberUnderworldMap,
 | 
						|
        LocationName.InnerChamberMythrilShard,
 | 
						|
    ],
 | 
						|
    RegionName.Cerberus:           [
 | 
						|
        LocationName.Cerberus,
 | 
						|
        LocationName.ColiseumMap,
 | 
						|
        LocationName.Urns,
 | 
						|
        LocationName.UnderworldEntrancePowerBoost,
 | 
						|
        LocationName.CavernsEntranceLucidShard,
 | 
						|
        LocationName.CavernsEntranceAPBoost,
 | 
						|
        LocationName.CavernsEntranceMythrilShard,
 | 
						|
        LocationName.TheLostRoadBrightShard,
 | 
						|
        LocationName.TheLostRoadEther,
 | 
						|
        LocationName.TheLostRoadMythrilShard,
 | 
						|
        LocationName.TheLostRoadMythrilStone,
 | 
						|
        LocationName.AtriumLucidStone,
 | 
						|
        LocationName.AtriumAPBoost,
 | 
						|
        LocationName.DemyxOC,
 | 
						|
        LocationName.SecretAnsemReport5,
 | 
						|
        LocationName.OlympusStone,
 | 
						|
        LocationName.TheLockCavernsMap,
 | 
						|
        LocationName.TheLockMythrilShard,
 | 
						|
        LocationName.TheLockAPBoost,
 | 
						|
        LocationName.CerberusEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.OlympusPete:        [
 | 
						|
        LocationName.PeteOC,
 | 
						|
        LocationName.DonaldDemyxOC,
 | 
						|
        LocationName.GoofyPeteOC,
 | 
						|
        LocationName.OlympusPeteEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Hydra:              [
 | 
						|
        LocationName.Hydra,
 | 
						|
        LocationName.HydraGetBonus,
 | 
						|
        LocationName.HerosCrest,
 | 
						|
        LocationName.HydraEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Oc2:                [
 | 
						|
        LocationName.AuronsStatue,
 | 
						|
    ],
 | 
						|
    RegionName.Hades:              [
 | 
						|
        LocationName.Hades,
 | 
						|
        LocationName.HadesGetBonus,
 | 
						|
        LocationName.GuardianSoul,
 | 
						|
        LocationName.HadesEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.OcPainAndPanicCup:  [
 | 
						|
        LocationName.ProtectBeltPainandPanicCup,
 | 
						|
        LocationName.SerenityGemPainandPanicCup,
 | 
						|
        LocationName.OcPainAndPanicCupEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.OcCerberusCup:      [
 | 
						|
        LocationName.RisingDragonCerberusCup,
 | 
						|
        LocationName.SerenityCrystalCerberusCup,
 | 
						|
        LocationName.OcCerberusCupEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Oc2TitanCup:        [
 | 
						|
        LocationName.GenjiShieldTitanCup,
 | 
						|
        LocationName.SkillfulRingTitanCup,
 | 
						|
        LocationName.Oc2TitanCupEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Oc2GofCup:          [
 | 
						|
        LocationName.FatalCrestGoddessofFateCup,
 | 
						|
        LocationName.OrichalcumPlusGoddessofFateCup,
 | 
						|
        LocationName.Oc2GofCupEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.HadesCups:          [
 | 
						|
        LocationName.HadesCupTrophyParadoxCups,
 | 
						|
        LocationName.HadesCupEventLocations
 | 
						|
    ],
 | 
						|
    RegionName.DataZexion:         [
 | 
						|
        LocationName.ZexionBonus,
 | 
						|
        LocationName.ZexionASBookofShadows,
 | 
						|
        LocationName.ZexionDataLostIllusion,
 | 
						|
        LocationName.GoofyZexion,
 | 
						|
        LocationName.DataZexionEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Bc:                 [
 | 
						|
        LocationName.BCCourtyardAPBoost,
 | 
						|
        LocationName.BCCourtyardHiPotion,
 | 
						|
        LocationName.BCCourtyardMythrilShard,
 | 
						|
        LocationName.BellesRoomCastleMap,
 | 
						|
        LocationName.BellesRoomMegaRecipe,
 | 
						|
        LocationName.TheEastWingMythrilShard,
 | 
						|
        LocationName.TheEastWingTent,
 | 
						|
        LocationName.TheWestHallHiPotion,
 | 
						|
        LocationName.TheWestHallPowerShard,
 | 
						|
        LocationName.TheWestHallMythrilShard2,
 | 
						|
        LocationName.TheWestHallBrightStone,
 | 
						|
        LocationName.TheWestHallMythrilShard,
 | 
						|
    ],
 | 
						|
    RegionName.Thresholder:        [
 | 
						|
        LocationName.Thresholder,
 | 
						|
        LocationName.DungeonBasementMap,
 | 
						|
        LocationName.DungeonAPBoost,
 | 
						|
        LocationName.SecretPassageMythrilShard,
 | 
						|
        LocationName.SecretPassageHiPotion,
 | 
						|
        LocationName.SecretPassageLucidShard,
 | 
						|
        LocationName.TheWestHallAPBoostPostDungeon,
 | 
						|
        LocationName.TheWestWingMythrilShard,
 | 
						|
        LocationName.TheWestWingTent,
 | 
						|
        LocationName.DonaldThresholder,
 | 
						|
        LocationName.ThresholderEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Beast:              [
 | 
						|
        LocationName.Beast,
 | 
						|
        LocationName.TheBeastsRoomBlazingShard,
 | 
						|
        LocationName.GoofyBeast,
 | 
						|
        LocationName.BeastEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DarkThorn:          [
 | 
						|
        LocationName.DarkThorn,
 | 
						|
        LocationName.DarkThornGetBonus,
 | 
						|
        LocationName.DarkThornCureElement,
 | 
						|
        LocationName.DarkThornEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Bc2:                [
 | 
						|
        LocationName.RumblingRose,
 | 
						|
        LocationName.CastleWallsMap
 | 
						|
    ],
 | 
						|
    RegionName.Xaldin:             [
 | 
						|
        LocationName.Xaldin,
 | 
						|
        LocationName.XaldinGetBonus,
 | 
						|
        LocationName.DonaldXaldinGetBonus,
 | 
						|
        LocationName.SecretAnsemReport4,
 | 
						|
        LocationName.XaldinEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DataXaldin:         [
 | 
						|
        LocationName.XaldinDataDefenseBoost,
 | 
						|
        LocationName.DataXaldinEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Sp:                 [
 | 
						|
        LocationName.PitCellAreaMap,
 | 
						|
        LocationName.PitCellMythrilCrystal,
 | 
						|
        LocationName.CanyonDarkCrystal,
 | 
						|
        LocationName.CanyonMythrilStone,
 | 
						|
        LocationName.CanyonMythrilGem,
 | 
						|
        LocationName.CanyonFrostCrystal,
 | 
						|
        LocationName.Screens,
 | 
						|
        LocationName.HallwayPowerCrystal,
 | 
						|
        LocationName.HallwayAPBoost,
 | 
						|
        LocationName.CommunicationsRoomIOTowerMap,
 | 
						|
        LocationName.CommunicationsRoomGaiaBelt,
 | 
						|
        LocationName.DonaldScreens,
 | 
						|
    ],
 | 
						|
    RegionName.HostileProgram:     [
 | 
						|
        LocationName.HostileProgram,
 | 
						|
        LocationName.HostileProgramGetBonus,
 | 
						|
        LocationName.PhotonDebugger,
 | 
						|
        LocationName.GoofyHostileProgram,
 | 
						|
        LocationName.HostileProgramEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Sp2:                [
 | 
						|
        LocationName.SolarSailer,
 | 
						|
        LocationName.CentralComputerCoreAPBoost,
 | 
						|
        LocationName.CentralComputerCoreOrichalcumPlus,
 | 
						|
        LocationName.CentralComputerCoreCosmicArts,
 | 
						|
        LocationName.CentralComputerCoreMap,
 | 
						|
        LocationName.DonaldSolarSailer
 | 
						|
    ],
 | 
						|
    RegionName.Mcp:                [
 | 
						|
        LocationName.MCP,
 | 
						|
        LocationName.MCPGetBonus,
 | 
						|
        LocationName.McpEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DataLarxene:        [
 | 
						|
        LocationName.LarxeneBonus,
 | 
						|
        LocationName.LarxeneASCloakedThunder,
 | 
						|
        LocationName.LarxeneDataLostIllusion,
 | 
						|
        LocationName.DataLarxeneEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Ht:                 [
 | 
						|
        LocationName.GraveyardMythrilShard,
 | 
						|
        LocationName.GraveyardSerenityGem,
 | 
						|
        LocationName.FinklesteinsLabHalloweenTownMap,
 | 
						|
        LocationName.TownSquareMythrilStone,
 | 
						|
        LocationName.TownSquareEnergyShard,
 | 
						|
        LocationName.HinterlandsLightningShard,
 | 
						|
        LocationName.HinterlandsMythrilStone,
 | 
						|
        LocationName.HinterlandsAPBoost,
 | 
						|
        LocationName.CandyCaneLaneMegaPotion,
 | 
						|
        LocationName.CandyCaneLaneMythrilGem,
 | 
						|
        LocationName.CandyCaneLaneLightningStone,
 | 
						|
        LocationName.CandyCaneLaneMythrilStone,
 | 
						|
        LocationName.SantasHouseChristmasTownMap,
 | 
						|
        LocationName.SantasHouseAPBoost,
 | 
						|
    ],
 | 
						|
    RegionName.PrisonKeeper:       [
 | 
						|
        LocationName.PrisonKeeper,
 | 
						|
        LocationName.DonaldPrisonKeeper,
 | 
						|
        LocationName.PrisonKeeperEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.OogieBoogie:        [
 | 
						|
        LocationName.OogieBoogie,
 | 
						|
        LocationName.OogieBoogieMagnetElement,
 | 
						|
        LocationName.GoofyOogieBoogie,
 | 
						|
        LocationName.OogieBoogieEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Ht2:                [
 | 
						|
        LocationName.Lock,
 | 
						|
        LocationName.Present,
 | 
						|
        LocationName.DecoyPresents,
 | 
						|
        LocationName.GoofyLock
 | 
						|
    ],
 | 
						|
    RegionName.Experiment:         [
 | 
						|
        LocationName.Experiment,
 | 
						|
        LocationName.DecisivePumpkin,
 | 
						|
        LocationName.DonaldExperiment,
 | 
						|
        LocationName.ExperimentEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.DataVexen:          [
 | 
						|
        LocationName.VexenBonus,
 | 
						|
        LocationName.VexenASRoadtoDiscovery,
 | 
						|
        LocationName.VexenDataLostIllusion,
 | 
						|
        LocationName.DataVexenEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Hb:                 [
 | 
						|
        LocationName.MarketplaceMap,
 | 
						|
        LocationName.BoroughDriveRecovery,
 | 
						|
        LocationName.BoroughAPBoost,
 | 
						|
        LocationName.BoroughHiPotion,
 | 
						|
        LocationName.BoroughMythrilShard,
 | 
						|
        LocationName.BoroughDarkShard,
 | 
						|
        LocationName.MerlinsHouseMembershipCard,
 | 
						|
        LocationName.MerlinsHouseBlizzardElement,
 | 
						|
        LocationName.Bailey,
 | 
						|
        LocationName.BaileySecretAnsemReport7,
 | 
						|
        LocationName.BaseballCharm
 | 
						|
    ],
 | 
						|
    RegionName.Hb2:                [
 | 
						|
        LocationName.PosternCastlePerimeterMap,
 | 
						|
        LocationName.PosternMythrilGem,
 | 
						|
        LocationName.PosternAPBoost,
 | 
						|
        LocationName.CorridorsMythrilStone,
 | 
						|
        LocationName.CorridorsMythrilCrystal,
 | 
						|
        LocationName.CorridorsDarkCrystal,
 | 
						|
        LocationName.CorridorsAPBoost,
 | 
						|
        LocationName.AnsemsStudyMasterForm,
 | 
						|
        LocationName.AnsemsStudySleepingLion,
 | 
						|
        LocationName.AnsemsStudySkillRecipe,
 | 
						|
        LocationName.AnsemsStudyUkuleleCharm,
 | 
						|
        LocationName.RestorationSiteMoonRecipe,
 | 
						|
        LocationName.RestorationSiteAPBoost,
 | 
						|
    ],
 | 
						|
    RegionName.HBDemyx:            [
 | 
						|
        LocationName.DonaldDemyxHBGetBonus,
 | 
						|
        LocationName.DemyxHB,
 | 
						|
        LocationName.DemyxHBGetBonus,
 | 
						|
        LocationName.FFFightsCureElement,
 | 
						|
        LocationName.CrystalFissureTornPages,
 | 
						|
        LocationName.CrystalFissureTheGreatMawMap,
 | 
						|
        LocationName.CrystalFissureEnergyCrystal,
 | 
						|
        LocationName.CrystalFissureAPBoost,
 | 
						|
        LocationName.HBDemyxEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.ThousandHeartless:  [
 | 
						|
        LocationName.ThousandHeartless,
 | 
						|
        LocationName.ThousandHeartlessSecretAnsemReport1,
 | 
						|
        LocationName.ThousandHeartlessIceCream,
 | 
						|
        LocationName.ThousandHeartlessPicture,
 | 
						|
        LocationName.PosternGullWing,
 | 
						|
        LocationName.HeartlessManufactoryCosmicChain,
 | 
						|
        LocationName.ThousandHeartlessEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.DataDemyx:          [
 | 
						|
        LocationName.DemyxDataAPBoost,
 | 
						|
        LocationName.DataDemyxEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Mushroom13:         [
 | 
						|
        LocationName.WinnersProof,
 | 
						|
        LocationName.ProofofPeace,
 | 
						|
        LocationName.Mushroom13EventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Sephi:              [
 | 
						|
        LocationName.SephirothBonus,
 | 
						|
        LocationName.SephirothFenrir,
 | 
						|
        LocationName.SephiEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.CoR:                [
 | 
						|
        LocationName.CoRDepthsAPBoost,
 | 
						|
        LocationName.CoRDepthsPowerCrystal,
 | 
						|
        LocationName.CoRDepthsFrostCrystal,
 | 
						|
        LocationName.CoRDepthsManifestIllusion,
 | 
						|
        LocationName.CoRDepthsAPBoost2,
 | 
						|
        LocationName.CoRMineshaftLowerLevelDepthsofRemembranceMap,
 | 
						|
        LocationName.CoRMineshaftLowerLevelAPBoost,
 | 
						|
    ],
 | 
						|
    RegionName.CorFirstFight:      [
 | 
						|
        LocationName.CoRDepthsUpperLevelRemembranceGem,
 | 
						|
        LocationName.CoRMiningAreaSerenityGem,
 | 
						|
        LocationName.CoRMiningAreaAPBoost,
 | 
						|
        LocationName.CoRMiningAreaSerenityCrystal,
 | 
						|
        LocationName.CoRMiningAreaManifestIllusion,
 | 
						|
        LocationName.CoRMiningAreaSerenityGem2,
 | 
						|
        LocationName.CoRMiningAreaDarkRemembranceMap,
 | 
						|
        LocationName.CorFirstFightEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.CorSecondFight:     [
 | 
						|
        LocationName.CoRMineshaftMidLevelPowerBoost,
 | 
						|
        LocationName.CoREngineChamberSerenityCrystal,
 | 
						|
        LocationName.CoREngineChamberRemembranceCrystal,
 | 
						|
        LocationName.CoREngineChamberAPBoost,
 | 
						|
        LocationName.CoREngineChamberManifestIllusion,
 | 
						|
        LocationName.CoRMineshaftUpperLevelMagicBoost,
 | 
						|
        LocationName.CorSecondFightEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Transport:          [
 | 
						|
        LocationName.CoRMineshaftUpperLevelAPBoost,  # last chest
 | 
						|
        LocationName.TransporttoRemembrance,
 | 
						|
        LocationName.TransportEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Pl:                 [
 | 
						|
        LocationName.GorgeSavannahMap,
 | 
						|
        LocationName.GorgeDarkGem,
 | 
						|
        LocationName.GorgeMythrilStone,
 | 
						|
        LocationName.ElephantGraveyardFrostGem,
 | 
						|
        LocationName.ElephantGraveyardMythrilStone,
 | 
						|
        LocationName.ElephantGraveyardBrightStone,
 | 
						|
        LocationName.ElephantGraveyardAPBoost,
 | 
						|
        LocationName.ElephantGraveyardMythrilShard,
 | 
						|
        LocationName.PrideRockMap,
 | 
						|
        LocationName.PrideRockMythrilStone,
 | 
						|
        LocationName.PrideRockSerenityCrystal,
 | 
						|
        LocationName.WildebeestValleyEnergyStone,
 | 
						|
        LocationName.WildebeestValleyAPBoost,
 | 
						|
        LocationName.WildebeestValleyMythrilGem,
 | 
						|
        LocationName.WildebeestValleyMythrilStone,
 | 
						|
        LocationName.WildebeestValleyLucidGem,
 | 
						|
        LocationName.WastelandsMythrilShard,
 | 
						|
        LocationName.WastelandsSerenityGem,
 | 
						|
        LocationName.WastelandsMythrilStone,
 | 
						|
        LocationName.JungleSerenityGem,
 | 
						|
        LocationName.JungleMythrilStone,
 | 
						|
        LocationName.JungleSerenityCrystal,
 | 
						|
        LocationName.OasisMap,
 | 
						|
        LocationName.OasisTornPages,
 | 
						|
        LocationName.OasisAPBoost,
 | 
						|
        LocationName.CircleofLife,
 | 
						|
        LocationName.Hyenas1,
 | 
						|
 | 
						|
        LocationName.GoofyHyenas1
 | 
						|
    ],
 | 
						|
    RegionName.Scar:               [
 | 
						|
        LocationName.Scar,
 | 
						|
        LocationName.ScarFireElement,
 | 
						|
        LocationName.DonaldScar,
 | 
						|
        LocationName.ScarEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Pl2:                [
 | 
						|
        LocationName.Hyenas2,
 | 
						|
        LocationName.GoofyHyenas2
 | 
						|
    ],
 | 
						|
    RegionName.GroundShaker:       [
 | 
						|
        LocationName.Groundshaker,
 | 
						|
        LocationName.GroundshakerGetBonus,
 | 
						|
        LocationName.GroundShakerEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.DataSaix:           [
 | 
						|
        LocationName.SaixDataDefenseBoost,
 | 
						|
        LocationName.DataSaixEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Stt:                [
 | 
						|
        LocationName.TwilightTownMap,
 | 
						|
        LocationName.MunnyPouchOlette,
 | 
						|
        LocationName.StationDusks,
 | 
						|
        LocationName.StationofSerenityPotion,
 | 
						|
        LocationName.StationofCallingPotion,
 | 
						|
    ],
 | 
						|
    RegionName.TwilightThorn:      [
 | 
						|
        LocationName.TwilightThorn,
 | 
						|
        LocationName.TwilightThornEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Axel1:              [
 | 
						|
        LocationName.Axel1,
 | 
						|
        LocationName.JunkChampionBelt,
 | 
						|
        LocationName.JunkMedal,
 | 
						|
        LocationName.TheStruggleTrophy,
 | 
						|
        LocationName.CentralStationPotion1,
 | 
						|
        LocationName.STTCentralStationHiPotion,
 | 
						|
        LocationName.CentralStationPotion2,
 | 
						|
        LocationName.SunsetTerraceAbilityRing,
 | 
						|
        LocationName.SunsetTerraceHiPotion,
 | 
						|
        LocationName.SunsetTerracePotion1,
 | 
						|
        LocationName.SunsetTerracePotion2,
 | 
						|
        LocationName.MansionFoyerHiPotion,
 | 
						|
        LocationName.MansionFoyerPotion1,
 | 
						|
        LocationName.MansionFoyerPotion2,
 | 
						|
        LocationName.MansionDiningRoomElvenBandanna,
 | 
						|
        LocationName.MansionDiningRoomPotion,
 | 
						|
        LocationName.NaminesSketches,
 | 
						|
        LocationName.MansionMap,
 | 
						|
        LocationName.MansionLibraryHiPotion,
 | 
						|
        LocationName.Axel1EventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Axel2:              [
 | 
						|
        LocationName.Axel2,
 | 
						|
        LocationName.MansionBasementCorridorHiPotion,
 | 
						|
        LocationName.Axel2EventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DataRoxas:          [
 | 
						|
        LocationName.RoxasDataMagicBoost,
 | 
						|
        LocationName.DataRoxasEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Tt:                 [
 | 
						|
        LocationName.OldMansionPotion,
 | 
						|
        LocationName.OldMansionMythrilShard,
 | 
						|
        LocationName.TheWoodsPotion,
 | 
						|
        LocationName.TheWoodsMythrilShard,
 | 
						|
        LocationName.TheWoodsHiPotion,
 | 
						|
        LocationName.TramCommonHiPotion,
 | 
						|
        LocationName.TramCommonAPBoost,
 | 
						|
        LocationName.TramCommonTent,
 | 
						|
        LocationName.TramCommonMythrilShard1,
 | 
						|
        LocationName.TramCommonPotion1,
 | 
						|
        LocationName.TramCommonMythrilShard2,
 | 
						|
        LocationName.TramCommonPotion2,
 | 
						|
        LocationName.StationPlazaSecretAnsemReport2,
 | 
						|
        LocationName.MunnyPouchMickey,
 | 
						|
        LocationName.CrystalOrb,
 | 
						|
        LocationName.CentralStationTent,
 | 
						|
        LocationName.TTCentralStationHiPotion,
 | 
						|
        LocationName.CentralStationMythrilShard,
 | 
						|
        LocationName.TheTowerPotion,
 | 
						|
        LocationName.TheTowerHiPotion,
 | 
						|
        LocationName.TheTowerEther,
 | 
						|
        LocationName.TowerEntrywayEther,
 | 
						|
        LocationName.TowerEntrywayMythrilShard,
 | 
						|
        LocationName.SorcerersLoftTowerMap,
 | 
						|
        LocationName.TowerWardrobeMythrilStone,
 | 
						|
        LocationName.StarSeeker,
 | 
						|
        LocationName.ValorForm
 | 
						|
    ],
 | 
						|
    RegionName.Tt2:                [
 | 
						|
        LocationName.SeifersTrophy,
 | 
						|
        LocationName.Oathkeeper,
 | 
						|
        LocationName.LimitForm
 | 
						|
    ],
 | 
						|
    RegionName.Tt3:                [
 | 
						|
        LocationName.UndergroundConcourseMythrilGem,
 | 
						|
        LocationName.UndergroundConcourseAPBoost,
 | 
						|
        LocationName.UndergroundConcourseMythrilCrystal,
 | 
						|
        LocationName.UndergroundConcourseOrichalcum,
 | 
						|
        LocationName.TunnelwayOrichalcum,
 | 
						|
        LocationName.TunnelwayMythrilCrystal,
 | 
						|
        LocationName.SunsetTerraceOrichalcumPlus,
 | 
						|
        LocationName.SunsetTerraceMythrilShard,
 | 
						|
        LocationName.SunsetTerraceMythrilCrystal,
 | 
						|
        LocationName.SunsetTerraceAPBoost,
 | 
						|
        LocationName.MansionNobodies,
 | 
						|
        LocationName.MansionFoyerMythrilCrystal,
 | 
						|
        LocationName.MansionFoyerMythrilStone,
 | 
						|
        LocationName.MansionFoyerSerenityCrystal,
 | 
						|
        LocationName.MansionDiningRoomMythrilCrystal,
 | 
						|
        LocationName.MansionDiningRoomMythrilStone,
 | 
						|
        LocationName.MansionLibraryOrichalcum,
 | 
						|
        LocationName.BeamSecretAnsemReport10,
 | 
						|
        LocationName.MansionBasementCorridorUltimateRecipe,
 | 
						|
        LocationName.BetwixtandBetween,
 | 
						|
        LocationName.BetwixtandBetweenBondofFlame,
 | 
						|
        LocationName.DonaldMansionNobodies
 | 
						|
    ],
 | 
						|
    RegionName.DataAxel:           [
 | 
						|
        LocationName.AxelDataMagicBoost,
 | 
						|
        LocationName.DataAxelEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Twtnw:              [
 | 
						|
        LocationName.FragmentCrossingMythrilStone,
 | 
						|
        LocationName.FragmentCrossingMythrilCrystal,
 | 
						|
        LocationName.FragmentCrossingAPBoost,
 | 
						|
        LocationName.FragmentCrossingOrichalcum
 | 
						|
    ],
 | 
						|
    RegionName.Roxas:              [
 | 
						|
        LocationName.Roxas,
 | 
						|
        LocationName.RoxasGetBonus,
 | 
						|
        LocationName.RoxasSecretAnsemReport8,
 | 
						|
        LocationName.TwoBecomeOne,
 | 
						|
        LocationName.MemorysSkyscaperMythrilCrystal,
 | 
						|
        LocationName.MemorysSkyscaperAPBoost,
 | 
						|
        LocationName.MemorysSkyscaperMythrilStone,
 | 
						|
        LocationName.TheBrinkofDespairDarkCityMap,
 | 
						|
        LocationName.TheBrinkofDespairOrichalcumPlus,
 | 
						|
        LocationName.NothingsCallMythrilGem,
 | 
						|
        LocationName.NothingsCallOrichalcum,
 | 
						|
        LocationName.TwilightsViewCosmicBelt,
 | 
						|
        LocationName.RoxasEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.Xigbar:             [
 | 
						|
        LocationName.XigbarBonus,
 | 
						|
        LocationName.XigbarSecretAnsemReport3,
 | 
						|
        LocationName.NaughtsSkywayMythrilGem,
 | 
						|
        LocationName.NaughtsSkywayOrichalcum,
 | 
						|
        LocationName.NaughtsSkywayMythrilCrystal,
 | 
						|
        LocationName.Oblivion,
 | 
						|
        LocationName.CastleThatNeverWasMap,
 | 
						|
        LocationName.XigbarEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Luxord:             [
 | 
						|
        LocationName.Luxord,
 | 
						|
        LocationName.LuxordGetBonus,
 | 
						|
        LocationName.LuxordSecretAnsemReport9,
 | 
						|
        LocationName.LuxordEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Saix:               [
 | 
						|
        LocationName.SaixBonus,
 | 
						|
        LocationName.SaixSecretAnsemReport12,
 | 
						|
        LocationName.SaixEventLocation,
 | 
						|
    ],
 | 
						|
    RegionName.Twtnw2:             [
 | 
						|
        LocationName.PreXemnas1SecretAnsemReport11,
 | 
						|
        LocationName.RuinandCreationsPassageMythrilStone,
 | 
						|
        LocationName.RuinandCreationsPassageAPBoost,
 | 
						|
        LocationName.RuinandCreationsPassageMythrilCrystal,
 | 
						|
        LocationName.RuinandCreationsPassageOrichalcum
 | 
						|
    ],
 | 
						|
    RegionName.Xemnas:             [
 | 
						|
        LocationName.Xemnas1,
 | 
						|
        LocationName.Xemnas1GetBonus,
 | 
						|
        LocationName.Xemnas1SecretAnsemReport13,
 | 
						|
        LocationName.XemnasEventLocation
 | 
						|
 | 
						|
    ],
 | 
						|
    RegionName.ArmoredXemnas:      [
 | 
						|
        LocationName.ArmoredXemnasEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.ArmoredXemnas2:     [
 | 
						|
        LocationName.ArmoredXemnas2EventLocation
 | 
						|
    ],
 | 
						|
    RegionName.FinalXemnas:        [
 | 
						|
        LocationName.FinalXemnasEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.DataXemnas:         [
 | 
						|
        LocationName.XemnasDataPowerBoost,
 | 
						|
        LocationName.DataXemnasEventLocation
 | 
						|
    ],
 | 
						|
    RegionName.AtlanticaSongOne:   [
 | 
						|
        LocationName.UnderseaKingdomMap
 | 
						|
    ],
 | 
						|
    RegionName.AtlanticaSongTwo:   [
 | 
						|
 | 
						|
    ],
 | 
						|
    RegionName.AtlanticaSongThree: [
 | 
						|
        LocationName.MysteriousAbyss
 | 
						|
    ],
 | 
						|
    RegionName.AtlanticaSongFour:  [
 | 
						|
        LocationName.MusicalBlizzardElement,
 | 
						|
        LocationName.MusicalOrichalcumPlus
 | 
						|
    ],
 | 
						|
    RegionName.Valor:              [
 | 
						|
        LocationName.Valorlvl2,
 | 
						|
        LocationName.Valorlvl3,
 | 
						|
        LocationName.Valorlvl4,
 | 
						|
        LocationName.Valorlvl5,
 | 
						|
        LocationName.Valorlvl6,
 | 
						|
        LocationName.Valorlvl7
 | 
						|
    ],
 | 
						|
    RegionName.Wisdom:             [
 | 
						|
        LocationName.Wisdomlvl2,
 | 
						|
        LocationName.Wisdomlvl3,
 | 
						|
        LocationName.Wisdomlvl4,
 | 
						|
        LocationName.Wisdomlvl5,
 | 
						|
        LocationName.Wisdomlvl6,
 | 
						|
        LocationName.Wisdomlvl7
 | 
						|
    ],
 | 
						|
    RegionName.Limit:              [
 | 
						|
        LocationName.Limitlvl2,
 | 
						|
        LocationName.Limitlvl3,
 | 
						|
        LocationName.Limitlvl4,
 | 
						|
        LocationName.Limitlvl5,
 | 
						|
        LocationName.Limitlvl6,
 | 
						|
        LocationName.Limitlvl7
 | 
						|
    ],
 | 
						|
    RegionName.Master:             [
 | 
						|
        LocationName.Masterlvl2,
 | 
						|
        LocationName.Masterlvl3,
 | 
						|
        LocationName.Masterlvl4,
 | 
						|
        LocationName.Masterlvl5,
 | 
						|
        LocationName.Masterlvl6,
 | 
						|
        LocationName.Masterlvl7
 | 
						|
    ],
 | 
						|
    RegionName.Final:              [
 | 
						|
        LocationName.Finallvl2,
 | 
						|
        LocationName.Finallvl3,
 | 
						|
        LocationName.Finallvl4,
 | 
						|
        LocationName.Finallvl5,
 | 
						|
        LocationName.Finallvl6,
 | 
						|
        LocationName.Finallvl7
 | 
						|
    ],
 | 
						|
    RegionName.Keyblade:           [
 | 
						|
        LocationName.FAKESlot,
 | 
						|
        LocationName.DetectionSaberSlot,
 | 
						|
        LocationName.EdgeofUltimaSlot,
 | 
						|
        LocationName.KingdomKeySlot,
 | 
						|
        LocationName.OathkeeperSlot,
 | 
						|
        LocationName.OblivionSlot,
 | 
						|
        LocationName.StarSeekerSlot,
 | 
						|
        LocationName.HiddenDragonSlot,
 | 
						|
        LocationName.HerosCrestSlot,
 | 
						|
        LocationName.MonochromeSlot,
 | 
						|
        LocationName.FollowtheWindSlot,
 | 
						|
        LocationName.CircleofLifeSlot,
 | 
						|
        LocationName.PhotonDebuggerSlot,
 | 
						|
        LocationName.GullWingSlot,
 | 
						|
        LocationName.RumblingRoseSlot,
 | 
						|
        LocationName.GuardianSoulSlot,
 | 
						|
        LocationName.WishingLampSlot,
 | 
						|
        LocationName.DecisivePumpkinSlot,
 | 
						|
        LocationName.SweetMemoriesSlot,
 | 
						|
        LocationName.MysteriousAbyssSlot,
 | 
						|
        LocationName.SleepingLionSlot,
 | 
						|
        LocationName.BondofFlameSlot,
 | 
						|
        LocationName.TwoBecomeOneSlot,
 | 
						|
        LocationName.FatalCrestSlot,
 | 
						|
        LocationName.FenrirSlot,
 | 
						|
        LocationName.UltimaWeaponSlot,
 | 
						|
        LocationName.WinnersProofSlot,
 | 
						|
        LocationName.PurebloodSlot,
 | 
						|
        LocationName.Centurion2,
 | 
						|
        LocationName.CometStaff,
 | 
						|
        LocationName.HammerStaff,
 | 
						|
        LocationName.LordsBroom,
 | 
						|
        LocationName.MagesStaff,
 | 
						|
        LocationName.MeteorStaff,
 | 
						|
        LocationName.NobodyLance,
 | 
						|
        LocationName.PreciousMushroom,
 | 
						|
        LocationName.PreciousMushroom2,
 | 
						|
        LocationName.PremiumMushroom,
 | 
						|
        LocationName.RisingDragon,
 | 
						|
        LocationName.SaveTheQueen2,
 | 
						|
        LocationName.ShamansRelic,
 | 
						|
        LocationName.VictoryBell,
 | 
						|
        LocationName.WisdomWand,
 | 
						|
 | 
						|
        LocationName.AdamantShield,
 | 
						|
        LocationName.AkashicRecord,
 | 
						|
        LocationName.ChainGear,
 | 
						|
        LocationName.DreamCloud,
 | 
						|
        LocationName.FallingStar,
 | 
						|
        LocationName.FrozenPride2,
 | 
						|
        LocationName.GenjiShield,
 | 
						|
        LocationName.KnightDefender,
 | 
						|
        LocationName.KnightsShield,
 | 
						|
        LocationName.MajesticMushroom,
 | 
						|
        LocationName.MajesticMushroom2,
 | 
						|
        LocationName.NobodyGuard,
 | 
						|
        LocationName.OgreShield,
 | 
						|
        LocationName.SaveTheKing2,
 | 
						|
        LocationName.UltimateMushroom
 | 
						|
    ],
 | 
						|
}
 | 
						|
level_region_list = [
 | 
						|
    RegionName.LevelsVS1,
 | 
						|
    RegionName.LevelsVS3,
 | 
						|
    RegionName.LevelsVS6,
 | 
						|
    RegionName.LevelsVS9,
 | 
						|
    RegionName.LevelsVS12,
 | 
						|
    RegionName.LevelsVS15,
 | 
						|
    RegionName.LevelsVS18,
 | 
						|
    RegionName.LevelsVS21,
 | 
						|
    RegionName.LevelsVS24,
 | 
						|
    RegionName.LevelsVS26,
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
def create_regions(self):
 | 
						|
    # Level region depends on level depth.
 | 
						|
    # for every 5 levels there should be +3 visit locking
 | 
						|
    # level 50
 | 
						|
    multiworld = self.multiworld
 | 
						|
    player = self.player
 | 
						|
    active_locations = self.location_name_to_id
 | 
						|
 | 
						|
    for level_region_name in level_region_list:
 | 
						|
        KH2REGIONS[level_region_name] = []
 | 
						|
    if multiworld.LevelDepth[player] == "level_50":
 | 
						|
        KH2REGIONS[RegionName.LevelsVS1] = [LocationName.Lvl2, LocationName.Lvl4, LocationName.Lvl7, LocationName.Lvl9,
 | 
						|
                                            LocationName.Lvl10]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS3] = [LocationName.Lvl12, LocationName.Lvl14, LocationName.Lvl15,
 | 
						|
                                            LocationName.Lvl17,
 | 
						|
                                            LocationName.Lvl20]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS6] = [LocationName.Lvl23, LocationName.Lvl25, LocationName.Lvl28,
 | 
						|
                                            LocationName.Lvl30]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS9] = [LocationName.Lvl32, LocationName.Lvl34, LocationName.Lvl36,
 | 
						|
                                            LocationName.Lvl39, LocationName.Lvl41]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS12] = [LocationName.Lvl44, LocationName.Lvl46, LocationName.Lvl48]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS15] = [LocationName.Lvl50]
 | 
						|
 | 
						|
    # level 99
 | 
						|
    elif multiworld.LevelDepth[player] == "level_99":
 | 
						|
        KH2REGIONS[RegionName.LevelsVS1] = [LocationName.Lvl7, LocationName.Lvl9]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS3] = [LocationName.Lvl12, LocationName.Lvl15, LocationName.Lvl17,
 | 
						|
                                            LocationName.Lvl20]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS6] = [LocationName.Lvl23, LocationName.Lvl25, LocationName.Lvl28]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS9] = [LocationName.Lvl31, LocationName.Lvl33, LocationName.Lvl36,
 | 
						|
                                            LocationName.Lvl39]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS12] = [LocationName.Lvl41, LocationName.Lvl44, LocationName.Lvl47,
 | 
						|
                                             LocationName.Lvl49]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS15] = [LocationName.Lvl53, LocationName.Lvl59]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS18] = [LocationName.Lvl65]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS21] = [LocationName.Lvl73]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS24] = [LocationName.Lvl85]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS26] = [LocationName.Lvl99]
 | 
						|
    # level sanity
 | 
						|
    # has to be [] instead of {} for in
 | 
						|
    elif multiworld.LevelDepth[player] in ["level_50_sanity", "level_99_sanity"]:
 | 
						|
        KH2REGIONS[RegionName.LevelsVS1] = [LocationName.Lvl2, LocationName.Lvl3, LocationName.Lvl4, LocationName.Lvl5,
 | 
						|
                                            LocationName.Lvl6,
 | 
						|
                                            LocationName.Lvl7, LocationName.Lvl8, LocationName.Lvl9, LocationName.Lvl10]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS3] = [LocationName.Lvl11, LocationName.Lvl12, LocationName.Lvl13,
 | 
						|
                                            LocationName.Lvl14, LocationName.Lvl15,
 | 
						|
                                            LocationName.Lvl16, LocationName.Lvl17, LocationName.Lvl18,
 | 
						|
                                            LocationName.Lvl19, LocationName.Lvl20]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS6] = [LocationName.Lvl21, LocationName.Lvl22, LocationName.Lvl23,
 | 
						|
                                            LocationName.Lvl24, LocationName.Lvl25,
 | 
						|
                                            LocationName.Lvl26, LocationName.Lvl27, LocationName.Lvl28,
 | 
						|
                                            LocationName.Lvl29, LocationName.Lvl30]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS9] = [LocationName.Lvl31, LocationName.Lvl32, LocationName.Lvl33,
 | 
						|
                                            LocationName.Lvl34, LocationName.Lvl35,
 | 
						|
                                            LocationName.Lvl36, LocationName.Lvl37, LocationName.Lvl38,
 | 
						|
                                            LocationName.Lvl39, LocationName.Lvl40]
 | 
						|
        KH2REGIONS[RegionName.LevelsVS12] = [LocationName.Lvl41, LocationName.Lvl42, LocationName.Lvl43,
 | 
						|
                                             LocationName.Lvl44, LocationName.Lvl45,
 | 
						|
                                             LocationName.Lvl46, LocationName.Lvl47, LocationName.Lvl48,
 | 
						|
                                             LocationName.Lvl49, LocationName.Lvl50]
 | 
						|
        # level 99 sanity
 | 
						|
        if multiworld.LevelDepth[player] == "level_99_sanity":
 | 
						|
            KH2REGIONS[RegionName.LevelsVS15] = [LocationName.Lvl51, LocationName.Lvl52, LocationName.Lvl53,
 | 
						|
                                                 LocationName.Lvl54,
 | 
						|
                                                 LocationName.Lvl55, LocationName.Lvl56, LocationName.Lvl57,
 | 
						|
                                                 LocationName.Lvl58,
 | 
						|
                                                 LocationName.Lvl59, LocationName.Lvl60]
 | 
						|
            KH2REGIONS[RegionName.LevelsVS18] = [LocationName.Lvl61, LocationName.Lvl62, LocationName.Lvl63,
 | 
						|
                                                 LocationName.Lvl64,
 | 
						|
                                                 LocationName.Lvl65, LocationName.Lvl66, LocationName.Lvl67,
 | 
						|
                                                 LocationName.Lvl68,
 | 
						|
                                                 LocationName.Lvl69, LocationName.Lvl70]
 | 
						|
            KH2REGIONS[RegionName.LevelsVS21] = [LocationName.Lvl71, LocationName.Lvl72, LocationName.Lvl73,
 | 
						|
                                                 LocationName.Lvl74,
 | 
						|
                                                 LocationName.Lvl75, LocationName.Lvl76, LocationName.Lvl77,
 | 
						|
                                                 LocationName.Lvl78,
 | 
						|
                                                 LocationName.Lvl79, LocationName.Lvl80]
 | 
						|
            KH2REGIONS[RegionName.LevelsVS24] = [LocationName.Lvl81, LocationName.Lvl82, LocationName.Lvl83,
 | 
						|
                                                 LocationName.Lvl84,
 | 
						|
                                                 LocationName.Lvl85, LocationName.Lvl86, LocationName.Lvl87,
 | 
						|
                                                 LocationName.Lvl88,
 | 
						|
                                                 LocationName.Lvl89, LocationName.Lvl90]
 | 
						|
            KH2REGIONS[RegionName.LevelsVS26] = [LocationName.Lvl91, LocationName.Lvl92, LocationName.Lvl93,
 | 
						|
                                                 LocationName.Lvl94,
 | 
						|
                                                 LocationName.Lvl95, LocationName.Lvl96, LocationName.Lvl97,
 | 
						|
                                                 LocationName.Lvl98, LocationName.Lvl99]
 | 
						|
    KH2REGIONS[RegionName.Summon] = []
 | 
						|
    if multiworld.SummonLevelLocationToggle[player]:
 | 
						|
        KH2REGIONS[RegionName.Summon] = [LocationName.Summonlvl2,
 | 
						|
                                         LocationName.Summonlvl3,
 | 
						|
                                         LocationName.Summonlvl4,
 | 
						|
                                         LocationName.Summonlvl5,
 | 
						|
                                         LocationName.Summonlvl6,
 | 
						|
                                         LocationName.Summonlvl7]
 | 
						|
    multiworld.regions += [create_region(multiworld, player, active_locations, region, locations) for region, locations in
 | 
						|
                           KH2REGIONS.items()]
 | 
						|
    # fill the event locations with events
 | 
						|
 | 
						|
    for location, item in Locations.event_location_to_item.items():
 | 
						|
        multiworld.get_location(location, player).place_locked_item(
 | 
						|
                multiworld.worlds[player].create_event_item(item))
 | 
						|
 | 
						|
 | 
						|
def connect_regions(self):
 | 
						|
    multiworld = self.multiworld
 | 
						|
    player = self.player
 | 
						|
    # connecting every first visit to the GoA
 | 
						|
    KH2RegionConnections: typing.Dict[str, typing.Set[str]] = {
 | 
						|
        "Menu":                        {RegionName.GoA},
 | 
						|
        RegionName.GoA:                {RegionName.Sp, RegionName.Pr, RegionName.Tt, RegionName.Oc, RegionName.Ht,
 | 
						|
                                        RegionName.LoD,
 | 
						|
                                        RegionName.Twtnw, RegionName.Bc, RegionName.Ag, RegionName.Pl, RegionName.Hb,
 | 
						|
                                        RegionName.Dc, RegionName.Stt,
 | 
						|
                                        RegionName.Ha1, RegionName.Keyblade, RegionName.LevelsVS1,
 | 
						|
                                        RegionName.Valor, RegionName.Wisdom, RegionName.Limit, RegionName.Master,
 | 
						|
                                        RegionName.Final, RegionName.Summon, RegionName.AtlanticaSongOne},
 | 
						|
        RegionName.LoD:                {RegionName.ShanYu},
 | 
						|
        RegionName.ShanYu:             {RegionName.LoD2},
 | 
						|
        RegionName.LoD2:               {RegionName.AnsemRiku},
 | 
						|
        RegionName.AnsemRiku:          {RegionName.StormRider},
 | 
						|
        RegionName.StormRider:         {RegionName.DataXigbar},
 | 
						|
        RegionName.Ag:                 {RegionName.TwinLords},
 | 
						|
        RegionName.TwinLords:          {RegionName.Ag2},
 | 
						|
        RegionName.Ag2:                {RegionName.GenieJafar},
 | 
						|
        RegionName.GenieJafar:         {RegionName.DataLexaeus},
 | 
						|
        RegionName.Dc:                 {RegionName.Tr},
 | 
						|
        RegionName.Tr:                 {RegionName.OldPete},
 | 
						|
        RegionName.OldPete:            {RegionName.FuturePete},
 | 
						|
        RegionName.FuturePete:         {RegionName.Terra, RegionName.DataMarluxia},
 | 
						|
        RegionName.Ha1:                {RegionName.Ha2},
 | 
						|
        RegionName.Ha2:                {RegionName.Ha3},
 | 
						|
        RegionName.Ha3:                {RegionName.Ha4},
 | 
						|
        RegionName.Ha4:                {RegionName.Ha5},
 | 
						|
        RegionName.Ha5:                {RegionName.Ha6},
 | 
						|
        RegionName.Pr:                 {RegionName.Barbosa},
 | 
						|
        RegionName.Barbosa:            {RegionName.Pr2},
 | 
						|
        RegionName.Pr2:                {RegionName.GrimReaper1},
 | 
						|
        RegionName.GrimReaper1:        {RegionName.GrimReaper2},
 | 
						|
        RegionName.GrimReaper2:        {RegionName.DataLuxord},
 | 
						|
        RegionName.Oc:                 {RegionName.Cerberus},
 | 
						|
        RegionName.Cerberus:           {RegionName.OlympusPete},
 | 
						|
        RegionName.OlympusPete:        {RegionName.Hydra},
 | 
						|
        RegionName.Hydra:              {RegionName.OcPainAndPanicCup, RegionName.OcCerberusCup, RegionName.Oc2},
 | 
						|
        RegionName.Oc2:                {RegionName.Hades},
 | 
						|
        RegionName.Hades:              {RegionName.Oc2TitanCup, RegionName.Oc2GofCup, RegionName.DataZexion},
 | 
						|
        RegionName.Oc2GofCup:          {RegionName.HadesCups},
 | 
						|
        RegionName.Bc:                 {RegionName.Thresholder},
 | 
						|
        RegionName.Thresholder:        {RegionName.Beast},
 | 
						|
        RegionName.Beast:              {RegionName.DarkThorn},
 | 
						|
        RegionName.DarkThorn:          {RegionName.Bc2},
 | 
						|
        RegionName.Bc2:                {RegionName.Xaldin},
 | 
						|
        RegionName.Xaldin:             {RegionName.DataXaldin},
 | 
						|
        RegionName.Sp:                 {RegionName.HostileProgram},
 | 
						|
        RegionName.HostileProgram:     {RegionName.Sp2},
 | 
						|
        RegionName.Sp2:                {RegionName.Mcp},
 | 
						|
        RegionName.Mcp:                {RegionName.DataLarxene},
 | 
						|
        RegionName.Ht:                 {RegionName.PrisonKeeper},
 | 
						|
        RegionName.PrisonKeeper:       {RegionName.OogieBoogie},
 | 
						|
        RegionName.OogieBoogie:        {RegionName.Ht2},
 | 
						|
        RegionName.Ht2:                {RegionName.Experiment},
 | 
						|
        RegionName.Experiment:         {RegionName.DataVexen},
 | 
						|
        RegionName.Hb:                 {RegionName.Hb2},
 | 
						|
        RegionName.Hb2:                {RegionName.CoR, RegionName.HBDemyx},
 | 
						|
        RegionName.HBDemyx:            {RegionName.ThousandHeartless},
 | 
						|
        RegionName.ThousandHeartless:  {RegionName.Mushroom13, RegionName.DataDemyx, RegionName.Sephi},
 | 
						|
        RegionName.CoR:                {RegionName.CorFirstFight},
 | 
						|
        RegionName.CorFirstFight:      {RegionName.CorSecondFight},
 | 
						|
        RegionName.CorSecondFight:     {RegionName.Transport},
 | 
						|
        RegionName.Pl:                 {RegionName.Scar},
 | 
						|
        RegionName.Scar:               {RegionName.Pl2},
 | 
						|
        RegionName.Pl2:                {RegionName.GroundShaker},
 | 
						|
        RegionName.GroundShaker:       {RegionName.DataSaix},
 | 
						|
        RegionName.Stt:                {RegionName.TwilightThorn},
 | 
						|
        RegionName.TwilightThorn:      {RegionName.Axel1},
 | 
						|
        RegionName.Axel1:              {RegionName.Axel2},
 | 
						|
        RegionName.Axel2:              {RegionName.DataRoxas},
 | 
						|
        RegionName.Tt:                 {RegionName.Tt2},
 | 
						|
        RegionName.Tt2:                {RegionName.Tt3},
 | 
						|
        RegionName.Tt3:                {RegionName.DataAxel},
 | 
						|
        RegionName.Twtnw:              {RegionName.Roxas},
 | 
						|
        RegionName.Roxas:              {RegionName.Xigbar},
 | 
						|
        RegionName.Xigbar:             {RegionName.Luxord},
 | 
						|
        RegionName.Luxord:             {RegionName.Saix},
 | 
						|
        RegionName.Saix:               {RegionName.Twtnw2},
 | 
						|
        RegionName.Twtnw2:             {RegionName.Xemnas},
 | 
						|
        RegionName.Xemnas:             {RegionName.ArmoredXemnas, RegionName.DataXemnas},
 | 
						|
        RegionName.ArmoredXemnas:      {RegionName.ArmoredXemnas2},
 | 
						|
        RegionName.ArmoredXemnas2:     {RegionName.FinalXemnas},
 | 
						|
        RegionName.LevelsVS1:          {RegionName.LevelsVS3},
 | 
						|
        RegionName.LevelsVS3:          {RegionName.LevelsVS6},
 | 
						|
        RegionName.LevelsVS6:          {RegionName.LevelsVS9},
 | 
						|
        RegionName.LevelsVS9:          {RegionName.LevelsVS12},
 | 
						|
        RegionName.LevelsVS12:         {RegionName.LevelsVS15},
 | 
						|
        RegionName.LevelsVS15:         {RegionName.LevelsVS18},
 | 
						|
        RegionName.LevelsVS18:         {RegionName.LevelsVS21},
 | 
						|
        RegionName.LevelsVS21:         {RegionName.LevelsVS24},
 | 
						|
        RegionName.LevelsVS24:         {RegionName.LevelsVS26},
 | 
						|
        RegionName.AtlanticaSongOne:   {RegionName.AtlanticaSongTwo},
 | 
						|
        RegionName.AtlanticaSongTwo:   {RegionName.AtlanticaSongThree},
 | 
						|
        RegionName.AtlanticaSongThree: {RegionName.AtlanticaSongFour},
 | 
						|
    }
 | 
						|
 | 
						|
    for source, target in KH2RegionConnections.items():
 | 
						|
        source_region = multiworld.get_region(source, player)
 | 
						|
        source_region.add_exits(target)
 | 
						|
 | 
						|
 | 
						|
# cave fight:fire/guard
 | 
						|
# hades escape logic:fire,blizzard,slide dash, base tools
 | 
						|
# windows:chicken little.fire element,base tools
 | 
						|
# chasm of challenges:reflect, blizzard, trinity limit,chicken little
 | 
						|
# living bones: magnet
 | 
						|
# some things for barbosa(PR), chicken little
 | 
						|
# hyneas(magnet,reflect)
 | 
						|
# tt2: reflect,chicken,form, guard,aerial recovery,finising plus,
 | 
						|
# corridors,dancers:chicken little or stitch +demyx tools
 | 
						|
# 1k: guard,once more,limit form,
 | 
						|
# snipers +before: stitch, magnet, finishing leap, base tools, reflect
 | 
						|
# dragoons:stitch, magnet, base tools, reflect
 | 
						|
# oc2 tournament thing: stitch, magnet, base tools, reflera
 | 
						|
# lock,shock and barrel: reflect, base tools
 | 
						|
# carpet section: magnera, reflect, base tools,
 | 
						|
# sp2: reflera, stitch, basse tools, reflera, thundara, fantasia/duck flare,once more.
 | 
						|
# tt3: stitch/chicken little, magnera,reflera,base tools,finishing leap,limit form
 | 
						|
# cor
 | 
						|
 | 
						|
def create_region(multiworld, player: int, active_locations, name: str, locations=None):
 | 
						|
    ret = Region(name, player, multiworld)
 | 
						|
    if locations:
 | 
						|
        loc_to_id = {loc: active_locations.get(loc, 0) for loc in locations if active_locations.get(loc, None)}
 | 
						|
        ret.add_locations(loc_to_id, KH2Location)
 | 
						|
        loc_to_event = {loc: active_locations.get(loc, None) for loc in locations if
 | 
						|
                        not active_locations.get(loc, None)}
 | 
						|
        ret.add_locations(loc_to_event, KH2Location)
 | 
						|
 | 
						|
    return ret
 |