Archipelago/worlds/kh2/Regions.py

1164 lines
48 KiB
Python
Raw Normal View History

2023-03-20 16:19:55 +00:00
import typing
from BaseClasses import MultiWorld, Region
from . import Locations
2023-03-20 16:19:55 +00:00
from .Subclasses import KH2Location
from .Names import LocationName, RegionName
from .Items import Events_Table
2023-03-20 16:19:55 +00:00
KH2REGIONS: typing.Dict[str, typing.List[str]] = {
"Menu": [],
RegionName.GoA: [
2023-03-20 16:19:55 +00:00
LocationName.GardenofAssemblageMap,
LocationName.GoALostIllusion,
LocationName.ProofofNonexistence,
# LocationName.DonaldStarting1,
# LocationName.DonaldStarting2,
# LocationName.GoofyStarting1,
# LocationName.GoofyStarting2
],
RegionName.LoD: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.ShanYu,
LocationName.ShanYuGetBonus,
LocationName.HiddenDragon,
LocationName.GoofyShanYu,
LocationName.ShanYuEventLocation
],
RegionName.LoD2: [],
RegionName.AnsemRiku: [
2023-03-20 16:19:55 +00:00
LocationName.ThroneRoomTornPages,
LocationName.ThroneRoomPalaceMap,
LocationName.ThroneRoomAPBoost,
LocationName.ThroneRoomQueenRecipe,
LocationName.ThroneRoomAPBoost2,
LocationName.ThroneRoomOgreShield,
LocationName.ThroneRoomMythrilCrystal,
LocationName.ThroneRoomOrichalcum,
LocationName.AnsemRikuEventLocation,
],
RegionName.StormRider: [
2023-03-20 16:19:55 +00:00
LocationName.StormRider,
LocationName.GoofyStormRider,
LocationName.StormRiderEventLocation
],
RegionName.DataXigbar: [
LocationName.XigbarDataDefenseBoost,
LocationName.DataXigbarEventLocation
],
RegionName.Ag: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.ElementalLords,
LocationName.LampCharm,
LocationName.TwinLordsEventLocation
],
RegionName.Ag2: [
2023-03-20 16:19:55 +00:00
LocationName.RuinedChamberTornPages,
LocationName.RuinedChamberRuinsMap,
],
RegionName.GenieJafar: [
2023-03-20 16:19:55 +00:00
LocationName.GenieJafar,
LocationName.WishingLamp,
LocationName.GenieJafarEventLocation,
],
RegionName.DataLexaeus: [
2023-03-20 16:19:55 +00:00
LocationName.LexaeusBonus,
LocationName.LexaeusASStrengthBeyondStrength,
LocationName.LexaeusDataLostIllusion,
LocationName.DataLexaeusEventLocation
],
RegionName.Dc: [
2023-03-20 16:19:55 +00:00
LocationName.DCCourtyardMythrilShard,
LocationName.DCCourtyardStarRecipe,
LocationName.DCCourtyardAPBoost,
LocationName.DCCourtyardMythrilStone,
LocationName.DCCourtyardBlazingStone,
LocationName.DCCourtyardBlazingShard,
LocationName.DCCourtyardMythrilShard2,
LocationName.LibraryTornPages,
LocationName.DisneyCastleMap,
LocationName.MinnieEscort,
LocationName.MinnieEscortGetBonus
],
RegionName.Tr: [
2023-03-20 16:19:55 +00:00
LocationName.CornerstoneHillMap,
LocationName.CornerstoneHillFrostShard,
LocationName.PierMythrilShard,
LocationName.PierHiPotion,
],
RegionName.OldPete: [
2023-03-20 16:19:55 +00:00
LocationName.WaterwayMythrilStone,
LocationName.WaterwayAPBoost,
LocationName.WaterwayFrostStone,
LocationName.WindowofTimeMap,
LocationName.BoatPete,
LocationName.DonaldBoatPete,
LocationName.DonaldBoatPeteGetBonus,
LocationName.OldPeteEventLocation,
],
RegionName.FuturePete: [
2023-03-20 16:19:55 +00:00
LocationName.FuturePete,
LocationName.FuturePeteGetBonus,
LocationName.Monochrome,
LocationName.WisdomForm,
LocationName.GoofyFuturePete,
LocationName.FuturePeteEventLocation
],
RegionName.DataMarluxia: [
2023-03-20 16:19:55 +00:00
LocationName.MarluxiaGetBonus,
LocationName.MarluxiaASEternalBlossom,
LocationName.MarluxiaDataLostIllusion,
LocationName.DataMarluxiaEventLocation
],
RegionName.Terra: [
2023-03-20 16:19:55 +00:00
LocationName.LingeringWillBonus,
LocationName.LingeringWillProofofConnection,
LocationName.LingeringWillManifestIllusion,
LocationName.TerraEventLocation
],
RegionName.Ha1: [
2023-03-20 16:19:55 +00:00
LocationName.PoohsHouse100AcreWoodMap,
LocationName.PoohsHouseAPBoost,
LocationName.PoohsHouseMythrilStone
],
RegionName.Ha2: [
2023-03-20 16:19:55 +00:00
LocationName.PigletsHouseDefenseBoost,
LocationName.PigletsHouseAPBoost,
LocationName.PigletsHouseMythrilGem
],
RegionName.Ha3: [
2023-03-20 16:19:55 +00:00
LocationName.RabbitsHouseDrawRing,
LocationName.RabbitsHouseMythrilCrystal,
LocationName.RabbitsHouseAPBoost,
],
RegionName.Ha4: [
2023-03-20 16:19:55 +00:00
LocationName.KangasHouseMagicBoost,
LocationName.KangasHouseAPBoost,
LocationName.KangasHouseOrichalcum,
],
RegionName.Ha5: [
2023-03-20 16:19:55 +00:00
LocationName.SpookyCaveMythrilGem,
LocationName.SpookyCaveAPBoost,
LocationName.SpookyCaveOrichalcum,
LocationName.SpookyCaveGuardRecipe,
LocationName.SpookyCaveMythrilCrystal,
LocationName.SpookyCaveAPBoost2,
LocationName.SweetMemories,
LocationName.SpookyCaveMap
],
RegionName.Ha6: [
2023-03-20 16:19:55 +00:00
LocationName.StarryHillCosmicRing,
LocationName.StarryHillStyleRecipe,
LocationName.StarryHillCureElement,
LocationName.StarryHillOrichalcumPlus
],
RegionName.Pr: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.Barbossa,
LocationName.BarbossaGetBonus,
LocationName.FollowtheWind,
LocationName.GoofyBarbossa,
LocationName.GoofyBarbossaGetBonus,
LocationName.BarbosaEventLocation,
],
RegionName.Pr2: [],
RegionName.GrimReaper1: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.DonaladGrimReaper2,
LocationName.GrimReaper2,
LocationName.SecretAnsemReport6,
LocationName.GrimReaper2EventLocation,
],
RegionName.DataLuxord: [
2023-03-20 16:19:55 +00:00
LocationName.LuxordDataAPBoost,
LocationName.DataLuxordEventLocation
],
RegionName.Oc: [
2023-03-20 16:19:55 +00:00
LocationName.PassageMythrilShard,
LocationName.PassageMythrilStone,
LocationName.PassageEther,
LocationName.PassageAPBoost,
LocationName.PassageHiPotion,
LocationName.InnerChamberUnderworldMap,
LocationName.InnerChamberMythrilShard,
],
RegionName.Cerberus: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.PeteOC,
LocationName.DonaldDemyxOC,
LocationName.GoofyPeteOC,
LocationName.OlympusPeteEventLocation
],
RegionName.Hydra: [
2023-03-20 16:19:55 +00:00
LocationName.Hydra,
LocationName.HydraGetBonus,
LocationName.HerosCrest,
LocationName.HydraEventLocation
],
RegionName.Oc2: [
2023-03-20 16:19:55 +00:00
LocationName.AuronsStatue,
],
RegionName.Hades: [
2023-03-20 16:19:55 +00:00
LocationName.Hades,
LocationName.HadesGetBonus,
LocationName.GuardianSoul,
LocationName.HadesEventLocation
],
RegionName.OcPainAndPanicCup: [
2023-03-20 16:19:55 +00:00
LocationName.ProtectBeltPainandPanicCup,
LocationName.SerenityGemPainandPanicCup,
LocationName.OcPainAndPanicCupEventLocation
],
RegionName.OcCerberusCup: [
2023-03-20 16:19:55 +00:00
LocationName.RisingDragonCerberusCup,
LocationName.SerenityCrystalCerberusCup,
LocationName.OcCerberusCupEventLocation
],
RegionName.Oc2TitanCup: [
LocationName.GenjiShieldTitanCup,
LocationName.SkillfulRingTitanCup,
LocationName.Oc2TitanCupEventLocation
],
RegionName.Oc2GofCup: [
2023-03-20 16:19:55 +00:00
LocationName.FatalCrestGoddessofFateCup,
LocationName.OrichalcumPlusGoddessofFateCup,
LocationName.Oc2GofCupEventLocation,
],
RegionName.HadesCups: [
2023-03-20 16:19:55 +00:00
LocationName.HadesCupTrophyParadoxCups,
LocationName.HadesCupEventLocations
],
RegionName.DataZexion: [
2023-03-20 16:19:55 +00:00
LocationName.ZexionBonus,
LocationName.ZexionASBookofShadows,
LocationName.ZexionDataLostIllusion,
LocationName.GoofyZexion,
LocationName.DataZexionEventLocation
],
RegionName.Bc: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.Thresholder,
LocationName.DungeonBasementMap,
LocationName.DungeonAPBoost,
LocationName.SecretPassageMythrilShard,
LocationName.SecretPassageHiPotion,
LocationName.SecretPassageLucidShard,
LocationName.TheWestHallAPBoostPostDungeon,
LocationName.TheWestWingMythrilShard,
LocationName.TheWestWingTent,
LocationName.DonaldThresholder,
LocationName.ThresholderEventLocation
],
RegionName.Beast: [
2023-03-20 16:19:55 +00:00
LocationName.Beast,
LocationName.TheBeastsRoomBlazingShard,
LocationName.GoofyBeast,
LocationName.BeastEventLocation
],
RegionName.DarkThorn: [
2023-03-20 16:19:55 +00:00
LocationName.DarkThorn,
LocationName.DarkThornGetBonus,
LocationName.DarkThornCureElement,
LocationName.DarkThornEventLocation,
],
RegionName.Bc2: [
2023-03-20 16:19:55 +00:00
LocationName.RumblingRose,
LocationName.CastleWallsMap
],
RegionName.Xaldin: [
2023-03-20 16:19:55 +00:00
LocationName.Xaldin,
LocationName.XaldinGetBonus,
LocationName.DonaldXaldinGetBonus,
LocationName.SecretAnsemReport4,
LocationName.XaldinEventLocation
],
RegionName.DataXaldin: [
2023-03-20 16:19:55 +00:00
LocationName.XaldinDataDefenseBoost,
LocationName.DataXaldinEventLocation
],
RegionName.Sp: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.HostileProgram,
LocationName.HostileProgramGetBonus,
LocationName.PhotonDebugger,
LocationName.GoofyHostileProgram,
LocationName.HostileProgramEventLocation
],
RegionName.Sp2: [
2023-03-20 16:19:55 +00:00
LocationName.SolarSailer,
LocationName.CentralComputerCoreAPBoost,
LocationName.CentralComputerCoreOrichalcumPlus,
LocationName.CentralComputerCoreCosmicArts,
LocationName.CentralComputerCoreMap,
LocationName.DonaldSolarSailer
],
RegionName.Mcp: [
2023-03-20 16:19:55 +00:00
LocationName.MCP,
LocationName.MCPGetBonus,
LocationName.McpEventLocation
],
RegionName.DataLarxene: [
2023-03-20 16:19:55 +00:00
LocationName.LarxeneBonus,
LocationName.LarxeneASCloakedThunder,
LocationName.LarxeneDataLostIllusion,
LocationName.DataLarxeneEventLocation
],
RegionName.Ht: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.PrisonKeeper,
LocationName.DonaldPrisonKeeper,
LocationName.PrisonKeeperEventLocation,
],
RegionName.OogieBoogie: [
2023-03-20 16:19:55 +00:00
LocationName.OogieBoogie,
LocationName.OogieBoogieMagnetElement,
LocationName.GoofyOogieBoogie,
LocationName.OogieBoogieEventLocation
],
RegionName.Ht2: [
2023-03-20 16:19:55 +00:00
LocationName.Lock,
LocationName.Present,
LocationName.DecoyPresents,
LocationName.GoofyLock
],
RegionName.Experiment: [
2023-03-20 16:19:55 +00:00
LocationName.Experiment,
LocationName.DecisivePumpkin,
LocationName.DonaldExperiment,
LocationName.ExperimentEventLocation,
],
RegionName.DataVexen: [
2023-03-20 16:19:55 +00:00
LocationName.VexenBonus,
LocationName.VexenASRoadtoDiscovery,
LocationName.VexenDataLostIllusion,
LocationName.DataVexenEventLocation
],
RegionName.Hb: [
2023-03-20 16:19:55 +00:00
LocationName.MarketplaceMap,
LocationName.BoroughDriveRecovery,
LocationName.BoroughAPBoost,
LocationName.BoroughHiPotion,
LocationName.BoroughMythrilShard,
LocationName.BoroughDarkShard,
LocationName.MerlinsHouseMembershipCard,
LocationName.MerlinsHouseBlizzardElement,
LocationName.Bailey,
LocationName.BaileySecretAnsemReport7,
LocationName.BaseballCharm
],
RegionName.Hb2: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.DonaldDemyxHBGetBonus,
LocationName.DemyxHB,
LocationName.DemyxHBGetBonus,
LocationName.FFFightsCureElement,
LocationName.CrystalFissureTornPages,
LocationName.CrystalFissureTheGreatMawMap,
LocationName.CrystalFissureEnergyCrystal,
LocationName.CrystalFissureAPBoost,
LocationName.HBDemyxEventLocation,
],
RegionName.ThousandHeartless: [
2023-03-20 16:19:55 +00:00
LocationName.ThousandHeartless,
LocationName.ThousandHeartlessSecretAnsemReport1,
LocationName.ThousandHeartlessIceCream,
LocationName.ThousandHeartlessPicture,
LocationName.PosternGullWing,
LocationName.HeartlessManufactoryCosmicChain,
LocationName.ThousandHeartlessEventLocation,
],
RegionName.DataDemyx: [
2023-03-20 16:19:55 +00:00
LocationName.DemyxDataAPBoost,
LocationName.DataDemyxEventLocation,
],
RegionName.Mushroom13: [
2023-03-20 16:19:55 +00:00
LocationName.WinnersProof,
LocationName.ProofofPeace,
LocationName.Mushroom13EventLocation,
],
RegionName.Sephi: [
2023-03-20 16:19:55 +00:00
LocationName.SephirothBonus,
LocationName.SephirothFenrir,
LocationName.SephiEventLocation
],
RegionName.CoR: [
LocationName.CoRDepthsAPBoost,
LocationName.CoRDepthsPowerCrystal,
LocationName.CoRDepthsFrostCrystal,
LocationName.CoRDepthsManifestIllusion,
LocationName.CoRDepthsAPBoost2,
LocationName.CoRMineshaftLowerLevelDepthsofRemembranceMap,
LocationName.CoRMineshaftLowerLevelAPBoost,
],
RegionName.CorFirstFight: [
2023-03-20 16:19:55 +00:00
LocationName.CoRDepthsUpperLevelRemembranceGem,
LocationName.CoRMiningAreaSerenityGem,
LocationName.CoRMiningAreaAPBoost,
LocationName.CoRMiningAreaSerenityCrystal,
LocationName.CoRMiningAreaManifestIllusion,
LocationName.CoRMiningAreaSerenityGem2,
LocationName.CoRMiningAreaDarkRemembranceMap,
LocationName.CorFirstFightEventLocation,
],
RegionName.CorSecondFight: [
2023-03-20 16:19:55 +00:00
LocationName.CoRMineshaftMidLevelPowerBoost,
LocationName.CoREngineChamberSerenityCrystal,
LocationName.CoREngineChamberRemembranceCrystal,
LocationName.CoREngineChamberAPBoost,
LocationName.CoREngineChamberManifestIllusion,
LocationName.CoRMineshaftUpperLevelMagicBoost,
LocationName.CorSecondFightEventLocation,
],
RegionName.Transport: [
LocationName.CoRMineshaftUpperLevelAPBoost, # last chest
2023-03-20 16:19:55 +00:00
LocationName.TransporttoRemembrance,
LocationName.TransportEventLocation,
],
RegionName.Pl: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.Scar,
LocationName.ScarFireElement,
LocationName.DonaldScar,
LocationName.ScarEventLocation,
],
RegionName.Pl2: [
2023-03-20 16:19:55 +00:00
LocationName.Hyenas2,
LocationName.GoofyHyenas2
],
RegionName.GroundShaker: [
2023-03-20 16:19:55 +00:00
LocationName.Groundshaker,
LocationName.GroundshakerGetBonus,
LocationName.GroundShakerEventLocation,
],
RegionName.DataSaix: [
2023-03-20 16:19:55 +00:00
LocationName.SaixDataDefenseBoost,
LocationName.DataSaixEventLocation
],
RegionName.Stt: [
2023-03-20 16:19:55 +00:00
LocationName.TwilightTownMap,
LocationName.MunnyPouchOlette,
LocationName.StationDusks,
LocationName.StationofSerenityPotion,
LocationName.StationofCallingPotion,
],
RegionName.TwilightThorn: [
2023-03-20 16:19:55 +00:00
LocationName.TwilightThorn,
LocationName.TwilightThornEventLocation
],
RegionName.Axel1: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.Axel2,
LocationName.MansionBasementCorridorHiPotion,
LocationName.Axel2EventLocation
],
RegionName.DataRoxas: [
2023-03-20 16:19:55 +00:00
LocationName.RoxasDataMagicBoost,
LocationName.DataRoxasEventLocation
],
RegionName.Tt: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.SeifersTrophy,
LocationName.Oathkeeper,
LocationName.LimitForm
],
RegionName.Tt3: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.AxelDataMagicBoost,
LocationName.DataAxelEventLocation,
],
RegionName.Twtnw: [
2023-03-20 16:19:55 +00:00
LocationName.FragmentCrossingMythrilStone,
LocationName.FragmentCrossingMythrilCrystal,
LocationName.FragmentCrossingAPBoost,
LocationName.FragmentCrossingOrichalcum
],
RegionName.Roxas: [
2023-03-20 16:19:55 +00:00
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: [
2023-03-20 16:19:55 +00:00
LocationName.XigbarBonus,
LocationName.XigbarSecretAnsemReport3,
LocationName.NaughtsSkywayMythrilGem,
LocationName.NaughtsSkywayOrichalcum,
LocationName.NaughtsSkywayMythrilCrystal,
LocationName.Oblivion,
LocationName.CastleThatNeverWasMap,
LocationName.XigbarEventLocation,
],
RegionName.Luxord: [
2023-03-20 16:19:55 +00:00
LocationName.Luxord,
LocationName.LuxordGetBonus,
LocationName.LuxordSecretAnsemReport9,
LocationName.LuxordEventLocation,
],
RegionName.Saix: [
2023-03-20 16:19:55 +00:00
LocationName.SaixBonus,
LocationName.SaixSecretAnsemReport12,
LocationName.SaixEventLocation,
],
RegionName.Twtnw2: [
2023-03-20 16:19:55 +00:00
LocationName.PreXemnas1SecretAnsemReport11,
LocationName.RuinandCreationsPassageMythrilStone,
LocationName.RuinandCreationsPassageAPBoost,
LocationName.RuinandCreationsPassageMythrilCrystal,
LocationName.RuinandCreationsPassageOrichalcum
],
RegionName.Xemnas: [
2023-03-20 16:19:55 +00:00
LocationName.Xemnas1,
LocationName.Xemnas1GetBonus,
LocationName.Xemnas1SecretAnsemReport13,
LocationName.XemnasEventLocation
],
RegionName.ArmoredXemnas: [
LocationName.ArmoredXemnasEventLocation
],
RegionName.ArmoredXemnas2: [
LocationName.ArmoredXemnas2EventLocation
],
RegionName.FinalXemnas: [
LocationName.FinalXemnasEventLocation
],
RegionName.DataXemnas: [
2023-03-20 16:19:55 +00:00
LocationName.XemnasDataPowerBoost,
LocationName.DataXemnasEventLocation
],
RegionName.AtlanticaSongOne: [
LocationName.UnderseaKingdomMap
],
RegionName.AtlanticaSongTwo: [
2023-03-20 16:19:55 +00:00
],
RegionName.AtlanticaSongThree: [
LocationName.MysteriousAbyss
],
RegionName.AtlanticaSongFour: [
LocationName.MusicalBlizzardElement,
LocationName.MusicalOrichalcumPlus
],
RegionName.Valor: [
2023-03-20 16:19:55 +00:00
LocationName.Valorlvl2,
LocationName.Valorlvl3,
LocationName.Valorlvl4,
LocationName.Valorlvl5,
LocationName.Valorlvl6,
LocationName.Valorlvl7
],
RegionName.Wisdom: [
2023-03-20 16:19:55 +00:00
LocationName.Wisdomlvl2,
LocationName.Wisdomlvl3,
LocationName.Wisdomlvl4,
LocationName.Wisdomlvl5,
LocationName.Wisdomlvl6,
LocationName.Wisdomlvl7
],
RegionName.Limit: [
2023-03-20 16:19:55 +00:00
LocationName.Limitlvl2,
LocationName.Limitlvl3,
LocationName.Limitlvl4,
LocationName.Limitlvl5,
LocationName.Limitlvl6,
LocationName.Limitlvl7
],
RegionName.Master: [
2023-03-20 16:19:55 +00:00
LocationName.Masterlvl2,
LocationName.Masterlvl3,
LocationName.Masterlvl4,
LocationName.Masterlvl5,
LocationName.Masterlvl6,
LocationName.Masterlvl7
],
RegionName.Final: [
2023-03-20 16:19:55 +00:00
LocationName.Finallvl2,
LocationName.Finallvl3,
LocationName.Finallvl4,
LocationName.Finallvl5,
LocationName.Finallvl6,
LocationName.Finallvl7
],
RegionName.Keyblade: [
2023-03-20 16:19:55 +00:00
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,
]
2023-03-20 16:19:55 +00:00
def create_regions(self):
2023-03-20 16:19:55 +00:00
# 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 self.options.LevelDepth == "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]
2023-03-20 16:19:55 +00:00
# level 99
elif self.options.LevelDepth == "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]
2023-03-20 16:19:55 +00:00
# level sanity
# has to be [] instead of {} for in
elif self.options.LevelDepth 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]
2023-03-20 16:19:55 +00:00
# level 99 sanity
if self.options.LevelDepth == "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 self.options.SummonLevelLocationToggle:
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(
2023-12-08 21:39:24 +00:00
multiworld.worlds[player].create_event_item(item))
2023-03-20 16:19:55 +00:00
def connect_regions(self):
multiworld = self.multiworld
player = self.player
2023-03-20 16:19:55 +00:00
# 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},
}
2023-03-20 16:19:55 +00:00
for source, target in KH2RegionConnections.items():
source_region = multiworld.get_region(source, player)
source_region.add_exits(target)
2023-03-20 16:19:55 +00:00
# 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
2023-03-20 16:19:55 +00:00
def create_region(multiworld, player: int, active_locations, name: str, locations=None):
ret = Region(name, player, multiworld)
2023-03-20 16:19:55 +00:00
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)
2023-03-20 16:19:55 +00:00
return ret