1243 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			1243 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import typing
 | |
| 
 | |
| from BaseClasses import MultiWorld, Region, Entrance
 | |
| 
 | |
| from .Locations import KH2Location, RegionTable
 | |
| from .Names import LocationName, ItemName, RegionName
 | |
| 
 | |
| 
 | |
| def create_regions(world, player: int, active_locations):
 | |
|     menu_region = create_region(world, player, active_locations, 'Menu', None)
 | |
| 
 | |
|     goa_region_locations = [
 | |
|         LocationName.Crit_1,
 | |
|         LocationName.Crit_2,
 | |
|         LocationName.Crit_3,
 | |
|         LocationName.Crit_4,
 | |
|         LocationName.Crit_5,
 | |
|         LocationName.Crit_6,
 | |
|         LocationName.Crit_7,
 | |
|         LocationName.GardenofAssemblageMap,
 | |
|         LocationName.GoALostIllusion,
 | |
|         LocationName.ProofofNonexistence,
 | |
|         LocationName.DonaldStarting1,
 | |
|         LocationName.DonaldStarting2,
 | |
|         LocationName.GoofyStarting1,
 | |
|         LocationName.GoofyStarting2,
 | |
|     ]
 | |
| 
 | |
|     goa_region = create_region(world, player, active_locations, RegionName.GoA_Region,
 | |
|                                goa_region_locations)
 | |
| 
 | |
|     lod_Region_locations = [
 | |
|         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,
 | |
|         LocationName.ShanYu,
 | |
|         LocationName.ShanYuGetBonus,
 | |
|         LocationName.HiddenDragon,
 | |
|         LocationName.GoofyShanYu,
 | |
|     ]
 | |
|     lod_Region = create_region(world, player, active_locations, RegionName.LoD_Region,
 | |
|                                lod_Region_locations)
 | |
|     lod2_Region_locations = [
 | |
|         LocationName.ThroneRoomTornPages,
 | |
|         LocationName.ThroneRoomPalaceMap,
 | |
|         LocationName.ThroneRoomAPBoost,
 | |
|         LocationName.ThroneRoomQueenRecipe,
 | |
|         LocationName.ThroneRoomAPBoost2,
 | |
|         LocationName.ThroneRoomOgreShield,
 | |
|         LocationName.ThroneRoomMythrilCrystal,
 | |
|         LocationName.ThroneRoomOrichalcum,
 | |
|         LocationName.StormRider,
 | |
|         LocationName.XigbarDataDefenseBoost,
 | |
|         LocationName.GoofyStormRider,
 | |
|     ]
 | |
|     lod2_Region = create_region(world, player, active_locations, RegionName.LoD2_Region,
 | |
|                                 lod2_Region_locations)
 | |
|     ag_region_locations = [
 | |
|         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.ElementalLords,
 | |
|         LocationName.LampCharm,
 | |
|         LocationName.GoofyTreasureRoom,
 | |
|         LocationName.DonaldAbuEscort,
 | |
|     ]
 | |
|     ag_region = create_region(world, player, active_locations, RegionName.Ag_Region,
 | |
|                               ag_region_locations)
 | |
|     ag2_region_locations = [
 | |
|         LocationName.RuinedChamberTornPages,
 | |
|         LocationName.RuinedChamberRuinsMap,
 | |
|         LocationName.GenieJafar,
 | |
|         LocationName.WishingLamp,
 | |
|     ]
 | |
|     ag2_region = create_region(world, player, active_locations, RegionName.Ag2_Region,
 | |
|                                ag2_region_locations)
 | |
|     lexaeus_region_locations = [
 | |
|         LocationName.LexaeusBonus,
 | |
|         LocationName.LexaeusASStrengthBeyondStrength,
 | |
|         LocationName.LexaeusDataLostIllusion,
 | |
|     ]
 | |
|     lexaeus_region = create_region(world, player, active_locations, RegionName.Lexaeus_Region,
 | |
|                                    lexaeus_region_locations)
 | |
| 
 | |
|     dc_region_locations = [
 | |
|         LocationName.DCCourtyardMythrilShard,
 | |
|         LocationName.DCCourtyardStarRecipe,
 | |
|         LocationName.DCCourtyardAPBoost,
 | |
|         LocationName.DCCourtyardMythrilStone,
 | |
|         LocationName.DCCourtyardBlazingStone,
 | |
|         LocationName.DCCourtyardBlazingShard,
 | |
|         LocationName.DCCourtyardMythrilShard2,
 | |
|         LocationName.LibraryTornPages,
 | |
|         LocationName.DisneyCastleMap,
 | |
|         LocationName.MinnieEscort,
 | |
|         LocationName.MinnieEscortGetBonus,
 | |
|     ]
 | |
|     dc_region = create_region(world, player, active_locations, RegionName.Dc_Region,
 | |
|                               dc_region_locations)
 | |
|     tr_region_locations = [
 | |
|         LocationName.CornerstoneHillMap,
 | |
|         LocationName.CornerstoneHillFrostShard,
 | |
|         LocationName.PierMythrilShard,
 | |
|         LocationName.PierHiPotion,
 | |
|         LocationName.WaterwayMythrilStone,
 | |
|         LocationName.WaterwayAPBoost,
 | |
|         LocationName.WaterwayFrostStone,
 | |
|         LocationName.WindowofTimeMap,
 | |
|         LocationName.BoatPete,
 | |
|         LocationName.FuturePete,
 | |
|         LocationName.FuturePeteGetBonus,
 | |
|         LocationName.Monochrome,
 | |
|         LocationName.WisdomForm,
 | |
|         LocationName.DonaldBoatPete,
 | |
|         LocationName.DonaldBoatPeteGetBonus,
 | |
|         LocationName.GoofyFuturePete,
 | |
|     ]
 | |
|     tr_region = create_region(world, player, active_locations, RegionName.Tr_Region,
 | |
|                               tr_region_locations)
 | |
|     marluxia_region_locations = [
 | |
|         LocationName.MarluxiaGetBonus,
 | |
|         LocationName.MarluxiaASEternalBlossom,
 | |
|         LocationName.MarluxiaDataLostIllusion,
 | |
|     ]
 | |
|     marluxia_region = create_region(world, player, active_locations, RegionName.Marluxia_Region,
 | |
|                                     marluxia_region_locations)
 | |
|     terra_region_locations = [
 | |
|         LocationName.LingeringWillBonus,
 | |
|         LocationName.LingeringWillProofofConnection,
 | |
|         LocationName.LingeringWillManifestIllusion,
 | |
|     ]
 | |
|     terra_region = create_region(world, player, active_locations, RegionName.Terra_Region,
 | |
|                                  terra_region_locations)
 | |
| 
 | |
|     hundred_acre1_region_locations = [
 | |
|         LocationName.PoohsHouse100AcreWoodMap,
 | |
|         LocationName.PoohsHouseAPBoost,
 | |
|         LocationName.PoohsHouseMythrilStone,
 | |
|     ]
 | |
