Fix deterministic issues in repeat seed generation

This commit is contained in:
codemann8
2021-12-19 19:59:30 -06:00
parent 7699c1fc63
commit d79adbf3c8
4 changed files with 31 additions and 28 deletions

View File

@@ -1,4 +1,5 @@
import RaceRandom as random, logging, copy
from collections import OrderedDict
from BaseClasses import OWEdge, WorldType, RegionType, Direction, Terrain, PolSlot, Entrance
from Regions import mark_dark_world_regions, mark_light_world_regions
from OWEdges import OWTileRegions, OWTileGroups, OWEdgeGroups, OWExitTypes, OpenStd, parallel_links, IsParallel
@@ -500,7 +501,7 @@ def shuffle_tiles(world, groups, result_list, player):
exist_dw_regions.extend(dw_regions)
# check whirlpool parity
valid_whirlpool_parity = world.owCrossed[player] not in ['none', 'grouped'] or len(set(new_results[0]) & set({0x0f, 0x12, 0x15, 0x33, 0x35, 0x3f, 0x55, 0x7f})) % 2 == 0
valid_whirlpool_parity = world.owCrossed[player] not in ['none', 'grouped'] or len(OrderedDict.fromkeys(new_results[0] + [0x0f, 0x12, 0x15, 0x33, 0x35, 0x3f, 0x55, 0x7f])) % 2 == 0
(exist_owids, exist_lw_regions, exist_dw_regions) = result_list
exist_owids.extend(new_results[0])
@@ -809,7 +810,7 @@ def can_reach_smith(world, player):
def explore_region(region_name, region=None):
nonlocal found
explored_regions.add(region_name)
explored_regions.append(region_name)
if not found:
if not region:
region = world.get_region(region_name, player)
@@ -838,7 +839,7 @@ def can_reach_smith(world, player):
blank_state.collect(ItemFactory('Titans Mitts', player), True)
found = False
explored_regions = set()
explored_regions = list()
explore_region('Links House')
if not found:
if not invFlag:
@@ -867,7 +868,7 @@ def build_sectors(world, player):
if (any(r in unique_regions for r in explored_regions)):
for s in range(len(sectors)):
if (any(r in sectors[s] for r in explored_regions)):
sectors[s] = set(list(sectors[s]) + list(explored_regions))
sectors[s] = list(list(sectors[s]) + list(explored_regions))
break
else:
sectors.append(explored_regions)
@@ -893,7 +894,7 @@ def build_sectors(world, player):
if (any(r in unique_regions for r in explored_regions)):
for s2 in range(len(sectors2)):
if (any(r in sectors2[s2] for r in explored_regions)):
sectors2[s2] = set(list(sectors2[s2]) + list(explored_regions))
sectors2[s2] = list(sectors2[s2] + explored_regions)
break
else:
sectors2.append(explored_regions)
@@ -907,7 +908,7 @@ def build_accessible_region_list(world, start_region, player, build_copy_world=F
from Items import ItemFactory
def explore_region(region_name, region=None):
explored_regions.add(region_name)
explored_regions.append(region_name)
if not region:
region = base_world.get_region(region_name, player)
for exit in region.exits:
@@ -936,7 +937,7 @@ def build_accessible_region_list(world, start_region, player, build_copy_world=F
blank_state = CollectionState(base_world)
if base_world.mode[player] == 'standard':
blank_state.collect(ItemFactory('Zelda Delivered', player), True)
explored_regions = set()
explored_regions = list()
explore_region(start_region)
return explored_regions