ensure inverted runs

This commit is contained in:
qadan 2020-02-08 19:00:21 -04:00
parent c6cf8c1ebe
commit e4ab046027
2 changed files with 27 additions and 25 deletions

View File

@ -2,18 +2,20 @@
Helper functions to deliver entrance/exit/region sets to OWG rules. Helper functions to deliver entrance/exit/region sets to OWG rules.
''' '''
def get_immediately_accessible_entrances(): def get_immediately_accessible_entrances(world, player):
''' '''
Entrances that are available with no items at all. Entrances that are available with no items at all.
At this point, these are fake flipper spots. At this point, these are fake flipper spots.
''' '''
return [ entrances = [
'Hobo Bridge', 'Hobo Bridge',
'Zoras River', 'Zoras River',
'Lake Hylia Island Mirror Spot',
'Capacity Upgrade', 'Capacity Upgrade',
] ]
if world.mode[player] != 'inverted':
entrances.append('Lake Hylia Island Mirror Spot')
return entrances
def get_lw_boots_accessible_entrances(world, player): def get_lw_boots_accessible_entrances(world, player):
''' '''
@ -24,7 +26,6 @@ def get_lw_boots_accessible_entrances(world, player):
'Desert Ledge Return Rocks', 'Desert Ledge Return Rocks',
'Desert Palace Entrance (West)', 'Desert Palace Entrance (West)',
'Desert Palace Entrance (North)', 'Desert Palace Entrance (North)',
'Flute Spot 1',
'Broken Bridge (East)', 'Broken Bridge (East)',
'Death Mountain Drop', 'Death Mountain Drop',
'Old Man Cave (East)', 'Old Man Cave (East)',
@ -34,7 +35,6 @@ def get_lw_boots_accessible_entrances(world, player):
'Spectacle Rock Cave', 'Spectacle Rock Cave',
'Spectacle Rock Cave Peak', 'Spectacle Rock Cave Peak',
'Spectacle Rock Cave (Bottom)', 'Spectacle Rock Cave (Bottom)',
'Spectacle Rock Mirror Spot',
'Broken Bridge (West)', 'Broken Bridge (West)',
'Broken Bridge (East)', 'Broken Bridge (East)',
'East Death Mountain Drop', 'East Death Mountain Drop',
@ -43,7 +43,6 @@ def get_lw_boots_accessible_entrances(world, player):
'Fairy Ascension Cave (Bottom)', 'Fairy Ascension Cave (Bottom)',
'East Death Mountain (Top)', 'East Death Mountain (Top)',
'Death Mountain (Top)', 'Death Mountain (Top)',
'Spectacle Rock Drop',
'Death Mountain Return Cave (West)', 'Death Mountain Return Cave (West)',
'Paradox Cave (Bottom)', 'Paradox Cave (Bottom)',
'Paradox Cave (Middle)', 'Paradox Cave (Middle)',
@ -51,23 +50,24 @@ def get_lw_boots_accessible_entrances(world, player):
'Spiral Cave (Bottom)', 'Spiral Cave (Bottom)',
'Paradox Cave (Top)', 'Paradox Cave (Top)',
'Spiral Cave Ledge Access', 'Spiral Cave Ledge Access',
'Fairy Ascension Ledge',
'Cave 45 Mirror Spot',
'Graveyard Ledge Mirror Spot',
'Bumper Cave Ledge Mirror Spot', 'Bumper Cave Ledge Mirror Spot',
'Desert Ledge (Northeast) Mirror Spot',
'Desert Ledge Mirror Spot',
'Desert Palace Entrance (North) Mirror Spot',
'East Death Mountain (Top) Mirror Spot',
'Spiral Cave Mirror Spot',
'Fairy Ascension Mirror Spot',
'Floating Island Mirror Spot', 'Floating Island Mirror Spot',
] ]
if world.mode[player] != 'inverted': if world.mode[player] != 'inverted':
entrances.append('Cave 45') entrances.append('Cave 45')
entrances.append('Graveyard Cave') entrances.append('Graveyard Cave')
entrances.append('Flute Spot 1')
entrances.append('Spectacle Rock Mirror Spot')
entrances.append('Spectacle Rock Drop')
entrances.append('Fairy Ascension Ledge')
entrances.append('Cave 45 Mirror Spot')
entrances.append('Graveyard Ledge Mirror Spot')
entrances.append('Desert Ledge (Northeast) Mirror Spot')
entrances.append('Desert Ledge Mirror Spot')
entrances.append('Desert Palace Entrance (North) Mirror Spot')
entrances.append('East Death Mountain (Top) Mirror Spot')
entrances.append('Spiral Cave Mirror Spot')
entrances.append('Fairy Ascension Mirror Spot')
return entrances return entrances
@ -83,11 +83,11 @@ def get_lw_boots_accessible_locations():
] ]
def get_dw_boots_accessible_entrances(): def get_dw_boots_accessible_entrances(world, player):
''' '''
Dark World entrances that can be accessed with boots clips. Dark World entrances that can be accessed with boots clips.
''' '''
return [ entrances = [
'Northeast Dark World Broken Bridge Pass', 'Northeast Dark World Broken Bridge Pass',
'Peg Area Rocks', 'Peg Area Rocks',
'Grassy Lawn Pegs', 'Grassy Lawn Pegs',
@ -97,19 +97,15 @@ def get_dw_boots_accessible_entrances():
'Floating Island Drop', 'Floating Island Drop',
'Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (East)',
'Village of Outcasts Drop', 'Village of Outcasts Drop',
'Dark Lake Hylia Ledge',
'Hype Cave', 'Hype Cave',
'Dark World Potion Shop', 'Dark World Potion Shop',
'Big Bomb Shop',
'Archery Game', 'Archery Game',
'Brewery', 'Brewery',
'C-Shaped House', 'C-Shaped House',
'Chest Game', 'Chest Game',
'Thieves Town', 'Thieves Town',
'Kings Grave Mirror Spot',
'Bumper Cave Entrance Rock', 'Bumper Cave Entrance Rock',
'Red Shield Shop', 'Red Shield Shop',
'Dark Sanctuary Hint',
'Fortune Teller (Dark)', 'Fortune Teller (Dark)',
'Dark World Lumberjack Shop', 'Dark World Lumberjack Shop',
'Misery Mire', 'Misery Mire',
@ -117,6 +113,12 @@ def get_dw_boots_accessible_entrances():
'Dark Desert Hint', 'Dark Desert Hint',
'Dark Desert Fairy', 'Dark Desert Fairy',
] ]
if world.mode[player] != 'inverted':
entrances.append('Dark Lake Hylia Ledge')
entrances.append('Big Bomb Shop')
entrances.append('Kings Grave Mirror Spot')
entrances.append('Dark Sanctuary Hint')
return entrances
def get_dw_boots_accessible_locations(): def get_dw_boots_accessible_locations():