|     hundred_acre1_region = create_region(world, player, active_locations, RegionName.HundredAcre1_Region,
 | |
|                                          hundred_acre1_region_locations)
 | |
|     hundred_acre2_region_locations = [
 | |
|         LocationName.PigletsHouseDefenseBoost,
 | |
|         LocationName.PigletsHouseAPBoost,
 | |
|         LocationName.PigletsHouseMythrilGem,
 | |
|     ]
 | |
|     hundred_acre2_region = create_region(world, player, active_locations, RegionName.HundredAcre2_Region,
 | |
|                                          hundred_acre2_region_locations)
 | |
|     hundred_acre3_region_locations = [
 | |
|         LocationName.RabbitsHouseDrawRing,
 | |
|         LocationName.RabbitsHouseMythrilCrystal,
 | |
|         LocationName.RabbitsHouseAPBoost,
 | |
|     ]
 | |
|     hundred_acre3_region = create_region(world, player, active_locations, RegionName.HundredAcre3_Region,
 | |
|                                          hundred_acre3_region_locations)
 | |
|     hundred_acre4_region_locations = [
 | |
|         LocationName.KangasHouseMagicBoost,
 | |
|         LocationName.KangasHouseAPBoost,
 | |
|         LocationName.KangasHouseOrichalcum,
 | |
|     ]
 | |
|     hundred_acre4_region = create_region(world, player, active_locations, RegionName.HundredAcre4_Region,
 | |
|                                          hundred_acre4_region_locations)
 | |
|     hundred_acre5_region_locations = [
 | |
|         LocationName.SpookyCaveMythrilGem,
 | |
|         LocationName.SpookyCaveAPBoost,
 | |
|         LocationName.SpookyCaveOrichalcum,
 | |
|         LocationName.SpookyCaveGuardRecipe,
 | |
|         LocationName.SpookyCaveMythrilCrystal,
 | |
|         LocationName.SpookyCaveAPBoost2,
 | |
|         LocationName.SweetMemories,
 | |
|         LocationName.SpookyCaveMap,
 | |
|     ]
 | |
|     hundred_acre5_region = create_region(world, player, active_locations, RegionName.HundredAcre5_Region,
 | |
|                                          hundred_acre5_region_locations)
 | |
|     hundred_acre6_region_locations = [
 | |
|         LocationName.StarryHillCosmicRing,
 | |
|         LocationName.StarryHillStyleRecipe,
 | |
|         LocationName.StarryHillCureElement,
 | |
|         LocationName.StarryHillOrichalcumPlus,
 | |
|     ]
 | |
|     hundred_acre6_region = create_region(world, player, active_locations, RegionName.HundredAcre6_Region,
 | |
|                                          hundred_acre6_region_locations)
 | |
|     pr_region_locations = [
 | |
|         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.Barbossa,
 | |
|         LocationName.BarbossaGetBonus,
 | |
|         LocationName.FollowtheWind,
 | |
|         LocationName.DonaldBoatFight,
 | |
|         LocationName.GoofyBarbossa,
 | |
|         LocationName.GoofyBarbossaGetBonus,
 | |
|         LocationName.GoofyInterceptorBarrels,
 | |
|     ]
 | |
|     pr_region = create_region(world, player, active_locations, RegionName.Pr_Region,
 | |
|                               pr_region_locations)
 | |
|     pr2_region_locations = [
 | |
|         LocationName.GrimReaper1,
 | |
|         LocationName.InterceptorsHoldFeatherCharm,
 | |
|         LocationName.SeadriftKeepAPBoost,
 | |
|         LocationName.SeadriftKeepOrichalcum,
 | |
|         LocationName.SeadriftKeepMeteorStaff,
 | |
|         LocationName.SeadriftRowSerenityGem,
 | |
|         LocationName.SeadriftRowKingRecipe,
 | |
|         LocationName.SeadriftRowMythrilCrystal,
 | |
|         LocationName.SeadriftRowCursedMedallion,
 | |
|         LocationName.SeadriftRowShipGraveyardMap,
 | |
|         LocationName.GoofyGrimReaper1,
 | |
| 
 | |
|     ]
 | |
|     pr2_region = create_region(world, player, active_locations, RegionName.Pr2_Region,
 | |
|                                pr2_region_locations)
 | |
|     gr2_region_locations = [
 | |
|         LocationName.DonaladGrimReaper2,
 | |
|         LocationName.GrimReaper2,
 | |
|         LocationName.SecretAnsemReport6,
 | |
|         LocationName.LuxordDataAPBoost,
 | |
|     ]
 | |
|     gr2_region = create_region(world, player, active_locations, RegionName.Gr2_Region,
 | |
|                                gr2_region_locations)
 | |
|     oc_region_locations = [
 | |
|         LocationName.PassageMythrilShard,
 | |
|         LocationName.PassageMythrilStone,
 | |
|         LocationName.PassageEther,
 | |
|         LocationName.PassageAPBoost,
 | |
|         LocationName.PassageHiPotion,
 | |
|         LocationName.InnerChamberUnderworldMap,
 | |
|         LocationName.InnerChamberMythrilShard,
 | |
|         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.PeteOC,
 | |
|         LocationName.Hydra,
 | |
|         LocationName.HydraGetBonus,
 | |
|         LocationName.HerosCrest,
 | |
|         LocationName.DonaldDemyxOC,
 | |
|         LocationName.GoofyPeteOC,
 | |
|     ]
 | |
|     oc_region = create_region(world, player, active_locations, RegionName.Oc_Region,
 | |
|                               oc_region_locations)
 | |
|     oc2_region_locations = [
 | |
|         LocationName.AuronsStatue,
 | |
|         LocationName.Hades,
 | |
|         LocationName.HadesGetBonus,
 | |
|         LocationName.GuardianSoul,
 | |
| 
 | |
|     ]
 | |
|     oc2_region = create_region(world, player, active_locations, RegionName.Oc2_Region,
 | |
|                                oc2_region_locations)
 | |
|     oc2_pain_and_panic_locations = [
 | |
|         LocationName.ProtectBeltPainandPanicCup,
 | |
|         LocationName.SerenityGemPainandPanicCup,
 | |
|     ]
 | |
|     oc2_titan_locations = [
 | |
|         LocationName.GenjiShieldTitanCup,
 | |
|         LocationName.SkillfulRingTitanCup,
 | |
|     ]
 | |
|     oc2_cerberus_locations = [
 | |
|         LocationName.RisingDragonCerberusCup,
 | |
|         LocationName.SerenityCrystalCerberusCup,
 | |
|     ]
 | |
|     oc2_gof_cup_locations = [
 | |
|         LocationName.FatalCrestGoddessofFateCup,
 | |
|         LocationName.OrichalcumPlusGoddessofFateCup,
 | |
|         LocationName.HadesCupTrophyParadoxCups,
 | |
|     ]
 | |
|     zexion_region_locations = [
 | |
|         LocationName.ZexionBonus,
 | |
|         LocationName.ZexionASBookofShadows,
 | |
|         LocationName.ZexionDataLostIllusion,
 | |
|         LocationName.GoofyZexion,
 | |
|     ]
 | |
