Files
dockipelago/worlds/gstla/Regions.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

816 lines
29 KiB
Python

from typing import List, Dict, Optional, TYPE_CHECKING
from BaseClasses import MultiWorld, Region
from worlds.gstla.Locations import GSTLALocation, location_name_to_id
from .gen.LocationNames import LocationName
from .gen.LocationData import LocationType
from .Names.RegionName import RegionName
from .Names.EntranceName import EntranceName
from copy import deepcopy
from .GstlaTypes import RegionData
if TYPE_CHECKING:
from . import GSTLAWorld
def create_region(world: 'GSTLAWorld', region_data: RegionData):
region = Region(region_data.name, world.player, world.multiworld)
gs_locations: Dict[str, Optional[int]] = dict()
for location in region_data.locations:
location_data = location_name_to_id[location]
#logging.error(region.name + ' ' + location)
if world.options.item_shuffle < 3 and location_data.loc_type == LocationType.Hidden:
continue
if location_data.loc_type == LocationType.Djinn:
loc = GSTLALocation.create_djinn_location(world.player, location, location_data, region)
elif location_data.loc_type == LocationType.Event:
loc = GSTLALocation.create_event_location(world.player, location, location_data, region)
else:
loc = GSTLALocation(world.player, location, location_data, region)
region.locations.append(loc)
region.add_locations(gs_locations)
for regionExit in region_data.exits:
region.create_exit(regionExit)
world.multiworld.regions.append(region)
def create_regions(world: 'GSTLAWorld'):
regions_copy = deepcopy(regions)
if world.options.omit_locations < 2:
regions_copy[RegionName.YampiDesertCave].locations.append(LocationName.Yampi_Desert_Cave_Valukar)
regions_copy[RegionName.YampiDesertCave].locations.append(LocationName.Yampi_Desert_Cave_Daedalus)
regions_copy[RegionName.IsletCave].locations.append(LocationName.Islet_Cave_Sentinel)
regions_copy[RegionName.IsletCave].locations.append(LocationName.Islet_Cave_Catastrophe)
regions_copy[RegionName.TreasureIsland_PostReunion].locations.append(LocationName.Treasure_Isle_Star_Magician)
regions_copy[RegionName.TreasureIsland_PostReunion].locations.append(LocationName.Treasure_Isle_Azul)
if world.options.omit_locations < 1:
regions_copy[RegionName.AnemosSanctum].locations.append(LocationName.Anemos_Inner_Sanctum_Dullahan)
regions_copy[RegionName.AnemosSanctum].locations.append(LocationName.Anemos_Inner_Sanctum_Orihalcon)
regions_copy[RegionName.AnemosSanctum].locations.append(LocationName.Anemos_Inner_Sanctum_Iris)
regions_copy[RegionName.AnemosSanctum].locations.append(LocationName.Anemos_Inner_Sanctum_Charon)
regions_copy[RegionName.AnemosSanctum].locations.append(LocationName.Anemos_Inner_Sanctum_Dark_Matter)
if world.options.lemurian_ship < 2:
regions_copy[RegionName.Lemurian_Ship].locations.append(LocationName.Lemurian_Ship_Engine_Room)
regions_copy[RegionName.Lemurian_Ship].locations.append(LocationName.Lemurian_Ship_Aqua_Hydra)
else:
regions_copy[RegionName.Lemurian_Ship_Revisit].locations.append(LocationName.Lemurian_Ship_Aqua_Hydra)
if world.options.start_with_wings_of_anemos == 0:
regions_copy[RegionName.Reunion].locations.append(LocationName.Contigo_Wings_of_Anemos)
for region in regions_copy.values():
create_region(world, region)
regions: Dict[str, RegionData] = {
RegionName.Menu: RegionData(RegionName.Menu, None, [EntranceName.Menu_StartGame]),
RegionName.Idejima: RegionData(RegionName.Idejima,
[
LocationName.Idejima_Growth,
LocationName.Idejima_Shamans_Rod,
LocationName.Idejima_Jenna,
LocationName.Idejima_Sheba,
LocationName.Victory_Event,
],
[
EntranceName.IdejimaToDaila,
EntranceName.AnywhereToJoinedPartyMembers
]),
RegionName.PartyMembers: RegionData(RegionName.PartyMembers,
[
LocationName.Idejima_Mind_Read,
LocationName.Idejima_Whirlwind,
LocationName.Kibombo_Douse_Drop,
LocationName.Kibombo_Frost_Jewel,
LocationName.Spring,
LocationName.Shade,
LocationName.Contigo_Carry_Stone,
LocationName.Contigo_Lifting_Gem,
LocationName.Contigo_Orb_of_Force,
LocationName.Contigo_Catch_Beads,
LocationName.Flint,
LocationName.Granite,
LocationName.Quartz,
LocationName.Vine,
LocationName.Sap,
LocationName.Ground,
LocationName.Fizz,
LocationName.Sleet,
LocationName.Mist,
LocationName.Spritz,
LocationName.Hail,
LocationName.Tonic,
LocationName.Forge,
LocationName.Fever,
LocationName.Corona,
LocationName.Scorch,
LocationName.Ember,
LocationName.Flash,
LocationName.Gust,
LocationName.Breeze,
LocationName.Zephyr,
LocationName.Smog,
LocationName.Kite,
LocationName.Squall
],
[]),
RegionName.Daila: RegionData(RegionName.Daila,
[
LocationName.Daila_Herb,
LocationName.Daila_3_coins,
LocationName.Daila_12_coins,
LocationName.Daila_Psy_Crystal,
LocationName.Daila_Sleep_Bomb,
LocationName.Daila_Sea_Gods_Tear,
LocationName.Daila_Smoke_Bomb,
LocationName.Echo
],
[
EntranceName.DailaToShrineOfTheSeaGod,
EntranceName.DailaToKandoreanTemple,
EntranceName.DailaToDehkanPlateau
]),
RegionName.KandoreamTemple: RegionData(RegionName.KandoreamTemple,
[
LocationName.Kandorean_Temple_Mimic,
LocationName.Kandorean_Temple_Lash_Pebble,
LocationName.Kandorean_Temple_Mysterious_Card,
LocationName.Kandorean_Temple_Chestbeaters,
LocationName.Fog
]),
RegionName.ShrineOfTheSeaGod: RegionData(RegionName.ShrineOfTheSeaGod, [
LocationName.Breath,
LocationName.Shrine_of_the_Sea_God_Rusty_Staff,
LocationName.Shrine_of_the_Sea_God_Right_Prong
]),
RegionName.DehkanPlateau: RegionData(RegionName.DehkanPlateau,
[
LocationName.Dehkan_Plateau_Elixir,
LocationName.Dehkan_Plateau_Pound_Cube,
LocationName.Dehkan_Plateau_Themis_Axe,
LocationName.Dehkan_Plateau_Full_Metal_Vest,
LocationName.Dehkan_Plateau_Mint,
LocationName.Dehkan_Plateau_Nut,
LocationName.Cannon
],
[
EntranceName.DehkanPlateauToMadra
]),
RegionName.IndraCavern: RegionData(RegionName.IndraCavern,
[
LocationName.Indra_Cavern_Zagan
]),
RegionName.Madra: RegionData(RegionName.Madra,
[
LocationName.Madra_Elixir,
LocationName.Madra_Antidote,
LocationName.Madra_Cyclone_Chip,
LocationName.Madra_Smoke_Bomb,
LocationName.Madra_Sleep_Bomb,
LocationName.Madra_15_coins,
LocationName.Madra_Nurses_Cap,
LocationName.Iron,
LocationName.Char
],
[
EntranceName.MadraToIndraCavern,
EntranceName.MadraToMadraCatacombs,
EntranceName.MadraToOseniaCliffs,
EntranceName.MadraToGondowanCliffs,
EntranceName.MadraToEasternSea,
EntranceName.MadraToLemurianShip
]),
RegionName.MadraCatacombs: RegionData(RegionName.MadraCatacombs,
[
LocationName.Madra_Catacombs_Ruin_Key,
LocationName.Madra_Catacombs_Tremor_Bit,
LocationName.Madra_Catacombs_Apple,
LocationName.Madra_Catacombs_Lucky_Medal,
LocationName.Madra_Catacombs_Mist_Potion,
LocationName.Madra_Catacombs_Moloch
]),
RegionName.OseniaCliffs: RegionData(RegionName.OseniaCliffs,
[
LocationName.Osenia_Cliffs_Pirates_Sword
],
[
EntranceName.OseniaCliffsToMikasalla
]),
RegionName.YampiDesertFront: RegionData(RegionName.YampiDesertFront,
[
LocationName.Yampi_Desert_Antidote,
LocationName.Yampi_Desert_Guardian_Ring,
LocationName.Yampi_Desert_Scoop_Gem,
LocationName.Yampi_Desert_King_Scorpion,
LocationName.Blitz,
],
[
EntranceName.YampiDesertFrontToYampiDesertBack
]),
RegionName.YampiDesertBack: RegionData(RegionName.YampiDesertBack,
[
LocationName.Yampi_Desert_Lucky_Medal,
LocationName.Yampi_Desert_Trainers_Whip,
LocationName.Yampi_Desert_Hard_Nut,
LocationName.Yampi_Desert_Blow_Mace,
LocationName.Yampi_Desert_315_coins,
LocationName.Yampi_Desert_Cave_Water_of_Life
],
[
EntranceName.YampiDesertBackToAlhafra,
EntranceName.YampiDesertBackToYampiDesertCave
]),
RegionName.YampiDesertCave: RegionData(RegionName.YampiDesertCave,
[
LocationName.Yampi_Desert_Cave_Orihalcon,
LocationName.Yampi_Desert_Cave_Dark_Matter,
LocationName.Yampi_Desert_Cave_Mythril_Silver,
LocationName.Crystal,
]),
RegionName.Alhafra: RegionData(RegionName.Alhafra,
[
LocationName.Alhafra_Psy_Crystal,
LocationName.Alhafra_Sleep_Bomb,
LocationName.Alhafra_Lucky_Medal,
LocationName.Alhafra_32_coins,
LocationName.Alhafra_Smoke_Bomb,
LocationName.Alhafra_Elixir,
LocationName.Alhafra_Apple,
LocationName.Alhafra_Briggs,
LocationName.Alhafra_Prison_Briggs
],
[
EntranceName.AlhafraToYampiDesertBack,
EntranceName.AlhafraToAlhafraCave,
]),
RegionName.AlhafraCave: RegionData(RegionName.AlhafraCave,
[
LocationName.Alhafran_Cave_123_coins,
LocationName.Alhafran_Cave_Ixion_Mail,
LocationName.Alhafran_Cave_Lucky_Medal,
LocationName.Alhafran_Cave_Power_Bread,
LocationName.Alhafran_Cave_777_coins,
LocationName.Alhafran_Cave_Potion,
LocationName.Alhafran_Cave_Psy_Crystal
]),
RegionName.Mikasalla: RegionData(RegionName.Mikasalla,
[
LocationName.Mikasalla_Nut,
LocationName.Mikasalla_Herb,
LocationName.Mikasalla_Elixir,
LocationName.Mikasalla_82_coins,
LocationName.Mikasalla_Lucky_Pepper,
LocationName.Sour,
LocationName.Spark
],
[
EntranceName.MikasallaToYampiDesertFront,
EntranceName.MikasallaToGaroh,
EntranceName.MikasallaToOseniaCavern
]),
RegionName.Garoh: RegionData(RegionName.Garoh,
[
LocationName.Garoh_Nut,
LocationName.Garoh_Elixir,
LocationName.Garoh_Sleep_Bomb,
LocationName.Garoh_Smoke_Bomb,
LocationName.Garoh_Hypnos_Sword,
LocationName.Ether
],
[
EntranceName.GarohToAirsRock,
EntranceName.GarohToYampiDesertBack
]),
RegionName.AirsRock: RegionData(RegionName.AirsRock,
[
LocationName.Airs_Rock_Mimic,
LocationName.Airs_Rock_Cookie,
LocationName.Airs_Rock_Elixir,
LocationName.Airs_Rock_666_coins,
LocationName.Airs_Rock_Clarity_Circlet,
LocationName.Airs_Rock_Fujin_Shield,
LocationName.Airs_Rock_Psy_Crystal,
LocationName.Airs_Rock_Sleep_Bomb,
LocationName.Airs_Rock_Smoke_Bomb,
LocationName.Airs_Rock_Storm_Brand,
LocationName.Airs_Rock_Vial,
LocationName.Airs_Rock_Vial_Two,
LocationName.Airs_Rock_Vial_Three,
LocationName.Airs_Rock_Flora,
LocationName.Airs_Rock_Reveal
]),
RegionName.OseniaCavern: RegionData(RegionName.OseniaCavern, [
LocationName.Osenia_Cavern_Megaera
]),
RegionName.GondowanCliffs: RegionData(RegionName.GondowanCliffs,
[
LocationName.Gondowan_Cliffs_Healing_Fungus,
LocationName.Gondowan_Cliffs_Laughing_Fungus,
LocationName.Gondowan_Cliffs_Sleep_Bomb,
LocationName.Kindle
],
[
EntranceName.GondowanCliffsToNaribwe
]),
RegionName.Naribwe: RegionData(RegionName.Naribwe,
[
LocationName.Naribwe_Elixir,
LocationName.Naribwe_18_coins,
LocationName.Naribwe_Sleep_Bomb,
LocationName.Naribwe_Thorn_Crown,
LocationName.Naribwe_Unicorn_Ring,
LocationName.Chill
],
[
EntranceName.NaribweToKibomboMountains,
]),
RegionName.KibomboMountains: RegionData(RegionName.KibomboMountains,
[
LocationName.Kibombo_Mountains_Disk_Axe,
LocationName.Kibombo_Mountains_Power_Bread,
LocationName.Kibombo_Mountains_Smoke_Bomb,
LocationName.Kibombo_Mountains_Tear_Stone,
LocationName.Waft
],
[
EntranceName.KibomboMountainsToKibombo
]),
RegionName.Kibombo: RegionData(RegionName.Kibombo,
[
LocationName.Kibombo_Lucky_Medal,
LocationName.Kibombo_Lucky_Pepper,
LocationName.Kibombo_Nut,
LocationName.Kibombo_Piers
],
[
EntranceName.KibomboToGabombaStatue,
]),
RegionName.GabombaStatue: RegionData(RegionName.GabombaStatue,
[
LocationName.Gabomba_Statue_Black_Crystal,
LocationName.Gabomba_Statue_Mimic,
LocationName.Gabomba_Statue_Elixir,
LocationName.Gabomba_Statue_Bone_Armlet,
LocationName.Gabomba_Statue_Ritual,
LocationName.Steel
],
[
EntranceName.GabombaStatueToGabombaCatacombs
]),
RegionName.GabombaCatacombs: RegionData(RegionName.GabombaCatacombs,
[
LocationName.Gabomba_Catacombs_Mint,
LocationName.Gabomba_Catacombs_Tomegathericon,
LocationName.Mud
]),
RegionName.Lemurian_Ship: RegionData(RegionName.Lemurian_Ship,
[
]),
RegionName.Lemurian_Ship_Revisit: RegionData(RegionName.Lemurian_Ship_Revisit,
[
LocationName.Lemurian_Ship_Elixir,
LocationName.Lemurian_Ship_Potion,
LocationName.Lemurian_Ship_Oil_Drop,
LocationName.Lemurian_Ship_Antidote,
LocationName.Lemurian_Ship_Mist_Potion,
]),
RegionName.EasternSea: RegionData(RegionName.EasternSea,
[
LocationName.Overworld_Rusty_Axe,
LocationName.Overworld_Rusty_Mace,
],
[
EntranceName.EasternSeaToAlhafra,
EntranceName.EasternSeaToKibombo,
EntranceName.EasternSeaToNaribwe,
EntranceName.EasternSeaToWestIndraIslet,
EntranceName.EasternSeaToNorthOseniaIslet,
EntranceName.EasternSeaToSouthEastAngaraIslet,
EntranceName.EasternSeaToSeaOfTimeIslet,
EntranceName.EasternSeaToSeaOfTime,
EntranceName.EasternSeaToTreasureIsland,
EntranceName.EasternSeaToChampa,
EntranceName.EasternSeaToAnkohlRuins,
EntranceName.EasternSeaToIzumo,
EntranceName.EasternSeaToGaiaRock,
EntranceName.EasternSeaToYallam,
EntranceName.EasternSeaToEastTundariaIslet,
EntranceName.EasternSeaToTundariaTower,
EntranceName.EasternSeaToApojiiIslands,
EntranceName.EasternSeaToAquaRock,
EntranceName.EasternSeaToWesternSea
]),
RegionName.EastTundariaIslet: RegionData(RegionName.EastTundariaIslet,
[
LocationName.E_Tundaria_Islet_Lucky_Medal,
LocationName.E_Tundaria_Islet_Pretty_Stone
]),
RegionName.WestIndraIslet: RegionData(RegionName.WestIndraIslet,
[
LocationName.W_Indra_Islet_Lucky_Medal,
LocationName.W_Indra_Islet_Lil_Turtle
]),
RegionName.SouthEastAngaraIslet:RegionData(RegionName.SouthEastAngaraIslet,
[
LocationName.SE_Angara_Islet_Lucky_Medal,
LocationName.SE_Angara_Islet_Red_Cloth
]),
RegionName.NorthOseniaIslet:RegionData(RegionName.NorthOseniaIslet,
[
LocationName.N_Osenia_Islet_Lucky_Medal,
LocationName.N_Osenia_Islet_Milk
]),
RegionName.SeaOfTimeIslet:RegionData(RegionName.SeaOfTimeIslet,
[
LocationName.Sea_of_Time_Islet_Lucky_Medal
],
[
EntranceName.SeaOfTimeIsletToIsletCave
]),
RegionName.IsletCave:RegionData(RegionName.IsletCave,
[
LocationName.Islet_Cave_Turtle_Boots,
LocationName.Islet_Cave_Rusty_Staff,
LocationName.Meld,
LocationName.Serac,
]),
RegionName.ApojiiIslands:RegionData(RegionName.ApojiiIslands,
[
LocationName.Apojii_Islands_Herb,
LocationName.Apojii_Islands_Mint,
LocationName.Apojii_Islands_32_coins,
LocationName.Apojii_Islands_182_coins,
LocationName.Apojii_Islands_Bramble_Seed,
LocationName.Haze
]),
RegionName.AquaRock:RegionData(RegionName.AquaRock,
[
LocationName.Aqua_Rock_Nut,
LocationName.Aqua_Rock_Vial,
LocationName.Aqua_Rock_Mimic,
LocationName.Aqua_Rock_Elixir,
LocationName.Aqua_Rock_Aquarius_Stone,
LocationName.Aqua_Rock_Crystal_Powder,
LocationName.Aqua_Rock_Lucky_Pepper,
LocationName.Aqua_Rock_Mist_Sabre,
LocationName.Aqua_Rock_Oil_Drop,
LocationName.Aqua_Rock_Rusty_Sword,
LocationName.Aqua_Rock_Tear_Stone,
LocationName.Aqua_Rock_Water_of_Life,
LocationName.Aqua_Rock_Parch,
LocationName.Steam
]),
RegionName.Izumo:RegionData(RegionName.Izumo,
[
LocationName.Izumo_Elixir,
LocationName.Izumo_Antidote,
LocationName.Izumo_Antidote_Two,
LocationName.Izumo_Lucky_Medal,
LocationName.Izumo_Smoke_Bomb,
LocationName.Izumo_Festival_Coat,
LocationName.Izumo_Phantasmal_Mail,
LocationName.Izumo_Water_of_Life,
LocationName.Izumo_Ulysses,
LocationName.Coal
]),
RegionName.GaiaRock:RegionData(RegionName.GaiaRock,
[
LocationName.Gaia_Rock_Nut,
LocationName.Gaia_Rock_Apple,
LocationName.Gaia_Rock_Mimic,
LocationName.Gaia_Rock_Rusty_Mace,
LocationName.Gaia_Rock_Cloud_Brand,
LocationName.Gaia_Rock_Dancing_Idol,
LocationName.Gaia_Rock_Serpent,
LocationName.Gaia_Rock_Sand
]),
RegionName.TreasureIsland: RegionData(RegionName.TreasureIsland,
[
LocationName.Treasure_Isle_161_coins,
LocationName.Treasure_Isle_Lucky_Medal,
LocationName.Treasure_Isle_Empty,
LocationName.Treasure_Isle_Empty_Two,
LocationName.Treasure_Isle_Empty_Three,
LocationName.Treasure_Isle_Empty_Four,
LocationName.Treasure_Isle_Empty_Five,
LocationName.Treasure_Isle_Empty_Six,
LocationName.Treasure_Isle_Empty_Seven,
LocationName.Treasure_Isle_Empty_Eight,
LocationName.Treasure_Isle_Empty_Nine,
LocationName.Treasure_Isle_Empty_Ten,
],
[
EntranceName.TreasureIslandToTreasureIsland_Grindstone
]),
RegionName.TreasureIsland_Grindstone: RegionData(RegionName.TreasureIsland_Grindstone,
[
LocationName.Treasure_Isle_911_coins,
LocationName.Treasure_Isle_Psy_Crystal,
LocationName.Treasure_Isle_Cookie,
LocationName.Treasure_Isle_Sylph_Feather,
LocationName.Treasure_Isle_Rusty_Axe,
LocationName.Treasure_Isle_Star_Dust,
LocationName.Treasure_Isle_Jesters_Armlet,
LocationName.Treasure_Isle_Mimic,
],
[
EntranceName.TreasureIsland_GrindstoneToTreasureIsland_PostReunion
]),
RegionName.TreasureIsland_PostReunion: RegionData(RegionName.TreasureIsland_PostReunion,
[
LocationName.Bane, # Random Venus djinn from Gs1
LocationName.Gale,
LocationName.Treasure_Isle_Iris_Robe,
LocationName.Treasure_Isle_Fire_Brand,
]),
RegionName.TundariaTower: RegionData(RegionName.TundariaTower,
[
LocationName.Tundaria_Tower_Center_Prong,
LocationName.Wheeze,
],
[
EntranceName.TundariaTowerToTundariaTower_Parched
]),
RegionName.TundariaTower_Parched: RegionData(RegionName.TundariaTower_Parched,
[
LocationName.Tundaria_Tower_Mint,
LocationName.Tundaria_Tower_Vial,
LocationName.Tundaria_Tower_365_coins,
LocationName.Tundaria_Tower_Hard_Nut,
LocationName.Tundaria_Tower_Crystal_Powder,
LocationName.Tundaria_Tower_Lightning_Sword,
LocationName.Tundaria_Tower_Lucky_Medal,
LocationName.Tundaria_Tower_Sylph_Feather,
LocationName.Tundaria_Tower_Burst_Brooch,
LocationName.Reflux
]),
RegionName.AnkohlRuins: RegionData(RegionName.AnkohlRuins,
[
LocationName.Ankohl_Ruins_Empty,
LocationName.Ankohl_Ruins_Empty_Two,
LocationName.Ankohl_Ruins_Empty_Three,
LocationName.Ankohl_Ruins_Empty_Four,
LocationName.Ankohl_Ruins_Empty_Five,
LocationName.Ankohl_Ruins_Empty_Six,
LocationName.Ankohl_Ruins_210_coins,
LocationName.Ankohl_Ruins_Crystal_Powder
],
[
EntranceName.AnkohlRuinsToAnkohlRuins_Sand
]),
RegionName.AnkohlRuins_Sand: RegionData(RegionName.AnkohlRuins_Sand,
[
LocationName.Ankohl_Ruins_Potion,
LocationName.Ankohl_Ruins_Nut,
LocationName.Ankohl_Ruins_Thanatos_Mace,
LocationName.Ankohl_Ruins_Power_Bread,
LocationName.Ankohl_Ruins_Muni_Robe,
LocationName.Ankohl_Ruins_365_coins,
LocationName.Ankohl_Ruins_Sylph_Feather,
LocationName.Ankohl_Ruins_Vial,
LocationName.Ankohl_Ruins_Left_Prong
]),
RegionName.Champa: RegionData(RegionName.Champa,
[
LocationName.Champa_Elixir,
LocationName.Champa_Trident,
LocationName.Champa_12_coins,
LocationName.Champa_Sleep_Bomb,
LocationName.Champa_Smoke_Bomb,
LocationName.Champa_Lucky_Medal,
LocationName.Champa_Viking_Helm,
LocationName.Champa_Avimander,
]),
RegionName.Yallam: RegionData(RegionName.Yallam,
[
LocationName.Yallam_Nut,
LocationName.Yallam_Elixir,
LocationName.Yallam_Antidote,
LocationName.Yallam_Masamune,
LocationName.Yallam_Oil_Drop,
LocationName.Yallam_16_coins
],
[
EntranceName.YallamToTaopoSwamp
]),
RegionName.TaopoSwamp: RegionData(RegionName.TaopoSwamp,
[
LocationName.Taopo_Swamp_Vial,
LocationName.Taopo_Swamp_Cookie,
LocationName.Taopo_Swamp_Star_Dust,
LocationName.Taopo_Swamp_Bramble_Seed,
LocationName.Taopo_Swamp_Tear_Stone,
LocationName.Taopo_Swamp_Tear_Stone_Two,
LocationName.Flower
]),
RegionName.SeaOfTime: RegionData(RegionName.SeaOfTime,
[
LocationName.Sea_of_Time_Poseidon,
],
[
EntranceName.SeaOfTimeToLemuria
]),
RegionName.Lemuria: RegionData(RegionName.Lemuria,
[
LocationName.Lemuria_Bone,
LocationName.Lemuria_Hard_Nut,
LocationName.Lemuria_Star_Dust,
LocationName.Lemuria_Lucky_Medal,
LocationName.Lemuria_Lucky_Medal_Two,
LocationName.Lemuria_Rusty_Sword,
LocationName.Lemuria_Eclipse,
LocationName.Lemuria_Grindstone,
LocationName.Rime
],
[
EntranceName.LemuriaToShipRevisit
]),
RegionName.WesternSea: RegionData(RegionName.WesternSea,
[
LocationName.Overworld_Rusty_Sword,
LocationName.Overworld_Rusty_Sword_Two,
LocationName.Overworld_Rusty_Staff,
],
[
EntranceName.WesternSeaToSouthWestAttekaIslet,
EntranceName.WesternSeaToHesperiaSettlement,
EntranceName.WesternSeaToShamanVillageCave,
EntranceName.WesternSeaToAttekaInlet,
EntranceName.WesternSeaToAttekaCavern,
EntranceName.WesternSeaToGondowanSettlement,
EntranceName.WesternSeaToMagmaRock,
EntranceName.WesternSeaToLoho,
EntranceName.WesternSeaToAngaraCavern,
EntranceName.WesternSeaToKaltIsland,
EntranceName.WesternSeaToProx
]),
RegionName.SouthWestAttekaIslet: RegionData(RegionName.SouthWestAttekaIslet,
[
LocationName.Luff, # Random djinn from gs1 spot
LocationName.SW_Atteka_Islet_Dragon_Skin
]),
RegionName.HesperiaSettlement: RegionData(RegionName.HesperiaSettlement,
[
LocationName.Hesperia_Settlement_166_coins,
LocationName.Tinder
]),
RegionName.ShamanVillageCave: RegionData(RegionName.ShamanVillageCave,
[
LocationName.Petra,
LocationName.Eddy
],
[
EntranceName.ShamanVillageCaveToShamanVillage
]),
RegionName.ShamanVillage: RegionData(RegionName.ShamanVillage,
[
LocationName.Shaman_Village_Elixir,
LocationName.Shaman_Village_Elixir_Two,
LocationName.Shaman_Village_Spirit_Gloves,
LocationName.Shaman_Village_Hard_Nut,
LocationName.Shaman_Village_Lucky_Medal,
LocationName.Shaman_Village_Lucky_Pepper,
LocationName.Shaman_Village_Weasels_Claw,
LocationName.Shaman_Village_Moapa,
LocationName.Shaman_Village_Hover_Jade,
LocationName.Aroma,
LocationName.Gasp
]),
RegionName.AttekaInlet: RegionData(RegionName.AttekaInlet,
[
LocationName.Atteka_Inlet_Vial,
LocationName.Geode
],
[
EntranceName.AttekaInletToContigo,
EntranceName.AttekaInletToShipRevisit
]),
RegionName.Contigo: RegionData(RegionName.Contigo,
[
LocationName.Contigo_Corn,
LocationName.Contigo_Bramble_Seed,
LocationName.Contigo_Dragon_Skin,
LocationName.Contigo_Power_Bread,
LocationName.Salt,
LocationName.Core,
LocationName.Shine,
],
[
EntranceName.ContigoToJupiterLighthouse,
EntranceName.ContigoToAnemosInnerSanctum,
EntranceName.ContigoToReunion
]),
RegionName.JupiterLighthouse: RegionData(RegionName.JupiterLighthouse,
[
LocationName.Jupiter_Lighthouse_Mint,
LocationName.Jupiter_Lighthouse_Blue_Key,
LocationName.Jupiter_Lighthouse_Erinyes_Tunic,
LocationName.Jupiter_Lighthouse_Meditation_Rod,
LocationName.Jupiter_Lighthouse_Phaetons_Blade,
LocationName.Jupiter_Lighthouse_306_coins,
LocationName.Jupiter_Lighthouse_Mimic,
LocationName.Jupiter_Lighthouse_Mist_Potion,
LocationName.Jupiter_Lighthouse_Potion,
LocationName.Jupiter_Lighthouse_Psy_Crystal,
LocationName.Jupiter_Lighthouse_Red_Key,
LocationName.Jupiter_Lighthouse_Water_of_Life,
LocationName.Whorl,
LocationName.Jupiter_Lighthouse_Aeri_Agatio_and_Karst
]),
RegionName.Reunion: RegionData(RegionName.Reunion,
[
LocationName.Contigo_Isaac,
LocationName.Contigo_Garet,
LocationName.Contigo_Ivan,
LocationName.Contigo_Mia,
LocationName.Contigo_Reunion,
]),
RegionName.AttekaCavern: RegionData(RegionName.AttekaCavern,
[
LocationName.Atteka_Cavern_Coatlicue
]),
RegionName.AnemosSanctum: RegionData(RegionName.AnemosSanctum,
[
]),
RegionName.GondowanSettlement: RegionData(RegionName.GondowanSettlement,
[
LocationName.Gondowan_Settlement_Lucky_Medal,
LocationName.Gondowan_Settlement_Star_Dust
]),
RegionName.MagmaRock: RegionData(RegionName.MagmaRock,
[
LocationName.Magma_Rock_Mimic,
LocationName.Magma_Rock_Salamander_Tail,
LocationName.Magma_Rock_383_coins,
LocationName.Magma_Rock_Oil_Drop
],
[
EntranceName.MagmaRockToMagmaRockInterior
]),
RegionName.MagmaRockInterior: RegionData(RegionName.MagmaRockInterior,
[
LocationName.Torch, # Random djinn from gs1 spot
LocationName.Fury,
LocationName.Magma_Rock_Lucky_Medal,
LocationName.Magma_Rock_Mist_Potion,
LocationName.Magma_Rock_Salamander_Tail_Two,
LocationName.Magma_Rock_Golem_Core,
LocationName.Magma_Rock_Blaze,
LocationName.Magma_Rock_Magma_Ball
]),
RegionName.Loho: RegionData(RegionName.Loho,
[
LocationName.Loho_Crystal_Powder,
LocationName.Loho_Mythril_Silver,
LocationName.Loho_Golem_Core,
LocationName.Loho_Golem_Core_Two,
LocationName.Lull,
LocationName.Loho_Ship_Cannon,
]),
RegionName.AngaraCavern: RegionData(RegionName.AngaraCavern,
[
LocationName.Angara_Cavern_Haures
]),
RegionName.KaltIsland: RegionData(RegionName.KaltIsland,
[
LocationName.Gel
]),
RegionName.Prox: RegionData(RegionName.Prox,
[
LocationName.Dew, #Random djinn from Gs1 spot
LocationName.Prox_Cookie,
LocationName.Prox_Potion,
LocationName.Prox_Dark_Matter,
LocationName.Prox_Sacred_Feather,
LocationName.Mold
],
[
EntranceName.ProxToMarsLighthouse
]),
RegionName.MarsLighthouse: RegionData(RegionName.MarsLighthouse,
[
LocationName.Mars_Lighthouse_Mars_Star,
LocationName.Mars_Lighthouse_Sol_Blade,
LocationName.Mars_Lighthouse_Apple,
LocationName.Mars_Lighthouse_Mimic,
LocationName.Mars_Lighthouse_Orihalcon,
LocationName.Mars_Lighthouse_Valkyrie_Mail,
LocationName.Mars_Lighthouse_Flame_Dragons,
LocationName.Mars_Lighthouse_Teleport_Lapis,
LocationName.Balm,
LocationName.Mars_Lighthouse_Heated,
],
[
EntranceName.MarsLighthouseToMarsLighthouse_Activated
]),
RegionName.MarsLighthouse_Activated: RegionData(RegionName.MarsLighthouse_Activated,
[
LocationName.Fugue,
LocationName.Mars_Lighthouse_Alastors_Hood,
LocationName.Mars_Lighthouse_Psy_Crystal,
LocationName.Mars_Lighthouse_Doom_Dragon,
])
}