From 722dfa2b69b6658fb0b74000e0eb01ccae66cb19 Mon Sep 17 00:00:00 2001 From: qadan Date: Tue, 11 Feb 2020 01:14:57 -0400 Subject: [PATCH] fixing up inverted too --- EntranceShuffle.py | 34 +++++++++++++++++++++++++++++++++- InvertedRegions.py | 27 +++++++++++++++++---------- OWGSets.py | 36 ++++++++++++++++++++++++++---------- Regions.py | 6 +++--- Rules.py | 24 +++++++++++++++--------- 5 files changed, 94 insertions(+), 33 deletions(-) diff --git a/EntranceShuffle.py b/EntranceShuffle.py index d9c29422..39e17dfd 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -3020,6 +3020,8 @@ mandatory_connections = [('Lake Hylia Central Island Pier', 'Lake Hylia Central ('Dark Death Mountain (East Bottom) Jump', 'Dark Death Mountain (East Bottom)'), ('Bat Cave River Clip Spot', 'Bat Cave Drop Ledge'), ('Turtle Rock (Top) Clip Spot', 'Turtle Rock (Top)'), + ('Dark Death Mountain Descent', 'West Dark World'), + ('Bombos Tablet Clip Spot', 'Bombos Tablet Ledge'), ] inverted_mandatory_connections = [('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'), @@ -3080,6 +3082,8 @@ inverted_mandatory_connections = [('Lake Hylia Central Island Pier', 'Lake Hylia ('West Dark World Gap', 'West Dark World'), ('East Dark World Broken Bridge Pass', 'East Dark World'), ('Northeast Dark World Broken Bridge Pass', 'Northeast Dark World'), + ('Catfish Exit Rock', 'Northeast Dark World'), + ('Catfish Entrance Rock', 'Catfish'), ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), ('Bumper Cave Entrance Drop', 'West Dark World'), ('Bumper Cave Ledge Drop', 'West Dark World'), @@ -3234,7 +3238,35 @@ inverted_mandatory_connections = [('Lake Hylia Central Island Pier', 'Lake Hylia ('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'), ('Bomb Hut Inner Bushes', 'Light World'), ('Bomb Hut Outer Bushes', 'Bomb Hut Area'), - ('Bomb Hut Mirror Spot', 'West Dark World')] + ('Bomb Hut Mirror Spot', 'West Dark World'), + ('Light World DMA Clip Spot', 'Death Mountain'), + ('Hera Ascent', 'Death Mountain (Top)'), + ('Death Mountain Return Ledge Clip Spot', 'Death Mountain Return Ledge'), + ('Death Mountain Glitched Bridge', 'East Death Mountain (Top)'), + ('Dark Death Mountain Ledge Clip Spot', 'Dark Death Mountain Ledge'), + ('Zora Descent Clip Spot', 'Zoras River'), + ('Desert Northern Cliffs', 'Desert Ledge'), + ('Desert Northern Cliffs', 'Desert Palace Entrance (North) Spot'), + ('Lake Hylia Island Clip Spot', 'Lake Hylia Island'), + ('Dark World DMA Clip Spot', 'Dark Death Mountain'), + ('Bumper Cave Ledge Clip Spot', 'Bumper Cave Ledge'), + ('Hookshot Cave Island Clip Spot', 'Death Mountain Floating Island (Dark World)'), + ('Catfish Descent', 'Catfish'), + ('Death Mountain Offset Mirror', 'Light World'), + ('Hammer Pegs River Clip Spot', 'Hammer Peg Area'), + ('Dark Lake Hylia Ledge Clip Spot', 'Dark Lake Hylia Ledge'), + ('Dark Desert Cliffs Clip Spot', 'Dark Desert'), + ('Bumper Cave Ledge Clip Drop', 'Bumper Cave Entrance'), + ('Death Mountain Return Ledge Clip Drop', 'Death Mountain Entrance'), + ('Bumper Cave Entrance Clip (Broken Camera)', 'Bumper Cave Entrance'), + ('Death Mountain Entrance Clip (Broken Camera)', 'Death Mountain Entrance'), + ('Light World Bunny Descent', 'Light World'), + ('East Death Mountain (Bottom) Jump', 'East Death Mountain (Bottom)'), + ('Bat Cave River Clip Spot', 'Bat Cave Drop Ledge'), + ('Turtle Rock (Top) Clip Spot', 'Turtle Rock (Top)'), + ('Dark Death Mountain Descent', 'West Dark World'), + ('Death Mountain Descent', 'Light World'), + ('Death Mountain Bunny Descent Mirror Spot', 'Death Mountain Bunny Descent Area')] # non-shuffled entrance links default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), ("Blinds Hideout", "Blinds Hideout"), diff --git a/InvertedRegions.py b/InvertedRegions.py index cfbf5ed0..b8298bc0 100644 --- a/InvertedRegions.py +++ b/InvertedRegions.py @@ -18,7 +18,8 @@ def create_inverted_regions(world, player): 'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'East Dark World Mirror Spot', 'West Dark World Mirror Spot', 'South Dark World Mirror Spot', 'Cave 45', 'Checkerboard Cave', 'Mire Mirror Spot', 'Hammer Peg Area Mirror Spot', 'Shopping Mall Mirror Spot', 'Skull Woods Mirror Spot', 'Inverted Pyramid Entrance','Hyrule Castle Entrance (South)', 'Secret Passage Outer Bushes', 'Bush Covered Lawn Outer Bushes', - 'Potion Shop Outer Bushes', 'Graveyard Cave Outer Bushes', 'Bomb Hut Outer Bushes']), + 'Potion Shop Outer Bushes', 'Graveyard Cave Outer Bushes', 'Bomb Hut Outer Bushes', 'Light World DMA Clip Spot', 'Death Mountain Return Ledge Clip Spot', 'Bat Cave River Clip Spot', + 'Desert Northern Cliffs', 'Lake Hylia Island Clip Spot', 'Death Mountain Entrance Clip (Broken Camera)']), create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Bush Covered Lawn Inner Bushes', 'Bush Covered Lawn Mirror Spot']), create_lw_region(player, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Bomb Hut Inner Bushes', 'Bomb Hut Mirror Spot']), create_lw_region(player, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Secret Passage Inner Bushes']), @@ -125,9 +126,10 @@ def create_inverted_regions(world, player): create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']), create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']), create_lw_region(player, 'Death Mountain', 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)', 'Broken Bridge (West)', 'Death Mountain Mirror Spot']), + 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Mirror Spot', 'Death Mountain Bunny Descent Mirror Spot', + 'Death Mountain Offset Mirror', 'Hera Ascent', 'Death Mountain Glitched Bridge', 'Death Mountain Descent']), create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']), - create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)', 'Bumper Cave Ledge Mirror Spot']), + create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)', 'Bumper Cave Ledge Mirror Spot', 'Death Mountain Return Ledge Clip Drop']), create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']), create_cave_region(player, 'Spectacle Rock Cave (Bottom)', 'a connector', None, ['Spectacle Rock Cave Exit']), create_cave_region(player, 'Spectacle Rock Cave (Peak)', 'a connector', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']), @@ -146,7 +148,7 @@ def create_inverted_regions(world, player): create_cave_region(player, 'Paradox Cave', 'a connector', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']), create_cave_region(player, 'Light World Death Mountain Shop', 'a common shop'), create_lw_region(player, 'East Death Mountain (Top)', ['Floating Island'], ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'East Death Mountain Mirror Spot (Top)', 'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access', - 'Floating Island Mirror Spot']), + 'Floating Island Mirror Spot', 'Zora Descent Clip 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_cave_region(player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']), @@ -157,14 +159,16 @@ def create_inverted_regions(world, player): create_cave_region(player, 'Fairy Ascension Cave (Top)', 'a connector', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']), create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'Laser Bridge Mirror Spot']), create_lw_region(player, 'Death Mountain (Top)', ['Ether Tablet', 'Spectacle Rock'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop', 'Death Mountain (Top) Mirror Spot']), - create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)']), + create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Clip Drop']), create_dungeon_region(player, 'Tower of Hera (Bottom)', 'Tower of Hera', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']), create_dungeon_region(player, 'Tower of Hera (Basement)', 'Tower of Hera', ['Tower of Hera - Big Key Chest']), create_dungeon_region(player, 'Tower of Hera (Top)', 'Tower of Hera', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']), create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)', - 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute']), - create_dw_region(player, 'Northeast Dark World', ['Catfish'], ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'NEDW Flute', 'Dark Lake Hylia Teleporter']), + 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute', + 'Hammer Pegs River Clip Spot', 'Dark Lake Hylia Ledge Clip Spot', 'Dark Desert Cliffs Clip Spot']), + create_dw_region(player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']), + create_dw_region(player, 'Northeast Dark World', None, ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'NEDW Flute', 'Dark Lake Hylia Teleporter', 'Catfish Entrance Rock']), create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'), create_cave_region(player, 'East Dark World Hint', 'a storyteller'), create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock', 'East Dark World Bridge', 'Inverted Links House', 'Archery Game', 'Bonk Fairy (Dark)', @@ -179,7 +183,7 @@ def create_inverted_regions(world, player): 'Hype Cave - Bottom', 'Hype Cave - Generous Guy']), create_dw_region(player, 'West Dark World', ['Frog'], ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Bumper Cave Entrance Rock', 'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks', 'Red Shield Shop', 'Inverted Dark Sanctuary', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop', - 'West Dark World Teleporter', 'WDW Flute']), + 'West Dark World Teleporter', 'WDW Flute', 'Dark World DMA Clip Spot', 'Bumper Cave Ledge Clip Spot', 'Bumper Cave Entrance Clip (Broken Camera)']), create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Dark World Shop', 'Dark Grassy Lawn Flute']), create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Dark World Hammer Peg Cave', 'Peg Area Rocks', 'Hammer Peg Area Flute']), create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']), @@ -204,7 +208,9 @@ def create_inverted_regions(world, player): create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']), create_cave_region(player, 'Dark Desert Hint', 'a storyteller'), create_dw_region(player, 'Dark Death Mountain', None, ['Dark Death Mountain Drop (East)', 'Inverted Agahnims Tower', 'Superbunny Cave (Top)', 'Hookshot Cave', 'Turtle Rock', - 'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'Turtle Rock Tail Drop', 'DDM Flute']), + 'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'Turtle Rock Tail Drop', 'DDM Flute', + 'Dark Death Mountain Ledge Clip Spot', 'Hookshot Cave Island Clip Spot', 'Catfish Descent', 'Turtle Rock (Top) Clip Spot', + 'Dark Death Mountain Descent']), create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)']), create_dw_region(player, 'Turtle Rock (Top)', None, ['Dark Death Mountain Teleporter (East)', 'Turtle Rock Drop']), create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance']), @@ -297,7 +303,8 @@ def create_inverted_regions(world, player): create_dungeon_region(player, 'Agahnim 2', 'Ganon\'s Tower', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None), create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']), create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']), - create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Drop']), # houlihan room exits here in inverted + create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Drop']), # houlihan room exits here in inverted + create_dw_region(player, 'Death Mountain Bunny Descent Area', None, ['Light World Bunny Descent', 'East Death Mountain (Bottom) Jump']), # to simplify flute connections create_cave_region(player, 'The Sky', 'A Dark Sky', None, ['DDM Landing','NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing', 'DLHL Landing']) diff --git a/OWGSets.py b/OWGSets.py index b465a35b..bba90656 100644 --- a/OWGSets.py +++ b/OWGSets.py @@ -96,43 +96,50 @@ def get_superbunny_accessible_locations(): ] -def get_boots_clip_exits_lw(): +def get_boots_clip_exits_lw(inverted = False): ''' Special Light World region exits that require boots clips. ''' - return [ + exits = [ 'Bat Cave River Clip Spot', 'Light World DMA Clip Spot', 'Hera Ascent', - 'Spectacle Rock Clip Spot', 'Death Mountain Return Ledge Clip Spot', 'Death Mountain Glitched Bridge', - 'Floating Island Clip Spot', 'Zora Descent Clip Spot', - 'Graveyard Ledge Clip Spot', 'Desert Northern Cliffs', 'Lake Hylia Island Clip Spot', 'Death Mountain Entrance Clip (Broken Camera)', + 'Death Mountain Descent', ] + if not inverted: + exits.append('Spectacle Rock Clip Spot') + exits.append('Graveyard Ledge Clip Spot') + exits.append('Bombos Tablet Clip Spot') + exits.append('Floating Island Clip Spot') + return exits -def get_boots_clip_exits_dw(): +def get_boots_clip_exits_dw(inverted = False): ''' Special Dark World region exits that require boots clips. ''' - return [ + exits = [ 'Dark World DMA Clip Spot', - 'Ganons Tower Ascent', 'Bumper Cave Ledge Clip Spot', - 'Dark Death Mountain Glitched Bridge', 'Hookshot Cave Island Clip Spot', 'Catfish Descent', 'Hammer Pegs River Clip Spot', 'Dark Lake Hylia Ledge Clip Spot', 'Dark Desert Cliffs Clip Spot', 'Bumper Cave Entrance Clip (Broken Camera)', - 'Turtle Rock (Top) Clip Spot', + 'Dark Death Mountain Descent', ] + if not inverted: + exits.append('Ganons Tower Ascent') + exits.append('Dark Death Mountain Glitched Bridge') + exits.append('Turtle Rock (Top) Clip Spot') + return exits def get_glitched_speed_drops_lw(): @@ -162,3 +169,12 @@ def get_mirror_clip_spots_dw(): 'Dark Death Mountain Offset Mirror', 'Dark Death Mountain Bunny Descent Mirror Spot', ] + + +def get_mirror_clip_spots_lw(): + ''' + Inverted mirror shenanigans in logic even if the player is a bunny. + ''' + return [ + 'Death Mountain Bunny Descent Mirror Spot', + ] diff --git a/Regions.py b/Regions.py index cd20ecb0..2011b434 100644 --- a/Regions.py +++ b/Regions.py @@ -15,7 +15,7 @@ def create_regions(world, player): 'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)', 'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing', 'Hyrule Castle Main Gate', 'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'Top of Pyramid', - 'Light World DMA Clip Spot', 'Death Mountain Return Ledge Clip Spot', 'Desert Northern Cliffs', 'Lake Hylia Island Clip Spot', 'Death Mountain Entrance Clip (Broken Camera)', 'Bat Cave River Clip Spot']), + 'Light World DMA Clip Spot', 'Death Mountain Return Ledge Clip Spot', 'Desert Northern Cliffs', 'Lake Hylia Island Clip Spot', 'Death Mountain Entrance Clip (Broken Camera)', 'Bat Cave River Clip Spot', 'Bombos Tablet Clip Spot']), create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']), create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Teleporter']), create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top", @@ -118,7 +118,7 @@ def create_regions(world, player): create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']), create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']), create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']), - create_lw_region(player, 'Death Mountain', 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)', 'Broken Bridge (West)', 'Death Mountain Teleporter', 'Death Mountain Glitched Bridge', 'Graveyard Ledge Clip Spot', 'Hera Ascent']), + create_lw_region(player, 'Death Mountain', 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)', 'Broken Bridge (West)', 'Death Mountain Teleporter', 'Death Mountain Glitched Bridge', 'Graveyard Ledge Clip Spot', 'Hera Ascent', 'Death Mountain Descent']), create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']), create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)', 'Death Mountain Return Ledge Clip Drop']), create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']), @@ -199,7 +199,7 @@ def create_regions(world, player): 'Desert Palace Entrance (North) Mirror Spot', 'Dark Desert Hint', 'Dark Desert Fairy']), create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']), create_cave_region(player, 'Dark Desert Hint', 'a storyteller'), - create_dw_region(player, 'Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy', 'Ganons Tower Ascent', 'Dark Death Mountain Glitched Bridge', 'Dark Death Mountain Bunny Descent Mirror Spot', 'Dark Death Mountain Offset Mirror']), + create_dw_region(player, 'Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy', 'Ganons Tower Ascent', 'Dark Death Mountain Glitched Bridge', 'Dark Death Mountain Bunny Descent Mirror Spot', 'Dark Death Mountain Offset Mirror', 'Dark Death Mountain Descent']), create_dw_region(player, 'Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower', 'Superbunny Cave (Top)', 'Hookshot Cave', 'East Death Mountain (Top) Mirror Spot', 'Turtle Rock', 'Hookshot Cave Island Clip Spot', 'Catfish Descent', 'Dark Death Mountain Ledge Clip Spot', 'Turtle Rock (Top) Clip Spot']), create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)', 'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']), diff --git a/Rules.py b/Rules.py index 094d9d8d..3f0c3672 100644 --- a/Rules.py +++ b/Rules.py @@ -470,16 +470,17 @@ def default_rules(world, player): def forbid_overworld_glitches(world, player): - for exit in OWGSets.get_boots_clip_exits_lw(): + for exit in OWGSets.get_boots_clip_exits_lw(world.mode[player] == 'inverted'): set_rule(world.get_entrance(exit, player), lambda state: False) - for exit in OWGSets.get_boots_clip_exits_dw(): + for exit in OWGSets.get_boots_clip_exits_dw(world.mode[player] == 'inverted'): set_rule(world.get_entrance(exit, player), lambda state: False) for exit in OWGSets.get_glitched_speed_drops_lw(): set_rule(world.get_entrance(exit, player), lambda state: False) for exit in OWGSets.get_glitched_speed_drops_dw(): set_rule(world.get_entrance(exit, player), lambda state: False) - for exit in OWGSets.get_mirror_clip_spots_dw(): - set_rule(world.get_entrance(exit, player), lambda state: False) + if world.mode[player] != 'inverted': + for exit in OWGSets.get_mirror_clip_spots_dw(): + set_rule(world.get_entrance(exit, player), lambda state: False) def inverted_rules(world, player): @@ -747,9 +748,9 @@ def overworld_glitches_rules(world, player): set_rule(world.get_entrance(entrance, player), lambda state: True) # Boots-accessible locations. - for entrance in OWGSets.get_boots_clip_exits_lw(): + for entrance in OWGSets.get_boots_clip_exits_lw(world.mode[player] == 'inverted'): set_rule(world.get_entrance(entrance, player), lambda state: state.can_boots_clip_lw(player)) - for entrance in OWGSets.get_boots_clip_exits_dw(): + for entrance in OWGSets.get_boots_clip_exits_dw(world.mode[player] == 'inverted'): set_rule(world.get_entrance(entrance, player), lambda state: state.can_boots_clip_dw(player)) # Glitched speed drops. @@ -758,11 +759,16 @@ def overworld_glitches_rules(world, player): for drop in OWGSets.get_glitched_speed_drops_dw(): set_rule(world.get_entrance(drop, player), lambda state: state.can_get_glitched_speed_dw(player)) # Dark Death Mountain Ledge Clip Spot also accessible with mirror. - add_rule(world.get_entrance('Dark Death Mountain Ledge Clip Spot', player), lambda state: state.has_Mirror(player), 'or') + if world.mode[player] != 'inverted': + add_rule(world.get_entrance('Dark Death Mountain Ledge Clip Spot', player), lambda state: state.has_Mirror(player), 'or') # Mirror clip spots. - for clip_spot in OWGSets.get_mirror_clip_spots_dw(): - set_rule(world.get_entrance(clip_spot, player), lambda state: state.has_Mirror(player)) + if world.mode[player] != 'inverted': + for clip_spot in OWGSets.get_mirror_clip_spots_dw(): + set_rule(world.get_entrance(clip_spot, player), lambda state: state.has_Mirror(player)) + else: + for clip_spot in OWGSets.get_mirror_clip_spots_lw(): + set_rule(world.get_entrance(clip_spot, player), lambda state: state.has_Mirror(player)) # Locations that you can superbunny mirror into, but need a sword to clear. superbunny_mirror_weapon = lambda state: state.has_Mirror(player) and state.has_sword(player)