|     oc2_pain_and_panic_cup = create_region(world, player, active_locations, RegionName.Oc2_pain_and_panic_Region,
 | |
|                                            oc2_pain_and_panic_locations)
 | |
|     oc2_titan_cup = create_region(world, player, active_locations, RegionName.Oc2_titan_Region, oc2_titan_locations)
 | |
|     oc2_cerberus_cup = create_region(world, player, active_locations, RegionName.Oc2_cerberus_Region,
 | |
|                                      oc2_cerberus_locations)
 | |
|     oc2_gof_cup = create_region(world, player, active_locations, RegionName.Oc2_gof_Region, oc2_gof_cup_locations)
 | |
|     zexion_region = create_region(world, player, active_locations, RegionName.Zexion_Region, zexion_region_locations)
 | |
| 
 | |
|     bc_region_locations = [
 | |
|         LocationName.BCCourtyardAPBoost,
 | |
|         LocationName.BCCourtyardHiPotion,
 | |
|         LocationName.BCCourtyardMythrilShard,
 | |
|         LocationName.BellesRoomCastleMap,
 | |
|         LocationName.BellesRoomMegaRecipe,
 | |
|         LocationName.TheEastWingMythrilShard,
 | |
|         LocationName.TheEastWingTent,
 | |
|         LocationName.TheWestHallHiPotion,
 | |
|         LocationName.TheWestHallPowerShard,
 | |
|         LocationName.TheWestHallMythrilShard2,
 | |
|         LocationName.TheWestHallBrightStone,
 | |
|         LocationName.TheWestHallMythrilShard,
 | |
|         LocationName.Thresholder,
 | |
|         LocationName.DungeonBasementMap,
 | |
|         LocationName.DungeonAPBoost,
 | |
|         LocationName.SecretPassageMythrilShard,
 | |
|         LocationName.SecretPassageHiPotion,
 | |
|         LocationName.SecretPassageLucidShard,
 | |
|         LocationName.TheWestHallAPBoostPostDungeon,
 | |
|         LocationName.TheWestWingMythrilShard,
 | |
|         LocationName.TheWestWingTent,
 | |
|         LocationName.Beast,
 | |
|         LocationName.TheBeastsRoomBlazingShard,
 | |
|         LocationName.DarkThorn,
 | |
|         LocationName.DarkThornGetBonus,
 | |
|         LocationName.DarkThornCureElement,
 | |
|         LocationName.DonaldThresholder,
 | |
|         LocationName.GoofyBeast,
 | |
|     ]
 | |
|     bc_region = create_region(world, player, active_locations, RegionName.Bc_Region,
 | |
|                               bc_region_locations)
 | |
|     bc2_region_locations = [
 | |
|         LocationName.RumblingRose,
 | |
|         LocationName.CastleWallsMap,
 | |
| 
 | |
|     ]
 | |
|     bc2_region = create_region(world, player, active_locations, RegionName.Bc2_Region,
 | |
|                                bc2_region_locations)
 | |
|     xaldin_region_locations = [
 | |
|         LocationName.Xaldin,
 | |
|         LocationName.XaldinGetBonus,
 | |
|         LocationName.DonaldXaldinGetBonus,
 | |
|         LocationName.SecretAnsemReport4,
 | |
|         LocationName.XaldinDataDefenseBoost,
 | |
|     ]
 | |
|     xaldin_region = create_region(world, player, active_locations, RegionName.Xaldin_Region,
 | |
|                                   xaldin_region_locations)
 | |
|     sp_region_locations = [
 | |
|         LocationName.PitCellAreaMap,
 | |
|         LocationName.PitCellMythrilCrystal,
 | |
|         LocationName.CanyonDarkCrystal,
 | |
|         LocationName.CanyonMythrilStone,
 | |
|         LocationName.CanyonMythrilGem,
 | |
|         LocationName.CanyonFrostCrystal,
 | |
|         LocationName.Screens,
 | |
|         LocationName.HallwayPowerCrystal,
 | |
|         LocationName.HallwayAPBoost,
 | |
|         LocationName.CommunicationsRoomIOTowerMap,
 | |
|         LocationName.CommunicationsRoomGaiaBelt,
 | |
|         LocationName.HostileProgram,
 | |
|         LocationName.HostileProgramGetBonus,
 | |
|         LocationName.PhotonDebugger,
 | |
|         LocationName.DonaldScreens,
 | |
|         LocationName.GoofyHostileProgram,
 | |
| 
 | |
|     ]
 | |
|     sp_region = create_region(world, player, active_locations, RegionName.Sp_Region,
 | |
|                               sp_region_locations)
 | |
|     sp2_region_locations = [
 | |
|         LocationName.SolarSailer,
 | |
|         LocationName.CentralComputerCoreAPBoost,
 | |
|         LocationName.CentralComputerCoreOrichalcumPlus,
 | |
|         LocationName.CentralComputerCoreCosmicArts,
 | |
|         LocationName.CentralComputerCoreMap,
 | |
| 
 | |
|         LocationName.DonaldSolarSailer,
 | |
|     ]
 | |
| 
 | |
|     sp2_region = create_region(world, player, active_locations, RegionName.Sp2_Region,
 | |
|                                sp2_region_locations)
 | |
|     mcp_region_locations = [
 | |
|         LocationName.MCP,
 | |
|         LocationName.MCPGetBonus,
 | |
|     ]
 | |
|     mcp_region = create_region(world, player, active_locations, RegionName.Mcp_Region,
 | |
|                                mcp_region_locations)
 | |
|     larxene_region_locations = [
 | |
|         LocationName.LarxeneBonus,
 | |
|         LocationName.LarxeneASCloakedThunder,
 | |
|         LocationName.LarxeneDataLostIllusion,
 | |
|     ]
 | |
|     larxene_region = create_region(world, player, active_locations, RegionName.Larxene_Region,
 | |
|                                    larxene_region_locations)
 | |
|     ht_region_locations = [
 | |
|         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,
 | |
|         LocationName.PrisonKeeper,
 | |
|         LocationName.OogieBoogie,
 | |
|         LocationName.OogieBoogieMagnetElement,
 | |
|         LocationName.DonaldPrisonKeeper,
 | |
|         LocationName.GoofyOogieBoogie,
 | |
|     ]
 | |
|     ht_region = create_region(world, player, active_locations, RegionName.Ht_Region,
 | |
|                               ht_region_locations)
 | |
|     ht2_region_locations = [
 | |
|         LocationName.Lock,
 | |
|         LocationName.Present,
 | |
|         LocationName.DecoyPresents,
 | |
|         LocationName.Experiment,
 | |
|         LocationName.DecisivePumpkin,
 | |
| 
 | |
|         LocationName.DonaldExperiment,
 | |
|         LocationName.GoofyLock,
 | |
|     ]
 | |
|     ht2_region = create_region(world, player, active_locations, RegionName.Ht2_Region,
 | |
|                                ht2_region_locations)
 | |
