Fixed issue with shuffling dropdowns in Mixed OW shuffle
This commit is contained in:
@@ -50,18 +50,18 @@ def link_entrances(world, player):
|
|||||||
|
|
||||||
# inverted entrance mods
|
# inverted entrance mods
|
||||||
for owid in swapped_connections.keys():
|
for owid in swapped_connections.keys():
|
||||||
if (world.mode[player] == 'inverted') != (owid in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
if invFlag != (owid in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
||||||
for (entrancename, exitname) in swapped_connections[owid]:
|
for (entrancename, exitname) in swapped_connections[owid]:
|
||||||
try:
|
try:
|
||||||
connect_two_way(world, entrancename, exitname, player)
|
connect_two_way(world, entrancename, exitname, player)
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
connect_entrance(world, entrancename, exitname, player)
|
connect_entrance(world, entrancename, exitname, player)
|
||||||
|
|
||||||
if (world.mode[player] == 'inverted') != (0x03 in world.owswaps[player][0] and world.owSwap[player] == 'mixed') and \
|
if invFlag != (0x03 in world.owswaps[player][0] and world.owSwap[player] == 'mixed') and \
|
||||||
(world.mode[player] == 'inverted') == (0x0a in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
invFlag == (0x0a in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
||||||
connect_entrance(world, 'Death Mountain Return Cave (West)', 'Dark Death Mountain Healer Fairy', player)
|
connect_entrance(world, 'Death Mountain Return Cave (West)', 'Dark Death Mountain Healer Fairy', player)
|
||||||
elif (world.mode[player] == 'inverted') != (0x0a in world.owswaps[player][0] and world.owSwap[player] == 'mixed') and \
|
elif invFlag != (0x0a in world.owswaps[player][0] and world.owSwap[player] == 'mixed') and \
|
||||||
(world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
invFlag == (0x03 in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
||||||
connect_two_way(world, 'Bumper Cave (Top)', 'Death Mountain Return Cave Exit (West)', player)
|
connect_two_way(world, 'Bumper Cave (Top)', 'Death Mountain Return Cave Exit (West)', player)
|
||||||
|
|
||||||
# dungeon entrance shuffle
|
# dungeon entrance shuffle
|
||||||
@@ -239,10 +239,7 @@ def link_entrances(world, player):
|
|||||||
connect_caves(world, remaining_entrances if not invFlag else lw_dm_entrances, [], caves, player)
|
connect_caves(world, remaining_entrances if not invFlag else lw_dm_entrances, [], caves, player)
|
||||||
|
|
||||||
# scramble holes
|
# scramble holes
|
||||||
if not invFlag:
|
scramble_holes(world, player)
|
||||||
scramble_holes(world, player)
|
|
||||||
else:
|
|
||||||
scramble_inverted_holes(world, player)
|
|
||||||
|
|
||||||
# place blacksmith, has limited options
|
# place blacksmith, has limited options
|
||||||
if invFlag:
|
if invFlag:
|
||||||
@@ -371,10 +368,7 @@ def link_entrances(world, player):
|
|||||||
connect_caves(world, lw_entrances, dw_entrances, caves, player)
|
connect_caves(world, lw_entrances, dw_entrances, caves, player)
|
||||||
|
|
||||||
# scramble holes
|
# scramble holes
|
||||||
if not invFlag:
|
scramble_holes(world, player)
|
||||||
scramble_holes(world, player)
|
|
||||||
else:
|
|
||||||
scramble_inverted_holes(world, player)
|
|
||||||
|
|
||||||
doors = lw_entrances + dw_entrances
|
doors = lw_entrances + dw_entrances
|
||||||
|
|
||||||
@@ -632,10 +626,7 @@ def link_entrances(world, player):
|
|||||||
connect_caves(world, lw_entrances, dw_entrances, caves, player)
|
connect_caves(world, lw_entrances, dw_entrances, caves, player)
|
||||||
|
|
||||||
# scramble holes
|
# scramble holes
|
||||||
if not invFlag:
|
scramble_holes(world, player)
|
||||||
scramble_holes(world, player)
|
|
||||||
else:
|
|
||||||
scramble_inverted_holes(world, player)
|
|
||||||
|
|
||||||
doors = lw_entrances + dw_entrances
|
doors = lw_entrances + dw_entrances
|
||||||
|
|
||||||
@@ -776,10 +767,7 @@ def link_entrances(world, player):
|
|||||||
connect_caves(world, entrances, [], caves, player)
|
connect_caves(world, entrances, [], caves, player)
|
||||||
|
|
||||||
# scramble holes
|
# scramble holes
|
||||||
if not invFlag:
|
scramble_holes(world, player)
|
||||||
scramble_holes(world, player)
|
|
||||||
else:
|
|
||||||
scramble_inverted_holes(world, player)
|
|
||||||
|
|
||||||
# place remaining doors
|
# place remaining doors
|
||||||
connect_doors(world, entrances, door_targets, player)
|
connect_doors(world, entrances, door_targets, player)
|
||||||
@@ -1601,8 +1589,12 @@ def scramble_holes(world, player):
|
|||||||
('Lumberjack Tree Exit', 'Lumberjack Tree (top)')]
|
('Lumberjack Tree Exit', 'Lumberjack Tree (top)')]
|
||||||
|
|
||||||
if not world.shuffle_ganon:
|
if not world.shuffle_ganon:
|
||||||
connect_two_way(world, 'Pyramid Entrance', 'Pyramid Exit', player)
|
if (world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
||||||
connect_entrance(world, 'Pyramid Hole', 'Pyramid', 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:
|
else:
|
||||||
hole_targets.append(('Pyramid Exit', 'Pyramid'))
|
hole_targets.append(('Pyramid Exit', 'Pyramid'))
|
||||||
|
|
||||||
@@ -1620,50 +1612,12 @@ def scramble_holes(world, player):
|
|||||||
if world.shuffle_ganon:
|
if world.shuffle_ganon:
|
||||||
random.shuffle(hole_targets)
|
random.shuffle(hole_targets)
|
||||||
exit, target = hole_targets.pop()
|
exit, target = hole_targets.pop()
|
||||||
connect_two_way(world, 'Pyramid Entrance', exit, player)
|
if (world.mode[player] == 'inverted') == (0x03 in world.owswaps[player][0] and world.owSwap[player] == 'mixed'):
|
||||||
connect_entrance(world, 'Pyramid Hole', target, player)
|
connect_two_way(world, 'Pyramid Entrance', 'Pyramid Exit', player)
|
||||||
if world.shuffle[player] != 'crossed':
|
connect_entrance(world, 'Pyramid Hole', 'Pyramid', player)
|
||||||
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
else:
|
||||||
|
connect_two_way(world, 'Inverted Pyramid Entrance', 'Pyramid Exit', player)
|
||||||
random.shuffle(hole_targets)
|
connect_entrance(world, 'Inverted Pyramid Hole', 'Pyramid', player)
|
||||||
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 scramble_inverted_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 not world.shuffle_ganon:
|
|
||||||
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'))
|
|
||||||
|
|
||||||
|
|
||||||
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'))
|
|
||||||
if world.shuffle_ganon:
|
|
||||||
random.shuffle(hole_targets)
|
|
||||||
exit, target = hole_targets.pop()
|
|
||||||
connect_two_way(world, 'Inverted Pyramid Entrance', exit, player)
|
|
||||||
connect_entrance(world, 'Inverted Pyramid Hole', target, player)
|
|
||||||
if world.shuffle[player] != 'crossed':
|
if world.shuffle[player] != 'crossed':
|
||||||
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
hole_targets.append(('Sanctuary Exit', 'Sewer Drop'))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user