View File

@ -722,7 +722,7 @@ def overworld_glitches_rules(world, player):
# around. We could detect a path to determine if one can be stored. # around. We could detect a path to determine if one can be stored.
# Spots that are immediately accessible. # Spots that are immediately accessible.
for entrance in OWGSets.get_immediately_accessible_entrances(): for entrance in OWGSets.get_immediately_accessible_entrances(world, player):
set_rule(world.get_entrance(entrance, player), lambda state: True) set_rule(world.get_entrance(entrance, player), lambda state: True)
# Boots-accessible locations. # Boots-accessible locations.
@ -732,7 +732,7 @@ def overworld_glitches_rules(world, player):
add_rule(world.get_entrance(entrance, player), needs_boots_and_pearl if world.mode[player] == 'inverted' else needs_boots, 'or') add_rule(world.get_entrance(entrance, player), needs_boots_and_pearl if world.mode[player] == 'inverted' else needs_boots, 'or')
for location in OWGSets.get_lw_boots_accessible_locations(): for location in OWGSets.get_lw_boots_accessible_locations():
add_rule(world.get_location(location, player), needs_boots_and_pearl if world.mode[player] == 'inverted' else needs_boots, 'or') add_rule(world.get_location(location, player), needs_boots_and_pearl if world.mode[player] == 'inverted' else needs_boots, 'or')
for entrance in OWGSets.get_dw_boots_accessible_entrances(): for entrance in OWGSets.get_dw_boots_accessible_entrances(world, player):
add_rule(world.get_entrance(entrance, player), needs_boots_and_pearl if world.mode[player] != 'inverted' else needs_boots, 'or') add_rule(world.get_entrance(entrance, player), needs_boots_and_pearl if world.mode[player] != 'inverted' else needs_boots, 'or')
for location in OWGSets.get_dw_boots_accessible_locations(): for location in OWGSets.get_dw_boots_accessible_locations():
add_rule(world.get_location(location, player), needs_boots_and_pearl if world.mode[player] != 'inverted' else needs_boots, 'or') add_rule(world.get_location(location, player), needs_boots_and_pearl if world.mode[player] != 'inverted' else needs_boots, 'or')