|     vexen_region_locations = [
 | |
|         LocationName.VexenBonus,
 | |
|         LocationName.VexenASRoadtoDiscovery,
 | |
|         LocationName.VexenDataLostIllusion,
 | |
|     ]
 | |
|     vexen_region = create_region(world, player, active_locations, RegionName.Vexen_Region,
 | |
|                                  vexen_region_locations)
 | |
|     hb_region_locations = [
 | |
|         LocationName.MarketplaceMap,
 | |
|         LocationName.BoroughDriveRecovery,
 | |
|         LocationName.BoroughAPBoost,
 | |
|         LocationName.BoroughHiPotion,
 | |
|         LocationName.BoroughMythrilShard,
 | |
|         LocationName.BoroughDarkShard,
 | |
|         LocationName.MerlinsHouseMembershipCard,
 | |
|         LocationName.MerlinsHouseBlizzardElement,
 | |
|         LocationName.Bailey,
 | |
|         LocationName.BaileySecretAnsemReport7,
 | |
|         LocationName.BaseballCharm,
 | |
|     ]
 | |
|     hb_region = create_region(world, player, active_locations, RegionName.Hb_Region,
 | |
|                               hb_region_locations)
 | |
|     hb2_region_locations = [
 | |
|         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,
 | |
|         LocationName.CoRDepthsAPBoost,
 | |
|         LocationName.CoRDepthsPowerCrystal,
 | |
|         LocationName.CoRDepthsFrostCrystal,
 | |
|         LocationName.CoRDepthsManifestIllusion,
 | |
|         LocationName.CoRDepthsAPBoost2,
 | |
|         LocationName.CoRMineshaftLowerLevelDepthsofRemembranceMap,
 | |
|         LocationName.CoRMineshaftLowerLevelAPBoost,
 | |
|         LocationName.DonaldDemyxHBGetBonus,
 | |
|     ]
 | |
|     hb2_region = create_region(world, player, active_locations, RegionName.Hb2_Region,
 | |
|                                hb2_region_locations)
 | |
|     onek_region_locations = [
 | |
|         LocationName.DemyxHB,
 | |
|         LocationName.DemyxHBGetBonus,
 | |
|         LocationName.FFFightsCureElement,
 | |
|         LocationName.CrystalFissureTornPages,
 | |
|         LocationName.CrystalFissureTheGreatMawMap,
 | |
|         LocationName.CrystalFissureEnergyCrystal,
 | |
|         LocationName.CrystalFissureAPBoost,
 | |
|         LocationName.ThousandHeartless,
 | |
|         LocationName.ThousandHeartlessSecretAnsemReport1,
 | |
|         LocationName.ThousandHeartlessIceCream,
 | |
|         LocationName.ThousandHeartlessPicture,
 | |
|         LocationName.PosternGullWing,
 | |
|         LocationName.HeartlessManufactoryCosmicChain,
 | |
|         LocationName.DemyxDataAPBoost,
 | |
|     ]
 | |
|     onek_region = create_region(world, player, active_locations, RegionName.ThousandHeartless_Region,
 | |
|                                 onek_region_locations)
 | |
|     mushroom_region_locations = [
 | |
|         LocationName.WinnersProof,
 | |
|         LocationName.ProofofPeace,
 | |
|     ]
 | |
|     mushroom_region = create_region(world, player, active_locations, RegionName.Mushroom13_Region,
 | |
|                                     mushroom_region_locations)
 | |
|     sephi_region_locations = [
 | |
|         LocationName.SephirothBonus,
 | |
|         LocationName.SephirothFenrir,
 | |
|     ]
 | |
|     sephi_region = create_region(world, player, active_locations, RegionName.Sephi_Region,
 | |
|                                  sephi_region_locations)
 | |
| 
 | |
|     cor_region_locations = [
 | |
|         LocationName.CoRDepthsUpperLevelRemembranceGem,
 | |
|         LocationName.CoRMiningAreaSerenityGem,
 | |
|         LocationName.CoRMiningAreaAPBoost,
 | |
|         LocationName.CoRMiningAreaSerenityCrystal,
 | |
|         LocationName.CoRMiningAreaManifestIllusion,
 | |
|         LocationName.CoRMiningAreaSerenityGem2,
 | |
|         LocationName.CoRMiningAreaDarkRemembranceMap,
 | |
|         LocationName.CoRMineshaftMidLevelPowerBoost,
 | |
|         LocationName.CoREngineChamberSerenityCrystal,
 | |
|         LocationName.CoREngineChamberRemembranceCrystal,
 | |
|         LocationName.CoREngineChamberAPBoost,
 | |
|         LocationName.CoREngineChamberManifestIllusion,
 | |
|         LocationName.CoRMineshaftUpperLevelMagicBoost,
 | |
|     ]
 | |
|     cor_region = create_region(world, player, active_locations, RegionName.CoR_Region,
 | |
|                                cor_region_locations)
 | |
|     transport_region_locations = [
 | |
|         LocationName.CoRMineshaftUpperLevelAPBoost,
 | |
|         LocationName.TransporttoRemembrance,
 | |
|     ]
 | |
|     transport_region = create_region(world, player, active_locations, RegionName.Transport_Region,
 | |
|                                      transport_region_locations)
 | |
|     pl_region_locations = [
 | |
|         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.Scar,
 | |
|         LocationName.ScarFireElement,
 | |
|         LocationName.DonaldScar,
 | |
|         LocationName.GoofyHyenas1,
 | |
| 
 | |
|     ]
 | |
|     pl_region = create_region(world, player, active_locations, RegionName.Pl_Region,
 | |
|                               pl_region_locations)
 | |
|     pl2_region_locations = [
 | |
|         LocationName.Hyenas2,
 | |
|         LocationName.Groundshaker,
 | |
|         LocationName.GroundshakerGetBonus,
 | |
|         LocationName.SaixDataDefenseBoost,
 | |
|         LocationName.GoofyHyenas2,
 | |
|     ]
 | |
|     pl2_region = create_region(world, player, active_locations, RegionName.Pl2_Region,
 | |
|                                pl2_region_locations)
 | |
| 
 | |
|     stt_region_locations = [
 | |
|         LocationName.TwilightTownMap,
 | |
|         LocationName.MunnyPouchOlette,
 | |
|         LocationName.StationDusks,
 | |
|         LocationName.StationofSerenityPotion,
 | |
|         LocationName.StationofCallingPotion,
 | |
|         LocationName.TwilightThorn,
 | |
|         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.Axel2,
 | |
|         LocationName.MansionBasementCorridorHiPotion,
 | |
|         LocationName.RoxasDataMagicBoost,
 | |
|     ]
 | |
|     stt_region = create_region(world, player, active_locations, RegionName.STT_Region,
 | |
|                                stt_region_locations)
 | |
| 
 | |
|     tt_region_locations = [
 | |
|         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,
 | |
|     ]
 | |
