Added Mixed OWG Logic
This commit is contained in:
@@ -3,6 +3,7 @@ Helper functions to deliver entrance/exit/region sets to OWG rules.
|
||||
"""
|
||||
|
||||
from BaseClasses import Entrance
|
||||
from OWEdges import OWTileRegions
|
||||
|
||||
|
||||
def get_sword_required_superbunny_mirror_regions():
|
||||
@@ -25,6 +26,8 @@ def get_boots_required_superbunny_mirror_locations():
|
||||
yield 'Sahasrahla\'s Hut - Middle'
|
||||
yield 'Sahasrahla\'s Hut - Right'
|
||||
|
||||
# TODO: Add pottery locations
|
||||
|
||||
|
||||
def get_invalid_mirror_bunny_entrances():
|
||||
"""
|
||||
@@ -98,7 +101,7 @@ def get_superbunny_accessible_locations():
|
||||
yield location
|
||||
|
||||
|
||||
def get_non_mandatory_exits(inverted):
|
||||
def get_non_mandatory_exits(world, player):
|
||||
"""
|
||||
Entrances that can be reached with full equipment using overworld glitches and don't need to be an exit.
|
||||
The following are still be mandatory exits:
|
||||
@@ -116,257 +119,169 @@ def get_non_mandatory_exits(inverted):
|
||||
yield 'Death Mountain Return Cave (West)'
|
||||
yield 'Hookshot Cave Back Entrance'
|
||||
|
||||
if inverted:
|
||||
if world.is_tile_swapped(0x30, player):
|
||||
yield 'Desert Palace Entrance (North)'
|
||||
yield 'Desert Palace Entrance (West)'
|
||||
else:
|
||||
yield 'Desert Palace Entrance (East)'
|
||||
|
||||
if world.is_tile_swapped(0x1b, player):
|
||||
yield 'Agahnims Tower'
|
||||
yield 'Hyrule Castle Entrance (West)'
|
||||
yield 'Hyrule Castle Entrance (East)'
|
||||
else:
|
||||
|
||||
if not world.is_tile_swapped(0x05, player):
|
||||
yield 'Dark Death Mountain Ledge (West)'
|
||||
yield 'Dark Death Mountain Ledge (East)'
|
||||
yield 'Mimic Cave'
|
||||
yield 'Desert Palace Entrance (East)'
|
||||
#yield 'Mimic Cave' #TODO: This was here, I don't think this is true
|
||||
|
||||
|
||||
def get_boots_clip_exits_lw(inverted = False):
|
||||
def get_boots_clip_exits_lw(world, player):
|
||||
"""
|
||||
Special Light World region exits that require boots clips.
|
||||
"""
|
||||
|
||||
yield ('Lumberjack DMA Clip', 'Lumberjack Area', 'West Death Mountain (Bottom)')
|
||||
yield ('Lumberjack DMD Clip', 'West Death Mountain (Top)', 'Lumberjack Area')
|
||||
yield ('DM Glitched Bridge Clip', 'West Death Mountain (Bottom)', 'East Death Mountain (Top East)')
|
||||
yield ('WDM to EDM Top Clip', 'West Death Mountain (Top)', 'East Death Mountain (Top West)')
|
||||
yield ('Hera Ascent Clip', 'West Death Mountain (Bottom)', 'West Death Mountain (Top)') #cannot guarantee camera correction, but a bomb clip exists
|
||||
yield ('Sanctuary DMD Clip', 'West Death Mountain (Bottom)', 'Sanctuary Area')
|
||||
yield ('Graveyard Ledge DMD Clip', 'West Death Mountain (Bottom)', 'Graveyard Ledge')
|
||||
yield ('Kings Grave DMD Clip', 'West Death Mountain (Bottom)', 'Kings Grave Area')
|
||||
yield ('EDM to WDM Top Clip', 'East Death Mountain (Top West)', 'West Death Mountain (Top)')
|
||||
yield ('EDM East Dropdown Clip', 'East Death Mountain (Top East)', 'East Death Mountain (Bottom Left)')
|
||||
yield ('EDM To TR Pegs Clip', 'East Death Mountain (Top East)', 'Death Mountain TR Pegs')
|
||||
yield ('EDM DMD FAWT Clip', 'East Death Mountain (Bottom)', 'Potion Shop Area')
|
||||
yield ('WDM To EDM Bottom Clip', 'East Death Mountain (Bottom Left)', 'East Death Mountain (Bottom)')
|
||||
yield ('WDM DMD To River Bend Clip', 'East Death Mountain (Bottom Left)', 'River Bend Area')
|
||||
yield ('EDM DMD To River Bend Clip', 'East Death Mountain (Bottom)', 'River Bend Area')
|
||||
yield ('TR Pegs Ledge Clip', 'Death Mountain TR Pegs', 'Death Mountain TR Pegs Ledge')
|
||||
yield ('TR Pegs Ledge Descent Clip', 'Death Mountain TR Pegs Ledge', 'Death Mountain TR Pegs')
|
||||
yield ('TR Pegs To EDM Clip', 'Death Mountain TR Pegs', 'East Death Mountain (Top East)')
|
||||
yield ('Zora DMD Clip', 'Death Mountain TR Pegs', 'Zora Waterfall Area')
|
||||
yield ('Mountain Entry To Ledge Clip', 'Mountain Entry Area', 'Mountain Entry Ledge')
|
||||
yield ('Mountain Ledge Drop Clip', 'Mountain Entry Ledge', 'Mountain Entry Entrance')
|
||||
yield ('Mountain Entry To Pond Clip', 'Mountain Entry Area', 'Kakariko Pond Area')
|
||||
yield ('Zora Waterfall Ledge Clip', 'Zora Waterfall Area', 'Zora Approach Area')
|
||||
|
||||
#yield ('Pond DMA Clip', 'Kakariko Pond Area', 'West Death Mountain (Bottom)') #cannot guarantee camera correction
|
||||
yield ('Pond To Mountain Entry Clip', 'Kakariko Pond Area', 'Mountain Entry Area')
|
||||
yield ('Pond To Bonk Rocks Clip', 'Kakariko Pond Area', 'Bonk Rock Ledge')
|
||||
yield ('River Bend To Potion Shop Clip', 'River Bend East Bank', 'Potion Shop Area')
|
||||
yield ('River Bend To Wooden Bridge Clip', 'River Bend East Bank', 'Wooden Bridge Area')
|
||||
yield ('Potion Shop To EP Clip', 'Potion Shop Area', 'Eastern Palace Area')
|
||||
yield ('Potion Shop To River Bend Clip', 'Potion Shop Area', 'River Bend East Bank')
|
||||
yield ('Potion Shop To Zora Approach Clip', 'Potion Shop Northeast', 'Zora Approach Area')
|
||||
yield ('Zora Approach To Potion Shop Clip', 'Zora Approach Area', 'Potion Shop Area')
|
||||
|
||||
yield ('Kakariko Bomb Hut Clip', 'Kakariko Area', 'Maze Race Area')
|
||||
yield ('Forgotten Forest To Blacksmith Clip', 'Forgotten Forest Area', 'Blacksmith Area') #fake flipper
|
||||
yield ('Hyrule Castle To Blacksmith Clip', 'Hyrule Castle Area', 'Blacksmith Area') #fake flipper
|
||||
yield ('Wooden Bridge To Dunes Clip', 'Wooden Bridge Area', 'Sand Dunes Area')
|
||||
yield ('Eastern Palace To Zora Approach Clip', 'Eastern Palace Area', 'Zora Approach Area')
|
||||
yield ('Eastern Palace To Nook Clip', 'Eastern Palace Area', 'Eastern Nook Area')
|
||||
yield ('Eastern Palace To Cliff Clip', 'Eastern Palace Area', 'Eastern Cliff')
|
||||
#yield ('Bat Cave River Clip Spot', 'Blacksmith Area', 'Bat Cave Ledge') #cannot guarantee camera correction
|
||||
yield ('Sand Dunes To Cliff Clip', 'Sand Dunes Area', 'Eastern Cliff')
|
||||
|
||||
yield ('Maze Race Item Get Ledge Clip', 'Maze Race Area', 'Maze Race Prize')
|
||||
yield ('Maze Race To Desert Ledge Clip', 'Maze Race Area', 'Desert Ledge')
|
||||
yield ('Maze Race To Desert Boss Clip', 'Maze Race Area', 'Desert Palace Entrance (North) Spot')
|
||||
yield ('Suburb To Cliff Clip', 'Kakariko Suburb Area', 'Desert Northeast Cliffs')
|
||||
yield ('Central Bonk Rocks To Cliff Clip', 'Central Bonk Rocks Area', 'Central Cliffs')
|
||||
yield ('Links House To Cliff Clip', 'Links House Area', 'Central Cliffs')
|
||||
yield ('Stone Bridge To Cliff Clip', 'Stone Bridge Area', 'Central Cliffs')
|
||||
yield ('Tree Line Water Clip', 'Tree Line Area', 'Tree Line Water') #requires flippers
|
||||
yield ('Eastern Nook To Eastern Clip', 'Eastern Nook Area', 'Eastern Palace Area')
|
||||
yield ('Eastern Nook To Ice Cave FAWT Clip', 'Eastern Nook Area', 'Ice Cave Area')
|
||||
|
||||
yield ('Desert To Maze Race Clip', 'Desert Ledge', 'Maze Race Area')
|
||||
yield ('Desert Ledge To Cliff Clip', 'Desert Ledge', 'Desert Northeast Cliffs') #requires gloves
|
||||
yield ('Checkerboard To Cliff Clip', 'Desert Checkerboard Ledge', 'Desert Northeast Cliffs')
|
||||
yield ('Desert To Cliff Clip', 'Desert Area', 'Desert Northeast Cliffs')
|
||||
yield ('Desert To Teleporter Clip', 'Desert Area', 'Desert Palace Teleporter Ledge')
|
||||
yield ('Desert To Bombos Tablet Clip', 'Desert Area', 'Bombos Tablet Ledge')
|
||||
|
||||
yield ('Flute Boy To Cliff Clip', 'Flute Boy Approach Area', 'Desert Northeast Cliffs')
|
||||
yield ('Cave 45 To Cliff Clip', 'Cave 45 Ledge', 'Desert Northeast Cliffs')
|
||||
yield ('C Whirlpool To Cliff Clip', 'C Whirlpool Area', 'Central Cliffs')
|
||||
yield ('C Whirlpool Outer To Cliff Clip', 'C Whirlpool Outer Area', 'Central Cliffs')
|
||||
yield ('Statues To Cliff Clip', 'Statues Area', 'Central Cliffs')
|
||||
yield ('Lake Hylia To Statues Clip', 'Lake Hylia Area', 'Statues Area')
|
||||
yield ('Lake Hylia To South Pass Clip', 'Lake Hylia Area', 'South Pass Area')
|
||||
yield ('Lake Hylia To Shore Clip', 'Lake Hylia Area', 'Lake Hylia South Shore')
|
||||
yield ('Desert Pass To Cliff Clip', 'Desert Pass Area', 'Desert Northeast Cliffs')
|
||||
yield ('Desert Pass Southeast To Cliff Clip', 'Desert Pass Southeast', 'Desert Northeast Cliffs')
|
||||
#yield ('Desert Pass To Zora Clip', 'Desert Pass Area', 'Zoras Domain') #revisit when Zora is shuffled
|
||||
yield ('Dam To Cliff Clip', 'Dam Area', 'Desert Northeast Cliffs')
|
||||
yield ('South Pass To Lake Hylia Clip', 'South Pass Area', 'Lake Hylia Area')
|
||||
yield ('South Pass To Shore Clip', 'South Pass Area', 'Lake Hylia South Shore')
|
||||
#yield ('Octoballoon To Shore Clip', 'Octoballoon Area', 'Lake Hylia South Shore') #map wrap hardlock risk
|
||||
|
||||
if not inverted:
|
||||
yield ('Spectacle Rock Ledge Clip', 'West Death Mountain (Top)', 'Spectacle Rock Ledge')
|
||||
yield ('Floating Island Clip', 'East Death Mountain (Top East)', 'Death Mountain Floating Island')
|
||||
yield ('Floating Island Return Clip', 'Death Mountain Floating Island', 'East Death Mountain (Top East)')
|
||||
for name, parent_region, target_region in boots_clips_local:
|
||||
if not world.is_tile_swapped(OWTileRegions[parent_region], player):
|
||||
yield(name, parent_region, target_region)
|
||||
|
||||
def get_boots_clip_exits_dw(inverted):
|
||||
for name, parent_region, target_region in boots_clips:
|
||||
parent_swapped, target_swapped = get_swapped_status(world, player, parent_region, target_region)
|
||||
if parent_region[0] and not parent_swapped:
|
||||
if target_region[0] and not target_swapped:
|
||||
yield(name[0], parent_region[0], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[0], parent_region[0], target_region[1])
|
||||
elif parent_region[1]:
|
||||
if target_region[0] and not target_swapped:
|
||||
yield(name[1], parent_region[1], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[1], parent_region[1], target_region[1])
|
||||
|
||||
def get_boots_clip_exits_dw(world, player):
|
||||
"""
|
||||
Special Dark World region exits that require boots clips.
|
||||
"""
|
||||
|
||||
yield ('Dark Lumberjack DMA Clip', 'Dark Lumberjack Area', 'West Dark Death Mountain (Bottom)')
|
||||
yield ('DDM Glitched Bridge Clip', 'West Dark Death Mountain (Bottom)', 'East Dark Death Mountain (Top)')
|
||||
yield ('Chapel DMD Clip', 'West Dark Death Mountain (Bottom)', 'Dark Chapel Area')
|
||||
yield ('Dark Graveyard DMD Clip', 'West Dark Death Mountain (Bottom)', 'Dark Graveyard Area')
|
||||
yield ('EDDM West Dropdown Clip', 'East Dark Death Mountain (Top)', 'East Dark Death Mountain (Bottom Left)')
|
||||
yield ('EDDM To WDDM Clip', 'East Dark Death Mountain (Top)', 'West Dark Death Mountain (Top)')
|
||||
yield ('TR Bridge Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge')
|
||||
yield ('Dark Witch DMD FAWT Clip', 'East Dark Death Mountain (Bottom)', 'Dark Witch Area')
|
||||
yield ('Qirn Jump DMD Clip', 'East Dark Death Mountain (Bottom Left)', 'Qirn Jump Area')
|
||||
yield ('WDDM To EDDM Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)')
|
||||
#yield ('DW Floating Island Clip', 'East Dark Death Mountain (Bottom)', 'Dark Death Mountain Floating Island') #cannot guarantee camera correction
|
||||
yield ('TR To EDDM Clip', 'Turtle Rock Area', 'East Dark Death Mountain (Top)')
|
||||
yield ('Catfish DMD Clip', 'Turtle Rock Area', 'Catfish Area')
|
||||
yield ('Bumper Cave Ledge Clip', 'Bumper Cave Area', 'Bumper Cave Ledge')
|
||||
yield ('Bumper Cave Ledge Drop Clip', 'Bumper Cave Ledge', 'Bumper Cave Entrance')
|
||||
yield ('Bumper Cave To Pond Clip', 'Bumper Cave Area', 'Outcast Pond Area')
|
||||
yield ('Catfish Ledge Clip', 'Catfish Area', 'Catfish Approach Area')
|
||||
|
||||
#yield ('Dark Pond DMA Clip', 'Outcast Pond Area', 'West Dark Death Mountain (Bottom)') #cannot guarantee camera correction
|
||||
yield ('Pond To Bumper Cave Clip', 'Outcast Pond Area', 'Bumper Cave Area')
|
||||
yield ('Pond To Chapel Clip', 'Outcast Pond Area', 'Dark Chapel Area')
|
||||
yield ('Qirn Jump To Dark Witch Clip', 'Qirn Jump East Bank', 'Dark Witch Area')
|
||||
yield ('Qirn Jump To Broken Bridge North Clip', 'Qirn Jump East Bank', 'Broken Bridge Northeast')
|
||||
yield ('Qirn Jump To Broken Bridge Clip', 'Qirn Jump East Bank', 'Broken Bridge Area')
|
||||
yield ('Dark Witch To PoD Clip', 'Dark Witch Area', 'Palace of Darkness Area')
|
||||
yield ('Dark Witch To Qirn Jump Clip', 'Dark Witch Area', 'Qirn Jump East Bank')
|
||||
yield ('Dark Witch To Catfish Approach Clip', 'Dark Witch Northeast', 'Catfish Approach Area')
|
||||
yield ('Catfish Approach To Dark Witch Clip', 'Catfish Approach Area', 'Dark Witch Area')
|
||||
yield ('Catfish Approach To PoD Clip', 'Catfish Approach Area', 'Palace of Darkness Area')
|
||||
|
||||
yield ('VoO To Dig Game Clip', 'Village of Outcasts Area', 'Dig Game Area')
|
||||
yield ('VoO To Dig Game Hook Clip', 'Village of Outcasts Area', 'Dig Game Ledge') #requires hookshot
|
||||
yield ('Broken Bridge To Dunes Clip', 'Broken Bridge West', 'Dark Dunes Area')
|
||||
yield ('Broken Bridge To Hammer Pegs Clip', 'Broken Bridge West', 'Hammer Pegs Area') #fake flipper
|
||||
yield ('Broken Bridge To Bomb Shop Clip', 'Broken Bridge West', 'Big Bomb Shop Area') #fake flipper
|
||||
yield ('PoD To Cliff Clip', 'Palace of Darkness Area', 'Darkness Cliff')
|
||||
yield ('Dark Dunes To Cliff Clip', 'Dark Dunes Area', 'Darkness Cliff')
|
||||
yield ('Dark Dunes To Hammer Pegs Clip', 'Dark Dunes Area', 'Hammer Pegs Area')
|
||||
yield ('Dark Dunes To Bomb Shop Clip', 'Dark Dunes Area', 'Big Bomb Shop Area')
|
||||
|
||||
yield ('Dig Game To Mire Clip', 'Dig Game Area', 'Misery Mire Area')
|
||||
yield ('Archery Game To Cliff Clip', 'Archery Game Area', 'Mire Northeast Cliffs')
|
||||
yield ('Dark Bonk Rocks To Cliff Clip', 'Dark Bonk Rocks Area', 'Dark Central Cliffs')
|
||||
yield ('Bomb Shop To Cliff Clip', 'Big Bomb Shop Area', 'Dark Central Cliffs')
|
||||
yield ('Bomb Shop To Hammer Bridge FAWT Clip', 'Big Bomb Shop Area', 'Hammer Bridge North Area')
|
||||
yield ('Hammer Bridge To Bomb Shop Clip', 'Hammer Bridge North Area', 'Big Bomb Shop Area')
|
||||
yield ('Hammer Bridge To Hammer Pegs Clip', 'Hammer Bridge North Area', 'Hammer Pegs Area')
|
||||
yield ('Hammer Bridge To Cliff Clip', 'Hammer Bridge South Area', 'Dark Central Cliffs')
|
||||
yield ('Dark Tree Line Water Clip', 'Dark Tree Line Area', 'Dark Tree Line Water') #requires flippers
|
||||
yield ('PoD Nook To Shopping Mall FAWT Clip', 'Palace of Darkness Nook Area', 'Shopping Mall Area')
|
||||
|
||||
yield ('Mire To Cliff Clip', 'Misery Mire Area', 'Mire Northeast Cliffs')
|
||||
yield ('Mire To Teleporter Clip', 'Misery Mire Area', 'Misery Mire Teleporter Ledge')
|
||||
yield ('Stumpy To Cliff Clip', 'Stumpy Approach Area', 'Mire Northeast Cliffs')
|
||||
yield ('Dark C Whirlpool To Cliff Clip', 'Dark C Whirlpool Area', 'Dark Central Cliffs')
|
||||
yield ('Dark C Whirlpool Outer To Cliff Clip', 'Dark C Whirlpool Outer Area', 'Dark Central Cliffs')
|
||||
yield ('Hype To Cliff Clip', 'Hype Cave Area', 'Dark Central Cliffs')
|
||||
yield ('Ice Lake To Hype Clip', 'Ice Lake Area', 'Hype Cave Area')
|
||||
yield ('Ice Lake To South Pass Clip', 'Ice Lake Area', 'Dark South Pass Area')
|
||||
yield ('Ice Lake To Shore Clip', 'Ice Lake Area', 'Ice Lake Ledge (West)')
|
||||
|
||||
yield ('Swamp Nook To Cliff Clip', 'Swamp Nook Area', 'Mire Northeast Cliffs')
|
||||
yield ('Swamp To Cliff Clip', 'Swamp Area', 'Mire Northeast Cliffs')
|
||||
yield ('South Pass To Ice Lake Clip', 'Dark South Pass Area', 'Ice Lake Area')
|
||||
yield ('South Pass To Dark Shore Clip', 'Dark South Pass Area', 'Ice Lake Ledge (West)')
|
||||
#yield ('Bomber Corner To Shore Clip', 'Bomber Corner Area', 'Ice Lake Ledge (East)') #map wrap hardlock risk
|
||||
|
||||
if not inverted:
|
||||
yield ('Ganons Tower Screen Wrap Clip', 'West Dark Death Mountain (Bottom)', 'GT Approach') # This only gets you to the GT entrance
|
||||
yield ('WDDM Bomb Clip', 'West Dark Death Mountain (Bottom)', 'West Dark Death Mountain (Top)') #cannot guarantee camera correction, but a bomb clip exists
|
||||
yield ('Turtle Rock Ledge Clip', 'Turtle Rock Area', 'Turtle Rock Ledge')
|
||||
else:
|
||||
yield ('Misery Mire Teleporter Clip', 'Misery Mire Area', 'Misery Mire Teleporter Ledge')
|
||||
for name, parent_region, target_region in boots_clips_local:
|
||||
if world.is_tile_swapped(OWTileRegions[parent_region], player):
|
||||
yield(name, parent_region, target_region)
|
||||
|
||||
for name, parent_region, target_region in boots_clips:
|
||||
parent_swapped, target_swapped = get_swapped_status(world, player, parent_region, target_region)
|
||||
if parent_region[0] and parent_swapped:
|
||||
if target_region[0] and target_swapped:
|
||||
yield(name[0], parent_region[0], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[0], parent_region[0], target_region[1])
|
||||
elif parent_region[1]:
|
||||
if target_region[0] and target_swapped:
|
||||
yield(name[1], parent_region[1], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[1], parent_region[1], target_region[1])
|
||||
|
||||
|
||||
def get_glitched_speed_drops_lw(inverted = False):
|
||||
def get_glitched_speed_drops_lw(world, player):
|
||||
"""
|
||||
Light World drop-down ledges that require glitched speed.
|
||||
"""
|
||||
|
||||
|
||||
def get_glitched_speed_drops_dw(inverted = False):
|
||||
def get_glitched_speed_drops_dw(world, player):
|
||||
"""
|
||||
Dark World drop-down ledges that require glitched speed.
|
||||
"""
|
||||
|
||||
|
||||
def get_mirror_clip_spots_dw():
|
||||
def get_mirror_clip_spots(world, player):
|
||||
"""
|
||||
Out of bounds transitions using the mirror
|
||||
"""
|
||||
yield ('Qirn Jump Bunny DMD Clip', 'East Dark Death Mountain (Bottom Left)', 'Qirn Jump Area')
|
||||
yield ('EDDM Mirror Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)')
|
||||
yield ('Desert East Mirror Clip', 'Misery Mire Area', 'Desert Palace Mouth')
|
||||
|
||||
for name, parent_region, target_region in mirror_clips_local:
|
||||
if not world.is_tile_swapped(OWTileRegions[parent_region], player):
|
||||
yield(name, parent_region, target_region)
|
||||
|
||||
for name, parent_region, target_region in mirror_clips:
|
||||
parent_swapped, target_swapped = get_swapped_status(world, player, parent_region, target_region)
|
||||
if parent_region[0] and not parent_swapped:
|
||||
if target_region[0] and not target_region:
|
||||
yield(name[0], parent_region[0], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[0], parent_region[0], target_region[1])
|
||||
elif parent_region[1]:
|
||||
if target_region[0] and not target_region:
|
||||
yield(name[1], parent_region[1], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[1], parent_region[1], target_region[1])
|
||||
|
||||
|
||||
def get_mirror_offset_spots_dw():
|
||||
def get_mirror_offset_spots(world, player):
|
||||
"""
|
||||
Mirror shenanigans placing a mirror portal with a broken camera
|
||||
"""
|
||||
yield ('Dark Death Mountain Offset Mirror', 'West Dark Death Mountain (Bottom)', 'Pyramid Area')
|
||||
|
||||
# TODO: These really should check to see if there is a mirrorless path to the mirror portal
|
||||
# but being that OWG is very very open, it's very unlikely there isn't a path, but possible
|
||||
|
||||
for name, parent_region, target_region, path_to in mirror_offsets:
|
||||
parent_swapped, target_swapped = get_swapped_status(world, player, parent_region, target_region)
|
||||
if parent_region[0] and not parent_swapped:
|
||||
if target_region[0] and not target_region:
|
||||
yield(name[0], parent_region[0], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[0], parent_region[0], target_region[1])
|
||||
elif parent_region[1]:
|
||||
if target_region[0] and not target_region:
|
||||
yield(name[1], parent_region[1], target_region[0])
|
||||
elif target_region[1]:
|
||||
yield(name[1], parent_region[1], target_region[1])
|
||||
|
||||
|
||||
def get_mirror_offset_spots_lw(player):
|
||||
"""
|
||||
Mirror shenanigans placing a mirror portal with a broken camera
|
||||
"""
|
||||
#yield ('Death Mountain Offset Mirror', 'West Death Mountain (Bottom)', 'Hyrule Castle Courtyard') #revisit when we can guarantee walk access to Pyramid Area
|
||||
#yield ('Death Mountain Offset Mirror (Houlihan Exit)', 'West Death Mountain (Bottom)', 'Hyrule Castle Ledge', lambda state: state.has_Mirror(player) and state.can_boots_clip_dw(player) and state.has_Pearl(player))
|
||||
def get_swapped_status(world, player, parents, targets):
|
||||
if parents[0]:
|
||||
parent_swapped = world.is_tile_swapped(OWTileRegions[parents[0]], player)
|
||||
else:
|
||||
parent_swapped = world.is_tile_swapped(OWTileRegions[parents[1]], player)
|
||||
|
||||
if targets[0] and targets[0] in (glitch_regions[0] + glitch_regions[1]):
|
||||
target_swapped = targets[0] in glitch_regions[1]
|
||||
else:
|
||||
if targets[0]:
|
||||
target_swapped = world.is_tile_swapped(OWTileRegions[targets[0]], player)
|
||||
else:
|
||||
target_swapped = world.is_tile_swapped(OWTileRegions[targets[1]], player)
|
||||
|
||||
return parent_swapped, target_swapped
|
||||
|
||||
|
||||
def create_owg_connections(world, player):
|
||||
"""
|
||||
Add OWG transitions to player's world without logic
|
||||
"""
|
||||
create_no_logic_connections(player, world, get_boots_clip_exits_lw(world.mode[player] == 'inverted'))
|
||||
create_no_logic_connections(player, world, get_boots_clip_exits_dw(world.mode[player] == 'inverted'))
|
||||
create_no_logic_connections(player, world, get_boots_clip_exits_lw(world, player))
|
||||
create_no_logic_connections(player, world, get_boots_clip_exits_dw(world, player))
|
||||
|
||||
# Glitched speed drops.
|
||||
#create_no_logic_connections(player, world, get_glitched_speed_drops_lw(world.mode[player] == 'inverted'))
|
||||
#create_no_logic_connections(player, world, get_glitched_speed_drops_dw(world.mode[player] == 'inverted'))
|
||||
#create_no_logic_connections(player, world, get_glitched_speed_drops_lw(world, player))
|
||||
#create_no_logic_connections(player, world, get_glitched_speed_drops_dw(world, player))
|
||||
|
||||
# Mirror clip spots.
|
||||
if world.mode[player] != 'inverted':
|
||||
create_no_logic_connections(player, world, get_mirror_clip_spots_dw())
|
||||
create_no_logic_connections(player, world, get_mirror_offset_spots_dw())
|
||||
#else:
|
||||
#create_no_logic_connections(player, world, get_mirror_offset_spots_lw(player))
|
||||
create_no_logic_connections(player, world, get_mirror_clip_spots(world, player))
|
||||
create_no_logic_connections(player, world, get_mirror_offset_spots(world, player))
|
||||
|
||||
|
||||
def overworld_glitches_rules(world, player):
|
||||
# Boots-accessible locations.
|
||||
set_owg_rules(player, world, get_boots_clip_exits_lw(world.mode[player] == 'inverted'), lambda state: state.can_boots_clip_lw(player))
|
||||
set_owg_rules(player, world, get_boots_clip_exits_dw(world.mode[player] == 'inverted'), lambda state: state.can_boots_clip_dw(player))
|
||||
set_owg_rules(player, world, get_boots_clip_exits_lw(world, player), lambda state: state.can_boots_clip_lw(player))
|
||||
set_owg_rules(player, world, get_boots_clip_exits_dw(world, player), lambda state: state.can_boots_clip_dw(player))
|
||||
|
||||
# Glitched speed drops.
|
||||
#set_owg_rules(player, world, get_glitched_speed_drops_lw(world.mode[player] == 'inverted'), lambda state: state.can_get_glitched_speed_lw(player))
|
||||
#set_owg_rules(player, world, get_glitched_speed_drops_dw(world.mode[player] == 'inverted'), lambda state: state.can_get_glitched_speed_dw(player))
|
||||
#set_owg_rules(player, world, get_glitched_speed_drops_lw(world, player), lambda state: state.can_get_glitched_speed_lw(player))
|
||||
#set_owg_rules(player, world, get_glitched_speed_drops_dw(world, player), lambda state: state.can_get_glitched_speed_dw(player))
|
||||
|
||||
# Mirror clip spots.
|
||||
if world.mode[player] != 'inverted':
|
||||
set_owg_rules(player, world, get_mirror_clip_spots_dw(), lambda state: state.has_Mirror(player))
|
||||
set_owg_rules(player, world, get_mirror_offset_spots_dw(), lambda state: state.has_Mirror(player) and state.can_boots_clip_lw(player))
|
||||
#else:
|
||||
#set_owg_rules(player, world, get_mirror_offset_spots_lw(player), lambda state: state.has_Mirror(player) and state.can_boots_clip_dw(player))
|
||||
set_owg_rules(player, world, get_mirror_clip_spots(world, player), lambda state: state.has_Mirror(player))
|
||||
set_owg_rules(player, world, get_mirror_offset_spots(world, player), lambda state: state.has_Mirror(player) and state.can_boots_clip_lw(player))
|
||||
|
||||
# Regions that require the boots and some other stuff.
|
||||
# TODO: Revisit below when we can guarantee water walk
|
||||
@@ -378,18 +293,9 @@ def overworld_glitches_rules(world, player):
|
||||
# Zora's Ledge via waterwalk setup.
|
||||
#add_alternate_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has_Boots(player)) #revisit when we can guarantee water walk
|
||||
|
||||
# Regions that can bypass item requirements
|
||||
add_alternate_rule(world.get_entrance('DM Hammer Bridge (West)', player), lambda state: state.can_boots_clip_lw(player))
|
||||
add_alternate_rule(world.get_entrance('DM Broken Bridge (West)', player), lambda state: state.can_boots_clip_lw(player))
|
||||
add_alternate_rule(world.get_entrance('Potion Shop Rock (North)', player), lambda state: state.can_boots_clip_lw(player))
|
||||
add_alternate_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_boots_clip_lw(player))
|
||||
add_alternate_rule(world.get_entrance('Dark Witch Rock (North)', player), lambda state: state.can_boots_clip_dw(player))
|
||||
add_alternate_rule(world.get_entrance('Dark Witch Rock (South)', player), lambda state: state.can_boots_clip_dw(player))
|
||||
|
||||
# Adding additional item requirements to OWG Clips
|
||||
add_additional_rule(world.get_entrance('Tree Line Water Clip', player), lambda state: state.has('Flippers', player))
|
||||
add_additional_rule(world.get_entrance('Desert Ledge To Cliff Clip', player), lambda state: state.can_lift_rocks(player))
|
||||
add_additional_rule(world.get_entrance('VoO To Dig Game Hook Clip', player), lambda state: state.has('Hookshot', player))
|
||||
add_additional_rule(world.get_entrance('Tree Line Water Clip', player), lambda state: state.has('Flippers', player))
|
||||
add_additional_rule(world.get_entrance('Dark Tree Line Water Clip', player), lambda state: state.has('Flippers', player))
|
||||
|
||||
|
||||
@@ -417,3 +323,171 @@ def set_owg_rules(player, world, connections, default_rule):
|
||||
connection = world.get_entrance(entrance, player)
|
||||
rule = rule_override[0] if len(rule_override) > 0 else default_rule
|
||||
connection.access_rule = rule
|
||||
|
||||
|
||||
glitch_regions = (['Central Cliffs', 'Eastern Cliff', 'Desert Northeast Cliffs'],
|
||||
['Dark Central Cliffs', 'Darkness Cliff', 'Mire Northeast Cliffs'])
|
||||
|
||||
# same screen clips, no OWR tile swap implications
|
||||
boots_clips_local = [ # (name, from_region, to_region)
|
||||
('Hera Ascent Clip', 'West Death Mountain (Bottom)', 'West Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists
|
||||
('WDDM Bomb Clip', 'West Dark Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists
|
||||
('Ganons Tower Screen Wrap Clip', 'West Dark Death Mountain (Bottom)', 'GT Approach'), # This only gets you to the GT entrance
|
||||
('Spectacle Rock Ledge Clip', 'West Death Mountain (Top)', 'Spectacle Rock Ledge'),
|
||||
|
||||
('Floating Island Clip', 'East Death Mountain (Top East)', 'Death Mountain Floating Island'),
|
||||
('Floating Island Return Clip', 'Death Mountain Floating Island', 'East Death Mountain (Top East)'),
|
||||
#('DW Floating Island Clip', 'East Dark Death Mountain (Bottom)', 'Dark Death Mountain Floating Island'), #cannot guarantee camera correction
|
||||
('EDM East Dropdown Clip', 'East Death Mountain (Top East)', 'East Death Mountain (Bottom Left)'),
|
||||
('EDM Hammer Bypass Teleport', 'East Death Mountain (Top West)', 'East Death Mountain (Top East)'),
|
||||
('EDDM West Dropdown Clip', 'East Dark Death Mountain (Top)', 'East Dark Death Mountain (Bottom Left)'),
|
||||
('WDM To EDM Bottom Clip', 'East Death Mountain (Bottom Left)', 'East Death Mountain (Bottom)'),
|
||||
('WDDM To EDDM Bottom Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'),
|
||||
('TR Bridge Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge'),
|
||||
|
||||
('TR Pegs Ledge Clip', 'Death Mountain TR Pegs', 'Death Mountain TR Pegs Ledge'),
|
||||
('TR Pegs Ledge Descent Clip', 'Death Mountain TR Pegs Ledge', 'Death Mountain TR Pegs'), # inverted only, but doesn't hurt to exist always
|
||||
('Turtle Rock Ledge Clip', 'Turtle Rock Area', 'Turtle Rock Ledge'),
|
||||
|
||||
('Mountain Entry To Ledge Clip', 'Mountain Entry Area', 'Mountain Entry Ledge'),
|
||||
('Bumper Cave Ledge Clip', 'Bumper Cave Area', 'Bumper Cave Ledge'),
|
||||
('Mountain Ledge Drop Clip', 'Mountain Entry Ledge', 'Mountain Entry Entrance'),
|
||||
('Bumper Cave Ledge Drop Clip', 'Bumper Cave Ledge', 'Bumper Cave Entrance'),
|
||||
|
||||
('Potion Shop Northbound Rock Bypass Clip', 'Potion Shop Area', 'Potion Shop Northeast'),
|
||||
('Potion Shop Southbound Rock Bypass Clip', 'Potion Shop Northeast', 'Potion Shop Area'),
|
||||
('Dark Witch Northbound Rock Bypass Clip', 'Dark Witch Area', 'Dark Witch Northeast'),
|
||||
('Dark Witch Southbound Rock Bypass Clip', 'Dark Witch Northeast', 'Dark Witch Area'),
|
||||
|
||||
('Hyrule Castle To Water Clip', 'Hyrule Castle Area', 'Hyrule Castle Water'), #fake flipper
|
||||
|
||||
#('Bat Cave River Clip Spot', 'Blacksmith Area', 'Bat Cave Ledge'), #cannot guarantee camera correction
|
||||
|
||||
('Maze Race Item Get Ledge Clip', 'Maze Race Area', 'Maze Race Prize'),
|
||||
|
||||
('Tree Line Water Clip', 'Tree Line Area', 'Tree Line Water'), #requires flippers
|
||||
('Dark Tree Line Water Clip', 'Dark Tree Line Area', 'Dark Tree Line Water'), #requires flippers
|
||||
|
||||
('Desert To Teleporter Clip', 'Desert Area', 'Desert Palace Teleporter Ledge'),
|
||||
('Mire To Teleporter Clip', 'Misery Mire Area', 'Misery Mire Teleporter Ledge'),
|
||||
('Desert To Bombos Tablet Clip', 'Desert Area', 'Bombos Tablet Ledge'),
|
||||
|
||||
('Lake Hylia To Shore Clip', 'Lake Hylia Area', 'Lake Hylia South Shore'),
|
||||
('Ice Lake To Shore Clip', 'Ice Lake Area', 'Ice Lake Ledge (West)')
|
||||
|
||||
#('Desert Pass To Zora Clip', 'Desert Pass Area', 'Zoras Domain', ) #revisit when Zora is shuffled
|
||||
]
|
||||
|
||||
# Common structure for cross-screen connections:
|
||||
# (name, from_region, to_region) <- each three consists of [LW, DW]
|
||||
# This is so OWR Tile Swap can properly connect both connections, and simultaneously be aware of which one requires pearl
|
||||
# Note: Some clips have no way to reach the OOB area, and others have no way to get from the OOB area
|
||||
# to a proper destination, these are marked with 'None'; these connections will not be made
|
||||
boots_clips = [
|
||||
(['Lumberjack DMA Clip', 'Dark Lumberjack DMA Clip'], ['Lumberjack Area', 'Dark Lumberjack Area'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)']),
|
||||
|
||||
(['Lumberjack DMD Clip', None], ['West Death Mountain (Top)', None], ['Lumberjack Area', 'Dark Lumberjack Area']),
|
||||
(['DM Glitched Bridge Clip', 'DDM Glitched Bridge Clip'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)']),
|
||||
(['WDM to EDM Top Clip', 'WDDM to EDDM Top Clip'], ['West Death Mountain (Top)', 'West Dark Death Mountain (Top)'], ['East Death Mountain (Top West)', None]),
|
||||
(['Sanctuary DMD Clip', 'Chapel DMD Clip'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Sanctuary Area', 'Dark Chapel Area']),
|
||||
(['Graveyard Ledge DMD Clip', 'Dark Graveyard DMD Clip', ], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Graveyard Ledge', 'Dark Graveyard North']),
|
||||
(['Kings Grave DMD Clip', 'Dark Kings Grave DMD Clip'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Kings Grave Area', None]),
|
||||
|
||||
(['EDM to WDM Top Clip', 'EDDM To WDDM Clip'], ['East Death Mountain (Top West)', 'East Dark Death Mountain (Top)'], ['West Death Mountain (Top)', 'West Dark Death Mountain (Top)']),
|
||||
(['EDM To TR Pegs Clip', 'EDDM To TR Clip'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)'], ['Death Mountain TR Pegs', None]),
|
||||
(['EDM DMD FAWT Clip', 'Dark Witch DMD FAWT Clip'], ['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], ['Potion Shop Area', 'Dark Witch Area']),
|
||||
(['WDM DMD To River Bend Clip', 'WDDM DMD To Qirn Jump Clip'], ['East Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom Left)'], ['River Bend Area', 'Qirn Jump Area']),
|
||||
(['EDM DMD To River Bend Clip', 'EDDM DMD To Qirn Jump Clip'], ['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], ['River Bend Area', 'Qirn Jump Area']),
|
||||
|
||||
(['TR Pegs To EDM Clip', 'TR To EDDM Clip'], ['Death Mountain TR Pegs', 'Turtle Rock Area'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)']),
|
||||
(['Zora DMD Clip', 'Catfish DMD Clip'], ['Death Mountain TR Pegs', 'Turtle Rock Area'], ['Zora Waterfall Area', 'Catfish Area']),
|
||||
|
||||
(['Mountain Entry To Pond Clip', 'Bumper Cave To Pond Clip'], ['Mountain Entry Area', 'Bumper Cave Area'], ['Kakariko Pond Area', 'Outcast Pond Area']),
|
||||
|
||||
(['Zora Waterfall Ledge Clip', 'Catfish Ledge Clip'], ['Zora Waterfall Area', 'Catfish Area'], ['Zora Approach Area', 'Catfish Approach Area']),
|
||||
|
||||
#(['Pond DMA Clip', 'Dark Pond DMA Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)']), #cannot guarantee camera correction
|
||||
(['Pond To Mountain Entry Clip', 'Pond To Bumper Cave Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['Mountain Entry Area', 'Bumper Cave Area']),
|
||||
(['Pond To Bonk Rocks Clip', 'Pond To Chapel Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['Bonk Rock Ledge', 'Dark Chapel Area']),
|
||||
|
||||
(['River Bend To Potion Shop Clip', 'Qirn Jump To Dark Witch Clip'], ['River Bend East Bank', 'Qirn Jump East Bank'], ['Potion Shop Area', 'Dark Witch Area']),
|
||||
(['River Bend To Wooden Bridge Clip', 'Qirn Jump To Broken Bridge North Clip'], ['River Bend East Bank', 'Qirn Jump East Bank'], ['Wooden Bridge Area', 'Broken Bridge Northeast']),
|
||||
(['River Bend To Broken Bridge Clip', 'Qirn Jump To Broken Bridge Clip'], ['River Bend East Bank', 'Qirn Jump East Bank'], [None, 'Broken Bridge Area']),
|
||||
|
||||
(['Potion Shop To EP Clip', 'Dark Witch To PoD Clip'], ['Potion Shop Area', 'Dark Witch Area'], ['Eastern Palace Area', 'Palace of Darkness Area']),
|
||||
(['Potion Shop To River Bend Clip', 'Dark Witch To Qirn Jump Clip'], ['Potion Shop Area', 'Dark Witch Area'], ['River Bend East Bank', 'Qirn Jump East Bank']),
|
||||
(['Potion Shop To Zora Approach Clip', 'Dark Witch To Catfish Approach Clip'], ['Potion Shop Northeast', 'Dark Witch Northeast'], ['Zora Approach Area', 'Catfish Approach Area']),
|
||||
|
||||
(['Zora Approach To Potion Shop Clip', 'Catfish Approach To Dark Witch Clip'], ['Zora Approach Area', 'Catfish Approach Area'], ['Potion Shop Area', 'Dark Witch Area']),
|
||||
(['Zora Approach To PoD Clip', 'Catfish Approach To PoD Clip'], ['Zora Approach Area', 'Catfish Approach Area'], [None, 'Palace of Darkness Area']),
|
||||
|
||||
(['Kakariko Bomb Hut Clip', 'VoO To Dig Game Clip'], ['Kakariko Southwest', 'Village of Outcasts Area'], ['Maze Race Area', 'Dig Game Area']),
|
||||
(['Kakariko To Dig Game Hook Clip', 'VoO To Dig Game Hook Clip'], ['Kakariko Southwest', 'Village of Outcasts Area'], [None, 'Dig Game Ledge']), #requires hookshot
|
||||
|
||||
(['Forgotten Forest To Blacksmith Clip', None], ['Forgotten Forest Area', None], ['Hyrule Castle Water', 'Pyramid Water']), #fake flipper
|
||||
|
||||
(['Wooden Bridge To Dunes Clip', 'Broken Bridge To Dunes Clip'], ['Wooden Bridge Area', 'Broken Bridge West'], ['Sand Dunes Area', 'Dark Dunes Area']),
|
||||
(['Wooden Bridge To Water Clip', 'Broken Bridge To Water Clip'], ['Wooden Bridge Area', 'Broken Bridge West'], [None, 'Pyramid Water']), #fake flipper
|
||||
|
||||
(['Eastern Palace To Zora Approach Clip', None], ['Eastern Palace Area', None], ['Zora Approach Area', 'Catfish Approach Area']),
|
||||
(['Eastern Palace To Nook Clip', None], ['Eastern Palace Area', None], ['Eastern Nook Area', 'Palace of Darkness Nook Area']),
|
||||
(['Eastern Palace To Cliff Clip', 'PoD To Cliff Clip'], ['Eastern Palace Area', 'Palace of Darkness Area'], ['Eastern Cliff', 'Darkness Cliff']),
|
||||
|
||||
(['Sand Dunes To Cliff Clip', 'Dark Dunes To Cliff Clip'], ['Sand Dunes Area', 'Dark Dunes Area'], ['Eastern Cliff', 'Darkness Cliff']),
|
||||
(['Sand Dunes To Water Clip', 'Dark Dunes To Water Clip'], ['Sand Dunes Area', 'Dark Dunes Area'], [None, 'Pyramid Water']), #fake flipper
|
||||
|
||||
(['Maze Race To Desert Ledge Clip', 'Dig Game To Mire Clip'], ['Maze Race Area', 'Dig Game Area'], ['Desert Ledge', 'Misery Mire Area']),
|
||||
(['Maze Race To Desert Boss Clip', 'Dig Game To Desert Boss Clip'], ['Maze Race Area', 'Dig Game Area'], ['Desert Palace Entrance (North) Spot', None]),
|
||||
(['Suburb To Cliff Clip', 'Archery Game To Cliff Clip'], ['Kakariko Suburb Area', 'Archery Game Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
(['Central Bonk Rocks To Cliff Clip', 'Dark Bonk Rocks To Cliff Clip'], ['Central Bonk Rocks Area', 'Dark Bonk Rocks Area'], ['Central Cliffs', 'Dark Central Cliffs']),
|
||||
(['Links House To Cliff Clip', 'Bomb Shop To Cliff Clip'], ['Links House Area', 'Big Bomb Shop Area'], ['Central Cliffs', 'Dark Central Cliffs']),
|
||||
(['Stone Bridge To Cliff Clip', 'Hammer Bridge To Cliff Clip'], ['Stone Bridge Area', 'Hammer Bridge South Area'], ['Central Cliffs', 'Dark Central Cliffs']),
|
||||
(['Eastern Nook To Eastern Clip', None], ['Eastern Nook Area', None], ['Eastern Palace Area', 'Palace of Darkness Area']),
|
||||
(['Eastern Nook To Ice Cave FAWT Clip', 'PoD Nook To Shopping Mall FAWT Clip'], ['Eastern Nook Area', 'Palace of Darkness Nook Area'], ['Ice Cave Area', 'Shopping Mall Area']),
|
||||
|
||||
(['Links To Bridge FAWT Clip', 'Bomb Shop To Hammer Bridge FAWT Clip'], ['Links House Area', 'Big Bomb Shop Area'], ['Stone Bridge Area', 'Hammer Bridge North Area']), #fake flipper
|
||||
|
||||
(['Stone Bridge To Water Clip', 'Hammer Bridge To Water Clip'], ['Stone Bridge Area', 'Hammer Bridge North Area'], [None, 'Pyramid Water']), #fake flipper
|
||||
|
||||
(['Desert To Maze Race Clip', None], ['Desert Ledge', None], ['Maze Race Area', 'Dig Game Area']),
|
||||
(['Desert To Cliff Clip', 'Mire To Cliff Clip'], ['Desert Area', 'Misery Mire Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
|
||||
(['Flute Boy To Cliff Clip', 'Stumpy To Cliff Clip'], ['Flute Boy Approach Area', 'Stumpy Approach Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
(['Cave 45 To Cliff Clip', None], ['Cave 45 Ledge', None], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
|
||||
(['C Whirlpool To Cliff Clip', 'Dark C Whirlpool To Cliff Clip'], ['C Whirlpool Area', 'Dark C Whirlpool Area'], ['Central Cliffs', 'Dark Central Cliffs']),
|
||||
(['C Whirlpool Outer To Cliff Clip', 'Dark C Whirlpool Outer To Cliff Clip'], ['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], ['Central Cliffs', 'Dark Central Cliffs']),
|
||||
|
||||
(['Statues To Cliff Clip', 'Hype To Cliff Clip'], ['Statues Area', 'Hype Cave Area'], ['Central Cliffs', 'Dark Central Cliffs']),
|
||||
|
||||
(['Lake Hylia To Statues Clip', 'Ice Lake To Hype Clip'], ['Lake Hylia Area', 'Ice Lake Area'], ['Statues Area', 'Hype Cave Area']),
|
||||
(['Lake Hylia To South Pass Clip', 'Ice Lake To South Pass Clip'], ['Lake Hylia Area', 'Ice Lake Area'], ['South Pass Area', 'Dark South Pass Area']),
|
||||
|
||||
(['Desert Pass To Cliff Clip', 'Swamp Nook To Cliff Clip'], ['Desert Pass Area', 'Swamp Nook Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
(['Desert Pass Southeast To Cliff Clip', None], ['Desert Pass Southeast', None], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
|
||||
(['Dam To Cliff Clip', 'Swamp To Cliff Clip'], ['Dam Area', 'Swamp Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']),
|
||||
(['Dam To Desert Pass Southeast Clip', 'Swamp To Desert Pass Southeast Clip'], ['Dam Area', 'Swamp Area'], ['Desert Pass Southeast', None]),
|
||||
|
||||
(['South Pass To Lake Hylia Clip', 'South Pass To Ice Lake Clip'], ['South Pass Area', 'Dark South Pass Area'], ['Lake Hylia Area', 'Ice Lake Area']),
|
||||
(['South Pass To Shore Clip', 'South Pass To Dark Shore Clip'], ['South Pass Area', 'Dark South Pass Area'], ['Lake Hylia South Shore', 'Ice Lake Ledge (West)']),
|
||||
#(['Octoballoon To Shore Clip', 'Bomber Corner To Shore Clip'], ['Octoballoon Area', 'Bomber Corner Area'], ['Lake Hylia South Shore', 'Ice Lake Ledge (East)']), #map wrap hardlock risk
|
||||
|
||||
(['HC Water To Blacksmith Clip', 'Pyramid Water To Hammerpegs Clip'], ['Hyrule Castle Water', 'Pyramid Water'], ['Blacksmith Area', 'Hammer Pegs Area']), #TODO: THIS IS NOT A BOOTS CLIP, this is a normal connection that needs to occur somewhere
|
||||
([None, 'Pyramid Water To Bomb Shop Clip'], [None, 'Pyramid Water'], ['Links House Area', 'Big Bomb Shop Area']) #TODO: THIS IS NOT A BOOTS CLIP, this is a normal connection that needs to occur somewhere
|
||||
]
|
||||
|
||||
mirror_clips_local = [
|
||||
('Desert East Mirror Clip', 'Misery Mire Area', 'Desert Palace Mouth'),
|
||||
('EDDM Mirror Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'),
|
||||
('EDDM Mirror Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge')
|
||||
]
|
||||
|
||||
mirror_clips = [
|
||||
([None, 'Qirn Jump Bunny DMD Clip'], [None, 'East Dark Death Mountain (Bottom Left)'], ['River Bend Area', 'Qirn Jump Area'])
|
||||
]
|
||||
|
||||
mirror_offsets = [
|
||||
(['DM Offset Mirror', 'DDM Offset Mirror'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Hyrule Castle Courtyard', 'Pyramid Area'], ['Pyramid Area', 'Hyrule Castle Courtyard']),
|
||||
(['DM To HC Ledge Offset Mirror', 'DDM To HC Ledge Offset Mirror'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Hyrule Castle Ledge', None], ['Pyramid Area', None])
|
||||
]
|
||||
Reference in New Issue
Block a user