diff --git a/Main.py b/Main.py index 3a1ac8f0..f8579f6d 100644 --- a/Main.py +++ b/Main.py @@ -14,6 +14,7 @@ from KeyDoorShuffle import validate_key_placement from PotShuffle import shuffle_pots from Regions import create_regions, create_shops, mark_light_world_regions, create_dungeon_regions, adjust_locations from InvertedRegions import create_inverted_regions, mark_dark_world_regions +from OverworldShuffle import link_overworld from EntranceShuffle import link_entrances, link_inverted_entrances from Rom import patch_rom, patch_race_rom, patch_enemizer, apply_rom_settings, LocalRom, JsonRom, get_hash_string from Doors import create_doors @@ -120,6 +121,11 @@ def main(args, seed=None, fish=None): if world.potshuffle[player]: shuffle_pots(world, player) + logger.info(world.fish.translate("cli","cli","shuffling.overworld")) + + for player in range(1, world.players + 1): + link_overworld(world, player) + logger.info(world.fish.translate("cli","cli","shuffling.world")) for player in range(1, world.players + 1): diff --git a/OverworldShuffle.py b/OverworldShuffle.py new file mode 100644 index 00000000..7f097b2f --- /dev/null +++ b/OverworldShuffle.py @@ -0,0 +1,583 @@ +import random + +def link_overworld(world, player): + # setup mandatory connections + for exitname, regionname in mandatory_connections: + connect_simple(world, exitname, regionname, player) + + connect_custom(world, player) + + # if we do not shuffle, set default connections + if world.owShuffle[player] == 'vanilla': + for exitname, regionname in default_overworld_connections: + connect_simple(world, exitname, regionname, player) + elif world.owShuffle[player] == 'full': + for exitname, regionname in default_overworld_connections: + connect_simple(world, exitname, regionname, player) + else: + raise NotImplementedError('Shuffling not supported yet') + + +def connect_custom(world, player): + if hasattr(world, 'custom_overworld') and world.custom_overworld[player]: + for exit_name, region_name in world.custom_overworld[player]: + # doesn't actually change addresses + connect_simple(world, exit_name, region_name, player) + # this needs to remove custom connections from the pool + + +def connect_simple(world, exitname, regionname, player): + world.get_entrance(exitname, player).connect(world.get_region(regionname, player)) + +# these are connections that cannot be shuffled and always exist. They link together separate parts of the world we need to divide into regions +mandatory_connections = [('Links House S&Q', 'Links House'), + ('Sanctuary S&Q', 'Sanctuary'), + ('Old Man S&Q', 'Old Man House'), + + ('Flute Spot 1', 'West Death Mountain (Bottom)'), + ('Flute Spot 2', 'Potion Shop Area'), + ('Flute Spot 3', 'Kakariko Area'), + ('Flute Spot 4', 'Links House Area'), + ('Flute Spot 5', 'Eastern Nook Area'), + ('Flute Spot 6', 'Desert Palace Teleporter Ledge'), + ('Flute Spot 7', 'Dam Area'), + ('Flute Spot 8', 'Octoballoon Area'), + + # Special OW Areas + ('Lost Woods NW', 'Master Sword Meadow'), + ('Master Sword Meadow SC', 'Lost Woods Area'), + ('Zora Approach NE', 'Zoras Domain'), + ('Zoras Domain SW', 'Zora Approach Area'), + ('Stone Bridge WC', 'Hobo Bridge'), + ('Hobo EC', 'Stone Bridge Water'), + + # Whirlpool Connections + ('C Whirlpool', 'Useless Fairy Water'), + ('Useless Fairy Whirlpool', 'C Whirlpool Area'), + ('Lake Hylia Whirlpool', 'Zora Approach Area'), + ('Zora Whirlpool', 'Lake Hylia Water'), + ('Kakariko Pond Whirlpool', 'Octoballoon Water'), + ('Octoballoon Whirlpool', 'Kakariko Pond Area'), + ('Qirn Jump Whirlpool', 'Southeast DW Water'), + ('Southeast DW Whirlpool', 'Qirn Jump Water'), + + # Intra-tile OW Connections + ('Death Mountain Entrance Rock', 'Death Mountain Entrance'), + ('Death Mountain Entrance Drop', 'DM Ascent Area'), + ('Death Mountain Return Drop', 'DM Ascent Area'), + ('Bonk Rock Ledge Drop', 'Sanctuary Area'), + ('Kings Grave Outer Rocks', 'Kings Grave Area'), + ('Kings Grave Inner Rocks', 'Graveyard Area'), + ('Graveyard Ledge Drop', 'Graveyard Area'), + ('Useless Fairy Water Drop', 'Useless Fairy Water'), + ('Useless Fairy East Water Drop', 'Useless Fairy Water'), + ('Useless Fairy West Pier', 'Useless Fairy Area'), + ('Useless Fairy East Pier', 'Useless Fairy East Bank'), + ('Potion Shop Water Drop', 'Potion Shop Water'), + ('Potion Shop Northeast Water Drop', 'Potion Shop Water'), + ('Potion Shop Rock (South)', 'Potion Shop Northeast'), + ('Potion Shop Rock (North)', 'Potion Shop Area'), + ('Zora Warning Water Drop', 'Zora Warning Water'), + ('Bat Cave Ledge Peg', 'Bat Cave Ledge'), + ('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'), + ('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'), + ('Hyrule Castle Ledge Drop', 'Hyrule Castle Area'), + ('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'), + ('Hyrule Castle Inner East Rock', 'Hyrule Castle East Entry'), + ('Hyrule Castle Outer East Rock', 'Hyrule Castle Area'), + ('Wooden Bridge Water Drop', 'Wooden Bridge Water'), + ('Maze Race Ledge Drop', 'Maze Race Area'), + ('Cave 45 Ledge Drop', 'Cave 45 Area'), + ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), + ('C Whirlpool Rock (Top)', 'C Whirlpool Area'), + ('Desert Palace Statue Move', 'Desert Palace Stairs'), + ('Desert Ledge Drop', 'Desert Area'), + ('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'), + ('Desert Ledge Inner Rocks', 'Desert Ledge'), + ('Checkerboard Ledge Drop', 'Desert Area'), + ('Desert Mouth Drop', 'Desert Area'), + ('Desert Teleporter Drop', 'Desert Area'), + ('Bombos Tablet Drop', 'Desert Area'), + ('Purple Chest Ledge Drop', 'Purple Chest Area'), + ('Purple Chest Rocks (North)', 'Purple Chest Southeast'), + ('Purple Chest Rocks (South)', 'Purple Chest Area'), + ('Lake Hylia Water Drop', 'Lake Hylia Water'), + ('Lake Hylia South Water Drop', 'Lake Hylia Water'), + ('Lake Hylia Northeast Water Drop', 'Lake Hylia Water'), + ('Lake Hylia Central Water Drop', 'Lake Hylia Water'), + ('Lake Hylia Island Water Drop', 'Lake Hylia Water'), + ('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'), + ('Lake Hylia West Pier', 'Lake Hylia Area'), + ('Lake Hylia East Pier', 'Lake Hylia Northeast Bank'), + ('Octoballoon Water Drop', 'Octoballoon Water'), + ('Octoballoon Waterfall Water Drop', 'Octoballoon Water'), + ('Octoballoon Pier', 'Octoballoon Area'), + + ('West Death Mountain Drop', 'West Death Mountain (Bottom)'), + ('Spectacle Rock Drop', 'West Death Mountain (Top)'), + ('DM Hammer Bridge (West)', 'East Death Mountain (Top West)'), + ('DM Hammer Bridge (East)', 'East Death Mountain (Top East)'), + ('East Death Mountain Spiral Drop', 'Spiral Cave Ledge'), + ('East Death Mountain Fairy Drop', 'Fairy Ascension Ledge'), + ('Spiral Ledge Drop', 'East Death Mountain (Bottom)'), + ('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'), + ('Fairy Ascension Plateau Drop', 'East Death Mountain (Bottom)'), + ('Fairy Ascension Rocks', 'Fairy Ascension Plateau'), + ('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'), + ('DM Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), + + ('Skull Woods Bush Rock (West)', 'Skull Woods Forest'), + ('Skull Woods Bush Rock (East)', 'Skull Woods Portal Entry'), + ('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'), + ('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'), + ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), + ('Bumper Cave Ledge Drop', 'Bumper Cave Area'), + ('Bumper Cave Entrance Drop', 'Bumper Cave Area'), + ('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'), + ('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), + ('Skull Woods Pass Rock (Top)', 'Skull Woods Pass East Bottom Area'), + ('Skull Woods Pass Rock (Bottom)', 'Skull Woods Pass East Top Area'), + ('Qirn Jump Water Drop', 'Qirn Jump Water'), + ('Qirn Jump East Water Drop', 'Qirn Jump Water'), + ('Qirn Jump Pier', 'Qirn Jump East Bank'), + ('Dark Witch Water Drop', 'Dark Witch Water'), + ('Dark Witch Northeast Water Drop', 'Dark Witch Water'), + ('Dark Witch Rock (North)', 'Dark Witch Area'), + ('Dark Witch Rock (South)', 'Dark Witch Northeast'), + ('Catfish Approach Water Drop', 'Catfish Approach Water'), + ('Village of Outcasts Pegs', 'Dark Grassy Lawn'), + ('Grassy Lawn Pegs', 'Village of Outcasts Area'), + ('Peg Area Rocks (West)', 'Hammer Peg Area'), + ('Peg Area Rocks (East)', 'Hammer Peg Entry'), + ('Pyramid Exit Drop', 'Pyramid Area'), + ('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'), + ('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'), + ('Broken Bridge Hookshot Gap', 'Broken Bridge West'), + ('Broken Bridge Water Drop', 'Broken Bridge Water'), + ('Broken Bridge Northeast Water Drop', 'Broken Bridge Water'), + ('Broken Bridge West Water Drop', 'Broken Bridge Water'), + ('Dig Game To Ledge Drop', 'Dig Game Ledge'), + ('Dig Game Ledge Drop', 'Dig Game Area'), + ('Frog Ledge Drop', 'Archery Game Area'), + ('Archery Game Rock', 'Frog Area'), + ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), + ('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'), + ('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'), + ('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'), + ('Hammer Bridge Water Drop', 'Hammer Bridge Water'), + ('Hammer Bridge Pier', 'Hammer Bridge North Area'), + ('Dark Lake Hylia Water Drop', 'Dark Lake Hylia Water'), + ('Dark Lake Hylia Northeast Water Drop', 'Dark Lake Hylia Water'), + ('Dark Lake Hylia Southwest Water Drop', 'Dark Lake Hylia Water'), + ('Dark Lake Hylia Southeast Water Drop', 'Dark Lake Hylia Water'), + ('Dark Lake Hylia Northeast Pier', 'Dark Lake Hylia Northeast Bank'), + ('Southeast DW Water Drop', 'Southeast DW Water'), + ('Southeast DW Waterfall Water Drop', 'Southeast DW Water'), + ('Southeast DW Pier', 'Southeast DW Area'), + + ('Dark Death Mountain Drop (West)', 'Dark Death Mountain (West Bottom)'), + ('Dark Death Mountain Drop (East)', 'Dark Death Mountain (East Bottom)'), + ('Floating Island Drop', 'Dark Death Mountain (Top East)'), + ('Turtle Rock Ledge Drop', 'Turtle Rock Area'), + + ('Flute Away', 'Flute Sky'), + + # Portal Connections + ('Kakariko Teleporter (Hammer)', 'Skull Woods Pass East Top Area'), + ('Kakariko Teleporter (Rock)', 'Skull Woods Pass East Top Area'), + ('Top of Pyramid', 'Pyramid Area'), + ('Top of Pyramid (Inner)', 'Pyramid Area'), + ('East Hyrule Teleporter', 'Palace of Darkness Nook Area'), + ('South Hyrule Teleporter', 'Dark C Whirlpool Area'), + ('Desert Teleporter', 'Misery Mire Area'), + ('Lake Hylia Teleporter', 'Ice Palace Area'), + ('West Death Mountain Teleporter', 'Dark Death Mountain (West Bottom)'), + ('East Death Mountain Teleporter', 'Dark Death Mountain (East Bottom)'), + ('Turtle Rock Teleporter', 'Turtle Rock Ledge'), + + # Mirror Connections + ('Lost Woods Mirror Spot', 'Lost Woods Area'), + ('Lost Woods Entry Mirror Spot', 'Lost Woods Area'), + ('Lost Woods Pedestal Mirror Spot', 'Lost Woods Area'), + ('Lost Woods Southwest Mirror Spot', 'Lost Woods Area'), + ('Lost Woods Northeast Mirror Spot', 'Lost Woods Area'), + ('Lumberjack Mirror Spot', 'Lumberjack Area'), + ('DM Ascent Mirror Spot', 'DM Ascent Area'), + ('DM Ascent Entrance Mirror Spot', 'Death Mountain Entrance'), + ('DM Ascent Ledge Mirror Spot', 'Death Mountain Return Ledge'), + ('Lost Woods Pass West Mirror Spot', 'Lost Woods Pass West Area'), + ('Lost Woods Pass East Top Mirror Spot', 'Lost Woods Pass East Top Area'), + ('Lost Woods East Bottom Mirror Spot', 'Lost Woods Pass East Bottom Area'), + ('Kakariko Fortune Mirror Spot', 'Kakariko Fortune Area'), + ('Kakariko Pond Mirror Spot', 'Kakariko Pond Area'), + ('Forgotton Forest Mirror Spot', 'Forgotten Forest Area'), + ('Bonk Rock Ledge Mirror Spot', 'Bonk Rock Ledge'), + ('Graveyard Ledge Mirror Spot', 'Graveyard Ledge'), + ('Kings Grave Mirror Spot', 'Kings Grave Area'), + ('Useless Fairy Mirror Spot', 'Useless Fairy Area'), + ('Useless Fairy East Mirror Spot', 'Useless Fairy East Bank'), + ('Potion Shop Mirror Spot', 'Potion Shop Area'), + ('Potion Shop Northeast Mirror Spot', 'Potion Shop Northeast'), + ('Zora Warning Mirror Spot', 'Zora Warning Area'), + ('Zora Approach Mirror Spot', 'Zora Approach Area'), + ('Kakariko Mirror Spot', 'Kakariko Area'), + ('Kakariko Grass Mirror Spot', 'Kakariko Area'), + ('Blacksmith Mirror Spot', 'Blacksmith Area'), + ('Blacksmith Entry Mirror Spot', 'Blacksmith Area'), + ('Bat Cave Ledge Mirror Spot', 'Bat Cave Ledge'), + ('HC Ledge Mirror Spot', 'Hyrule Castle Ledge'), + ('HC Courtyard Mirror Spot', 'Hyrule Castle Courtyard'), + ('HC Area Mirror Spot', 'Hyrule Castle Area'), + ('HC Area South Mirror Spot', 'Hyrule Castle Area'), + ('HC East Entry Mirror Spot', 'Hyrule Castle East Entry'), + ('Wooden Bridge Mirror Spot', 'Wooden Bridge Area'), + ('Wooden Bridge Northeast Mirror Spot', 'Wooden Bridge Area'), + ('Wooden Bridge West Mirror Spot', 'Wooden Bridge Area'), + ('Sand Dune Mirror Spot', 'Sand Dune Area'), + ('Eastern Palace Mirror Spot', 'Eastern Palace Area'), + ('Eastern Nook Mirror Spot', 'Eastern Nook Area'), + ('Maze Race Mirror Spot', 'Maze Race Ledge'), + ('Maze Race Ledge Mirror Spot', 'Maze Race Ledge'), + ('Kakariko Suburb Mirror Spot', 'Kakariko Suburb Area'), + ('Kakariko Suburb South Mirror Spot', 'Kakariko Suburb Area'), + ('Flute Boy Mirror Spot', 'Flute Boy Area'), + ('Flute Boy Pass Mirror Spot', 'Flute Boy Pass'), + ('Cave 45 Mirror Spot', 'Cave 45 Ledge'), + ('C Whirlpool Mirror Spot', 'C Whirlpool Area'), + ('C Whirlpool Outer Mirror Spot', 'C Whirlpool Outer Area'), + ('Central Bonk Rock Mirror Spot', 'Central Bonk Rock Area'), + ('Links House Mirror Spot', 'Links House Area'), + ('Stone Bridge Mirror Spot', 'Stone Bridge Area'), + ('Stone Bridge South Mirror Spot', 'Stone Bridge Area'), + ('Hobo Mirror Spot', 'Stone Bridge Water'), + ('Tree Line Mirror Spot', 'Tree Line Area'), + ('Desert Ledge Mirror Spot', 'Desert Ledge'), + ('Checkerboard Mirror Spot', 'Desert Checkerboard Ledge'), + ('DP Stairs Mirror Spot', 'Desert Palace Stairs'), + ('DP Entrance (North) Mirror Spot', 'Desert Palace Entrance (North) Spot'), + ('Bombos Tablet Mirror Spot', 'Purple Chest Ledge'), + ('Purple Chest Mirror Spot', 'Purple Chest Area'), + ('Dam Mirror Spot', 'Dam Area'), + ('Statues Mirror Spot', 'Statues Area'), + ('South Pass Mirror Spot', 'South Pass Area'), + ('Lake Hylia Mirror Spot', 'Lake Hylia Area'), + ('Lake Hylia Northeast Mirror Spot', 'Lake Hylia Northeast Bank'), + ('South Shore Mirror Spot', 'Lake Hylia South Shore'), + ('South Shore East Mirror Spot', 'Lake Hylia South Shore'), + ('Lake Hylia Island Mirror Spot', 'Lake Hylia Island'), + ('Lake Hylia Central Island Mirror Spot', 'Lake Hylia Central Island'), + ('Octoballoon Mirror Spot', 'Octoballoon Area'), + ('Ice Rod Cave Mirror Spot', 'Ice Rod Cave Area'), + ('Spectacle Rock Mirror Spot', 'Spectacle Rock Ledge'), + ('West Death Mountain (Top) Mirror Spot', 'West Death Mountain (Top)'), + ('East Death Mountain (Top West) Mirror Spot', 'East Death Mountain (Top West)'), + ('East Death Mountain (Top East) Mirror Spot', 'East Death Mountain (Top East)'), + ('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'), + ('Mimic Cave Mirror Spot', 'Mimic Cave Ledge'), + ('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'), + ('Fairy Ascension Mirror Spot', 'Fairy Ascension Plateau'), + ('Floating Island Mirror Spot', 'Death Mountain Floating Island (Light World)'), + ('TR Pegs Area Mirror Spot', 'Death Mountain TR Pegs'), + + # UW Connections + ('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'), + ('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'), + ('Kakariko Well (top to bottom)', 'Kakariko Well (bottom)'), + ('Bat Cave Door', 'Bat Cave (left)'), + ('Sewer Drop', 'Sewers Rat Path'), + ('Old Man Cave Dropdown', 'Old Man Cave'), + ('Old Man House Front to Back', 'Old Man House Back'), + ('Old Man House Back to Front', 'Old Man House'), + ('Spectacle Rock Cave Drop', 'Spectacle Rock Cave (Bottom)'), + ('Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave (Bottom)'), + ('Spiral Cave (top to bottom)', 'Spiral Cave (Bottom)'), + ('Light World Death Mountain Shop', 'Light World Death Mountain Shop'), + ('Paradox Cave Push Block Reverse', 'Paradox Cave Chest Area'), + ('Paradox Cave Push Block', 'Paradox Cave Front'), + ('Paradox Cave Bomb Jump', 'Paradox Cave'), + ('Paradox Cave Drop', 'Paradox Cave Chest Area'), + ('Fairy Ascension Cave Climb', 'Fairy Ascension Cave (Top)'), + ('Fairy Ascension Cave Pots', 'Fairy Ascension Cave (Bottom)'), + ('Fairy Ascension Cave Drop', 'Fairy Ascension Cave (Drop)'), + ('Ganon Drop', 'Bottom of Pyramid') + ] + +# non shuffled overworld +default_overworld_connections = [('Lost Woods SW', 'Lost Woods Pass West Area'), + ('Lost Woods SC', 'Lost Woods Pass East Top Area'), + ('Lost Woods SE', 'Kakariko Fortune Area'), + ('Lost Woods EN', 'Lumberjack Area'), + ('Lumberjack WN', 'Lost Woods Area'), + ('Lumberjack SW', 'DM Ascent Area'), + ('DM Ascent NW', 'Lumberjack Area'), + ('DM Ascent SE', 'Kakariko Pond Area'), + ('Lost Woods Pass NW', 'Lost Woods Area'), + ('Lost Woods Pass SW', 'Kakariko Area'), + ('Lost Woods Pass NE', 'Lost Woods Area'), + ('Lost Woods Pass SE', 'Kakariko Area'), + ('Kakariko Fortune NE', 'Lost Woods Area'), + ('Kakariko Fortune EN', 'Kakariko Pond Area'), + ('Kakariko Fortune ES', 'Kakariko Pond Area'), + ('Kakariko Fortune SC', 'Kakariko Area'), + ('Kakariko Pond NE', 'DM Ascent Area'), + ('Kakariko Pond WN', 'Kakariko Fortune Area'), + ('Kakariko Pond WS', 'Kakariko Fortune Area'), + ('Kakariko Pond SW', 'Forgotten Forest Area'), + ('Kakariko Pond SE', 'Forgotten Forest Area'), + ('Kakariko Pond EN', 'Bonk Rock Ledge'), + ('Kakariko Pond ES', 'Sanctuary Area'), + ('Forgotten Forest NW', 'Kakariko Pond Area'), + ('Forgotten Forest NE', 'Kakariko Pond Area'), + ('Forgotten Forest ES', 'Hyrule Castle Area'), + ('Sanctuary WS', 'Kakariko Pond Area'), + ('Sanctuary EC', 'Graveyard Area'), + ('Sanctuary WN', 'Kakariko Pond Area'), + ('Graveyard WC', 'Sanctuary Area'), + ('Graveyard EC', 'Useless Fairy Area'), + ('Useless Fairy WC', 'Graveyard Area'), + ('Useless Fairy SW', 'Wooden Bridge Area'), + ('Useless Fairy SE', 'Wooden Bridge Area'), + ('Useless Fairy EC', 'Potion Shop Area'), + ('Useless Fairy ES', 'Potion Shop Area'), + ('Useless Fairy EN', 'Potion Shop Water'), + ('Useless Fairy SC', 'Wooden Bridge Water'), + ('Potion Shop WC', 'Useless Fairy East Bank'), + ('Potion Shop WS', 'Useless Fairy East Bank'), + ('Potion Shop EC', 'Zora Warning Area'), + ('Potion Shop WN', 'Useless Fairy Water'), + ('Potion Shop EN', 'Zora Warning Water'), + ('Zora Warning WC', 'Potion Shop Northeast'), + ('Zora Warning NE', 'Zora Approach Area'), + ('Zora Warning WN', 'Potion Shop Water'), + ('Zora Approach SE', 'Zora Warning Area'), + ('Kakariko NW', 'Lost Woods Pass West Area'), + ('Kakariko NC', 'Lost Woods Pass East Bottom Area'), + ('Kakariko NE', 'Kakariko Fortune Area'), + ('Kakariko ES', 'Blacksmith Area'), + ('Kakariko SE', 'Kakariko Suburb Area'), + ('Blacksmith WS', 'Kakariko Area'), + ('Hyrule Castle WN', 'Forgotten Forest Area'), + ('Hyrule Castle SW', 'Central Bonk Rock Area'), + ('Hyrule Castle SE', 'Links House Area'), + ('Hyrule Castle ES', 'Sand Dune Area'), + ('Wooden Bridge NW', 'Useless Fairy Area'), + ('Wooden Bridge NE', 'Useless Fairy East Bank'), + ('Wooden Bridge SW', 'Sand Dune Area'), + ('Wooden Bridge NC', 'Useless Fairy Water'), + ('Sand Dune NW', 'Wooden Bridge Area'), + ('Sand Dune WN', 'Hyrule Castle East Entry'), + ('Sand Dune SC', 'Stone Bridge Area'), + ('Eastern Palace SW', 'Tree Line Area'), + ('Eastern Palace SE', 'Eastern Nook Area'), + ('Eastern Nook NE', 'Eastern Palace Area'), + ('Maze Race ES', 'Kakariko Suburb Area'), + ('Kakariko Suburb NE', 'Kakariko Area'), + ('Kakariko Suburb WS', 'Maze Race Area'), + ('Kakariko Suburb ES', 'Flute Boy Pass'), + ('Flute Boy SC', 'Cave 45 Area'), + ('Flute Boy WS', 'Kakariko Suburb Area'), + ('Flute Boy SW', 'Cave 45 Area'), + ('Cave 45 NW', 'Flute Boy Pass'), + ('Cave 45 NC', 'Flute Boy Area'), + ('Cave 45 EC', 'C Whirlpool Outer Area'), + ('C Whirlpool EN', 'Statues Area'), + ('C Whirlpool EC', 'Statues Area'), + ('C Whirlpool ES', 'Statues Area'), + ('C Whirlpool SC', 'Dam Area'), + ('C Whirlpool WC', 'Cave 45 Area'), + ('C Whirlpool NW', 'Central Bonk Rock Area'), + ('Central Bonk Rock NW', 'Hyrule Castle Area'), + ('Central Bonk Rock SW', 'C Whirlpool Outer Area'), + ('Central Bonk Rock EN', 'Links House Area'), + ('Central Bonk Rock EC', 'Links House Area'), + ('Central Bonk Rock ES', 'Links House Area'), + ('Links House NE', 'Hyrule Castle Area'), + ('Links House WN', 'Central Bonk Rock Area'), + ('Links House WC', 'Central Bonk Rock Area'), + ('Links House WS', 'Central Bonk Rock Area'), + ('Links House SC', 'Statues Area'), + ('Links House ES', 'Stone Bridge Area'), + ('Stone Bridge NC', 'Sand Dune Area'), + ('Stone Bridge EN', 'Tree Line Area'), + ('Stone Bridge WS', 'Links House Area'), + ('Stone Bridge SC', 'Lake Hylia Area'), + ('Stone Bridge EC', 'Tree Line Water'), + ('Tree Line WN', 'Stone Bridge Area'), + ('Tree Line NW', 'Eastern Palace Area'), + ('Tree Line SE', 'Lake Hylia Northeast Bank'), + ('Tree Line WC', 'Stone Bridge Water'), + ('Tree Line SC', 'Lake Hylia Water'), + ('Desert ES', 'Purple Chest Area'), + ('Purple Chest WS', 'Desert Area'), + ('Purple Chest EC', 'Dam Area'), + ('Purple Chest ES', 'Dam Area'), + ('Purple Chest WC', 'Bombos Tablet Ledge'), + ('Dam WC', 'Purple Chest Area'), + ('Dam WS', 'Purple Chest Area'), + ('Dam NC', 'C Whirlpool Area'), + ('Dam EC', 'South Pass Area'), + ('Statues NC', 'Links House Area'), + ('Statues WN', 'C Whirlpool Area'), + ('Statues WC', 'C Whirlpool Area'), + ('Statues WS', 'C Whirlpool Area'), + ('Statues SC', 'South Pass Area'), + ('South Pass WC', 'Dam Area'), + ('South Pass NC', 'Statues Area'), + ('South Pass ES', 'Lake Hylia South Shore'), + ('Lake Hylia NW', 'Stone Bridge Area'), + ('Lake Hylia WS', 'South Pass Area'), + ('Lake Hylia ES', 'Octoballoon Area'), + ('Lake Hylia NE', 'Tree Line Area'), + ('Lake Hylia NC', 'Tree Line Water'), + ('Lake Hylia EC', 'Octoballoon Water'), + ('Octoballoon WS', 'Lake Hylia South Shore'), + ('Octoballoon NE', 'Ice Rod Cave Area'), + ('Octoballoon WC', 'Lake Hylia Water'), + ('Octoballoon NW', 'Ice Rod Cave Area'), + ('Ice Rod Cave SE', 'Octoballoon Area'), + ('Ice Rod Cave SW', 'Octoballoon Water Ledge'), + + ('West Death Mountain ES', 'East Death Mountain (Bottom Left)'), + ('West Death Mountain EN', 'East Death Mountain (Top West)'), + ('East Death Mountain WN', 'West Death Mountain (Top)'), + ('East Death Mountain EN', 'Death Mountain TR Pegs'), + ('East Death Mountain WS', 'West Death Mountain (Bottom)'), + ('Death Mountain TR Pegs WN', 'East Death Mountain (Top East)'), + + ('Skull Woods SE', 'Dark Fortune Area'), + ('Skull Woods SC', 'Skull Woods Pass East Top Area'), + ('Skull Woods SW', 'Skull Woods Pass West Area'), + ('Skull Woods WN', 'Dark Lumberjack Area'), + ('Dark Lumberjack WN', 'Skull Woods Forgotten Path (Northeast)'), + ('Dark Lumberjack SW', 'Bumper Cave Area'), + ('Bumper Cave NW', 'Dark Lumberjack Area'), + ('Bumper Cave SE', 'Outcast Pond Area'), + ('Skull Woods Pass NW', 'Skull Woods Forgotten Path (Southwest)'), + ('Skull Woods Pass SW', 'Village of Outcasts Area'), + ('Skull Woods Pass NE', 'Skull Woods Portal Entry'), + ('Skull Woods Pass SE', 'Village of Outcasts Area'), + ('Dark Fortune NE', 'Skull Woods Forest'), + ('Dark Fortune EN', 'Outcast Pond Area'), + ('Dark Fortune ES', 'Outcast Pond Area'), + ('Dark Fortune SC', 'Village of Outcasts Area'), + ('Outcast Pond NE', 'Bumper Cave Area'), + ('Outcast Pond WN', 'Dark Fortune Area'), + ('Outcast Pond WS', 'Dark Fortune Area'), + ('Outcast Pond SW', 'Shield Shop Area'), + ('Outcast Pond SE', 'Shield Shop Area'), + ('Outcast Pond EN', 'Dark Chapel Area'), + ('Outcast Pond ES', 'Dark Chapel Area'), + ('Shield Shop NW', 'Outcast Pond Area'), + ('Shield Shop NE', 'Outcast Pond Area'), + ('Dark Chapel WN', 'Outcast Pond Area'), + ('Dark Chapel WS', 'Outcast Pond Area'), + ('Dark Chapel EC', 'Dark Graveyard Area'), + ('Dark Graveyard WC', 'Dark Chapel Area'), + ('Dark Graveyard ES', 'Qirn Jump Area'), + ('Qirn Jump WC', 'Dark Graveyard Area'), + ('Qirn Jump SW', 'Broken Bridge West'), + ('Qirn Jump SE', 'Broken Bridge Northeast'), + ('Qirn Jump EC', 'Dark Witch Area'), + ('Qirn Jump ES', 'Dark Witch Area'), + ('Qirn Jump EN', 'Dark Witch Water'), + ('Qirn Jump SC', 'Broken Bridge Water'), + ('Dark Witch WC', 'Qirn Jump East Bank'), + ('Dark Witch WS', 'Qirn Jump East Bank'), + ('Dark Witch EC', 'Catfish Approach Area'), + ('Dark Witch WN', 'Qirn Jump Water'), + ('Dark Witch EN', 'Catfish Approach Water'), + ('Catfish Approach WC', 'Dark Witch Northeast'), + ('Catfish Approach NE', 'Catfish Area'), + ('Catfish Approach WN', 'Dark Witch Water'), + ('Catfish SE', 'Catfish Approach Area'), + ('Village of Outcasts NW', 'Skull Woods Pass West Area'), + ('Village of Outcasts NC', 'Skull Woods Pass East Bottom Area'), + ('Village of Outcasts NE', 'Dark Fortune Area'), + ('Village of Outcasts ES', 'Hammer Peg Entry'), + ('Village of Outcasts SE', 'Frog Area'), + ('Hammer Pegs WS', 'Village of Outcasts Area'), + ('Pyramid ES', 'Dark Dune Area'), + ('Pyramid SW', 'Dark Bonk Rock Area'), + ('Pyramid SE', 'Big Bomb Shop Area'), + ('Broken Bridge SW', 'Dark Dune Area'), + ('Broken Bridge NE', 'Qirn Jump East Bank'), + ('Broken Bridge NW', 'Qirn Jump Area'), + ('Broken Bridge NC', 'Qirn Jump Water'), + ('Dark Dune NW', 'Broken Bridge Area'), + ('Dark Dune WN', 'Pyramid Area'), + ('Dark Dune SC', 'Hammer Bridge North Area'), + ('Palace of Darkness SW', 'Dark Tree Line Area'), + ('Palace of Darkness SE', 'Palace of Darkness Nook Area'), + ('Palace of Darkness Nook NE', 'Palace of Darkness Area'), + ('Dig Game ES', 'Archery Game Area'), + ('Dig Game EC', 'Archery Game Area'), + ('Frog NE', 'Village of Outcasts Area'), + ('Frog WC', 'Dig Game Ledge'), + ('Frog WS', 'Dig Game Area'), + ('Frog ES', 'Stumpy Pass'), + ('Stumpy SC', 'Circle of Bushes Area'), + ('Stumpy WS', 'Archery Game Area'), + ('Stumpy SW', 'Circle of Bushes Area'), + ('Circle of Bushes NW', 'Stumpy Pass'), + ('Circle of Bushes NC', 'Stumpy Area'), + ('Circle of Bushes EC', 'Dark C Whirlpool Outer Area'), + ('Dark C Whirlpool EN', 'Hype Cave Area'), + ('Dark C Whirlpool EC', 'Hype Cave Area'), + ('Dark C Whirlpool ES', 'Hype Cave Area'), + ('Dark C Whirlpool SC', 'Swamp Palace Area'), + ('Dark C Whirlpool WC', 'Circle of Bushes Area'), + ('Dark C Whirlpool NW', 'Dark Bonk Rock Area'), + ('Dark Bonk Rock NW', 'Pyramid Pass'), + ('Dark Bonk Rock SW', 'Dark C Whirlpool Outer Area'), + ('Dark Bonk Rock EN', 'Big Bomb Shop Area'), + ('Dark Bonk Rock EC', 'Big Bomb Shop Area'), + ('Dark Bonk Rock ES', 'Big Bomb Shop Area'), + ('Big Bomb Shop NE', 'Pyramid Pass'), + ('Big Bomb Shop WN', 'Dark Bonk Rock Area'), + ('Big Bomb Shop WC', 'Dark Bonk Rock Area'), + ('Big Bomb Shop WS', 'Dark Bonk Rock Area'), + ('Big Bomb Shop SC', 'Hype Cave Area'), + ('Big Bomb Shop ES', 'Hammer Bridge South Area'), + ('Hammer Bridge NC', 'Dark Dune Area'), + ('Hammer Bridge EN', 'Dark Tree Line Area'), + ('Hammer Bridge WS', 'Big Bomb Shop Area'), + ('Hammer Bridge SC', 'Dark Lake Hylia Area'), + ('Hammer Bridge EC', 'Dark Tree Line Water'), + ('Dark Tree Line WN', 'Hammer Bridge North Area'), + ('Dark Tree Line NW', 'Palace of Darkness Area'), + ('Dark Tree Line SE', 'Dark Lake Hylia Northeast Bank'), + ('Dark Tree Line WC', 'Hammer Bridge Water'), + ('Dark Tree Line SC', 'Dark Lake Hylia Water'), + ('Dark Purple Chest EC', 'Swamp Palace Area'), + ('Dark Purple Chest ES', 'Swamp Palace Area'), + ('Swamp Palace WC', 'Dark Purple Chest Area'), + ('Swamp Palace WS', 'Dark Purple Chest Area'), + ('Swamp Palace NC', 'Dark C Whirlpool Area'), + ('Swamp Palace EC', 'Dark South Pass Area'), + ('Hype Cave NC', 'Big Bomb Shop Area'), + ('Hype Cave WN', 'Dark C Whirlpool Area'), + ('Hype Cave WC', 'Dark C Whirlpool Area'), + ('Hype Cave WS', 'Dark C Whirlpool Area'), + ('Hype Cave SC', 'Dark South Pass Area'), + ('Dark South Pass WC', 'Swamp Palace Area'), + ('Dark South Pass NC', 'Hype Cave Area'), + ('Dark South Pass ES', 'Dark Lake Hylia Ledge (West)'), + ('Dark Lake Hylia NW', 'Hammer Bridge South Area'), + ('Dark Lake Hylia NE', 'Dark Tree Line Area'), + ('Dark Lake Hylia WS', 'Dark South Pass Area'), + ('Dark Lake Hylia ES', 'Southeast DW Area'), + ('Dark Lake Hylia NC', 'Dark Tree Line Water'), + ('Dark Lake Hylia EC', 'Southeast DW Water'), + ('Southeast DW WS', 'Dark Lake Hylia Ledge (East)'), + ('Southeast DW NE', 'Dark Shopping Mall Area'), + ('Southeast DW WC', 'Dark Lake Hylia Water'), + ('Southeast DW NW', 'Dark Shopping Mall Area'), + ('Dark Shopping Mall SE', 'Southeast DW Area'), + ('Dark Shopping Mall SW', 'Southeast DW Water Ledge'), + + ('Dark Death Mountain EN', 'Dark Death Mountain (Top East)'), + ('East Dark Death Mountain WN', 'Dark Death Mountain (Top West)'), + ('East Dark Death Mountain EN', 'Turtle Rock Area'), + ('Turtle Rock WN', 'Dark Death Mountain (Top East)') + ] +