|     tt_region = create_region(world, player, active_locations, RegionName.TT_Region,
 | |
|                               tt_region_locations)
 | |
|     tt2_region_locations = [
 | |
|         LocationName.SeifersTrophy,
 | |
|         LocationName.Oathkeeper,
 | |
|         LocationName.LimitForm,
 | |
|     ]
 | |
|     tt2_region = create_region(world, player, active_locations, RegionName.TT2_Region,
 | |
|                                tt2_region_locations)
 | |
|     tt3_region_locations = [
 | |
|         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.AxelDataMagicBoost,
 | |
|         LocationName.DonaldMansionNobodies,
 | |
|     ]
 | |
|     tt3_region = create_region(world, player, active_locations, RegionName.TT3_Region,
 | |
|                                tt3_region_locations)
 | |
| 
 | |
|     twtnw_region_locations = [
 | |
|         LocationName.FragmentCrossingMythrilStone,
 | |
|         LocationName.FragmentCrossingMythrilCrystal,
 | |
|         LocationName.FragmentCrossingAPBoost,
 | |
|         LocationName.FragmentCrossingOrichalcum,
 | |
|     ]
 | |
| 
 | |
|     twtnw_region = create_region(world, player, active_locations, RegionName.Twtnw_Region,
 | |
|                                  twtnw_region_locations)
 | |
|     twtnw_postroxas_region_locations = [
 | |
|         LocationName.Roxas,
 | |
|         LocationName.RoxasGetBonus,
 | |
|         LocationName.RoxasSecretAnsemReport8,
 | |
|         LocationName.TwoBecomeOne,
 | |
|         LocationName.MemorysSkyscaperMythrilCrystal,
 | |
|         LocationName.MemorysSkyscaperAPBoost,
 | |
|         LocationName.MemorysSkyscaperMythrilStone,
 | |
|         LocationName.TheBrinkofDespairDarkCityMap,
 | |
|         LocationName.TheBrinkofDespairOrichalcumPlus,
 | |
|         LocationName.NothingsCallMythrilGem,
 | |
|         LocationName.NothingsCallOrichalcum,
 | |
|         LocationName.TwilightsViewCosmicBelt,
 | |
| 
 | |
|     ]
 | |
|     twtnw_postroxas_region = create_region(world, player, active_locations, RegionName.Twtnw_PostRoxas,
 | |
|                                            twtnw_postroxas_region_locations)
 | |
|     twtnw_postxigbar_region_locations = [
 | |
|         LocationName.XigbarBonus,
 | |
|         LocationName.XigbarSecretAnsemReport3,
 | |
|         LocationName.NaughtsSkywayMythrilGem,
 | |
|         LocationName.NaughtsSkywayOrichalcum,
 | |
|         LocationName.NaughtsSkywayMythrilCrystal,
 | |
|         LocationName.Oblivion,
 | |
|         LocationName.CastleThatNeverWasMap,
 | |
|         LocationName.Luxord,
 | |
|         LocationName.LuxordGetBonus,
 | |
|         LocationName.LuxordSecretAnsemReport9,
 | |
|     ]
 | |
|     twtnw_postxigbar_region = create_region(world, player, active_locations, RegionName.Twtnw_PostXigbar,
 | |
|                                             twtnw_postxigbar_region_locations)
 | |
|     twtnw2_region_locations = [
 | |
|         LocationName.SaixBonus,
 | |
|         LocationName.SaixSecretAnsemReport12,
 | |
|         LocationName.PreXemnas1SecretAnsemReport11,
 | |
|         LocationName.RuinandCreationsPassageMythrilStone,
 | |
|         LocationName.RuinandCreationsPassageAPBoost,
 | |
|         LocationName.RuinandCreationsPassageMythrilCrystal,
 | |
|         LocationName.RuinandCreationsPassageOrichalcum,
 | |
|         LocationName.Xemnas1,
 | |
|         LocationName.Xemnas1GetBonus,
 | |
|         LocationName.Xemnas1SecretAnsemReport13,
 | |
|         LocationName.FinalXemnas,
 | |
|         LocationName.XemnasDataPowerBoost,
 | |
|     ]
 | |
|     twtnw2_region = create_region(world, player, active_locations, RegionName.Twtnw2_Region,
 | |
|                                   twtnw2_region_locations)
 | |
| 
 | |
|     valor_region_locations = [
 | |
|         LocationName.Valorlvl2,
 | |
|         LocationName.Valorlvl3,
 | |
|         LocationName.Valorlvl4,
 | |
|         LocationName.Valorlvl5,
 | |
|         LocationName.Valorlvl6,
 | |
|         LocationName.Valorlvl7,
 | |
|     ]
 | |
|     valor_region = create_region(world, player, active_locations, RegionName.Valor_Region,
 | |
|                                  valor_region_locations)
 | |
|     wisdom_region_locations = [
 | |
|         LocationName.Wisdomlvl2,
 | |
|         LocationName.Wisdomlvl3,
 | |
|         LocationName.Wisdomlvl4,
 | |
|         LocationName.Wisdomlvl5,
 | |
|         LocationName.Wisdomlvl6,
 | |
|         LocationName.Wisdomlvl7,
 | |
|     ]
 | |
|     wisdom_region = create_region(world, player, active_locations, RegionName.Wisdom_Region,
 | |
|                                   wisdom_region_locations)
 | |
|     limit_region_locations = [
 | |
|         LocationName.Limitlvl2,
 | |
|         LocationName.Limitlvl3,
 | |
|         LocationName.Limitlvl4,
 | |
|         LocationName.Limitlvl5,
 | |
|         LocationName.Limitlvl6,
 | |
|         LocationName.Limitlvl7,
 | |
|     ]
 | |
|     limit_region = create_region(world, player, active_locations, RegionName.Limit_Region,
 | |
|                                  limit_region_locations)
 | |
|     master_region_locations = [
 | |
|         LocationName.Masterlvl2,
 | |
|         LocationName.Masterlvl3,
 | |
|         LocationName.Masterlvl4,
 | |
|         LocationName.Masterlvl5,
 | |
|         LocationName.Masterlvl6,
 | |
|         LocationName.Masterlvl7,
 | |
|     ]
 | |
|     master_region = create_region(world, player, active_locations, RegionName.Master_Region,
 | |
|                                   master_region_locations)
 | |
|     final_region_locations = [
 | |
|         LocationName.Finallvl2,
 | |
|         LocationName.Finallvl3,
 | |
|         LocationName.Finallvl4,
 | |
|         LocationName.Finallvl5,
 | |
|         LocationName.Finallvl6,
 | |
|         LocationName.Finallvl7,
 | |
|     ]
 | |
|     final_region = create_region(world, player, active_locations, RegionName.Final_Region,
 | |
|                                  final_region_locations)
 | |
|     keyblade_region_locations = [
 | |
|         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,
 | |
|     ]
 | |
|     keyblade_region = create_region(world, player, active_locations, RegionName.Keyblade_Region,
 | |
|                                     keyblade_region_locations)
 | |
| 
 | |
