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
|