Reordered functions, no change
This commit is contained in:
@@ -881,6 +881,7 @@ def link_entrances(world, player):
|
|||||||
if world.get_entrance('Ganons Tower' if not invFlag else 'Agahnims Tower', player).connected_region.name != 'Ganons Tower Portal' if not invFlag else 'GT Lobby':
|
if world.get_entrance('Ganons Tower' if not invFlag else 'Agahnims Tower', player).connected_region.name != 'Ganons Tower Portal' if not invFlag else 'GT Lobby':
|
||||||
world.ganonstower_vanilla[player] = False
|
world.ganonstower_vanilla[player] = False
|
||||||
|
|
||||||
|
|
||||||
def connect_custom(world, player):
|
def connect_custom(world, player):
|
||||||
if hasattr(world, 'custom_entrances') and world.custom_entrances[player]:
|
if hasattr(world, 'custom_entrances') and world.custom_entrances[player]:
|
||||||
for exit_name, region_name in world.custom_entrances[player]:
|
for exit_name, region_name in world.custom_entrances[player]:
|
||||||
@@ -953,6 +954,7 @@ def connect_entrance(world, entrancename, exitname, player):
|
|||||||
if world.shuffle[player] not in ['vanilla', 'dungeonssimple', 'dungeonsfull']:
|
if world.shuffle[player] not in ['vanilla', 'dungeonssimple', 'dungeonsfull']:
|
||||||
world.spoiler.set_entrance(entrance.name, exit.name if exit is not None else region.name, 'entrance', player)
|
world.spoiler.set_entrance(entrance.name, exit.name if exit is not None else region.name, 'entrance', player)
|
||||||
|
|
||||||
|
|
||||||
def connect_exit(world, exitname, entrancename, player):
|
def connect_exit(world, exitname, entrancename, player):
|
||||||
if not (ignore_pool or exitname == 'Chris Houlihan Room Exit'):
|
if not (ignore_pool or exitname == 'Chris Houlihan Room Exit'):
|
||||||
if entrancename not in entrance_pool:
|
if entrancename not in entrance_pool:
|
||||||
@@ -1008,62 +1010,6 @@ def connect_two_way(world, entrancename, exitname, player):
|
|||||||
world.spoiler.set_entrance(entrance.name, exit.name, 'both', player)
|
world.spoiler.set_entrance(entrance.name, exit.name, 'both', player)
|
||||||
|
|
||||||
|
|
||||||
def scramble_holes(world, player):
|
|
||||||
hole_entrances = [('Kakariko Well Cave', 'Kakariko Well Drop'),
|
|
||||||
('Bat Cave Cave', 'Bat Cave Drop'),
|
|
||||||
('North Fairy Cave', 'North Fairy Cave Drop'),
|
|
||||||
('Lost Woods Hideout Stump', 'Lost Woods Hideout Drop'),
|
|
||||||
('Lumberjack Tree Cave', 'Lumberjack Tree Tree'),
|
|
||||||
('Sanctuary', 'Sanctuary Grave')]
|
|
||||||
|
|
||||||
hole_targets = [('Kakariko Well Exit', 'Kakariko Well (top)'),
|
|
||||||
('Bat Cave Exit', 'Bat Cave (right)'),
|
|
||||||
('North Fairy Cave Exit', 'North Fairy Cave'),
|
|
||||||
('Lost Woods Hideout Exit', 'Lost Woods Hideout (top)'),
|
|
||||||
('Lumberjack Tree Exit', 'Lumberjack Tree (top)')]
|
|
||||||
|
|
||||||
if world.mode[player] == 'standard':
|
|
||||||
# cannot move uncle cave
|
|
||||||
connect_two_way(world, 'Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance Exit', player)
|
|
||||||
connect_entrance(world, 'Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Secret Entrance', player)
|
|
||||||
else:
|
|
||||||
hole_entrances.append(('Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance Drop'))
|
|
||||||
hole_targets.append(('Hyrule Castle Secret Entrance Exit', 'Hyrule Castle Secret Entrance'))
|
|
||||||
|
|
||||||
# do not shuffle sanctuary into pyramid hole unless shuffle is crossed
|
|
||||||
if world.shuffle[player] == 'crossed':
|
|
||||||
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
|
||||||
|
|
||||||
# determine pyramid hole
|
|
||||||
if not world.shuffle_ganon:
|
|
||||||
if (world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owMixed[player]):
|
|
||||||
connect_two_way(world, 'Pyramid Entrance', 'Pyramid Exit', player)
|
|
||||||
connect_entrance(world, 'Pyramid Hole', 'Pyramid', player)
|
|
||||||
else:
|
|
||||||
connect_two_way(world, 'Inverted Pyramid Entrance', 'Pyramid Exit', player)
|
|
||||||
connect_entrance(world, 'Inverted Pyramid Hole', 'Pyramid', player)
|
|
||||||
else:
|
|
||||||
hole_targets.append(('Pyramid Exit', 'Pyramid'))
|
|
||||||
|
|
||||||
random.shuffle(hole_targets)
|
|
||||||
exit, target = hole_targets.pop()
|
|
||||||
if (world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owMixed[player]):
|
|
||||||
connect_two_way(world, 'Pyramid Entrance', exit, player)
|
|
||||||
connect_entrance(world, 'Pyramid Hole', target, player)
|
|
||||||
else:
|
|
||||||
connect_two_way(world, 'Inverted Pyramid Entrance', exit, player)
|
|
||||||
connect_entrance(world, 'Inverted Pyramid Hole', target, player)
|
|
||||||
|
|
||||||
if world.shuffle[player] != 'crossed':
|
|
||||||
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
|
||||||
|
|
||||||
# shuffle the rest
|
|
||||||
random.shuffle(hole_targets)
|
|
||||||
for entrance, drop in hole_entrances:
|
|
||||||
exit, target = hole_targets.pop()
|
|
||||||
connect_two_way(world, entrance, exit, player)
|
|
||||||
connect_entrance(world, drop, target, player)
|
|
||||||
|
|
||||||
def connect_random(world, exitlist, targetlist, player, two_way=False):
|
def connect_random(world, exitlist, targetlist, player, two_way=False):
|
||||||
targetlist = list(targetlist)
|
targetlist = list(targetlist)
|
||||||
random.shuffle(targetlist)
|
random.shuffle(targetlist)
|
||||||
@@ -1076,7 +1022,6 @@ 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):
|
||||||
|
|
||||||
# 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()
|
||||||
@@ -1203,6 +1148,63 @@ def connect_doors(world, doors, targets, player):
|
|||||||
targets[:] = targets[placing:]
|
targets[:] = targets[placing:]
|
||||||
|
|
||||||
|
|
||||||
|
def scramble_holes(world, player):
|
||||||
|
hole_entrances = [('Kakariko Well Cave', 'Kakariko Well Drop'),
|
||||||
|
('Bat Cave Cave', 'Bat Cave Drop'),
|
||||||
|
('North Fairy Cave', 'North Fairy Cave Drop'),
|
||||||
|
('Lost Woods Hideout Stump', 'Lost Woods Hideout Drop'),
|
||||||
|
('Lumberjack Tree Cave', 'Lumberjack Tree Tree'),
|
||||||
|
('Sanctuary', 'Sanctuary Grave')]
|
||||||
|
|
||||||
|
hole_targets = [('Kakariko Well Exit', 'Kakariko Well (top)'),
|
||||||
|
('Bat Cave Exit', 'Bat Cave (right)'),
|
||||||
|
('North Fairy Cave Exit', 'North Fairy Cave'),
|
||||||
|
('Lost Woods Hideout Exit', 'Lost Woods Hideout (top)'),
|
||||||
|
('Lumberjack Tree Exit', 'Lumberjack Tree (top)')]
|
||||||
|
|
||||||
|
if world.mode[player] == 'standard':
|
||||||
|
# cannot move uncle cave
|
||||||
|
connect_two_way(world, 'Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance Exit', player)
|
||||||
|
connect_entrance(world, 'Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Secret Entrance', player)
|
||||||
|
else:
|
||||||
|
hole_entrances.append(('Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance Drop'))
|
||||||
|
hole_targets.append(('Hyrule Castle Secret Entrance Exit', 'Hyrule Castle Secret Entrance'))
|
||||||
|
|
||||||
|
# do not shuffle sanctuary into pyramid hole unless shuffle is crossed
|
||||||
|
if world.shuffle[player] == 'crossed':
|
||||||
|
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
||||||
|
|
||||||
|
# determine pyramid hole
|
||||||
|
if not world.shuffle_ganon:
|
||||||
|
if (world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owMixed[player]):
|
||||||
|
connect_two_way(world, 'Pyramid Entrance', 'Pyramid Exit', player)
|
||||||
|
connect_entrance(world, 'Pyramid Hole', 'Pyramid', player)
|
||||||
|
else:
|
||||||
|
connect_two_way(world, 'Inverted Pyramid Entrance', 'Pyramid Exit', player)
|
||||||
|
connect_entrance(world, 'Inverted Pyramid Hole', 'Pyramid', player)
|
||||||
|
else:
|
||||||
|
hole_targets.append(('Pyramid Exit', 'Pyramid'))
|
||||||
|
|
||||||
|
random.shuffle(hole_targets)
|
||||||
|
exit, target = hole_targets.pop()
|
||||||
|
if (world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owMixed[player]):
|
||||||
|
connect_two_way(world, 'Pyramid Entrance', exit, player)
|
||||||
|
connect_entrance(world, 'Pyramid Hole', target, player)
|
||||||
|
else:
|
||||||
|
connect_two_way(world, 'Inverted Pyramid Entrance', exit, player)
|
||||||
|
connect_entrance(world, 'Inverted Pyramid Hole', target, player)
|
||||||
|
|
||||||
|
if world.shuffle[player] != 'crossed':
|
||||||
|
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
||||||
|
|
||||||
|
# shuffle the rest
|
||||||
|
random.shuffle(hole_targets)
|
||||||
|
for entrance, drop in hole_entrances:
|
||||||
|
exit, target = hole_targets.pop()
|
||||||
|
connect_two_way(world, entrance, exit, player)
|
||||||
|
connect_entrance(world, drop, target, player)
|
||||||
|
|
||||||
|
|
||||||
def skull_woods_shuffle(world, player):
|
def skull_woods_shuffle(world, player):
|
||||||
connect_random(world, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', 'Skull Woods Second Section Hole'],
|
connect_random(world, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', 'Skull Woods Second Section Hole'],
|
||||||
['Skull Left Drop', 'Skull Pinball', 'Skull Pot Circle', 'Skull Back Drop'], player)
|
['Skull Left Drop', 'Skull Pinball', 'Skull Pot Circle', 'Skull Back Drop'], player)
|
||||||
@@ -1351,6 +1353,7 @@ def simple_shuffle_dungeons(world, player):
|
|||||||
connect_two_way(world, 'Dark Death Mountain Ledge (West)', 'Turtle Rock Ledge Exit (West)', player)
|
connect_two_way(world, 'Dark Death Mountain Ledge (West)', 'Turtle Rock Ledge Exit (West)', player)
|
||||||
connect_two_way(world, 'Dark Death Mountain Ledge (East)', 'Turtle Rock Ledge Exit (East)', player)
|
connect_two_way(world, 'Dark Death Mountain Ledge (East)', 'Turtle Rock Ledge Exit (East)', player)
|
||||||
|
|
||||||
|
|
||||||
def full_shuffle_dungeons(world, Dungeon_Exits, player):
|
def full_shuffle_dungeons(world, Dungeon_Exits, player):
|
||||||
invFlag = world.mode[player] == 'inverted'
|
invFlag = world.mode[player] == 'inverted'
|
||||||
|
|
||||||
@@ -1433,6 +1436,7 @@ def full_shuffle_dungeons(world, Dungeon_Exits, player):
|
|||||||
|
|
||||||
connect_caves(world, lw_entrances, dw_entrances, dungeon_exits, player)
|
connect_caves(world, lw_entrances, dw_entrances, dungeon_exits, player)
|
||||||
|
|
||||||
|
|
||||||
def unbias_some_entrances(Dungeon_Exits, Cave_Exits, Old_Man_House, Cave_Three_Exits):
|
def unbias_some_entrances(Dungeon_Exits, Cave_Exits, Old_Man_House, Cave_Three_Exits):
|
||||||
def shuffle_lists_in_list(ls):
|
def shuffle_lists_in_list(ls):
|
||||||
for i, item in enumerate(ls):
|
for i, item in enumerate(ls):
|
||||||
|
|||||||
Reference in New Issue
Block a user