Fixed issue with Frog WS and Dig Game ES were getting duplicated in edge pool

This commit is contained in:
codemann8
2021-06-25 15:22:47 -05:00
parent e62b2678bb
commit 62e7732091

View File

@@ -1,6 +1,6 @@
import random, logging, copy import random, logging, copy
from BaseClasses import OWEdge, WorldType, RegionType, Direction, Terrain from BaseClasses import OWEdge, WorldType, RegionType, Direction, Terrain, PolSlot
from OWEdges import OWTileGroups, OWEdgeGroups, parallel_links, IsParallel from OWEdges import OWTileGroups, OWEdgeGroups, OpenStd, parallel_links, IsParallel
__version__ = '0.1.5.2-u' __version__ = '0.1.5.2-u'
@@ -76,7 +76,7 @@ def link_overworld(world, player):
getSwappedEdges(world, world.owswaps[player][1], player) getSwappedEdges(world, world.owswaps[player][1], player)
getSwappedEdges(world, world.owswaps[player][2], player) getSwappedEdges(world, world.owswaps[player][2], player)
def performSwap(groups, swaps): def performSwap(groups, swaps, nonParallelOnly=False):
try: try:
for group in groups.keys(): for group in groups.keys():
(mode, wrld, dir, terrain, parallel, count) = group (mode, wrld, dir, terrain, parallel, count) = group
@@ -87,14 +87,15 @@ def link_overworld(world, player):
for e in range(0, len(edgepool[s])): for e in range(0, len(edgepool[s])):
if len(edgepool) > 0 and edgepool[s][e] in swaps: if len(edgepool) > 0 and edgepool[s][e] in swaps:
if parallel == IsParallel.Yes: if parallel == IsParallel.Yes:
if wrld == WorldType.Light and edgepool[s][e] in parallel_links: if not nonParallelOnly:
logging.getLogger('').debug('%s was moved', edgepool[s][e]) if wrld == WorldType.Light and edgepool[s][e] in parallel_links:
swaps.remove(edgepool[s][e]) logging.getLogger('').debug('%s was moved', edgepool[s][e])
groups[group][p][s][e] = parallel_links[edgepool[s][e]] swaps.remove(edgepool[s][e])
elif wrld == WorldType.Dark and edgepool[s][e] in parallel_links.inverse: groups[group][p][s][e] = parallel_links[edgepool[s][e]]
logging.getLogger('').debug('%s was moved', edgepool[s][e]) elif wrld == WorldType.Dark and edgepool[s][e] in parallel_links.inverse:
swaps.remove(edgepool[s][e]) logging.getLogger('').debug('%s was moved', edgepool[s][e])
groups[group][p][s][e] = parallel_links.inverse[edgepool[s][e]][0] swaps.remove(edgepool[s][e])
groups[group][p][s][e] = parallel_links.inverse[edgepool[s][e]][0]
else: else:
for edge in edgepool[s]: for edge in edgepool[s]:
logging.getLogger('').debug('%s was moved', edge) logging.getLogger('').debug('%s was moved', edge)
@@ -105,6 +106,23 @@ def link_overworld(world, player):
#TODO: Figure out a way to handle index changes on the fly when removing items #TODO: Figure out a way to handle index changes on the fly when removing items
logging.getLogger('').warning('OW Tile Swap encountered minor IndexError... retrying') logging.getLogger('').warning('OW Tile Swap encountered minor IndexError... retrying')
if 0x28 in world.owswaps[player][0]: #handle Frog/Dig Game swap manually due to NP/P relationship with LW
trimmed_groups[(OpenStd.Open, WorldType.Dark, PolSlot.EastWest, Terrain.Land, IsParallel.Yes, 1)][0].append(['Maze Race ES'])
trimmed_groups[(OpenStd.Open, WorldType.Dark, PolSlot.EastWest, Terrain.Land, IsParallel.Yes, 1)][1].append(['Kakariko Suburb WS'])
trimmed_groups[(OpenStd.Open, WorldType.Light, PolSlot.EastWest, Terrain.Land, IsParallel.Yes, 1)][0].remove(['Maze Race ES'])
trimmed_groups[(OpenStd.Open, WorldType.Light, PolSlot.EastWest, Terrain.Land, IsParallel.Yes, 1)][1].remove(['Kakariko Suburb WS'])
trimmed_groups[(OpenStd.Open, WorldType.Light, PolSlot.EastWest, Terrain.Land, IsParallel.No, 2)][0].append(['Dig Game EC', 'Dig Game ES'])
trimmed_groups[(OpenStd.Open, WorldType.Light, PolSlot.EastWest, Terrain.Land, IsParallel.No, 2)][1].append(['Frog WC', 'Frog WS'])
trimmed_groups[(OpenStd.Open, WorldType.Dark, PolSlot.EastWest, Terrain.Land, IsParallel.No, 2)] = [[],[]]
swapped_edges.remove('Maze Race ES')
swapped_edges.remove('Kakariko Suburb WS')
swapped_edges.remove('Dig Game EC')
swapped_edges.remove('Dig Game ES')
swapped_edges.remove('Frog WC')
swapped_edges.remove('Frog WS')
tries = 5 tries = 5
while tries > 0: while tries > 0:
performSwap(trimmed_groups, swapped_edges) performSwap(trimmed_groups, swapped_edges)
@@ -113,7 +131,7 @@ def link_overworld(world, player):
continue continue
tries -= 1 tries -= 1
assert len(swapped_edges) == 0 assert len(swapped_edges) == 0
#move swapped regions to other world #move swapped regions to other world
if world.owSwap[player] == 'mixed': if world.owSwap[player] == 'mixed':
for name in world.owswaps[player][1]: for name in world.owswaps[player][1]: