Fix deterministic issues in repeat seed generation
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user