|     world.regions += [
 | |
|         lod_Region,
 | |
|         lod2_Region,
 | |
|         ag_region,
 | |
|         ag2_region,
 | |
|         lexaeus_region,
 | |
|         dc_region,
 | |
|         tr_region,
 | |
|         terra_region,
 | |
|         marluxia_region,
 | |
|         hundred_acre1_region,
 | |
|         hundred_acre2_region,
 | |
|         hundred_acre3_region,
 | |
|         hundred_acre4_region,
 | |
|         hundred_acre5_region,
 | |
|         hundred_acre6_region,
 | |
|         pr_region,
 | |
|         pr2_region,
 | |
|         gr2_region,
 | |
|         oc_region,
 | |
|         oc2_region,
 | |
|         oc2_pain_and_panic_cup,
 | |
|         oc2_titan_cup,
 | |
|         oc2_cerberus_cup,
 | |
|         oc2_gof_cup,
 | |
|         zexion_region,
 | |
|         bc_region,
 | |
|         bc2_region,
 | |
|         xaldin_region,
 | |
|         sp_region,
 | |
|         sp2_region,
 | |
|         mcp_region,
 | |
|         larxene_region,
 | |
|         ht_region,
 | |
|         ht2_region,
 | |
|         vexen_region,
 | |
|         hb_region,
 | |
|         hb2_region,
 | |
|         onek_region,
 | |
|         mushroom_region,
 | |
|         sephi_region,
 | |
|         cor_region,
 | |
|         transport_region,
 | |
|         pl_region,
 | |
|         pl2_region,
 | |
|         stt_region,
 | |
|         tt_region,
 | |
|         tt2_region,
 | |
|         tt3_region,
 | |
|         twtnw_region,
 | |
|         twtnw_postroxas_region,
 | |
|         twtnw_postxigbar_region,
 | |
|         twtnw2_region,
 | |
|         goa_region,
 | |
|         menu_region,
 | |
|         valor_region,
 | |
|         wisdom_region,
 | |
|         limit_region,
 | |
|         master_region,
 | |
|         final_region,
 | |
|         keyblade_region,
 | |
|     ]
 | |
|     # Level region depends on level depth.
 | |
|     # for every 5 levels there should be +3 visit locking
 | |
|     levelVL1 = []
 | |
|     levelVL3 = []
 | |
|     levelVL6 = []
 | |
|     levelVL9 = []
 | |
|     levelVL12 = []
 | |
|     levelVL15 = []
 | |
|     levelVL18 = []
 | |
|     levelVL21 = []
 | |
|     levelVL24 = []
 | |
|     levelVL26 = []
 | |
|     # level 50
 | |
|     if world.LevelDepth[player] == "level_50":
 | |
|         levelVL1 = [LocationName.Lvl2, LocationName.Lvl4, LocationName.Lvl7, LocationName.Lvl9, LocationName.Lvl10]
 | |
|         levelVL3 = [LocationName.Lvl12, LocationName.Lvl14, LocationName.Lvl15, LocationName.Lvl17,
 | |
|                     LocationName.Lvl20, ]
 | |
|         levelVL6 = [LocationName.Lvl23, LocationName.Lvl25, LocationName.Lvl28, LocationName.Lvl30]
 | |
|         levelVL9 = [LocationName.Lvl32, LocationName.Lvl34, LocationName.Lvl36, LocationName.Lvl39, LocationName.Lvl41]
 | |
|         levelVL12 = [LocationName.Lvl44, LocationName.Lvl46, LocationName.Lvl48]
 | |
|         levelVL15 = [LocationName.Lvl50]
 | |
|     # level 99
 | |
|     elif world.LevelDepth[player] == "level_99":
 | |
|         levelVL1 = [LocationName.Lvl7, LocationName.Lvl9, ]
 | |
|         levelVL3 = [LocationName.Lvl12, LocationName.Lvl15, LocationName.Lvl17, LocationName.Lvl20]
 | |
|         levelVL6 = [LocationName.Lvl23, LocationName.Lvl25, LocationName.Lvl28]
 | |
|         levelVL9 = [LocationName.Lvl31, LocationName.Lvl33, LocationName.Lvl36, LocationName.Lvl39]
 | |
|         levelVL12 = [LocationName.Lvl41, LocationName.Lvl44, LocationName.Lvl47, LocationName.Lvl49]
 | |
|         levelVL15 = [LocationName.Lvl53, LocationName.Lvl59]
 | |
|         levelVL18 = [LocationName.Lvl65]
 | |
|         levelVL21 = [LocationName.Lvl73]
 | |
|         levelVL24 = [LocationName.Lvl85]
 | |
|         levelVL26 = [LocationName.Lvl99]
 | |
|     # level sanity
 | |
|     # has to be [] instead of {} for in
 | |
|     elif world.LevelDepth[player] in ["level_50_sanity", "level_99_sanity"]:
 | |
|         levelVL1 = [LocationName.Lvl2, LocationName.Lvl3, LocationName.Lvl4, LocationName.Lvl5, LocationName.Lvl6,
 | |
|                     LocationName.Lvl7, LocationName.Lvl8, LocationName.Lvl9, LocationName.Lvl10]
 | |
|         levelVL3 = [LocationName.Lvl11, LocationName.Lvl12, LocationName.Lvl13, LocationName.Lvl14, LocationName.Lvl15,
 | |
|                     LocationName.Lvl16, LocationName.Lvl17, LocationName.Lvl18, LocationName.Lvl19, LocationName.Lvl20]
 | |
|         levelVL6 = [LocationName.Lvl21, LocationName.Lvl22, LocationName.Lvl23, LocationName.Lvl24, LocationName.Lvl25,
 | |
|                     LocationName.Lvl26, LocationName.Lvl27, LocationName.Lvl28, LocationName.Lvl29, LocationName.Lvl30]
 | |
|         levelVL9 = [LocationName.Lvl31, LocationName.Lvl32, LocationName.Lvl33, LocationName.Lvl34, LocationName.Lvl35,
 | |
|                     LocationName.Lvl36, LocationName.Lvl37, LocationName.Lvl38, LocationName.Lvl39, LocationName.Lvl40]
 | |
|         levelVL12 = [LocationName.Lvl41, LocationName.Lvl42, LocationName.Lvl43, LocationName.Lvl44, LocationName.Lvl45,
 | |
|                      LocationName.Lvl46, LocationName.Lvl47, LocationName.Lvl48, LocationName.Lvl49, LocationName.Lvl50]
 | |
|         # level 99 sanity
 | |
|         if world.LevelDepth[player] == "level_99_sanity":
 | |
|             levelVL15 = [LocationName.Lvl51, LocationName.Lvl52, LocationName.Lvl53, LocationName.Lvl54,
 | |
|                          LocationName.Lvl55, LocationName.Lvl56, LocationName.Lvl57, LocationName.Lvl58,
 | |
|                          LocationName.Lvl59, LocationName.Lvl60]
 | |
