Archipelago/EntranceShuffle.py

241 lines
17 KiB
Python
Raw Normal View History

def link_entrances(world, shuffle):
# setup mandatory connections
for exitname, regionname in mandatory_connections:
connect(world, exitname, regionname)
# if we do not shuffle, set default connections
if shuffle=='Default':
for exitname, regionname in default_connections:
connect(world, exitname, regionname)
return
raise NotImplementedError('Shuffling not supported yet')
def connect(world, exitname, regionname):
world.get_entrance(exitname).connect(world.get_region(regionname))
# 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 = [('Zoras River', 'Zoras River'),
('Kakariko Well (top to bottom)', 'Kakariko Well (bottom)'),
('Dam', 'Dam'),
('Hobo Bridge', 'Hobo Bridge'),
('Desert Palace East Wing', 'Desert Palace East'),
('Bat Cave Drop Ledge', 'Bat Cave Drop Ledge'),
('Bat Cave Door', 'Bat Cave (left)'),
('Thieves Forest Hideout (top to bottom)', 'Thieves Forest Hideout (bottom)'),
('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'),
('Desert Palace Stairs', 'Desert Palace Stairs'),
('Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (North) Spot'),
('Aghanim 1', 'Aghanim 1'),
('Flute Spot 1', 'Death Mountain'),
('Spectacle Rock Cave Drop', 'Spectacle Rock Cave (Bottom)'),
('Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave (Bottom)'),
('Broken Bridge (West)', 'East Death Mountain (Bottom)'),
('Broken Bridge (East)', 'Death Mountain'),
('East Death Mountain Drop', 'East Death Mountain (Bottom)'),
('Spiral Cave (top to bottom)', 'Spiral Cave (Bottom)'),
('East Death Mountain (Top)', 'East Death Mountain (Top)'),
('Death Mountain (Top)', 'Death Mountain (Top)'),
('Death Mountain Drop', 'Death Mountain'),
('Spectacle Rock Drop', 'Death Mountain (Top)'),
('Top of Pyramid', 'East Dark World'),
('Dark Lake Hylia Drop (East)', 'Dark Lake Hylia'),
('Dark Lake Hylia Drop (South)', 'Dark Lake Hylia'),
('East Dark World Pier', 'East Dark World'),
('Lake Hylia Island Mirror Spot', 'Lake Hylia Island'),
('Hyrule Castle Ledge Mirror Spot', 'Hyrule Castle Ledge'),
('South Dark World Bridge', 'South Dark World'),
('Big Bomb Shop', 'Big Bomb Shop'),
('East Dark World Bridge', 'East Dark World'),
('Maze Race Mirror Spot', 'Maze Race Ledge'),
('Village of Outcasts Heavy Rock', 'West Dark World'),
('Village of Outcasts Drop', 'South Dark World'),
('Bat Cave Drop Ledge Mirror Spot', 'Bat Cave Drop Ledge'),
('East Dark World River Pier', 'East Dark World'),
('West Dark World Gap', 'West Dark World'),
('Bumper Cave Ledge Drop', 'West Dark World'),
('Skull Woods Forest', 'Skull Woods Forest'),
('Desert Ledge Mirror Spot', 'Desert Ledge'),
('Desert Ledge (West) Mirror Spot', 'Desert Ledge (West)'),
('Desert Palace Entrance (North) Mirror Spot', 'Desert Palace Entrance (North) Spot'),
('Dark Desert Teleporter', 'Dark Desert'),
('Desert Palace Stairs Mirror Spot', 'Desert Palace Stairs'),
('East Hyrule Teleporter', 'East Dark World'),
('South Hyrule Teleporter', 'South Dark World'),
('Kakariko Teleporter', 'West Dark World'),
('Death Mountain Teleporter', 'Dark Death Mountain (West Bottom)'),
('Spectacle Rock Mirror Spot', 'Spectacle Rock'),
('Dark Death Mountain Drop (East)', 'Dark Death Mountain (East Bottom)'),
('Dark Death Mountain Drop (West)', 'Dark Death Mountain (West Bottom)'),
('East Death Mountain (Top) Mirror Spot', 'East Death Mountain (Top)'),
('Turtle Rock Teleporter', 'Turtle Rock (Top)'),
('Turtle Rock Drop', 'Dark Death Mountain (Top)'),
('Floating Island Drop', 'Dark Death Mountain (Top)'),
('East Death Mountain Teleporter', 'Dark Death Mountain (East Bottom)'),
('Isolated Ledge Mirror Spot', 'East Death Mountain (Bottom)'),
('Swamp Palace', 'Swamp Palace (Entrance)'),
('Swamp Palace Moat', 'Swamp Palace (First Room)'),
('Swamp Palace Small Key Door', 'Swamp Palace (Starting Area)'),
('Swamp Palace (Center)', 'Swamp Palace (Center)'),
('Swamp Palace (North)', 'Swamp Palace (North)'),
('Thieves Town Big Key Door', 'Thieves Town (Deep)'),
('Blind Fight', 'Blind Fight'),
('Ice Palace Entrance Room', 'Ice Palace (Main)'),
('Ice Palace (East)', 'Ice Palace (East)'),
('Ice Palace (East Top)', 'Ice Palace (East Top)'),
('Ice Palace (Kholdstare)', 'Ice Palace (Kholdstare)'),
('Misery Mire Entrance Gap', 'Misery Mire (Main)'),
('Misery Mire (West)', 'Misery Mire (West)'),
('Misery Mire Big Key Door', 'Misery Mire (Final Area)'),
('Misery Mire (Vitreous)', 'Misery Mire (Vitreous)'),
('Turtle Rock Entrance Gap', 'Turtle Rock (First Section)'),
('Turtle Rock Pokey Room', 'Turtle Rock (Chain Chomp Room)'),
('Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Second Section)'),
('Turtle Rock (Chain Chomp Room) (South)', 'Turtle Rock (First Section)'),
('Turtle Rock Chain Chomp Staircase', 'Turtle Rock (Chain Chomp Room)'),
('Turtle Rock (Big Chest) (North)', 'Turtle Rock (Second Section)'),
('Turtle Rock Big Key Door', 'Turtle Rock (Roller Switch Room)'),
('Turtle Rock Dark Room Staircase', 'Turtle Rock (Dark Room)'),
('Turtle Rock (Dark Room) (North)', 'Turtle Rock (Roller Switch Room)'),
('Turtle Rock (Dark Room) (South)', 'Turtle Rock (Eye Bridge)'),
('Turtle Rock Dark Room (South)', 'Turtle Rock (Dark Room)'),
('Turtle Rock (Trinexx)', 'Turtle Rock (Trinexx)'),
('Dark Palace Bridge Room', 'Dark Palace (Center)'),
('Dark Palace Bonk Wall', 'Dark Palace (Bonk Section)'),
('Dark Palace Big Key Chest Staircase', 'Dark Palace (Big Key Chest)'),
('Dark Palace (North)', 'Dark Palace (North)'),
('Dark Palace Big Key Door', 'Dark Palace (Final Section)'),
('Dark Palace Hammer Peg Drop', 'Dark Palace (Center)'),
('Dark Palace Spike Statue Room Door', 'Dark Palace (Spike Statue Room)'),
('Dark Palace Maze Door', 'Dark Palace (Maze)'),
('Ganons Tower', 'Ganons Tower (Entrance)'),
('Ganons Tower (Tile Room)', 'Ganons Tower (Tile Room)'),
('Ganons Tower (Tile Room) Key Door', 'Ganons Tower (Compass Room)'),
('Ganons Tower (Bottom) (East)', 'Ganons Tower (Bottom)'),
('Ganons Tower (Hookshot Room)', 'Ganons Tower (Hookshot Room)'),
('Ganons Tower (Map Room)', 'Ganons Tower (Map Room)'),
('Ganons Tower (Double Switch Room)', 'Ganons Tower (Firesnake Room)'),
('Ganons Tower (Firesnake Room)', 'Ganons Tower (Teleport Room)'),
('Ganons Tower (Bottom) (West)', 'Ganons Tower (Bottom)'),
('Ganons Tower Big Key Door', 'Ganons Tower (Top)'),
('Ganons Tower Torch Rooms', 'Ganons Tower (Before Moldorm)'),
('Ganons Tower Moldorm Door', 'Ganons Tower (Moldorm)'),
('Ganons Tower Moldorm Gap', 'Aghanim 2'),
('Pyramid Hole', 'Pyramid')
]
# non-shuffled entrance links
default_connections = [("Thiefs Hut", "Thiefs Hut"),
("Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance"),
("Hyrule Castle Secret Entrance Stairs", "Hyrule Castle Secret Entrance"),
('Kings Grave', 'Kings Grave'),
('Links House', 'Links House'),
('Tavern North', 'Tavern'),
('Chicken House', 'Chicken House'),
('Aginahs Cave', 'Aginahs Cave'),
('Sahasrahlas Hut', 'Sahasrahlas Hut'),
('Kakariko Well Drop', 'Kakariko Well (top)'),
('Kakariko Well Cave', 'Kakariko Well (bottom)'),
('Blacksmiths Hut', 'Blacksmiths Hut'),
('Bat Cave Drop', 'Bat Cave (right)'),
('Bat Cave Cave', 'Bat Cave (left)'),
('Sick Kids House', 'Sick Kids House'),
('Thieves Forest Hideout Drop', 'Thieves Forest Hideout (top)'),
('Thieves Forest Hideout Stump', 'Thieves Forest Hideout (bottom)'),
('Lumberjack Tree Tree', 'Lumberjack Tree (top)'),
('Lumberjack Tree Cave', 'Lumberjack Tree (bottom)'),
('Cave South of Haunted Grove', 'Cave South of Haunted Grove'),
('Graveyard Cave', 'Graveyard Cave'),
('Desert Cave', 'Desert Cave'),
('Lake Hylia Cave', 'Lake Hylia Cave'),
('Ice Cave', 'Ice Cave'),
('Bonk Rock Cave', 'Bonk Rock Cave'),
('Library', 'Library'),
('Witch Hut', 'Witch Hut'),
('Two Brothers House', 'Two Brothers House'),
('Two Brothers House (left)', 'Maze Race Ledge'),
('Master Sword Meadow', 'Master Sword Meadow'),
('Desert Palace Entrance (South)', 'Desert Palace Main'),
('Desert Palace Entrance (West)', 'Desert Palace Main'),
('Desert Palace Entrance (North)', 'Desert Palace North'),
('Desert Palace Exit (South)', 'Light World'),
('Desert Palace Exit (West)', 'Desert Ledge'),
('Desert Palace Exit (East)', 'Light World'),
('Eastern Palace', 'Eastern Palace'),
('Hyrule Castle Entrance (South)', 'Hyrule Castle'),
('Hyrule Castle Entrance (West)', 'Hyrule Castle'),
('Hyrule Castle Entrance (East)', 'Hyrule Castle'),
('Hyrule Castle Exit (South)', 'Light World'),
('Hyrule Castle Exit (West)', 'Hyrule Castle Ledge'),
('Hyrule Castle Exit (East)', 'Hyrule Castle Ledge'),
('Aghanims Tower', 'Aghanims Tower'),
('Sanctuary', 'Hyrule Castle'), # this set of two exits can be randomized together!
('Sanctuary Grave', 'Hyrule Castle'),
('Old Man Cave (West)', 'Old Man Cave'),
('Old Man Cave (East)', 'Old Man Cave'),
('Old Man Cave Exit', 'Death Mountain'),
('Death Mountain Return Cave', 'Death Mountain Return Cave'),
('Death Mountain Return Cave Exit (West)', 'Light World'),
('Death Mountain Return Cave Exit (East)', 'Death Mountain'),
('Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Peak)'),
('Spectacle Rock Cave', 'Spectacle Rock Cave (Top)'),
('Spectacle Rock Cave Exit', 'Death Mountain'),
('Death Mountain Climb', 'Death Mountain Climb Cave'),
('Death Mountain Climb (Top)', 'Death Mountain Climb Cave'),
('Death Mountain Climb Exit (Bottom)', 'East Death Mountain (Bottom)'),
('Death Mountain Climb Exit (Top)', 'East Death Mountain (Top)'),
('Spiral Cave', 'Spiral Cave (Top)'),
('Spiral Cave Exit', 'East Death Mountain (Bottom)'),
('Tower of Hera', 'Tower of Hera (Bottom)'),
('Tower of Hera Small Key Door', 'Tower of Hera (Basement)'),
('Tower of Hera Big Key Door', 'Tower of Hera (Top)'),
('Pyramid Fairy', 'Pyramid Fairy'),
('Dark Swamp Cave', 'Dark Swamp Cave'),
('Doorless Hut', 'Doorless Hut'),
('C-Shaped House', 'C-Shaped House'),
('Chest Game', 'Chest Game'),
('Dark World Hammer Peg Cave', 'Dark World Hammer Peg Cave'),
('Bumper Cave', 'Bumper Cave'),
('Bumper Cave (Top)', 'Bumper Cave Ledge'),
('Bumper Cave (Bottom)', 'West Dark World'),
('Dark Desert Cave', 'Dark Desert Cave'),
('Spike Cave', 'Spike Cave'),
('Hookshot Cave', 'Hookshot Cave'),
('Dark Death Mountain Climb (Top)', 'Dark Death Mountain Climb'),
('Dark Death Mountain Climb (Bottom)', 'Dark Death Mountain Climb'),
('Dark Death Mountain Climb Exit (Top)', 'Dark Death Mountain (Top)'),
('Dark Death Mountain Climb Exit (Bottom)', 'Dark Death Mountain (East Bottom)'),
('Hookshot Cave Exit (South)', 'Dark Death Mountain (Top)'),
('Hookshot Cave Exit (North)', 'Death Mountain Floating Island'),
('Mimic Cave Mirror Spot', 'Mimic Cave'),
('Thieves Town', 'Thieves Town (Entrance)'),
('Skull Woods First Section Hole (East)', 'Skull Woods First Section'),
('Skull Woods First Section Hole (West)', 'Skull Woods First Section'),
('Skull Woods First Section Hole (North)', 'Skull Woods First Section'),
('Skull Woods First Section Door', 'Skull Woods First Section'),
('Skull Woods First Section Exit', 'Skull Woods Forest'),
('Skull Woods Second Section Hole', 'Skull Woods Second Section'),
('Skull Woods Second Section Door (East)', 'Skull Woods Second Section'),
('Skull Woods Second Section Door (West)', 'Skull Woods Second Section'),
('Skull Woods Second Section Exit (East)', 'Skull Woods Forest'),
('Skull Woods Second Section Exit (West)', 'Skull Woods Forest'),
('Skull Woods Final Section', 'Skull Woods Final Section (Entrance)'),
('Skull Woods Torch Room', 'Skull Woods Final Section (Mothula)'),
('Ice Palace', 'Ice Palace (Entrance)'),
('Misery Mire', 'Misery Mire (Entrance)'),
('Turtle Rock', 'Turtle Rock (Entrance)'),
('Turtle Rock Ledge Exit (West)', 'Dark Death Mountain Ledge'),
('Dark Death Mountain Ledge (West)', 'Turtle Rock (Second Section)'),
('Dark Death Mountain Ledge (East)', 'Turtle Rock (Big Chest)'),
('Turtle Rock Isolated Ledge Exit', 'Dark Death Mountain Isolated Ledge'),
('Palace of Darkness', 'Dark Palace (Entrance)')
]