Changing mirror exits to be dynamically created
This commit is contained in:
@@ -2236,32 +2236,7 @@ open_mandatory_connections = [('Sanctuary S&Q', 'Sanctuary'),
|
||||
('East Hyrule Teleporter', 'East Dark World'),
|
||||
('South Hyrule Teleporter', 'South Dark World'),
|
||||
('Desert Teleporter', 'Dark Desert'),
|
||||
('Lake Hylia Teleporter', 'Dark Lake Hylia Central Island'),
|
||||
|
||||
# mirror
|
||||
('Spectacle Rock Mirror Spot', 'Spectacle Rock'),
|
||||
('East Death Mountain (Top) Mirror Spot', 'East Death Mountain (Top)'),
|
||||
('Dark Floating Island Mirror Spot', 'Death Mountain Floating Island'),
|
||||
('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'),
|
||||
('Bumper Cave Ledge Mirror Spot', 'Death Mountain Return Ledge'),
|
||||
('Bumper Cave Entrance Mirror Spot', 'Death Mountain Entrance'),
|
||||
('Graveyard Ledge Mirror Spot', 'Graveyard Ledge'),
|
||||
('Kings Grave Mirror Spot', 'Kings Grave Area'),
|
||||
('Dark Grassy Lawn Mirror Spot', 'Bush Covered Lawn'),
|
||||
('Hyrule Castle Ledge Mirror Spot', 'Hyrule Castle Ledge'),
|
||||
('Bat Cave Drop Ledge Mirror Spot', 'Bat Cave Ledge'),
|
||||
('Dig Game Mirror Spot', 'Maze Race Ledge'),
|
||||
('Desert Ledge Rocks Mirror Spot', 'Desert Palace Entrance (North) Spot'),
|
||||
('Desert Ledge Mirror Spot', 'Desert Ledge'),
|
||||
('Mire To Desert Stairs Mirror Spot', 'Desert Palace Stairs'),
|
||||
('Checkerboard Ledge Mirror Spot', 'Desert Checkerboard Ledge'),
|
||||
('Bombos Tablet Mirror Spot', 'Bombos Tablet Ledge'),
|
||||
('Cave 45 Mirror Spot', 'Cave 45 Ledge'),
|
||||
('Lake Hylia Island Mirror Spot', 'Lake Hylia Island'),
|
||||
('Lake Hylia Central Island Mirror Spot', 'Lake Hylia Central Island')
|
||||
('Lake Hylia Teleporter', 'Dark Lake Hylia Central Island')
|
||||
]
|
||||
|
||||
inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'),
|
||||
@@ -2318,37 +2293,7 @@ inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'),
|
||||
('East Dark World Teleporter', 'Light World'),
|
||||
('South Dark World Teleporter', 'Light World'),
|
||||
('Dark Desert Teleporter', 'Light World'),
|
||||
('Dark Lake Hylia Teleporter', 'Lake Hylia Central Island'),
|
||||
|
||||
# mirror
|
||||
('Skull Woods Mirror Spot', 'Skull Woods Forest (West)'),
|
||||
('West Dark World Mirror Spot', 'West Dark World'),
|
||||
('Death Mountain (Top) Mirror Spot', 'Dark Death Mountain (Top)'),
|
||||
('Death Mountain Mirror Spot', 'West Dark Death Mountain (Bottom)'),
|
||||
('East Death Mountain Mirror Spot (Top)', 'Dark Death Mountain (Top)'),
|
||||
('Floating Island Mirror Spot', 'Dark Death Mountain Floating Island'),
|
||||
('Dark Death Mountain Ledge Mirror Spot (East)', 'Dark Death Mountain Ledge'),
|
||||
('Dark Death Mountain Ledge Mirror Spot (West)', 'Dark Death Mountain Ledge'),
|
||||
('Laser Bridge Mirror Spot', 'Dark Death Mountain Isolated Ledge'),
|
||||
('East Death Mountain Mirror Spot (Bottom)', 'East Dark Death Mountain (Bottom)'),
|
||||
('Mountain Exit Ledge Mirror Spot', 'Bumper Cave Ledge'),
|
||||
('Mountain Entrance Mirror Spot', 'Bumper Cave Entrance'),
|
||||
('Catfish Mirror Spot', 'Catfish Area'),
|
||||
('Graveyard Cave Mirror Spot', 'West Dark World'),
|
||||
('Potion Shop Mirror Spot', 'Northeast Dark World'),
|
||||
('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'),
|
||||
('Bomb Hut Mirror Spot', 'West Dark World'),
|
||||
('Pyramid Uncle Mirror Spot', 'East Dark World'),
|
||||
('East Dark World Mirror Spot', 'East Dark World'),
|
||||
('Hammer Peg Area Mirror Spot', 'Hammer Peg Area'),
|
||||
('Maze Race Mirror Spot', 'South Dark World'),
|
||||
('South Dark World Mirror Spot', 'South Dark World'),
|
||||
('Mire Mirror Spot', 'Dark Desert'),
|
||||
('Dark Desert Ledge Mirror Spot', 'Dark Desert'),
|
||||
('Desert Palace Stairs Mirror Spot', 'Dark Desert'),
|
||||
('Desert Palace North Mirror Spot', 'Dark Desert'),
|
||||
('Ice Lake Central Island Mirror Spot', 'Lake Hylia Central Island'),
|
||||
('Shopping Mall Mirror Spot', 'Southeast Dark World')
|
||||
('Dark Lake Hylia Teleporter', 'Lake Hylia Central Island')
|
||||
]
|
||||
|
||||
# non-shuffled entrance links
|
||||
|
||||
3
Main.py
3
Main.py
@@ -15,6 +15,7 @@ from KeyDoorShuffle import validate_key_placement
|
||||
from OverworldGlitchRules import create_owg_connections
|
||||
from PotShuffle import shuffle_pots, shuffle_pot_switches
|
||||
from Regions import create_regions, create_shops, mark_light_dark_world_regions, create_dungeon_regions, adjust_locations
|
||||
from OverworldShuffle import create_dynamic_exits
|
||||
from EntranceShuffle import link_entrances
|
||||
from Rom import patch_rom, patch_race_rom, patch_enemizer, apply_rom_settings, LocalRom, JsonRom, get_hash_string
|
||||
from Doors import create_doors
|
||||
@@ -217,6 +218,7 @@ def main(args, seed=None, fish=None):
|
||||
logger.info(world.fish.translate("cli","cli","shuffling.world"))
|
||||
|
||||
for player in range(1, world.players + 1):
|
||||
create_dynamic_exits(world, player)
|
||||
if world.experimental[player] or world.shuffle[player] in ['lite', 'lean'] or world.shuffletavern[player] or (world.customizer and world.customizer.get_entrances()):
|
||||
link_entrances_new(world, player)
|
||||
else:
|
||||
@@ -485,6 +487,7 @@ def copy_world(world):
|
||||
|
||||
for player in range(1, world.players + 1):
|
||||
create_regions(ret, player)
|
||||
create_dynamic_exits(ret, player)
|
||||
create_dungeon_regions(ret, player)
|
||||
create_shops(ret, player)
|
||||
create_rooms(ret, player)
|
||||
|
||||
100
OverworldShuffle.py
Normal file
100
OverworldShuffle.py
Normal file
@@ -0,0 +1,100 @@
|
||||
from BaseClasses import RegionType, Entrance
|
||||
|
||||
def get_mirror_exit_name(from_region, to_region):
|
||||
if from_region in mirror_connections and to_region in mirror_connections[from_region]:
|
||||
if len(mirror_connections[from_region]) == 1:
|
||||
return f'Mirror From {from_region}'
|
||||
else:
|
||||
return f'Mirror To {to_region}'
|
||||
return None
|
||||
|
||||
def create_mirror_exits(world, player):
|
||||
mirror_exits = set()
|
||||
for region in (r for r in world.regions if r.player == player and r.name not in ['Zoras Domain', 'Master Sword Meadow', 'Hobo Bridge']):
|
||||
if region.type == (RegionType.DarkWorld if world.mode[player] != 'inverted' else RegionType.LightWorld):
|
||||
if region.name in mirror_connections:
|
||||
for region_dest_name in mirror_connections[region.name]:
|
||||
exitname = get_mirror_exit_name(region.name, region_dest_name)
|
||||
|
||||
assert exitname not in mirror_exits, f'Mirror Exit with name already exists: {exitname}'
|
||||
|
||||
exit = Entrance(region.player, exitname, region)
|
||||
exit.spot_type = 'Mirror'
|
||||
to_region = world.get_region(region_dest_name, player)
|
||||
# if region.terrain == Terrain.Water or to_region.terrain == Terrain.Water:
|
||||
if region.name == 'Dark Lake Hylia Water': # TODO: Uncomment line above when Terrain type is modeled
|
||||
exit.access_rule = lambda state: state.has('Flippers', player) and state.has_Pearl(player) and state.has_Mirror(player)
|
||||
else:
|
||||
exit.access_rule = lambda state: state.has_Mirror(player)
|
||||
exit.connect(to_region)
|
||||
region.exits.append(exit)
|
||||
|
||||
mirror_exits.add(exitname)
|
||||
|
||||
def create_dynamic_exits(world, player):
|
||||
create_mirror_exits(world, player)
|
||||
world.initialize_regions()
|
||||
|
||||
|
||||
mirror_connections = {
|
||||
'West Dark Death Mountain (Bottom)': ['Spectacle Rock'],
|
||||
'Dark Death Mountain (Top)': ['East Death Mountain (Top)'],
|
||||
|
||||
'Dark Death Mountain Floating Island': ['Death Mountain Floating Island'],
|
||||
'Dark Death Mountain Ledge': ['Spiral Cave Ledge', 'Mimic Cave Ledge'],
|
||||
'Dark Death Mountain Isolated Ledge': ['Fairy Ascension Ledge'],
|
||||
'East Dark Death Mountain (Bushes)': ['Fairy Ascension Plateau'],
|
||||
|
||||
'West Dark World': ['Graveyard Ledge', 'Kings Grave Area'],
|
||||
|
||||
'Bumper Cave Ledge': ['Death Mountain Return Ledge'],
|
||||
'Bumper Cave Entrance': ['Death Mountain Entrance'],
|
||||
|
||||
'Dark Grassy Lawn': ['Bush Covered Lawn'],
|
||||
|
||||
'Hammer Peg Area': ['Bat Cave Ledge'],
|
||||
|
||||
'East Dark World': ['Hyrule Castle Ledge'],
|
||||
|
||||
'Dark Desert': ['Desert Ledge', 'Desert Checkerboard Ledge', 'Desert Palace Stairs', 'Desert Palace Entrance (North) Spot'],
|
||||
|
||||
'South Dark World': ['Maze Race Ledge', 'Cave 45 Ledge', 'Bombos Tablet Ledge'],
|
||||
|
||||
'Dark Lake Hylia Water': ['Lake Hylia Island'],
|
||||
'Dark Lake Hylia Central Island': ['Lake Hylia Central Island'],
|
||||
|
||||
|
||||
'Light World': ['Skull Woods Forest (West)', 'West Dark World', 'Hammer Peg Area', 'East Dark World', 'South Dark World', 'Dark Desert', 'Southeast Dark World'],
|
||||
|
||||
'West Death Mountain (Top)': ['Dark Death Mountain (Top)'],
|
||||
'West Death Mountain (Bottom)': ['West Dark Death Mountain (Bottom)'],
|
||||
|
||||
'East Death Mountain (Top)': ['Dark Death Mountain (Top)'],
|
||||
'Death Mountain Floating Island': ['Dark Death Mountain Floating Island'],
|
||||
'Spiral Cave Ledge': ['Dark Death Mountain Ledge'],
|
||||
'Mimic Cave Ledge': ['Dark Death Mountain Ledge'],
|
||||
'Fairy Ascension Ledge': ['Dark Death Mountain Isolated Ledge'],
|
||||
'East Death Mountain (Bottom)': ['East Dark Death Mountain (Bottom)'],
|
||||
|
||||
'Death Mountain Return Ledge': ['Bumper Cave Ledge'],
|
||||
'Death Mountain Entrance': ['Bumper Cave Entrance'],
|
||||
|
||||
'Northeast Light World': ['Catfish Area'],
|
||||
|
||||
'Graveyard Ledge': ['West Dark World'],
|
||||
|
||||
'Potion Shop Area': ['Northeast Dark World'],
|
||||
|
||||
'Bush Covered Lawn': ['Dark Grassy Lawn'],
|
||||
'Bomb Hut Area': ['West Dark World'],
|
||||
|
||||
'Hyrule Castle Secret Entrance Area': ['East Dark World'],
|
||||
|
||||
'Maze Race Ledge': ['South Dark World'],
|
||||
|
||||
'Desert Palace Stairs': ['Dark Desert'],
|
||||
'Desert Ledge': ['Dark Desert'],
|
||||
'Desert Palace Entrance (North) Spot': ['Dark Desert'],
|
||||
|
||||
'Lake Hylia Central Island': ['Dark Lake Hylia Central Island']
|
||||
}
|
||||
81
Regions.py
81
Regions.py
@@ -23,45 +23,42 @@ def create_regions(world, player):
|
||||
'Wooden Bridge Bush (South)', 'Kakariko Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Hyrule Castle Main Gate', 'Bat Cave Ledge Peg',
|
||||
'Light World Water Drop', 'Desert Statue Move', 'Checkerboard Ledge Approach', 'Cave 45 Approach', 'Bombos Tablet Ladder (Bottom)',
|
||||
|
||||
'Kakariko Teleporter', 'Castle Gate Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter',
|
||||
|
||||
'LW Flute', 'Skull Woods Mirror Spot', 'West Dark World Mirror Spot', 'Hammer Peg Area Mirror Spot',
|
||||
'East Dark World Mirror Spot', 'South Dark World Mirror Spot', 'Mire Mirror Spot', 'Shopping Mall Mirror Spot']),
|
||||
'Kakariko Teleporter', 'Castle Gate Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'LW Flute']),
|
||||
create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'Death Mountain Drop', 'Spectacle Rock Approach',
|
||||
'DM Hammer Bridge (West)', 'Death Mountain (Top) Mirror Spot']),
|
||||
'DM Hammer Bridge (West)']),
|
||||
create_lw_region(player, 'West Death Mountain (Bottom)', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
|
||||
'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)',
|
||||
'DM Broken Bridge (West)', 'Death Mountain Teleporter', 'DM Flute', 'Death Mountain Mirror Spot']),
|
||||
'DM Broken Bridge (West)', 'Death Mountain Teleporter', 'DM Flute']),
|
||||
create_lw_region(player, 'Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop', 'Spectacle Rock Leave']),
|
||||
create_lw_region(player, 'East Death Mountain (Top)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'Floating Island Bridge (East)',
|
||||
'Spiral Cave Ledge Access', 'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access', 'East Death Mountain Drop',
|
||||
'Turtle Rock Teleporter', 'East Death Mountain Mirror Spot (Top)']),
|
||||
create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)', 'Floating Island Mirror Spot']),
|
||||
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (West)']),
|
||||
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (East)']),
|
||||
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Cave (Top)', 'Fairy Ascension Ledge Drop', 'Laser Bridge Mirror Spot']),
|
||||
'Turtle Rock Teleporter']),
|
||||
create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)']),
|
||||
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
|
||||
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Cave Ledge Drop']),
|
||||
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Cave (Top)', 'Fairy Ascension Ledge Drop']),
|
||||
create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Spiral Cave (Bottom)', 'Hookshot Fairy', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
|
||||
'DM Broken Bridge (East)', 'Fairy Ascension Rocks', 'East Death Mountain Teleporter', 'EDM Flute', 'East Death Mountain Mirror Spot (Bottom)']),
|
||||
'DM Broken Bridge (East)', 'Fairy Ascension Rocks', 'East Death Mountain Teleporter', 'EDM Flute']),
|
||||
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Cave (Bottom)', 'Fairy Ascension Drop']),
|
||||
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Cave (West)', 'Death Mountain Return Ledge Drop', 'Mountain Exit Ledge Mirror Spot'], 'a ledge in the foothills'),
|
||||
create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop', 'Mountain Entrance Mirror Spot']),
|
||||
create_lw_region(player, 'Northeast Light World', None, ['Zoras Domain', 'Potion Shop Rock (North)', 'Northeast Light World Water Drop', 'Catfish Mirror Spot']),
|
||||
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Cave (West)', 'Death Mountain Return Ledge Drop'], 'a ledge in the foothills'),
|
||||
create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
|
||||
create_lw_region(player, 'Northeast Light World', None, ['Zoras Domain', 'Potion Shop Rock (North)', 'Northeast Light World Water Drop']),
|
||||
create_lw_region(player, 'Zora Waterfall Entryway', None, ['Waterfall of Wishing', 'Zora Waterfall Water Drop', 'ZLW Flute']),
|
||||
create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop', 'Graveyard Ladder (Top)', 'Graveyard Cave Mirror Spot']),
|
||||
create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop', 'Graveyard Ladder (Top)']),
|
||||
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Rocks (Inner)']),
|
||||
create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Wooden Bridge Bush (North)', 'Potion Shop Rock (South)', 'Potion Shop Water Drop', 'NWLW Flute', 'Potion Shop Mirror Spot']),
|
||||
create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Kakariko Yard Bush (North)', 'Bush Covered Lawn Mirror Spot']),
|
||||
create_lw_region(player, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Kakariko Southwest Bush (South)', 'Bomb Hut Mirror Spot']),
|
||||
create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Wooden Bridge Bush (North)', 'Potion Shop Rock (South)', 'Potion Shop Water Drop', 'NWLW Flute']),
|
||||
create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Kakariko Yard Bush (North)']),
|
||||
create_lw_region(player, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Kakariko Southwest Bush (South)']),
|
||||
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Entrance (South)', 'Inverted Pyramid Entrance', 'Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Main Gate (North)']),
|
||||
create_lw_region(player, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Courtyard Bush (North)', 'Pyramid Uncle Mirror Spot']),
|
||||
create_lw_region(player, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Courtyard Bush (North)']),
|
||||
create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole',
|
||||
'Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Ledge Drop'], 'the castle rampart'),
|
||||
create_lw_region(player, 'Bat Cave Ledge', None, ['Bat Cave Drop', 'Bat Cave Ledge Peg (East)']),
|
||||
create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)', 'Maze Race Ledge Drop', 'Maze Race Mirror Spot'], 'a race against time'),
|
||||
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)', 'Desert Palace Stairs Mirror Spot']),
|
||||
create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)', 'Maze Race Ledge Drop'], 'a race against time'),
|
||||
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
|
||||
create_lw_region(player, 'Desert Palace Mouth', None, ['Desert Palace Entrance (East)', 'Desert Palace Mouth Drop'], 'a sandy vista'),
|
||||
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Rocks (Outer)', 'Desert Ledge Drop', 'Dark Desert Ledge Mirror Spot'], 'the desert ledge'),
|
||||
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Rocks (Inner)', 'Desert Palace North Mirror Spot'], 'the desert ledge'),
|
||||
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Rocks (Outer)', 'Desert Ledge Drop'], 'the desert ledge'),
|
||||
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Rocks (Inner)'], 'the desert ledge'),
|
||||
create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Drop', 'Checkerboard Ledge Leave']),
|
||||
create_lw_region(player, 'Desert Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']),
|
||||
create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Bombos Tablet Ladder (Top)']),
|
||||
@@ -69,50 +66,48 @@ def create_regions(world, player):
|
||||
create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Ledge Drop', 'Cave 45 Leave']),
|
||||
create_lw_region(player, 'Lake Hylia Water', None, ['Light World Pier', 'Potion Shop Pier', 'Hobo Pier', 'Lake Hylia Island Pier', 'Lake Hylia Central Island Pier', 'Lake Hylia Whirlpool', 'Waterfall Fairy Access']),
|
||||
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']),
|
||||
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Water Drop', 'Lake Hylia Teleporter', 'Ice Lake Central Island Mirror Spot']),
|
||||
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Water Drop', 'Lake Hylia Teleporter']),
|
||||
create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']),
|
||||
create_lw_region(player, 'Hobo Bridge', ['Hobo']),
|
||||
create_lw_region(player, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge']),
|
||||
|
||||
create_dw_region(player, 'West Dark Death Mountain (Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Ladder (Bottom)',
|
||||
'Dark Death Mountain Teleporter (West)', 'DDM Flute', 'Spectacle Rock Mirror Spot']),
|
||||
'Dark Death Mountain Teleporter (West)', 'DDM Flute']),
|
||||
create_dw_region(player, 'Dark Death Mountain (Top)', None, ['Ganons Tower', 'Hookshot Cave', 'Superbunny Cave (Top)', 'Turtle Rock', 'Dark Death Mountain Drop (West)',
|
||||
'Dark Death Mountain Drop (East)', 'Dark Death Mountain Ladder (Top)', 'Turtle Rock Tail Drop', 'East Death Mountain (Top) Mirror Spot']),
|
||||
create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Hookshot Cave Back Entrance', 'Floating Island Drop', 'Dark Floating Island Mirror Spot'], 'a dark island'),
|
||||
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)', 'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot'], 'a dark ledge'),
|
||||
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance', 'Isolated Ledge Mirror Spot'], 'a dark vista'),
|
||||
'Dark Death Mountain Drop (East)', 'Dark Death Mountain Ladder (Top)', 'Turtle Rock Tail Drop']),
|
||||
create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Hookshot Cave Back Entrance', 'Floating Island Drop'], 'a dark island'),
|
||||
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)'], 'a dark ledge'),
|
||||
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance'], 'a dark vista'),
|
||||
create_dw_region(player, 'East Dark Death Mountain (Bottom)', None, ['East Dark Death Mountain Bushes', 'Superbunny Cave (Bottom)', 'Dark Death Mountain Shop',
|
||||
'East Dark Death Mountain Teleporter (Bottom)', 'EDDM Flute']),
|
||||
create_dw_region(player, 'East Dark Death Mountain (Bushes)', None, ['Fairy Ascension Mirror Spot']),
|
||||
create_dw_region(player, 'East Dark Death Mountain (Bushes)', None, []),
|
||||
create_dw_region(player, 'Turtle Rock (Top)', None, ['Turtle Rock Drop', 'East Dark Death Mountain Teleporter (Top)']),
|
||||
create_dw_region(player, 'West Dark World', ['Frog'], ['Dark Lumberjack Shop', 'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Chest Game', 'Thieves Town',
|
||||
'C-Shaped House', 'Brewery', 'Red Shield Shop', 'Skull Woods Forest', 'Bumper Cave Entrance Rock',
|
||||
'West Dark World Water Drop', 'Grassy Lawn Pegs (Bottom)', 'Peg Area Rocks (Left)', 'Village of Outcasts Drop',
|
||||
'West Dark World Teleporter', 'WDW Flute', 'Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot']),
|
||||
'West Dark World Teleporter', 'WDW Flute']),
|
||||
create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
|
||||
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
|
||||
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section'], 'a deep, dark forest'),
|
||||
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Bumper Cave Ledge Drop', 'Bumper Cave Ledge Mirror Spot'], 'a ledge with an item'),
|
||||
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop', 'Bumper Cave Entrance Mirror Spot']),
|
||||
create_dw_region(player, 'Dark Grassy Lawn', None, ['Dark World Shop', 'Grassy Lawn Pegs (Top)', 'Dark Grassy Lawn Flute', 'Dark Grassy Lawn Mirror Spot']),
|
||||
create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Hammer Peg Cave', 'Peg Area Rocks (Right)', 'Hammer Peg Area Flute', 'Bat Cave Drop Ledge Mirror Spot']),
|
||||
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Bumper Cave Ledge Drop'], 'a ledge with an item'),
|
||||
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']),
|
||||
create_dw_region(player, 'Dark Grassy Lawn', None, ['Dark World Shop', 'Grassy Lawn Pegs (Top)', 'Dark Grassy Lawn Flute']),
|
||||
create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Hammer Peg Cave', 'Peg Area Rocks (Right)', 'Hammer Peg Area Flute']),
|
||||
create_dw_region(player, 'Northeast Dark World', None, ['Dark Potion Shop', 'Northeast Dark World Water Drop', 'Dark Witch Rock (South)', 'West Dark World Gap',
|
||||
'Broken Bridge Pass (Top)', 'NEDW Flute']),
|
||||
create_dw_region(player, 'Catfish Area', ['Catfish'], ['Dark Witch Rock (North)', 'Catfish Water Drop']),
|
||||
create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Hole', 'Pyramid Fairy', 'Palace of Darkness Hint', 'Palace of Darkness', 'Dark Lake Hylia Fairy',
|
||||
'East Dark World Hint', 'Broken Bridge Pass (Bottom)', 'East Dark World Water Drop', 'Hammer Bridge Pegs (North)',
|
||||
'East Dark World Teleporter', 'EDW Flute', 'Hyrule Castle Ledge Mirror Spot']),
|
||||
'East Dark World Teleporter', 'EDW Flute']),
|
||||
create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Entrance', 'Pyramid Drop']),
|
||||
create_dw_region(player, 'Dark Desert', None, ['Mire Shed', 'Misery Mire', 'Dark Desert Fairy', 'Dark Desert Hint', 'DD Flute', 'Checkerboard Ledge Mirror Spot',
|
||||
'Desert Ledge Mirror Spot', 'Mire To Desert Stairs Mirror Spot', 'Desert Ledge Rocks Mirror Spot']),
|
||||
create_dw_region(player, 'Dark Desert', None, ['Mire Shed', 'Misery Mire', 'Dark Desert Fairy', 'Dark Desert Hint', 'DD Flute']),
|
||||
create_dw_region(player, 'Dark Desert Ledge', None, ['Dark Desert Drop', 'Dark Desert Teleporter']),
|
||||
create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Archery Game', 'Bonk Fairy (Dark)', 'Big Bomb Shop', 'Hype Cave', 'Dark Lake Hylia Shop', 'Swamp Palace',
|
||||
'Village of Outcasts Heavy Rock', 'Hammer Bridge Pegs (South)', 'South Dark World Water Drop', 'Post Aga Teleporter',
|
||||
'South Dark World Teleporter', 'SDW Flute', 'Dig Game Mirror Spot', 'Cave 45 Mirror Spot', 'Bombos Tablet Mirror Spot']),
|
||||
create_dw_region(player, 'Dark Lake Hylia Water', None, ['Northeast Dark World Pier', 'East Dark World Pier', 'Southeast Dark World Pier',
|
||||
'Ice Palace Approach', 'Lake Hylia Island Mirror Spot']),
|
||||
'South Dark World Teleporter', 'SDW Flute']),
|
||||
create_dw_region(player, 'Dark Lake Hylia Water', None, ['Northeast Dark World Pier', 'East Dark World Pier', 'Southeast Dark World Pier', 'Ice Palace Approach']),
|
||||
create_dw_region(player, 'Dark Lake Hylia Central Island', None, ['Ice Palace', 'Ice Palace Leave Water Drop', 'Ice Island To East Pier',
|
||||
'Dark Lake Hylia Teleporter', 'Lake Hylia Central Island Mirror Spot']),
|
||||
'Dark Lake Hylia Teleporter']),
|
||||
create_dw_region(player, 'Southeast Dark World', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
||||
'Southeast Dark World Water Drop', 'DLHL Flute']),
|
||||
|
||||
|
||||
53
Rules.py
53
Rules.py
@@ -854,30 +854,6 @@ def pot_rules(world, player):
|
||||
|
||||
def ow_inverted_rules(world, player):
|
||||
if world.mode[player] != 'inverted':
|
||||
set_rule(world.get_entrance('Spectacle Rock Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('East Death Mountain (Top) Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Dark Floating Island Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Spiral Cave Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Mimic Cave Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Isolated Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Fairy Ascension Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Bumper Cave Entrance Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Graveyard Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Kings Grave Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Dark Grassy Lawn Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Hyrule Castle Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Bat Cave Drop Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Dig Game Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Desert Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Desert Ledge Rocks Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Mire To Desert Stairs Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Checkerboard Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Bombos Tablet Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Cave 45 Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player) and state.has_Mirror(player)) # force flipper rule since fake flipper cannot mirror
|
||||
set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
|
||||
set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||
set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player))
|
||||
set_rule(world.get_entrance('Kakariko Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player)) # bunny cannot lift bushes
|
||||
@@ -892,35 +868,6 @@ def ow_inverted_rules(world, player):
|
||||
set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player))
|
||||
set_rule(world.get_entrance('Pyramid Hole', player), lambda state: world.open_pyramid[player] or world.goal[player] == 'trinity' or state.has('Beat Agahnim 2', player))
|
||||
else:
|
||||
set_rule(world.get_entrance('Skull Woods Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('West Dark World Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Death Mountain (Top) Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Death Mountain Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('East Death Mountain Mirror Spot (Top)', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Floating Island Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Dark Death Mountain Ledge Mirror Spot (West)', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Dark Death Mountain Ledge Mirror Spot (East)', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Laser Bridge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('East Death Mountain Mirror Spot (Bottom)', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Mountain Exit Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Mountain Entrance Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Catfish Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Graveyard Cave Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Potion Shop Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Bomb Hut Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Bush Covered Lawn Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Pyramid Uncle Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('East Dark World Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Hammer Peg Area Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Maze Race Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('South Dark World Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Mire Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Dark Desert Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Desert Palace North Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Desert Palace Stairs Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Ice Lake Central Island Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
set_rule(world.get_entrance('Shopping Mall Mirror Spot', player), lambda state: state.has_Mirror(player))
|
||||
|
||||
set_rule(world.get_entrance('East Dark Death Mountain Teleporter (Top)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player) and state.has_Pearl(player)) # bunny cannot use hammer
|
||||
set_rule(world.get_entrance('East Dark Death Mountain Teleporter (Bottom)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||
set_rule(world.get_entrance('West Dark World Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player))
|
||||
|
||||
@@ -2025,32 +2025,7 @@ open_mandatory_connections = [('Sanctuary S&Q', 'Sanctuary'),
|
||||
('East Hyrule Teleporter', 'East Dark World'),
|
||||
('South Hyrule Teleporter', 'South Dark World'),
|
||||
('Desert Teleporter', 'Dark Desert'),
|
||||
('Lake Hylia Teleporter', 'Dark Lake Hylia Central Island'),
|
||||
|
||||
# mirror
|
||||
('Spectacle Rock Mirror Spot', 'Spectacle Rock'),
|
||||
('East Death Mountain (Top) Mirror Spot', 'East Death Mountain (Top)'),
|
||||
('Dark Floating Island Mirror Spot', 'Death Mountain Floating Island'),
|
||||
('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'),
|
||||
('Bumper Cave Ledge Mirror Spot', 'Death Mountain Return Ledge'),
|
||||
('Bumper Cave Entrance Mirror Spot', 'Death Mountain Entrance'),
|
||||
('Graveyard Ledge Mirror Spot', 'Graveyard Ledge'),
|
||||
('Kings Grave Mirror Spot', 'Kings Grave Area'),
|
||||
('Dark Grassy Lawn Mirror Spot', 'Bush Covered Lawn'),
|
||||
('Hyrule Castle Ledge Mirror Spot', 'Hyrule Castle Ledge'),
|
||||
('Bat Cave Drop Ledge Mirror Spot', 'Bat Cave Ledge'),
|
||||
('Dig Game Mirror Spot', 'Maze Race Ledge'),
|
||||
('Desert Ledge Rocks Mirror Spot', 'Desert Palace Entrance (North) Spot'),
|
||||
('Desert Ledge Mirror Spot', 'Desert Ledge'),
|
||||
('Mire To Desert Stairs Mirror Spot', 'Desert Palace Stairs'),
|
||||
('Checkerboard Ledge Mirror Spot', 'Desert Checkerboard Ledge'),
|
||||
('Bombos Tablet Mirror Spot', 'Bombos Tablet Ledge'),
|
||||
('Cave 45 Mirror Spot', 'Cave 45 Ledge'),
|
||||
('Lake Hylia Island Mirror Spot', 'Lake Hylia Island'),
|
||||
('Lake Hylia Central Island Mirror Spot', 'Lake Hylia Central Island')
|
||||
('Lake Hylia Teleporter', 'Dark Lake Hylia Central Island')
|
||||
]
|
||||
|
||||
inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'),
|
||||
@@ -2107,37 +2082,7 @@ inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'),
|
||||
('East Dark World Teleporter', 'Light World'),
|
||||
('South Dark World Teleporter', 'Light World'),
|
||||
('Dark Desert Teleporter', 'Light World'),
|
||||
('Dark Lake Hylia Teleporter', 'Lake Hylia Central Island'),
|
||||
|
||||
# mirror
|
||||
('Skull Woods Mirror Spot', 'Skull Woods Forest (West)'),
|
||||
('West Dark World Mirror Spot', 'West Dark World'),
|
||||
('Death Mountain (Top) Mirror Spot', 'Dark Death Mountain (Top)'),
|
||||
('Death Mountain Mirror Spot', 'West Dark Death Mountain (Bottom)'),
|
||||
('East Death Mountain Mirror Spot (Top)', 'Dark Death Mountain (Top)'),
|
||||
('Floating Island Mirror Spot', 'Dark Death Mountain Floating Island'),
|
||||
('Dark Death Mountain Ledge Mirror Spot (East)', 'Dark Death Mountain Ledge'),
|
||||
('Dark Death Mountain Ledge Mirror Spot (West)', 'Dark Death Mountain Ledge'),
|
||||
('Laser Bridge Mirror Spot', 'Dark Death Mountain Isolated Ledge'),
|
||||
('East Death Mountain Mirror Spot (Bottom)', 'East Dark Death Mountain (Bottom)'),
|
||||
('Mountain Exit Ledge Mirror Spot', 'Bumper Cave Ledge'),
|
||||
('Mountain Entrance Mirror Spot', 'Bumper Cave Entrance'),
|
||||
('Catfish Mirror Spot', 'Catfish Area'),
|
||||
('Graveyard Cave Mirror Spot', 'West Dark World'),
|
||||
('Potion Shop Mirror Spot', 'Northeast Dark World'),
|
||||
('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'),
|
||||
('Bomb Hut Mirror Spot', 'West Dark World'),
|
||||
('Pyramid Uncle Mirror Spot', 'East Dark World'),
|
||||
('East Dark World Mirror Spot', 'East Dark World'),
|
||||
('Hammer Peg Area Mirror Spot', 'Hammer Peg Area'),
|
||||
('Maze Race Mirror Spot', 'South Dark World'),
|
||||
('South Dark World Mirror Spot', 'South Dark World'),
|
||||
('Mire Mirror Spot', 'Dark Desert'),
|
||||
('Dark Desert Ledge Mirror Spot', 'Dark Desert'),
|
||||
('Desert Palace Stairs Mirror Spot', 'Dark Desert'),
|
||||
('Desert Palace North Mirror Spot', 'Dark Desert'),
|
||||
('Ice Lake Central Island Mirror Spot', 'Lake Hylia Central Island'),
|
||||
('Shopping Mall Mirror Spot', 'Southeast Dark World')
|
||||
('Dark Lake Hylia Teleporter', 'Lake Hylia Central Island')
|
||||
]
|
||||
|
||||
# non-shuffled entrance links
|
||||
|
||||
Reference in New Issue
Block a user