|             levelVL18 = [LocationName.Lvl61, LocationName.Lvl62, LocationName.Lvl63, LocationName.Lvl64,
 | |
|                          LocationName.Lvl65, LocationName.Lvl66, LocationName.Lvl67, LocationName.Lvl68,
 | |
|                          LocationName.Lvl69, LocationName.Lvl70]
 | |
|             levelVL21 = [LocationName.Lvl71, LocationName.Lvl72, LocationName.Lvl73, LocationName.Lvl74,
 | |
|                          LocationName.Lvl75, LocationName.Lvl76, LocationName.Lvl77, LocationName.Lvl78,
 | |
|                          LocationName.Lvl79, LocationName.Lvl80]
 | |
|             levelVL24 = [LocationName.Lvl81, LocationName.Lvl82, LocationName.Lvl83, LocationName.Lvl84,
 | |
|                          LocationName.Lvl85, LocationName.Lvl86, LocationName.Lvl87, LocationName.Lvl88,
 | |
|                          LocationName.Lvl89, LocationName.Lvl90]
 | |
|             levelVL26 = [LocationName.Lvl91, LocationName.Lvl92, LocationName.Lvl93, LocationName.Lvl94,
 | |
|                          LocationName.Lvl95, LocationName.Lvl96, LocationName.Lvl97, LocationName.Lvl98,
 | |
|                          LocationName.Lvl99]
 | |
| 
 | |
|     level_regionVL1 = create_region(world, player, active_locations, RegionName.LevelsVS1,
 | |
|                                     levelVL1)
 | |
|     level_regionVL3 = create_region(world, player, active_locations, RegionName.LevelsVS3,
 | |
|                                     levelVL3)
 | |
|     level_regionVL6 = create_region(world, player, active_locations, RegionName.LevelsVS6,
 | |
|                                     levelVL6)
 | |
|     level_regionVL9 = create_region(world, player, active_locations, RegionName.LevelsVS9,
 | |
|                                     levelVL9)
 | |
|     level_regionVL12 = create_region(world, player, active_locations, RegionName.LevelsVS12,
 | |
|                                      levelVL12)
 | |
|     level_regionVL15 = create_region(world, player, active_locations, RegionName.LevelsVS15,
 | |
|                                      levelVL15)
 | |
|     level_regionVL18 = create_region(world, player, active_locations, RegionName.LevelsVS18,
 | |
|                                      levelVL18)
 | |
|     level_regionVL21 = create_region(world, player, active_locations, RegionName.LevelsVS21,
 | |
|                                      levelVL21)
 | |
|     level_regionVL24 = create_region(world, player, active_locations, RegionName.LevelsVS24,
 | |
|                                      levelVL24)
 | |
|     level_regionVL26 = create_region(world, player, active_locations, RegionName.LevelsVS26,
 | |
|                                      levelVL26)
 | |
|     world.regions += [level_regionVL1, level_regionVL3, level_regionVL6, level_regionVL9, level_regionVL12,
 | |
|                       level_regionVL15, level_regionVL18, level_regionVL21, level_regionVL24, level_regionVL26]
 | |
| 
 | |
| 
 | |
| def connect_regions(world: MultiWorld, player: int):
 | |
|     # connecting every first visit to the GoA
 | |
| 
 | |
|     names: typing.Dict[str, int] = {}
 | |
| 
 | |
|     connect(world, player, names, "Menu", RegionName.Keyblade_Region)
 | |
|     connect(world, player, names, "Menu", RegionName.GoA_Region)
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.LoD_Region,
 | |
|             lambda state: state.kh_lod_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.LoD_Region, RegionName.LoD2_Region,
 | |
|             lambda state: state.kh_lod_unlocked(player, 2))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Oc_Region,
 | |
|             lambda state: state.kh_oc_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Oc_Region, RegionName.Oc2_Region,
 | |
|             lambda state: state.kh_oc_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Oc2_Region, RegionName.Zexion_Region,
 | |
|             lambda state: state.kh_datazexion(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.Oc2_Region, RegionName.Oc2_pain_and_panic_Region,
 | |
|             lambda state: state.kh_painandpanic(player))
 | |
|     connect(world, player, names, RegionName.Oc2_Region, RegionName.Oc2_cerberus_Region,
 | |
|             lambda state: state.kh_cerberuscup(player))
 | |
|     connect(world, player, names, RegionName.Oc2_Region, RegionName.Oc2_titan_Region,
 | |
|             lambda state: state.kh_titan(player))
 | |
