Merging Regions and Rulesets

This commit is contained in:
codemann8
2022-12-13 01:40:44 -06:00
parent 5ac01f4f35
commit 8e08f336d0
15 changed files with 720 additions and 1222 deletions

View File

@@ -134,26 +134,26 @@ def get_boots_clip_exits_lw(inverted = False):
Special Light World region exits that require boots clips.
"""
yield ('Bat Cave River Clip Spot', 'Light World', 'Bat Cave Drop Ledge')
yield ('Light World DMA Clip Spot', 'Light World', 'Death Mountain')
yield ('Hera Ascent', 'Death Mountain', 'Death Mountain (Top)')
yield ('Bat Cave River Clip Spot', 'Light World', 'Bat Cave Ledge')
yield ('Light World DMA Clip Spot', 'Light World', 'Death Mountain (West Bottom)')
yield ('Hera Ascent', 'Death Mountain (West Bottom)', 'Death Mountain (Top)')
yield ('Death Mountain Return Ledge Clip Spot', 'Light World', 'Death Mountain Return Ledge')
yield ('Death Mountain Entrance Clip Spot', 'Light World', 'Death Mountain Entrance')
yield ('Death Mountain Glitched Bridge', 'Death Mountain', 'East Death Mountain (Top)')
yield ('Zora Descent Clip Spot', 'East Death Mountain (Top)', 'Zoras River')
yield ('Death Mountain Glitched Bridge', 'Death Mountain (West Bottom)', 'East Death Mountain (Top)')
yield ('Zora Descent Clip Spot', 'East Death Mountain (Top)', 'Zoras Domain')
yield ('Desert Northern Cliffs', 'Light World', 'Desert Northern Cliffs')
yield ('Desert Ledge Dropdown', 'Desert Northern Cliffs', 'Desert Ledge')
yield ('Desert Palace Entrance Dropdown', 'Desert Northern Cliffs', 'Desert Palace Entrance (North) Spot')
yield ('Lake Hylia Island Clip Spot', 'Light World', 'Lake Hylia Island')
yield ('Death Mountain Descent', 'Death Mountain', 'Light World')
yield ('Kings Grave Clip Spot', 'Death Mountain', 'Kings Grave Area')
yield ('Death Mountain Descent', 'Death Mountain (West Bottom)', 'Light World')
yield ('Kings Grave Clip Spot', 'Death Mountain (West Bottom)', 'Kings Grave Area')
if not inverted:
yield ('Graveyard Ledge Clip Spot', 'Death Mountain', 'Graveyard Ledge')
yield ('Desert Ledge (Northeast) Dropdown', 'Desert Northern Cliffs', 'Desert Ledge (Northeast)')
yield ('Graveyard Ledge Clip Spot', 'Death Mountain (West Bottom)', 'Graveyard Ledge')
yield ('Desert Ledge (Northeast) Dropdown', 'Desert Northern Cliffs', 'Desert Checkerboard Ledge')
yield ('Spectacle Rock Clip Spot', 'Death Mountain (Top)', 'Spectacle Rock')
yield ('Bombos Tablet Clip Spot', 'Light World', 'Bombos Tablet Ledge')
yield ('Floating Island Clip Spot', 'East Death Mountain (Top)', 'Death Mountain Floating Island (Light World)')
yield ('Floating Island Clip Spot', 'East Death Mountain (Top)', 'Death Mountain Floating Island')
yield ('Cave 45 Clip Spot', 'Light World', 'Cave 45 Ledge')
@@ -162,12 +162,12 @@ def get_boots_clip_exits_dw(inverted):
Special Dark World region exits that require boots clips.
"""
yield ('Dark World DMA Clip Spot', 'West Dark World', inverted and 'Dark Death Mountain' or 'Dark Death Mountain (West Bottom)')
yield ('Dark World DMA Clip Spot', 'West Dark World', 'Dark Death Mountain (West Bottom)')
yield ('Bumper Cave Ledge Clip Spot', 'West Dark World', 'Bumper Cave Ledge')
yield ('Bumper Cave Entrance Clip Spot', 'West Dark World', 'Bumper Cave Entrance')
yield ('Catfish Descent', inverted and 'Dark Death Mountain' or 'Dark Death Mountain (Top)', 'Catfish')
yield ('Catfish Descent', 'Dark Death Mountain (Top)', 'Catfish Area')
yield ('Hammer Pegs River Clip Spot', 'East Dark World', 'Hammer Peg Area')
yield ('Dark Lake Hylia Ledge Clip Spot', 'East Dark World', 'Dark Lake Hylia Ledge')
yield ('Dark Lake Hylia Ledge Clip Spot', 'East Dark World', 'Southeast Dark World')
yield ('Dark Desert Cliffs Clip Spot', 'South Dark World', 'Dark Desert')
yield ('DW Floating Island Clip Spot', 'Dark Death Mountain (East Bottom)', 'Death Mountain Floating Island (Dark World)')
@@ -184,17 +184,16 @@ def get_glitched_speed_drops_dw(inverted = False):
"""
Dark World drop-down ledges that require glitched speed.
"""
yield ('Dark Death Mountain Ledge Clip Spot', inverted and 'Dark Death Mountain' or 'Dark Death Mountain (Top)', 'Dark Death Mountain Ledge')
yield ('Dark Death Mountain Ledge Clip Spot', 'Dark Death Mountain (Top)', 'Dark Death Mountain Ledge')
def get_mirror_clip_spots_dw():
"""
Out of bounds transitions using the mirror
"""
yield ('Dark Death Mountain Bunny Descent Mirror Spot', 'Dark Death Mountain (West Bottom)', 'Dark Death Mountain Bunny Descent Area')
yield ('West Dark World Bunny Descent', 'Dark Death Mountain Bunny Descent Area', 'West Dark World')
yield ('Dark Death Mountain (East Bottom) Jump', 'Dark Death Mountain Bunny Descent Area', 'Dark Death Mountain (East Bottom)')
yield ('Desert East Mirror Clip', 'Dark Desert', 'Desert Palace Lone Stairs')
yield ('Dark Death Mountain Bunny Descent Mirror Spot', 'Dark Death Mountain (West Bottom)', 'West Dark World')
yield ('Dark Death Mountain Bunny Mirror To East Jump', 'Dark Death Mountain (West Bottom)', 'Dark Death Mountain (East Bottom)')
yield ('Desert East Mirror Clip', 'Dark Desert', 'Desert Palace Mouth')
def get_mirror_offset_spots_dw():
@@ -208,8 +207,8 @@ def get_mirror_offset_spots_lw(player):
"""
Mirror shenanigans placing a mirror portal with a broken camera
"""
yield ('Death Mountain Offset Mirror', 'Death Mountain', 'Light World')
yield ('Death Mountain Offset Mirror (Houlihan Exit)', 'Death Mountain', 'Hyrule Castle Ledge', lambda state: state.has_Mirror(player) and state.can_boots_clip_dw(player) and state.has_Pearl(player))
yield ('Death Mountain Offset Mirror', 'Death Mountain (West Bottom)', 'Light World')
yield ('Death Mountain Offset Mirror (Houlihan Exit)', 'Death Mountain (West Bottom)', 'Hyrule Castle Ledge', lambda state: state.has_Mirror(player) and state.can_boots_clip_dw(player) and state.has_Pearl(player))
def create_owg_connections(world, player):
@@ -251,16 +250,14 @@ def overworld_glitches_rules(world, player):
# Regions that require the boots and some other stuff.
if world.mode[player] != 'inverted':
world.get_entrance('Turtle Rock Teleporter', player).access_rule = lambda state: (state.can_boots_clip_lw(player) or state.can_lift_heavy_rocks(player)) and state.has('Hammer', player)
add_alternate_rule(world.get_entrance('Waterfall of Wishing', player), lambda state: state.has('Moon Pearl', player) or state.has_Boots(player))
add_alternate_rule(world.get_entrance('Waterfall Fairy Access', player), lambda state: state.has_Pearl(player) or state.has_Boots(player)) # assumes access to Waterwalk ability (boots case)
else:
add_alternate_rule(world.get_entrance('Waterfall of Wishing Cave', player), lambda state: state.has('Moon Pearl', player))
add_alternate_rule(world.get_entrance('Waterfall Fairy Access', player), lambda state: state.has_Pearl(player))
world.get_entrance('Dark Desert Teleporter', player).access_rule = lambda state: (state.can_flute(player) or state.has_Boots(player)) and state.can_lift_heavy_rocks(player)
add_alternate_rule(world.get_entrance('Catfish Exit Rock', player), lambda state: state.can_boots_clip_dw(player))
world.get_entrance('Dark Desert Teleporter', player).access_rule = lambda state: (state.can_flute(player) or state.can_boots_clip_dw(player)) and state.can_lift_heavy_rocks(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('East Dark World Broken Bridge Pass', player), lambda state: state.can_boots_clip_dw(player))
# Zora's Ledge via waterwalk setup.
add_alternate_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has_Boots(player))
add_alternate_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.can_boots_clip_lw(player)) # assumes access to Waterwalk ability
def add_alternate_rule(entrance, rule):