Stardew Valley: Fix some determinism issues with entrance rando when playing with mods (#4812)

This commit is contained in:
Jérémie Bolduc
2025-04-10 14:34:21 -04:00
committed by GitHub
parent 879d7c23b7
commit ee471a48bd
4 changed files with 6 additions and 7 deletions

View File

@@ -21,7 +21,7 @@ def choose_content_packs(player_options: options.StardewValleyOptions):
if player_options.special_order_locations & options.SpecialOrderLocations.value_qi:
active_packs.append(content_packs.qi_board_content_pack)
for mod in player_options.mods.value:
for mod in sorted(player_options.mods.value):
active_packs.append(content_packs.by_mod[mod])
return active_packs

View File

@@ -34,7 +34,7 @@ class RegionData:
merged_exits.extend(self.exits)
if exits is not None:
merged_exits.extend(exits)
merged_exits = list(set(merged_exits))
merged_exits = sorted(set(merged_exits))
return RegionData(self.name, merged_exits, is_ginger_island=self.is_ginger_island)
def get_without_exits(self, exits_to_remove: Set[str]):

View File

@@ -521,7 +521,7 @@ def create_final_regions(world_options) -> List[RegionData]:
final_regions.extend(vanilla_regions)
if world_options.mods is None:
return final_regions
for mod in world_options.mods.value:
for mod in sorted(world_options.mods.value):
if mod not in ModDataList:
continue
for mod_region in ModDataList[mod].regions:
@@ -747,8 +747,7 @@ def swap_one_random_connection(regions_by_name, connections_by_name, randomized_
randomized_connections_already_shuffled = {connection: randomized_connections[connection]
for connection in randomized_connections
if connection != randomized_connections[connection]}
unreachable_regions_names_leading_somewhere = tuple([region for region in unreachable_regions
if len(regions_by_name[region].exits) > 0])
unreachable_regions_names_leading_somewhere = [region for region in sorted(unreachable_regions) if len(regions_by_name[region].exits) > 0]
unreachable_regions_leading_somewhere = [regions_by_name[region_name] for region_name in unreachable_regions_names_leading_somewhere]
unreachable_regions_exits_names = [exit_name for region in unreachable_regions_leading_somewhere for exit_name in region.exits]
unreachable_connections = [connections_by_name[exit_name] for exit_name in unreachable_regions_exits_names]

View File

@@ -2,7 +2,7 @@ import argparse
import json
from .. import setup_solo_multiworld
from ..options.presets import allsanity_mods_6_x_x
from ..options.presets import allsanity_mods_6_x_x_exclude_disabled
from ...options import FarmType, EntranceRandomization
if __name__ == "__main__":
@@ -12,7 +12,7 @@ if __name__ == "__main__":
args = parser.parse_args()
seed = args.seed
options = allsanity_mods_6_x_x()
options = allsanity_mods_6_x_x_exclude_disabled()
options[FarmType.internal_name] = FarmType.option_standard
options[EntranceRandomization.internal_name] = EntranceRandomization.option_buildings
multi_world = setup_solo_multiworld(options, seed=seed)