|     connect(world, player, names, RegionName.Oc2_Region, RegionName.Oc2_gof_Region,
 | |
|             lambda state: state.kh_gof(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Ag_Region,
 | |
|             lambda state: state.kh_ag_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Ag_Region, RegionName.Ag2_Region,
 | |
|             lambda state: state.kh_ag_unlocked(player, 2)
 | |
|                           and (state.has(ItemName.FireElement, player)
 | |
|                                and state.has(ItemName.BlizzardElement, player)
 | |
|                                and state.has(ItemName.ThunderElement, player)))
 | |
|     connect(world, player, names, RegionName.Ag2_Region, RegionName.Lexaeus_Region,
 | |
|             lambda state: state.kh_datalexaeus(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Dc_Region,
 | |
|             lambda state: state.kh_dc_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Dc_Region, RegionName.Tr_Region,
 | |
|             lambda state: state.kh_dc_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Tr_Region, RegionName.Marluxia_Region,
 | |
|             lambda state: state.kh_datamarluxia(player))
 | |
|     connect(world, player, names, RegionName.Tr_Region, RegionName.Terra_Region, lambda state: state.kh_terra(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Pr_Region,
 | |
|             lambda state: state.kh_pr_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Pr_Region, RegionName.Pr2_Region,
 | |
|             lambda state: state.kh_pr_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Pr2_Region, RegionName.Gr2_Region,
 | |
|             lambda state: state.kh_gr2(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Bc_Region,
 | |
|             lambda state: state.kh_bc_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Bc_Region, RegionName.Bc2_Region,
 | |
|             lambda state: state.kh_bc_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Bc2_Region, RegionName.Xaldin_Region,
 | |
|             lambda state: state.kh_xaldin(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Sp_Region,
 | |
|             lambda state: state.kh_sp_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Sp_Region, RegionName.Sp2_Region,
 | |
|             lambda state: state.kh_sp_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Sp2_Region, RegionName.Mcp_Region,
 | |
|             lambda state: state.kh_mcp(player))
 | |
|     connect(world, player, names, RegionName.Mcp_Region, RegionName.Larxene_Region,
 | |
|             lambda state: state.kh_datalarxene(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Ht_Region,
 | |
|             lambda state: state.kh_ht_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Ht_Region, RegionName.Ht2_Region,
 | |
|             lambda state: state.kh_ht_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Ht2_Region, RegionName.Vexen_Region,
 | |
|             lambda state: state.kh_datavexen(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Hb_Region,
 | |
|             lambda state: state.kh_hb_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Hb_Region, RegionName.Hb2_Region,
 | |
|             lambda state: state.kh_hb_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.Hb2_Region, RegionName.ThousandHeartless_Region,
 | |
|             lambda state: state.kh_onek(player))
 | |
|     connect(world, player, names, RegionName.ThousandHeartless_Region, RegionName.Mushroom13_Region,
 | |
|             lambda state: state.has(ItemName.ProofofPeace, player))
 | |
|     connect(world, player, names, RegionName.ThousandHeartless_Region, RegionName.Sephi_Region,
 | |
|             lambda state: state.kh_sephi(player))
 | |
| 
 | |
|     connect(world, player, names, RegionName.Hb2_Region, RegionName.CoR_Region, lambda state: state.kh_cor(player))
 | |
|     connect(world, player, names, RegionName.CoR_Region, RegionName.Transport_Region, lambda state:
 | |
|     state.has(ItemName.HighJump, player, 3)
 | |
|     and state.has(ItemName.AerialDodge, player, 3)
 | |
|     and state.has(ItemName.Glide, player, 3))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Pl_Region,
 | |
|             lambda state: state.kh_pl_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.Pl_Region, RegionName.Pl2_Region,
 | |
|             lambda state: state.kh_pl_unlocked(player, 2) and (
 | |
|                     state.has(ItemName.BerserkCharge, player) or state.kh_reflect(player)))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.STT_Region,
 | |
|             lambda state: state.kh_stt_unlocked(player, 1))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.TT_Region,
 | |
|             lambda state: state.kh_tt_unlocked(player, 1))
 | |
|     connect(world, player, names, RegionName.TT_Region, RegionName.TT2_Region,
 | |
|             lambda state: state.kh_tt_unlocked(player, 2))
 | |
|     connect(world, player, names, RegionName.TT2_Region, RegionName.TT3_Region,
 | |
|             lambda state: state.kh_tt_unlocked(player, 3))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.Twtnw_Region,
 | |
|             lambda state: state.kh_twtnw_unlocked(player, 0))
 | |
|     connect(world, player, names, RegionName.Twtnw_Region, RegionName.Twtnw_PostRoxas,
 | |
|             lambda state: state.kh_roxastools(player))
 | |
|     connect(world, player, names, RegionName.Twtnw_PostRoxas, RegionName.Twtnw_PostXigbar,
 | |
|             lambda state: state.kh_basetools(player) and (state.kh_donaldlimit(player) or (
 | |
|                     state.has(ItemName.FinalForm, player) and state.has(ItemName.FireElement, player))))
 | |
|     connect(world, player, names, RegionName.Twtnw_PostRoxas, RegionName.Twtnw2_Region,
 | |
|             lambda state: state.kh_twtnw_unlocked(player, 1))
 | |
| 
 | |
|     hundredacrevisits = {RegionName.HundredAcre1_Region: 0, RegionName.HundredAcre2_Region: 1,
 | |
|                          RegionName.HundredAcre3_Region: 2,
 | |
|                          RegionName.HundredAcre4_Region: 3, RegionName.HundredAcre5_Region: 4,
 | |
|                          RegionName.HundredAcre6_Region: 5}
 | |
|     for visit, tornpage in hundredacrevisits.items():
 | |
|         connect(world, player, names, RegionName.GoA_Region, visit,
 | |
|                 lambda state: (state.has(ItemName.TornPages, player, tornpage)))
 | |
| 
 | |
|     connect(world, player, names, RegionName.GoA_Region, RegionName.LevelsVS1,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 1))
 | |
|     connect(world, player, names, RegionName.LevelsVS1, RegionName.LevelsVS3,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 3))
 | |
|     connect(world, player, names, RegionName.LevelsVS3, RegionName.LevelsVS6,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 6))
 | |
|     connect(world, player, names, RegionName.LevelsVS6, RegionName.LevelsVS9,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 9))
 | |
|     connect(world, player, names, RegionName.LevelsVS9, RegionName.LevelsVS12,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 12))
 | |
|     connect(world, player, names, RegionName.LevelsVS12, RegionName.LevelsVS15,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 15))
 | |
|     connect(world, player, names, RegionName.LevelsVS15, RegionName.LevelsVS18,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 18))
 | |
|     connect(world, player, names, RegionName.LevelsVS18, RegionName.LevelsVS21,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 21))
 | |
|     connect(world, player, names, RegionName.LevelsVS21, RegionName.LevelsVS24,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 24))
 | |
|     connect(world, player, names, RegionName.LevelsVS24, RegionName.LevelsVS26,
 | |
|             lambda state: state.kh_visit_locking_amount(player, 25))  # 25 because of goa twtnw bugs with visit locking.
 | |
| 
 | |
|     for region in RegionTable["ValorRegion"]:
 | |
|         connect(world, player, names, region, RegionName.Valor_Region,
 | |
|                 lambda state: state.has(ItemName.ValorForm, player))
 | |
|     for region in RegionTable["WisdomRegion"]:
 | |
|         connect(world, player, names, region, RegionName.Wisdom_Region,
 | |
|                 lambda state: state.has(ItemName.WisdomForm, player))
 | |
|     for region in RegionTable["LimitRegion"]:
 | |
|         connect(world, player, names, region, RegionName.Limit_Region,
 | |
|                 lambda state: state.has(ItemName.LimitForm, player))
 | |
|     for region in RegionTable["MasterRegion"]:
 | |
|         connect(world, player, names, region, RegionName.Master_Region,
 | |
|                 lambda state: state.has(ItemName.MasterForm, player) and state.has(ItemName.DriveConverter, player))
 | |
|     for region in RegionTable["FinalRegion"]:
 | |
|         connect(world, player, names, region, RegionName.Final_Region,
 | |
|                 lambda state: state.has(ItemName.FinalForm, player))
 | |
| 
 | |
| 
 | |
| # shamelessly stolen from the sa2b
 | |
| def connect(world: MultiWorld, player: int, used_names: typing.Dict[str, int], source: str, target: str,
 | |
|             rule: typing.Optional[typing.Callable] = None):
 | |
|     source_region = world.get_region(source, player)
 | |
|     target_region = world.get_region(target, player)
 | |
| 
 | |
|     if target not in used_names:
 | |
|         used_names[target] = 1
 | |
|         name = target
 | |
|     else:
 | |
|         used_names[target] += 1
 | |
|         name = target + (' ' * used_names[target])
 | |
| 
 | |
|     connection = Entrance(player, name, source_region)
 | |
| 
 | |
|     if rule:
 | |
|         connection.access_rule = rule
 | |
| 
 | |
|     source_region.exits.append(connection)
 | |
|     connection.connect(target_region)
 | |
| 
 | |
| 
 | |
| def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
 | |
|     ret = Region(name, player, world)
 | |
|     if locations:
 | |
|         for location in locations:
 | |
|             loc_id = active_locations.get(location, 0)
 | |
|             if loc_id:
 | |
|                 location = KH2Location(player, location, loc_id.code, ret)
 | |
|                 ret.locations.append(location)
 | |
| 
 | |
|     return ret
 | 
