Reduce mandatory exits for OWG logic to only those that cannot be reached by glitches
This commit is contained in:
parent
2199f18f16
commit
ca1740121e
|
@ -1910,9 +1910,7 @@ def connect_random(world, exitlist, targetlist, player, two_way=False):
|
||||||
|
|
||||||
|
|
||||||
def connect_mandatory_exits(world, entrances, caves, must_be_exits, player):
|
def connect_mandatory_exits(world, entrances, caves, must_be_exits, player):
|
||||||
"""This works inplace"""
|
|
||||||
random.shuffle(entrances)
|
|
||||||
random.shuffle(caves)
|
|
||||||
# Keeps track of entrances that cannot be used to access each exit / cave
|
# Keeps track of entrances that cannot be used to access each exit / cave
|
||||||
if world.mode[player] == 'inverted':
|
if world.mode[player] == 'inverted':
|
||||||
invalid_connections = Inverted_Must_Exit_Invalid_Connections.copy()
|
invalid_connections = Inverted_Must_Exit_Invalid_Connections.copy()
|
||||||
|
@ -1920,6 +1918,18 @@ def connect_mandatory_exits(world, entrances, caves, must_be_exits, player):
|
||||||
invalid_connections = Must_Exit_Invalid_Connections.copy()
|
invalid_connections = Must_Exit_Invalid_Connections.copy()
|
||||||
invalid_cave_connections = defaultdict(set)
|
invalid_cave_connections = defaultdict(set)
|
||||||
|
|
||||||
|
if world.logic[player] in ['owglitches', 'nologic']:
|
||||||
|
import OverworldGlitchRules
|
||||||
|
for entrance in OverworldGlitchRules.get_non_mandatory_exits(world.mode[player] == 'inverted'):
|
||||||
|
invalid_connections[entrance] = set()
|
||||||
|
if entrance in must_be_exits:
|
||||||
|
must_be_exits.remove(entrance)
|
||||||
|
entrances.append(entrance)
|
||||||
|
|
||||||
|
"""This works inplace"""
|
||||||
|
random.shuffle(entrances)
|
||||||
|
random.shuffle(caves)
|
||||||
|
|
||||||
# Handle inverted Aga Tower - if it depends on connections, then so does Hyrule Castle Ledge
|
# Handle inverted Aga Tower - if it depends on connections, then so does Hyrule Castle Ledge
|
||||||
if world.mode[player] == 'inverted':
|
if world.mode[player] == 'inverted':
|
||||||
for entrance in invalid_connections:
|
for entrance in invalid_connections:
|
||||||
|
|
|
@ -92,6 +92,37 @@ def get_superbunny_accessible_locations():
|
||||||
yield location
|
yield location
|
||||||
|
|
||||||
|
|
||||||
|
def get_non_mandatory_exits(inverted):
|
||||||
|
"""
|
||||||
|
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:
|
||||||
|
|
||||||
|
Open:
|
||||||
|
Turtle Rock Isolated Ledge Entrance
|
||||||
|
Skull Woods Second Section Door (West) (or Skull Woods Final Section)
|
||||||
|
|
||||||
|
Inverted:
|
||||||
|
Two Brothers House (West)
|
||||||
|
Desert Palace Entrance (East)
|
||||||
|
"""
|
||||||
|
|
||||||
|
yield 'Bumper Cave (Top)'
|
||||||
|
yield 'Death Mountain Return Cave (West)'
|
||||||
|
yield 'Hookshot Cave Back Entrance'
|
||||||
|
|
||||||
|
if inverted:
|
||||||
|
yield 'Desert Palace Entrance (North)'
|
||||||
|
yield 'Desert Palace Entrance (West)'
|
||||||
|
yield 'Inverted Ganons Tower'
|
||||||
|
yield 'Hyrule Castle Entrance (West)'
|
||||||
|
yield 'Hyrule Castle Entrance (East)'
|
||||||
|
else:
|
||||||
|
yield 'Dark Death Mountain Ledge (West)'
|
||||||
|
yield 'Dark Death Mountain Ledge (East)'
|
||||||
|
yield 'Mimic Cave'
|
||||||
|
yield 'Desert Palace Entrance (East)'
|
||||||
|
|
||||||
|
|
||||||
def get_boots_clip_exits_lw(inverted = False):
|
def get_boots_clip_exits_lw(inverted = False):
|
||||||
"""
|
"""
|
||||||
Special Light World region exits that require boots clips.
|
Special Light World region exits that require boots clips.
|
||||||
|
|
Loading…
Reference in New Issue