Files
dockipelago/worlds/tloz_ph/data/Entrances.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

2250 lines
80 KiB
Python

if __name__ == "__main__":
from worlds.tloz_ph.Subclasses import PHTransition, EntranceGroups
else:
from ..Subclasses import PHTransition, EntranceGroups, OPPOSITE_ENTRANCE_GROUPS
ENTRANCE_DATA = {
# "Name": {
# "return_name": str. what to call the vanilla connecting entrance that generates automatically
# "entrance": tuple[int, int, int], stage room entrance. If you come from entrance
# "exit": tuple[int, int, int], stage room entrance. What the vanilla game sends you on entering
# "entrance_region": str. logic region that the entrance is in
# "exit_region": str. logic region it leads to in
# "coords": tuple[int, int, int]. x, y, z. Where to place link on a continuous transition. y value is also used
# to differentiate transitions at different heights
# "extra_data": dict[str: int]. additional coordinate data for continuous boundaries, like "x_max" etc.
# "type": EntranceGroup. Entrance group entrance type (house, cave, sea etc)
# "direction": EntranceGroup. Entrance group direction
# "two_way": bool=True. generates a reciprocal entrance, also used for ER generation
# }
"Mercay SW Oshus' House": {
"return_name": "Oshus' Exit",
"entrance": (0xB, 0, 2),
"exit": (0xB, 0xA, 1),
"entrance_region": "Mercay SW",
"exit_region": "Oshus' House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"two_way": True,
"island": EntranceGroups.MERCAY
},
"Mercay SW Apricot's House": {
"return_name": "Apricot's Exit",
"entrance": (0xB, 0x0, 3),
"exit": (0xB, 0xB, 1),
"entrance_region": "Mercay SW",
"exit_region": "Apricot's House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"two_way": True,
"island": EntranceGroups.MERCAY
},
"Mercay SW Barrel Cave": {
"return_name": "Sword Cave Exit",
"entrance": (0xB, 0x0, 4),
"exit": (0xB, 0x13, 1),
"entrance_region": "Mercay SW",
"exit_region": "Sword Cave",
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SW North": {
"return_name": "Mercay NW South",
"entrance": (0xB, 0x0, 0xFC),
"exit": (0xB, 0x1, 0xFB),
"coords": (-164000, -164, 16000), # The coord that doesn't matter doesn't matter. Y level diferentiates exit
"entrance_region": "Mercay SW",
"exit_region": "Mercay NW Chus",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY
},
"Mercay SW East": {
"return_name": "Mercay SE West",
"entrance": (0xB, 0x0, 0xFD),
"exit": (0xB, 0x3, 0xFE),
"coords": (4780, -164, 53300),
"entrance_region": "Mercay SW Bridge",
"exit_region": "Mercay SE",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.MERCAY
},
"Mercay SE Milk Bar": {
"return_name": "Milk Bar Exit",
"entrance": (0xB, 0x3, 0x3),
"exit": (0xB, 0xC, 0x0),
"entrance_region": "Mercay SE",
"exit_region": "Milk Bar",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE Shipyard": {
"return_name": "Shipyard Exit",
"entrance": (0xB, 0x3, 0x4),
"exit": (0xB, 0xD, 0x0),
"entrance_region": "Mercay SE Shipyard",
"exit_region": "Shipyard",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE Tuzi's House": {
"return_name": "Tuzi's Exit",
"entrance": (0xB, 0x3, 0x5),
"exit": (0xB, 0xE, 0x0),
"entrance_region": "Mercay SE",
"exit_region": "Tuzi's House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE Treasure Teller": {
"return_name": "Treasure Teller's Exit",
"entrance": (0xB, 0x3, 0x6),
"exit": (0xB, 0xF, 0x0),
"entrance_region": "Mercay SE Treasure Teller",
"exit_region": "Treasure Teller",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE Shop": {
"return_name": "Mercay Shop Exit",
"entrance": (0xB, 0x3, 0x7),
"exit": (0xB, 0x11, 0x1),
"entrance_region": "Mercay SE",
"exit_region": "Mercay Shop",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE North": {
"return_name": "Mercay NE South",
"entrance_region": "Mercay SE",
"exit_region": "Mercay NE",
"entrance": (0xB, 0x3, 0xFC),
"exit": (0xB, 0x2, 0xFB),
"coords": (131000, -164, -4815),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY
},
"Mercay NE West": {
"return_name": "Mercay NW East",
"entrance_region": "Mercay NE",
"exit_region": "Mercay NW Temple",
"entrance": (0xB, 0x2, 0xFE),
"exit": (0xB, 0x1, 0xFD),
"coords": (-4815, 9666, -60000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.LEFT,
"island": EntranceGroups.MERCAY
},
"Mercay NW Temple Cave": {
"return_name": "Eye Bridge Cave North Exit",
"entrance_region": "Mercay NW Temple",
"exit_region": "Eye Bridge Cave North",
"entrance": (0xB, 0x1, 0x3),
"exit": (0xB, 0x10, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay NE Ledge Cave": {
"return_name": "Eye Bridge Cave South Exit",
"entrance_region": "Mercay NE Ledge",
"exit_region": "Eye Bridge Cave South",
"entrance": (0xB, 0x2, 0x1),
"exit": (0xB, 0x10, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE Ledge North": {
"return_name": "Mercay NE Ledge South",
"entrance_region": "Mercay SE Ledge",
"exit_region": "Mercay NE Ledge",
"entrance": (0xB, 0x3, 0xFC),
"exit": (0xB, 0x2, 0xFB),
"coords": (110000, 9666, -4815),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY
},
"Mercay NE Hidden Cave": {
"return_name": "Long Bridge Cave West",
"entrance_region": "Mercay NE",
"exit_region": "Long Bridge Cave",
"entrance": (0xB, 0x2, 0x2),
"exit": (0xB, 0x12, 0x3),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay NE Freedle Island Cave": {
"return_name": "Long Bridge Cave East",
"entrance_region": "Mercay NW Freedle Island",
"exit_region": "Long Bridge Cave",
"entrance": (0xB, 0x2, 0x3),
"exit": (0xB, 0x12, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mercay SE Cave": {
"return_name": "Mountain Passage 2F Exit",
"entrance_region": "Mercay SE",
"exit_region": "Mountain Passage 4",
"entrance": (0xB, 0x3, 0x1),
"exit": (0x27, 0x1, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"Mountain Passage 1F Staircase": {
"return_name": "Mountain Passage 2F Staircase",
"entrance_region": "Mountain Passage 2 Exit",
"exit_region": "Mountain Passage 3",
"entrance": (0x27, 0x0, 0x2),
"exit": (0x27, 0x1, 0x2),
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY
},
"Mercay NW Bamboo Cave": {
"return_name": "Mountain Passage 1F Exit",
"entrance_region": "Mercay NW Bamboo",
"exit_region": "Mountain Passage 1",
"entrance": (0xB, 0x1, 0x1),
"exit": (0x27, 0x0, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
# OOB
"Mercay SW OOB North Upper": {
"return_name": "Mercay NW OOB South Upper",
"entrance_region": "Mercay SW OoB High",
"exit_region": "Mercay NW OoB High",
"entrance": (0xB, 0x0, 0xFC),
"exit": (0xB, 0x1, 0xFB),
"coords": (-85000, 14582, -5000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY,
"extra_data": {"glitched": True,
"x_max": -30000,},
},
"Mercay SW OOB North Waterfall": {
"return_name": "Mercay NW OOB South Waterfall",
"entrance_region": "Mercay SW OoB East",
"exit_region": "Mercay NW OoB High",
"entrance": (0xB, 0x0, 0xFC),
"exit": (0xB, 0x1, 0xFB),
"coords": (-14000, 14582, -5000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY,
"extra_data": {"glitched": True,
"x_min": -30000, },
},
"Mercay SW OOB East": {
"return_name": "Mercay SE OOB West",
"entrance_region": "Mercay SW OoB East",
"exit_region": "Mercay SE OoB",
"entrance": (0xB, 0x0, 0xFD),
"exit": (0xB, 0x3, 0xFE),
"coords": (5000, 14582, 25000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.MERCAY,
"extra_data": {"glitched": True},
},
"Mercay NW OOB East": {
"return_name": "Mercay NE OOB West",
"entrance_region": "Mercay NW OoB High",
"exit_region": "Mercay NE OoB",
"entrance": (0xB, 0x1, 0xFD),
"exit": (0xB, 0x2, 0xFE),
"coords": (5000, 14582, -8000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.MERCAY,
"extra_data": {"glitched": True},
},
"Mercay SE OOB North": {
"return_name": "Mercay NE OOB South",
"entrance_region": "Mercay SE OoB",
"exit_region": "Mercay NE OoB",
"entrance": (0xB, 0x3, 0xFC),
"exit": (0xB, 0x2, 0xFB),
"coords": (10000, 14582, -5000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY,
"extra_data": {"glitched": True},
},
"Mercay SW OOB North Lower": {
"return_name": "Mercay NW OOB South Lower",
"entrance_region": "Mercay SW OoB Low",
"exit_region": "Mercay NW OoB Low",
"entrance": (0xB, 0x0, 0xFC),
"exit": (0xB, 0x1, 0xFB),
"coords": (-140000, 4751, -5000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MERCAY,
"extra_data": {"glitched": True},
},
# =========== TotOK ==============
"Mercay NW Enter Temple": {
"return_name": "TotOK Lobby Exit",
"entrance": (0xB, 0x1, 0x2),
"exit": (0x26, 0x00, 0x1),
"entrance_region": "Mercay NW Temple",
"exit_region": "TotOK Lobby",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MERCAY
},
"TotOK B3.5 Blue Warp": {
"return_name": "TotOK B3.5 Warp Exit",
"entrance_region": "TotOK B3.5",
"exit_region": "TotOK Lobby",
"entrance": (0x25, 0x4, 0x3),
"exit": (0x26, 0x0, 0x3),
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MERCAY,
"two_way": False
},
"TotOK B6.5 Yellow Warp": {
"return_name": "TotOK Lobby Yellow Warp",
"entrance_region": "TotOK B6 Midway",
"exit_region": "TotOK Lobby",
"entrance": (0x25, 0x9, 0x2),
"exit": (0x26, 0x0, 0x6),
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MERCAY,
},
"TotOK B9.5 Blue Warp": {
"return_name": "TotOK 9.5 Warp Exit",
"entrance_region": "TotOK B10",
"exit_region": "TotOK Lobby",
"entrance": (0x25, 0xD, 0x2),
"exit": (0x26, 0x0, 0x3),
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MERCAY,
"two_way": False
},
"TotOK B9.5 Descend": {
"return_name": "TotOK B10 Cave",
"entrance_region": "TotOK B9.5",
"exit_region": "TotOK B10",
"entrance": (0x25, 0xD, 0x1),
"exit": (0x25, 0xE, 0x0),
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MERCAY,
},
"TotOK CC Room Warp": {
"return_name": "TotOK CC Warp Reverse",
"entrance_region": "TotOK B6 Crest",
"exit_region": "TotOK Lobby",
"entrance": (0x25, 0x8, 0x1),
"exit": (0x26, 0x0, 0x3),
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MERCAY,
},
"TotOK B6 Exit CC Room": {
"return_name": "TotOK B6 Red Door Hourglass",
"entrance_region": "TotOK B6 Crest",
"exit_region": "TotOK B6",
"entrance": (0x25, 0x8, 0x0),
"exit": (0x25, 0x7, 0x1),
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.DOWN,
"island": EntranceGroups.MERCAY,
},
# ========== Cannon ==========
"Cannon Workshop East": {
"return_name": "Eddo's Exit",
"entrance_region": "Cannon Outside Eddo",
"exit_region": "Eddo's Workshop",
"entrance": (0x13, 0x0, 0x4),
"exit": (0x13, 0xB, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.CANNON
},
"Cannon Workshop West": {
"return_name": "Fuzo's Exit",
"entrance_region": "Cannon Island",
"exit_region": "Fuzo's Workshop",
"entrance": (0x13, 0x0, 0x3),
"exit": (0x13, 0xA, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.CANNON
},
"Fuzo's Interior Door": {
"return_name": "Eddo's Interior Door",
"entrance_region": "Fuzo's Workshop",
"exit_region": "Eddo's Workshop",
"entrance": (0x13, 0xA, 0x1),
"exit": (0x13, 0xB, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.CANNON
},
"Cannon Bee Cave": {
"return_name": "Bomb Flower Cave Exit",
"entrance_region": "Cannon Island",
"exit_region": "Bomb Flower Cave South",
"entrance": (0x13, 0x0, 0x1),
"exit": (0x28, 0x0, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.CANNON
},
"Cannon Bomb Garden Cave": {
"return_name": "Bomb Flower Cave Staircase",
"entrance_region": "Cannon Bomb Garden",
"exit_region": "Bomb Flower Cave North",
"entrance": (0x13, 0x0, 0x2),
"exit": (0x28, 0x0, 0x1),
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.DOWN,
"island": EntranceGroups.CANNON
},
# =========== Ember Island ================
"Ember West Port House": {
"return_name": "Abandoned House Exit",
"entrance": (0xD, 0x0, 0x2),
"exit": (0xD, 0xB, 0x0),
"entrance_region": "Ember Port",
"exit_region": "Abandoned House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.EMBER
},
"Ember West Astrid's House": {
"return_name": "Astrid's Exit",
"entrance": (0xD, 0x0, 0x1),
"exit": (0xD, 0xA, 0x0),
"entrance_region": "Ember Port",
"exit_region": "Astrid's House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.EMBER
},
"Astrid's Stairs": {
"return_name": "Astrid's Basement Stairs",
"entrance": (0xD, 0xA, 0x1),
"exit": (0xD, 0x14, 0x0),
"entrance_region": "Astrid's House",
"exit_region": "Astrid's Basement",
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.DOWN,
"island": EntranceGroups.EMBER
},
"Ember West Kayo's House": {
"return_name": "Kayo's Exit",
"entrance": (0xD, 0x0, 0x3),
"exit": (0xD, 0xC, 0x0),
"entrance_region": "Ember Port",
"exit_region": "Kayo's House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.EMBER
},
"Ember West Coast South": {
"return_name": "Ember East Coast South",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, -164, 80000),
"extra_data": {"z_min": 0},
"entrance_region": "Ember Port",
"exit_region": "Ember Coast East",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Coast North": {
"return_name": "Ember East Coast North",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, -164, -85000),
"extra_data": {"z_max": 0},
"entrance_region": "Ember Coast North",
"exit_region": "Ember Coast East",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Climb North": {
"return_name": "Ember East Climb North",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, 4751, -65000),
"extra_data": {"z_max": 0},
"entrance_region": "Ember Port",
"exit_region": "Ember Climb East",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Climb South": {
"return_name": "Ember East Climb South",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, 4751, 50000),
"extra_data": {"z_min": 0},
"entrance_region": "Ember Climb West",
"exit_region": "Ember Coast East",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Heights North": {
"return_name": "Ember East Heights North",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, 9666, -50000),
"extra_data": {"z_max": 0},
"entrance_region": "Ember Climb West",
"exit_region": "Ember Outside Temple",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Heights South": {
"return_name": "Ember East Heights South",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, 9666, 25000),
"extra_data": {"z_min": 0},
"entrance_region": "Ember Summit West",
"exit_region": "Ember Outside Temple",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Summit North": {
"return_name": "Ember East Summit North",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, 14582, -35000),
"extra_data": {"z_max": 0},
"entrance_region": "Ember Summit West",
"exit_region": "Ember Summit North",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
"Ember West Summit South": {
"return_name": "Ember East Summit South",
"entrance": (0xD, 0x0, 0xFD),
"exit": (0xD, 0x1, 0xFE),
"coords": (-4500, 14582, 8000),
"extra_data": {"z_min": 0},
"entrance_region": "Ember Summit West",
"exit_region": "Ember Summit East",
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.EMBER
},
# ========== Temple of Fire ============
"Ember Enter Temple": {
"return_name": "ToF Exit",
"entrance": (0xD, 0x1, 0x0),
"exit": (0x1C, 0x0, 0x0),
"entrance_region": "Ember Outside Temple",
"exit_region": "ToF 1F",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.EMBER
},
"ToF Enter Boss": {
"return_name": "Blaaz Exit",
"entrance": (0x1C, 0x3, 0x1),
"exit": (0x2B, 0x0, 0x0),
"entrance_region": "ToF 4F",
"exit_region": "Blaaz",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.EMBER
},
"ToF Blaaz Warp": {
"entrance": (0x2B, 0x0, 0x0),
"exit": (0xD, 0x1, 0x1),
"entrance_region": "Blaaz",
"exit_region": "Ember Outside Temple",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.EMBER
},
# ========== Molida ============
"Molida South Ocara's House": {
"return_name": "Ocara's House Exit",
"entrance": (0xC, 0x0, 0x4),
"exit": (0xC, 0xC, 0x1),
"entrance_region": "Molida South",
"exit_region": "Ocara's House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Sun Lake Cave Geozard Cave": {
"return_name": "Octorok Cave East",
"entrance_region": "Sun Lake Cave Post Geozard",
"exit_region": "Octorok Cave",
"entrance": (0xC, 0xA, 0x6),
"exit": (0xC, 0xF, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Sun Lake Cave Back Cave": {
"return_name": "Octorok Cave West",
"entrance_region": "Sun Lake Cave Back",
"exit_region": "Octorok Cave",
"entrance": (0xC, 0xA, 0x7),
"exit": (0xC, 0xF, 0x3),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Sun Lake Cave Bomb Cave": {
"return_name": "Shovel Hideout Exit",
"entrance_region": "Sun Lake Cave Back",
"exit_region": "Shovel Hideout",
"entrance": (0xC, 0xA, 0x5),
"exit": (0xC, 0xF, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Sun Lake Cave Staircase": {
"return_name": "Molida North Cliff Staircase",
"entrance_region": "Sun Lake Cave Back",
"exit_region": "Molida Cliff North",
"entrance": (0xC, 0xA, 0x1),
"exit": (0xC, 0x1, 0x1),
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MOLIDA
},
"Molida South Cliff North": {
"return_name": "Molida North Cliff South",
"entrance_region": "Molida Cliff South",
"exit_region": "Molida Cliff North",
"entrance": (0xC, 0x0, 0xFC),
"exit": (0xC, 0x1, 0xFB),
"coords": (80000, 4751, -4815),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MOLIDA
},
"Molida South Romanos' House": {
"return_name": "Romanos' Exit",
"entrance_region": "Molida South",
"exit_region": "Romanos' House",
"entrance": (0xC, 0x0, 0x3),
"exit": (0xC, 0xB, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Molida South Shop": {
"return_name": "Molida Shop Exit",
"entrance_region": "Molida South",
"exit_region": "Molida Shop",
"entrance": (0xC, 0x0, 0x6),
"exit": (0xC, 0xE, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Molida South Potato's House": {
"return_name": "Potato's Exit",
"entrance_region": "Molida South",
"exit_region": "Potato's house",
"entrance": (0xC, 0x0, 0x5),
"exit": (0xC, 0xD, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Molida South Cave": {
"return_name": "Sun Lake Cave Exit",
"entrance_region": "Molida South",
"exit_region": "Sun Lake Cave",
"entrance": (0xC, 0x0, 0x2),
"exit": (0xC, 0xA, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"Sun Lake Cave Sun Staircase": {
"return_name": "Molida North Staircase",
"entrance_region": "Sun Lake Cave Sun Door",
"exit_region": "Molida North",
"entrance": (0xC, 0xA, 0x4),
"exit": (0xC, 0x1, 0x2),
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.UP,
"island": EntranceGroups.MOLIDA
},
"Molida South Dig Hole": {
"return_name": "Sun Lake Cave South Drop",
"two_way": False,
"entrance_region": "Molida South",
"exit_region": "Sun Lake Cave Upper",
"entrance": (0xC, 0x0, 0x0),
"exit": (0xC, 0xA, 0x3),
"type": EntranceGroups.HOLES,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MOLIDA
},
"Molida North Dig Hole": {
"return_name": "Sun Lake Cave Chest Drop",
"two_way": False,
"entrance_region": "Molida North",
"exit_region": "Sun Lake Cave North Drop",
"entrance": (0xC, 0x1, 0x2),
"exit": (0xC, 0xA, 0x8),
"type": EntranceGroups.HOLES,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.MOLIDA
},
# ========== Temple of Courage ============
"Molida North Enter Temple": {
"return_name": "ToC Exit",
"entrance": (0xC, 0x1, 0x3),
"exit": (0x1E, 0x0, 0x0),
"entrance_region": "Molida Outside Temple",
"exit_region": "ToC 1F",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"ToC Enter Boss": {
"return_name": "Crayk Exit",
"entrance": (0x1E, 0x3, 0x3),
"exit": (0x2C, 0x0, 0x2),
"entrance_region": "ToC 3F",
"exit_region": "Crayk",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.MOLIDA
},
"ToC Crayk Warp": {
"entrance": (0x2C, 0x0, 0x0),
"exit": (0xC, 0x1, 0x4),
"entrance_region": "Crayk",
"exit_region": "Molida Outside Temple",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.MOLIDA
},
# ========== Spirit ============
"Spirit Island Cave": {
"return_name": "Spirit Shrine Exit",
"entrance_region": "Spirit Island",
"exit_region": "Spirit Shrine",
"entrance": (0x17, 0x0, 0x1),
"exit": (0x17, 0x1, 0x0),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.SPIRIT
},
# ========== Gust ============
"Gust SW Coast North": {
"return_name": "Gust NW Coast South",
"entrance_region": "Gust South NW Ledge",
"exit_region": "Gust North",
"entrance": (0xE, 0x0, 0xFC),
"exit": (0xE, 0x1, 0xFB),
"coords": (-76000, 9666, -8192),
"extra_data": {"x_max": -67000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.GUST
},
"Gust SW Inland North": {
"return_name": "Gust NW Inland South",
"entrance_region": "Gust South NW",
"exit_region": "Gust North Above Temple",
"entrance": (0xE, 0x0, 0xFC),
"exit": (0xE, 0x1, 0xFB),
"coords": (-48500, 9666, -8192),
"extra_data": {"x_min": -56000,
"x_max": -40000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.GUST
},
"Gust South Above Temple North": {
"return_name": "Gust North Above Temple South",
"entrance_region": "Gust South Cliffs",
"exit_region": "Gust North Above Temple",
"entrance": (0xE, 0x0, 0xFC),
"exit": (0xE, 0x1, 0xFB),
"coords": (-17000, 9666, -8192),
"extra_data": {"x_min": -25000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.GUST
},
"Gust South Temple Road North": {
"return_name": "Gust North Temple Road South",
"entrance_region": "Gust South Cliffs",
"exit_region": "Gust North Temple Road",
"entrance": (0xE, 0x0, 0xFC),
"exit": (0xE, 0x1, 0xFB),
"coords": (4452, 4751, -8192),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.GUST
},
"Gust Cave East": {
"return_name": "Miniblin Cave East",
"entrance_region": "Gust South Cliffs",
"exit_region": "Miniblin Cave",
"entrance": (0xE, 0x0, 0x4),
"exit": (0xE, 0xB, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GUST
},
"Gust Cave West": {
"return_name": "Miniblin Cave West",
"entrance_region": "Gust South",
"exit_region": "Miniblin Cave",
"entrance": (0xE, 0x0, 0x3),
"exit": (0xE, 0xB, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GUST
},
"Gust Secret Cave": {
"return_name": "Tiled Hideout Exit",
"entrance_region": "Gust South",
"exit_region": "Tiled Hideout",
"entrance": (0xE, 0x0, 0x2),
"exit": (0xE, 0xA, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GUST
},
# ========== Temple of Wind ============
"Gust Enter Temple": {
"return_name": "ToW Exit",
"entrance": (0xE, 0x1, 0x0),
"exit": (0x1D, 0x0, 0x0),
"entrance_region": "Gust North Outside Temple",
"exit_region": "ToW 1F",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GUST
},
"ToW Enter Boss": {
"return_name": "Cyclok Exit",
"entrance": (0x1D, 0x4, 0x1),
"exit": (0x2A, 0x0, 0x1),
"entrance_region": "ToW 2F",
"exit_region": "Cyclok",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GUST
},
"ToW Cyclok Warp": {
"entrance": (0x2A, 0x0, 0x0),
"exit": (0xE, 0x1, 0x0),
"entrance_region": "Post Cyclok",
"exit_region": "Gust North Outside Temple",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.GUST
},
# ========== Bannan ============
"Bannan West Hut": {
"return_name": "Wayfarer's Exit",
"entrance_region": "Bannan Island",
"exit_region": "Wayfarer's House",
"entrance": (0x14, 0x0, 0x2),
"exit": (0x14, 0x1, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.BANNAN
},
"Bannan West Cave": {
"return_name": "Keese Passage West Exit",
"entrance_region": "Bannan Island",
"exit_region": "Keese Passage West",
"entrance": (0x14, 0x0, 0x5),
"exit": (0x14, 0xA, 0x0),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.BANNAN
},
"Bannan East Cave": {
"return_name": "Keese Passage East Exit",
"entrance_region": "Bannan East",
"exit_region": "Keese Passage East",
"entrance": (0x14, 0x0, 0x4),
"exit": (0x14, 0xA, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.BANNAN
},
# ===== Zauz =====
"Zauz' House": {
"return_name": "Zauz' Exit",
"entrance_region": "Zauz's Island",
"exit_region": "Zauz's House",
"entrance": (0x16, 0x0, 0x2),
"exit": (0x16, 0xA, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.ZAUZ
},
# ===== Uncharted =====
"Uncharted Cave": {
"return_name": "Descending Cave Exit",
"entrance_region": "Uncharted Outside Cave",
"exit_region": "Descending Cave",
"entrance": (0x1A, 0x0, 0x2),
"exit": (0x1A, 0xA, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.UNCHARTED
},
"Descending Cave Lower Cave": {
"return_name": "Golden Chief Exit",
"entrance_region": "Descending Cave",
"exit_region": "Golden Chief Cave",
"entrance": (0x1A, 0xA, 0x2),
"exit": (0x1A, 0xB, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.UNCHARTED
},
# ========== Goron ============
"Goron SW Port House": {
"return_name": "Goron Port House Exit",
"entrance": (0x10, 0x2, 0x1),
"exit": (0x10, 0xB, 0x0),
"entrance_region": "Goron SW",
"exit_region": "Goron House Zero Rocks",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SE Mountain House": {
"return_name": "Goron Mountain House Exit",
"entrance_region": "Goron SE NW",
"exit_region": "Goron House Right Rock",
"entrance": (0x10, 0x3, 0x2),
"exit": (0x10, 0xF, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SW Chu House": {
"return_name": "Goron Chu House Exit",
"entrance_region": "Goron SW",
"exit_region": "Goron House Left Rock",
"entrance": (0x10, 0x2, 0x3),
"exit": (0x10, 0xD, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SW Rock House": {
"return_name": "Goron Rock House Exit",
"entrance_region": "Goron SW",
"exit_region": "Goron House Three Rocks",
"entrance": (0x10, 0x2, 0x2),
"exit": (0x10, 0xC, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SW Shop": {
"return_name": "Goron Shop Exit",
"entrance_region": "Goron SW",
"exit_region": "Goron Shop",
"entrance": (0x10, 0x2, 0x4),
"exit": (0x10, 0x14, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SW North": {
"return_name": "Goron NW South",
"entrance_region": "Goron SW",
"exit_region": "Goron NW Shortcut",
"entrance": (0x10, 0x2, 0xFC),
"exit": (0x10, 0x0, 0xFB),
"coords": (-140000, 9666, -8192),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.GORON
},
"Goron SE Coast House": {
"return_name": "Goron Coast House Exit",
"entrance_region": "Goron SE",
"exit_region": "Goron House Two Rocks",
"entrance": (0x10, 0x3, 0x1),
"exit": (0x10, 0xE, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SE Chief House": {
"return_name": "Goron Chief House Exit",
"entrance_region": "Goron SE",
"exit_region": "Goron Chief House",
"entrance": (0x10, 0x3, 0x0),
"exit": (0x10, 0xA, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"Goron SW Coast East": {
"return_name": "Goron SE Coast West",
"entrance_region": "Goron SW",
"exit_region": "Goron SE NW",
"entrance": (0x10, 0x2, 0xFD),
"exit": (0x10, 0x3, 0xFE),
"coords": (-8000, 4751, 70000),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.GORON
},
"Goron SW Mountains East": {
"return_name": "Goron SE Mountains West",
"entrance_region": "Goron SW Chu Ledge",
"exit_region": "Goron SE NW",
"entrance": (0x10, 0x2, 0xFD),
"exit": (0x10, 0x3, 0xFE),
"coords": (-8000, 9666, 22500),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.GORON
},
"Goron SE North": {
"return_name": "Goron NE South",
"entrance_region": "Goron SE",
"exit_region": "Goron NE",
"entrance": (0x10, 0x3, 0xFC),
"exit": (0x10, 0x1, 0xFB),
"coords": (148000, 4751, -8192),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.GORON
},
"Goron South Dead End": {
"return_name": "Goron NE Mountain West",
"entrance_region": "Goron NW South Dead End",
"exit_region": "Goron NE South",
"entrance": (0x10, 0x0, 0xFD),
"exit": (0x10, 0x1, 0xFE),
"coords": (-8000, 4751, -60000),
"extra_data": {"z_min": -65000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.GORON
},
"Goron North Dead End": {
"return_name": "Goron NE Middle West",
"entrance_region": "Goron NW North Dead End",
"exit_region": "Goron NE Middle",
"entrance": (0x10, 0x0, 0xFD),
"exit": (0x10, 0x1, 0xFE),
"coords": (-8000, 4751, -102000),
"extra_data": {"z_max": -95000, "z_min": -105000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.GORON
},
"Goron NW Coast East": {
"return_name": "Goron NE Coast West",
"entrance_region": "Goron NW Like Like",
"exit_region": "Goron NE Coast",
"entrance": (0x10, 0x0, 0xFD),
"exit": (0x10, 0x1, 0xFE),
"coords": (-8000, 4751, -122000),
"extra_data": {"z_max": -110000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.GORON
},
"Goron NW Middle East": {
"return_name": "Goron Spikes Dead End",
"entrance_region": "Goron NW Like Like",
"exit_region": "Goron NE Spikes",
"entrance": (0x10, 0x0, 0xFD),
"exit": (0x10, 0x1, 0xFE),
"coords": (-8000, 4751, -82000),
"extra_data": {"z_max": -75000, "z_min": -85000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.GORON
},
# ========== Goron Temple ============
"Goron Enter Temple": {
"return_name": "GT Exit",
"entrance": (0x10, 0x0, 0x0),
"exit": (0x20, 0x0, 0x0),
"entrance_region": "Goron NW Outside Temple",
"exit_region": "GT 1F",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"GT Enter Boss": {
"return_name": "Dongo Exit",
"entrance": (0x20, 0x4, 0x1),
"exit": (0x2E, 0x0, 0x0),
"entrance_region": "GT B4",
"exit_region": "Dongorongo",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GORON
},
"GT Dongo Warp": {
"entrance": (0x20, 0xA, 0x0),
"exit": (0x10, 0x0, 0x1),
"entrance_region": "Post Dongorongo",
"exit_region": "Goron NW Outside Temple",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.GORON
},
# ========== Frost ============
"Frost SW Smart House": {
"return_name": "Smart Anouki's Exit",
"entrance": (0xF, 0x0, 0x2),
"exit": (0xF, 0xB, 0x0),
"entrance_region": "Frost SW",
"exit_region": "Smart Anouki's House",
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost SW Chief House": {
"return_name": "Anouki Chief's Exit",
"entrance_region": "Frost SW",
"exit_region": "Anouki Chief's House",
"entrance": (0xF, 0x0, 0x1),
"exit": (0xF, 0xA, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost SW Sensitive House": {
"return_name": "Sensitive Anouki's Exit",
"entrance_region": "Frost SW",
"exit_region": "Sensitive Anouki's House",
"entrance": (0xF, 0x0, 0x3),
"exit": (0xF, 0xC, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost SW North": {
"return_name": "Frost NW South",
"entrance_region": "Frost SW",
"exit_region": "Frost NW",
"entrance": (0xF, 0x0, 0xFC),
"exit": (0xF, 0x2, 0xFB),
"coords": (-120000, -164, -8192),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.FROST
},
"Frost NW Dobo's House (SW)": {
"return_name": "Dobo's Exit",
"entrance_region": "Frost NW",
"exit_region": "Dobo's House",
"entrance": (0xF, 0x2, 0x1),
"exit": (0xF, 0xD, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost NW Kumu's House (South)": {
"return_name": "Kumu's Exit",
"entrance_region": "Frost NW",
"exit_region": "Kumu's House",
"entrance": (0xF, 0x2, 0x2),
"exit": (0xF, 0xE, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost NW Fofo's House (SE)": {
"return_name": "Fofo's Exit",
"entrance_region": "Frost NW",
"exit_region": "Fofo's House",
"entrance": (0xF, 0x2, 0x3),
"exit": (0xF, 0xF, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost NW Mazo's House (NE)": {
"return_name": "Mazo's Exit",
"entrance_region": "Frost NW",
"exit_region": "Mazo's House",
"entrance": (0xF, 0x2, 0x6),
"exit": (0xF, 0x12, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost NW Aroo's House (North)": {
"return_name": "Aroo's Exit",
"entrance_region": "Frost NW",
"exit_region": "Aroo's House",
"entrance": (0xF, 0x2, 0x5),
"exit": (0xF, 0x11, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost NW Gumo's House (NW)": {
"return_name": "Gumo's Exit",
"entrance_region": "Frost NW",
"exit_region": "Gumo's House",
"entrance": (0xF, 0x2, 0x4),
"exit": (0xF, 0x10, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost SW Cave": {
"return_name": "Frozen Cave West Exit",
"entrance_region": "Frost SW",
"exit_region": "Frozen Cave",
"entrance": (0xF, 0x0, 0x4),
"exit": (0xF, 0x13, 0x0),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost SE Cave": {
"return_name": "Frozen Cave East Exit",
"entrance_region": "Frost SE",
"exit_region": "Frozen Cave",
"entrance": (0xF, 0x3, 0x0),
"exit": (0xF, 0x13, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"Frost SE Upper NE": {
"return_name": "Frost NE Above Temple SE",
"entrance_region": "Frost SE Upper East",
"exit_region": "Frost NE Above Temple East",
"entrance": (0xF, 0x3, 0xFC),
"exit": (0xF, 0x1, 0xFB),
"coords": (202000, 14582, -8192),
"extra_data": {"x_min": 185000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.FROST
},
"Frost SE Upper NW": {
"return_name": "Frost NE Above Temple SW",
"entrance_region": "Frost SE Upper North",
"exit_region": "Frost NE Above Temple West",
"entrance": (0xF, 0x3, 0xFC),
"exit": (0xF, 0x1, 0xFB),
"coords": (166000, 14582, -8192),
"extra_data": {"x_max": 185000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.FROST
},
"Frost SE Lower North": {
"return_name": "Frost NE Lower South",
"entrance_region": "Frost SE Exit",
"exit_region": "Frost NE Outside Arena",
"entrance": (0xF, 0x3, 0xFC),
"exit": (0xF, 0x1, 0xFB),
"coords": (185000, -164, -8192),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.FROST
},
# ========== Temple of Ice ============
"Frost NE Enter Temple": {
"return_name": "ToI Exit",
"entrance": (0xF, 0x1, 0x0),
"exit": (0x1F, 0x0, 0x0),
"entrance_region": "Frost NE Outside Temple",
"exit_region": "ToI 1F",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
"ToI Gleeok Warp": {
"entrance": (0x1f, 0x6, 0x0),
"exit": (0xF, 0x1, 0x1),
"entrance_region": "Post Gleeok",
"exit_region": "Frost NE Outside Temple",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.FROST
},
"ToI 1F Right Staircase": {
"return_name": "ToI 2F Right Descent",
"entrance": (0x1f, 0x0, 0x1),
"exit": (0x1F, 0x3, 0x3),
"entrance_region": "ToI 1F Ascent",
"exit_region": "ToI 2F Right",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI 2F Right Ascent": {
"return_name": "ToI 3F Right Staircase",
"entrance": (0x1f, 0x3, 0x2),
"exit": (0x1F, 0x1, 0x1),
"entrance_region": "ToI 2F Right",
"exit_region": "ToI 3F Right",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI 3F Key Door Staircase": {
"return_name": "ToI 2F Arena Staircase",
"entrance": (0x1f, 0x2, 0x2),
"exit": (0x1F, 0x3, 0x1),
"entrance_region": "ToI 3F Key Door",
"exit_region": "ToI 2F Arena",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI 2F Left Descent": {
"return_name": "ToI 1F Beetle Staircase",
"entrance": (0x1f, 0x3, 0x0),
"exit": (0x1F, 0x0, 0x2),
"entrance_region": "ToI 2F Left",
"exit_region": "ToI 1F Beetles",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI 1F Descent": {
"return_name": "ToI B1 Ascent",
"entrance": (0x1f, 0x0, 0x3),
"exit": (0x1F, 0x2, 0x1),
"entrance_region": "ToI 1F Descent",
"exit_region": "ToI B1 Ascent",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI B1 Descent": {
"return_name": "ToI B2 Staircase",
"entrance": (0x1f, 0x2, 0x2),
"exit": (0x1F, 0x5, 0x0),
"entrance_region": "ToI B1 Boss Door",
"exit_region": "ToI B2",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI B1 Blue Warp": {
"return_name": "ToI 1F Blue Warp",
"entrance": (0x1f, 0x2, 0x7),
"exit": (0x1F, 0x0, 0x4),
"entrance_region": "ToI B1 Before Boss",
"exit_region": "ToI Blue Warp",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.FROST
},
"ToI Enter Boss": {
"return_name": "Gleeok Exit",
"entrance": (0x1f, 0x2, 0x3),
"exit": (0x2D, 0x0, 0x0),
"entrance_region": "ToI B1 Before Boss",
"exit_region": "Gleeok",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.FROST
},
# ======= Dead=========
"IotD Port Cave": {
"return_name": "McNey's Cave East Exit",
"entrance_region": "IotD Port",
"exit_region": "McNay's Cave",
"entrance": (0x15, 0x0, 0x6),
"exit": (0x15, 0x1, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.DEAD
},
"McNey's Cave Secret Cave": {
"return_name": "Rupoor Cave Exit",
"entrance_region": "McNay's Cave",
"exit_region": "Rupoor Cave",
"entrance": (0x15, 0x1, 0x3),
"exit": (0x15, 0x2, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.DEAD
},
"IotD Like Like Cave": {
"return_name": "McNey's Cave West",
"entrance_region": "Isle of the Dead",
"exit_region": "McNay's Cave",
"entrance": (0x15, 0x0, 0x8),
"exit": (0x15, 0x1, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.DEAD
},
"Boulder Tunnel Cave": {
"return_name": "Stone Treasure Cave Exit",
"entrance_region": "Boulder Tunnel",
"exit_region": "Stone Treasure Cave",
"entrance": (0x15, 0x3, 0x3),
"exit": (0x15, 0x4, 0x1),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.DEAD
},
"IotD Face Staircase": {
"return_name": "Boulder Tunnel Staircase",
"entrance_region": "IotD Face",
"exit_region": "Boulder Tunnel",
"entrance": (0x15, 0x0, 0x5),
"exit": (0x15, 0x3, 0x2),
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.DOWN,
"island": EntranceGroups.DEAD
},
"IotD Pyramid": {
"return_name": "Brant's Exit",
"entrance_region": "Isle of the Dead",
"exit_region": "Brant's Temple",
"entrance": (0x15, 0x0, 0x3),
"exit": (0x15, 0x5, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.DEAD
},
"IotD Crown Staircase": {
"return_name": "Brant's Chamber Staircase",
"entrance_region": "IotD Crown",
"exit_region": "Brant's Temple",
"entrance": (0x15, 0x0, 0x4),
"exit": (0x15, 0xA, 0x2),
"type": EntranceGroups.STAIRS,
"direction": EntranceGroups.DOWN,
"island": EntranceGroups.DEAD
},
"IotD Dig Hole": {
"return_name": "Boulder Tunnel Drop",
"entrance_region": "Isle of the Dead",
"exit_region": "Boulder Tunnel",
"entrance": (0x15, 0x0, 0x0),
"exit": (0x15, 0x3, 0x1),
"type": EntranceGroups.HOLES,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.DEAD
},
"Brant's Maze 1": {
"entrance_region": "Brant's Temple",
"exit_region": "Brant's Temple Maze",
"entrance": (0x15, 0x5, 0x2),
"exit": (0x15, 0x6, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.NONE,
"two_way": False,
"never_shuffle": True, # Doesn't do anything, isn't needed yet
"island": EntranceGroups.DEAD
},
"Brant's Maze Exit": {
"entrance_region": "Brant's Temple Maze",
"exit_region": "Brant's Chamber",
"entrance": (0x15, 0xA, 0x1),
"exit": (0x15, 0xA, 0x0),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.NONE,
"two_way": False,
"never_shuffle": True, # Doesn't do anything, isn't needed yet
"island": EntranceGroups.DEAD
},
# ========== Ruins ============
"Ruins SW Upper Maze North": {
"return_name": "Ruins NW One-Way Ledge South",
"entrance_region": "Ruins SW Maze Upper",
"exit_region": "Ruins NW Maze Upper Exit",
"entrance": (0x11, 0x0, 0xFC),
"exit": (0x11, 0x1, 0xFB),
"coords": (-174425, 4751, -4815),
"extra_data": {"x_max": -70000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins SW Lower Maze Exit North": {
"return_name": "Ruins NW One-Way Ledge SW",
"entrance_region": "Ruins SW Maze Lower Exit",
"exit_region": "Ruins NW Maze Lower Exit",
"entrance": (0x11, 0x0, 0xFC),
"exit": (0x11, 0x1, 0xFB),
"coords": (-194200, 9666, -4815),
"extra_data": {"x_max": -150000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins NW Across Bridge East": {
"return_name": "Ruins NE Doylan Bridge One-Way West",
"entrance_region": "Ruins NW Across Bridge",
"exit_region": "Ruins NE Enter Upper",
"entrance": (0x11, 0x1, 0xFD),
"exit": (0x11, 0x2, 0xFE),
"coords": (4784, 9666, -62640),
"extra_data": {"z_min": -110000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.RUINS
},
"Ruins NW Upper One-Way East": {
"return_name": "Ruins NE Doylan's Bridge NW",
"entrance_region": "Ruins NW Return",
"exit_region": "Ruins NE Doylan Bridge North",
"entrance": (0x11, 0x1, 0xFD),
"exit": (0x11, 0x2, 0xFE),
"coords": (4784, 9666, -150700),
"extra_data": {"z_max": -110000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.RUINS
},
"Ruins SW Port Cliff North": {
"return_name": "Ruins NW Port Cliff South",
"entrance_region": "Ruins SW Port Cliff",
"exit_region": "Ruins NW Port Cliff",
"entrance": (0x11, 0x0, 0xFC),
"exit": (0x11, 0x1, 0xFB),
"coords": (-46050, 4751, -4815),
"extra_data": {"x_min": -70000},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins SW East": {
"return_name": "Ruins SE West",
"entrance_region": "Ruins SW Port Cliff",
"exit_region": "Ruins SE Return Bridge West",
"entrance": (0x11, 0x0, 0xFD),
"exit": (0x11, 0x3, 0xFE),
"coords": (4784, 9666, 51500),
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.RUINS
},
"Ruins SW Port Cave": {
"return_name": "Sandy Geozard Cave East",
"entrance": (0x11, 0x0, 0x2),
"exit": (0x11, 0xA, 0x1),
"entrance_region": "Ruins SW Port",
"exit_region": "Sandy Geozard Cave East",
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Ruins SW Cliff Cave": {
"return_name": "Sandy Geozard Cave West",
"entrance_region": "Ruins SW Maze Upper",
"exit_region": "Sandy Geozard Cave West",
"entrance": (0x11, 0x0, 0x3),
"exit": (0x11, 0xA, 0x2),
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Ruins SW Maze Lower North": {
"return_name": "Ruins NW Lower Maze Chest South",
"entrance_region": "Ruins SW Maze Lower Water",
"exit_region": "Ruins NW Maze Lower Water",
"entrance": (0x12, 0x0, 0xFC),
"exit": (0x12, 0x1, 0xFB),
"coords": (-63750, -164, -4815),
"extra_data": {"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins NW Pyramid": {
"return_name": "Bremeur's Exit",
"entrance_region": "Ruins NW Boulders",
"exit_region": "Bremeur's Temple",
"entrance": (0x11, 0x1, 0x1),
"exit": (0x24, 0x0, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Ruins NW Cave": {
"return_name": "Grassy Rupee Cave Exit",
"entrance_region": "Ruins NW Cave",
"exit_region": "Grassy Treasure Cave",
"entrance": (0x12, 0x1, 0x2),
"exit": (0x12, 0xB, 0x1),
"one_way_data": {"conditional": ["ruins_water"]},
"type": EntranceGroups.CAVE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Ruins NE Small Pyramid": {
"return_name": "Doylan's Exit",
"entrance_region": "Ruins NE Doylan Bridge",
"exit_region": "Doylan's Temple",
"entrance": (0x11, 0x2, 0x1),
"exit": (0x22, 0x0, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Doylan's Staircase": {
"return_name": "Doylan's Chamber Exit",
"entrance_region": "Doylan's Temple",
"exit_region": "Doylan's Chamber",
"entrance": (0x22, 0x0, 0x2),
"exit": (0x22, 0x1, 0x1),
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Ruins SE Coast North": {
"return_name": "Ruins NE Coast South",
"entrance_region": "Ruins SE Coast Water",
"exit_region": "Ruins NE Behind Pyramids Water",
"entrance": (0x12, 0x3, 0xFC),
"exit": (0x12, 0x2, 0xFB),
"coords": (213590, -164, 4784),
"extra_data": {"x_min": 144990,
"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins NW Alcove East": {
"return_name": "Ruins NE Lower Bay West",
"entrance_region": "Ruins NW Alcove Water",
"exit_region": "Ruins NE Lower Water South",
"entrance": (0x12, 0x1, 0xFD),
"exit": (0x12, 0x2, 0xFE),
"coords": (8192, -164, -43675),
"extra_data": {"z_min": -80000,
"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.RUINS
},
"Ruins NW Lower East": {
"return_name": "Ruins NE Lower Boulders West",
"entrance_region": "Ruins NW Lower Water",
"exit_region": "Ruins NE Lower Water North",
"entrance": (0x12, 0x1, 0xFD),
"exit": (0x12, 0x2, 0xFE),
"coords": (4784, -164, -120000),
"extra_data": {"z_max": -80000,
"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.RIGHT,
"island": EntranceGroups.RUINS
},
"Ruins SE Bay North": {
"return_name": "Ruins NE South",
"entrance_region": "Ruins SE Lower Water Bay",
"exit_region": "Ruins NE Lower Water Bay",
"entrance": (0x12, 0x3, 0xFC),
"exit": (0x12, 0x2, 0xFB),
"coords": (13000, -164, 4784),
"extra_data": {"x_max": 70000,
"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins SE Boulder North": {
"return_name": "Ruins NE Secret Chest South",
"entrance_region": "Ruins SE Lower Water Wall",
"exit_region": "Ruins NE Secret Chest Water",
"entrance": (0x12, 0x3, 0xFC),
"exit": (0x12, 0x2, 0xFB),
"coords": (100700, -164, 4784),
"extra_data": {"x_min": 70000,
"x_max": 101000,
"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
"Ruins SE Pyramid": {
"return_name": "Max's Exit",
"entrance_region": "Ruins SE Outside Pyramid",
"exit_region": "Max's Temple",
"entrance": (0x12, 0x3, 0x1),
"exit": (0x23, 0x0, 0x1),
"one_way_data": {"conditional": ["ruins_water"]},
"type": EntranceGroups.HOUSE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"Ruins SE King's Road North": {
"return_name": "Ruins NE King's Road South",
"entrance_region": "Ruins SE King's Road Water",
"exit_region": "Ruins NE Geozards Water",
"entrance": (0x12, 0x3, 0xFC),
"exit": (0x12, 0x2, 0xFB),
"coords": (123000, -164, 4784),
"extra_data": {"x_max": 140000,
"x_min": 101000,
"conditional": ["ruins_water"]},
"type": EntranceGroups.OVERWORLD,
"direction": EntranceGroups.UP,
"island": EntranceGroups.RUINS
},
# ========== Mutoh's Temple ============
"Ruins Enter Temple": {
"return_name": "MT Exit",
"entrance": (0x12, 0x2, 0x2),
"exit": (0x21, 0x0, 0x1),
"entrance_region": "Ruins NE Outside Temple",
"exit_region": "MT 1F",
"one_way_data": {"conditional": ["ruins_water"]},
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"MT Enter Boss": {
"return_name": "Eox Exit",
"entrance": (0x21, 0x5, 0x2),
"exit": (0x2F, 0x0, 0x1),
"entrance_region": "MT B3",
"exit_region": "Eox",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.RUINS
},
"MT Eox Warp": {
"entrance": (0x21, 0x6, 0x0),
"exit": (0x12, 0x2, 0x2),
"entrance_region": "Post Eox",
"exit_region": "Ruins NE Outside Temple",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.NONE,
"two_way": False,
"island": EntranceGroups.RUINS
},
# ============= SW Ocean ==================
"Ocean SW Mercay": {
"return_name": "Mercay SE Board Ship",
"entrance": (0x0, 0x0, 0x2),
"exit": (0xB, 0x3, 0x2),
"entrance_region": "Mercay Boat",
"exit_region": "Mercay SE",
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.MERCAY,
},
"Ocean SW Cannon": {
"return_name": "Cannon Board Ship",
"entrance_region": "Cannon Boat",
"exit_region": "Cannon Island",
"entrance": (0x0, 0x0, 0x4),
"exit": (0x13, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.CANNON,
},
"Ocean SW Ember": {
"return_name": "Ember West Board Ship",
"entrance_region": "Ember Boat",
"exit_region": "Ember Port",
"entrance": (0x0, 0x0, 0x3),
"exit": (0xD, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.EMBER,
},
"Ocean SW Molida": {
"return_name": "Molida South Board Ship",
"entrance_region": "Molida Boat",
"exit_region": "Molida South",
"entrance": (0x0, 0x0, 0x1),
"exit": (0xC, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.MOLIDA,
},
"Ocean SW Spirit": {
"return_name": "Spirit Board Ship",
"entrance_region": "Spirit Boat",
"exit_region": "Spirit Island",
"entrance": (0x0, 0x0, 0x5),
"exit": (0x17, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.SPIRIT,
},
# ============= NW Ocean ==================
"Ocean NW Gust": {
"return_name": "Gust South Board Ship",
"entrance_region": "Gust Boat",
"exit_region": "Gust South",
"entrance": (0x0, 0x1, 0x0),
"exit": (0xE, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.GUST,
},
"Ocean NW Bannan": {
"return_name": "Bannan West Board Ship",
"entrance_region": "Bannan Boat",
"exit_region": "Bannan Island",
"entrance": (0x0, 0x1, 0x3),
"exit": (0x14, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.BANNAN,
},
"Ocean NW Zauz": {
"return_name": "Zauz Board Ship",
"entrance_region": "Zauz Boat",
"exit_region": "Zauz's Island",
"entrance": (0x0, 0x1, 0x4),
"exit": (0x16, 0x0, 0x1),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.ZAUZ,
},
"Ocean NW Uncharted": {
"return_name": "Uncharted Board Ship",
"entrance_region": "Uncharted Boat",
"exit_region": "Uncharted Island",
"entrance": (0x0, 0x1, 0x7),
"exit": (0x1A, 0x0, 0x1),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.UNCHARTED,
},
# ========== Ghost Ship ==========
"Ocean NW Board Ghost Ship": {
"return_name": "GS Exit",
"entrance": (0, 0x1, 0xFA),
"exit": (0x29, 0x3, 0x0),
"extra_data": {"ship_exit": 5, "conditional": ["need_sea_chart"]},
"entrance_region": "Ghost Ship Boat",
"exit_region": "Ghost Ship 1F",
"type": EntranceGroups.DUNGEON_ENTRANCE,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GHOST
},
"Ghost Ship 1F Descend": {
"return_name": "Ghost Ship B1 Ascend",
"entrance": (0x29, 0x3, 0x1),
"exit": (0x29, 0x0, 0x1),
"entrance_region": "Ghost Ship 1F",
"exit_region": "Ghost Ship B1",
"type": EntranceGroups.DUNGEON_ROOM,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GHOST
},
"Finish Ghost Ship": {
"entrance": (0x4, 0x0, 0x0),
"exit": (0x0, 0x1, 0x5),
"entrance_region": "Ghost Ship Tetra",
"exit_region": "NW Ocean",
"type": EntranceGroups.WARP_PORTAL,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GHOST,
"two_way": False,
},
"Ghost Ship Cubus Sisters Reunion": {
"return_name": "Cubus Sisters Blue Warp",
"entrance": (0x29, 0x0, 0x3),
"exit": (0x30, 0x0, 0x1),
"entrance_region": "Ghost Ship Warp",
"exit_region": "Cubus Sisters",
"type": EntranceGroups.BOSS,
"direction": EntranceGroups.INSIDE,
"island": EntranceGroups.GHOST,
},
# ============= SE Ocean ==================
"Ocean SE Goron": {
"return_name": "Goron SW Board Ship",
"entrance_region": "Goron Boat",
"exit_region": "Goron SW",
"entrance": (0x0, 0x2, 0x2),
"exit": (0x10, 0x2, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.GORON,
},
"Ocean SE Harrow": {
"return_name": "Harrow Board Ship",
"entrance_region": "Harrow Boat",
"exit_region": "Harrow Island",
"entrance": (0x0, 0x2, 0x4),
"exit": (0x18, 0x0, 0x1),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.NONE,
},
"Ocean SE Dee Ess": {
"return_name": "Dee Ess Board Ship",
"entrance_region": "Dee Ess Boat",
"exit_region": "Dee Ess Island",
"entrance": (0x0, 0x2, 0x5),
"exit": (0x1B, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.NONE,
},
"Ocean SE Frost": {
"return_name": "Frost SW Board Ship",
"entrance_region": "Frost Boat",
"exit_region": "Frost SW",
"entrance": (0x0, 0x2, 0x3),
"exit": (0xF, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.FROST,
},
# ============= NE Ocean ==================
"Ocean NE IotD": {
"return_name": "IotD Board Ship",
"entrance_region": "IotD Boat",
"exit_region": "IotD Port",
"entrance": (0x0, 0x3, 0x1),
"exit": (0x15, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.DEAD,
},
"Ocean NE Ruins": {
"return_name": "Ruins SW Board Ship",
"entrance_region": "Ruins Boat",
"exit_region": "Ruins SW Port",
"entrance": (0x0, 0x3, 0x2),
"exit": (0x11, 0x0, 0x0),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.RUINS,
},
"Ocean NE Maze": {
"return_name": "Maze Board Ship",
"entrance_region": "Maze Boat",
"exit_region": "Maze Island",
"entrance": (0x0, 0x3, 0x3),
"exit": (0x19, 0x0, 0x1),
"extra_data": {"conditional": ["need_sea_chart"]},
"type": EntranceGroups.ISLAND,
"direction": EntranceGroups.INSIDE,
"return_island": EntranceGroups.NONE,
},
}
EVENT_DATA = {
# Event entrances
"EVENT: SS Wayfarer Give Wood Heart": {
"two_way": False,
"entrance_region": "SS Wayfarer Trade",
"exit_region": "SS Wayfarer Event",
"entrance": (0x8, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Bremeur's Temple Lower Water": {
"two_way": False,
"entrance_region": "Bremeur's Temple Kings Key",
"exit_region": "Bremeur's Temple Event",
"entrance": (0x24, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Goron NE Spike Switch": {
"two_way": False,
"entrance_region": "Goron NE South",
"exit_region": "Goron NE Event",
"entrance": (0x10, 0x1, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Meet Wayfarer": {
"two_way": False,
"entrance_region": "Wayfarer's House",
"exit_region": "Wayfarer Event",
"entrance": (0x14, 0x1, 0x0),
"extra_data": {"shared_event": True},
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Goron SW Kill Yellow Chus": {
"two_way": False,
"entrance_region": "Goron Chus",
"exit_region": "Goron Chus Event",
"entrance": (0x10, 0x2, 0x0),
"extra_data": {"shared_event": True},
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Goron SE Shout to Bridge Goron": {
"two_way": False,
"entrance_region": "Goron SE NW",
"exit_region": "Goron SE Bridge Event",
"entrance": (0x10, 0x3, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
# Goal Events
"GOAL: Bellumbeck": {
"two_way": False,
"entrance_region": "Goal",
"exit_region": "Goal Event Bellumbeck",
"entrance": (0x36, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"GOAL: Triforce Door": {
"two_way": False,
"entrance_region": "Goal",
"exit_region": "Goal Event Triforce",
"entrance": (0x25, 0x9, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"GOAL": {
"two_way": False,
"entrance_region": "Goal",
"exit_region": "Goal Event",
"entrance": (0xB, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Defeat Blaaz": {
"two_way": False,
"entrance_region": "Post Blaaz",
"exit_region": "Post ToF",
"extra_data": {"shared_event": True},
"entrance": (0x2b, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Defeat Cyclok": {
"two_way": False,
"entrance_region": "Post Cyclok",
"exit_region": "Post ToW",
"extra_data": {"shared_event": True},
"entrance": (0x2a, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Defeat Crayk": {
"two_way": False,
"entrance_region": "Post Crayk",
"exit_region": "Post ToC",
"extra_data": {"shared_event": True},
"entrance": (0x2c, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Rescue Tetra": {
"two_way": False,
"entrance_region": "Ghost Ship Tetra",
"exit_region": "Spawn Pirate Ambush",
"extra_data": {"shared_event": True},
"entrance": (0x4, 0x0, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Defeat Dongorongo": {
"two_way": False,
"entrance_region": "Post Dongorongo",
"exit_region": "Post GT",
"extra_data": {"shared_event": True},
"entrance": (0x20, 0xa, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Defeat Gleeok": {
"two_way": False,
"entrance_region": "Post Gleeok",
"exit_region": "Post ToI",
"extra_data": {"shared_event": True},
"entrance": (0x1f, 0x6, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Defeat Eox": {
"two_way": False,
"entrance_region": "Post Eox",
"exit_region": "Post MT",
"extra_data": {"shared_event": True},
"entrance": (0x21, 0x6, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Open Eddo's Door": {
"two_way": False,
"entrance_region": "Eddo's Workshop",
"exit_region": "Eddo Event",
"entrance": (0x13, 0xB, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
"EVENT: Gust Windmills": {
"two_way": False,
"entrance_region": "Gust North Sandworms",
"exit_region": "Gust North Event",
"entrance": (0x13, 0xB, 0x0),
"type": EntranceGroups.EVENT,
"direction": EntranceGroups.NONE,
"island": EntranceGroups.NONE,
},
}
ENTRANCES: dict[str, "PHTransition"] = PHTransition.from_data(ENTRANCE_DATA | EVENT_DATA)
EVENTS: dict[str, "PHTransition"] = {name: entr for name, entr in ENTRANCES.items() if entr.category_group == EntranceGroups.EVENT}
counter = {}
i = 0
entrance_id_to_region = {d.id: d.entrance_region for d in ENTRANCES.values()}
entrance_id_to_entrance = {d.id: d for d in ENTRANCES.values()}
# print({key: value for key, value in counter.items() if value != 1})
if __name__ == "__main__":
sorted_entrances = sorted(ENTRANCES, key=lambda x: (ENTRANCES[x].island, ENTRANCES[x].category_group, ENTRANCES[x].direction, ENTRANCES[x].name))
data = [
{
"name": "Bannan Salvatore Cave"
},
{
"name": "Bannan Wayfarer Cave"
},
{
"name": "Bannan Cave East Exit"
},
{
"name": "Bannan Cave West Exit"
},
{
"name": "Wayfarer's Exit"
},
{
"name": "Ocean NW Bannan"
},
{
"name": "Bannan Boat"
},
{"name": "Bannan West Hut"},
{"name": "Bannan West Cave"},
{"name": "Keese Passage West Exit"},
{"name": "Bannan East Cave"},
{"name": "Keese Passage East Exit"}
]
process = [i.get("name") for i in data]
res = [i for i in sorted_entrances if i in process]
for i in res:
print("{" + f"\"name\": \"{i}\"" + "}, ")
# print(f"len {len(ENTRANCES)}")
# for name, data in ENTRANCES.items():
# print(f"{name}:", "{")
# for k, v in data.items():
# print(f"\t{k}: {v}")
# print("},")