Skip to content

Commit 1519c6e

Browse files
Ziktofelqwint
authored andcommitted
SC2: Fix possible non-determinism in goal selection (ArchipelagoMW#3123)
1 parent 938624b commit 1519c6e

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

worlds/sc2/PoolFilter.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ def filter_missions(world: World) -> Dict[MissionPools, List[SC2Mission]]:
5858
# Vanilla uses the entire mission pool
5959
goal_priorities: Dict[SC2Campaign, SC2CampaignGoalPriority] = {campaign: get_campaign_goal_priority(campaign) for campaign in enabled_campaigns}
6060
goal_level = max(goal_priorities.values())
61-
candidate_campaigns = [campaign for campaign, goal_priority in goal_priorities.items() if goal_priority == goal_level]
61+
candidate_campaigns: List[SC2Campaign] = [campaign for campaign, goal_priority in goal_priorities.items() if goal_priority == goal_level]
62+
candidate_campaigns.sort(key=lambda it: it.id)
6263
goal_campaign = world.random.choice(candidate_campaigns)
6364
if campaign_final_mission_locations[goal_campaign] is not None:
6465
mission_pools[MissionPools.FINAL] = [campaign_final_mission_locations[goal_campaign].mission]
@@ -70,7 +71,8 @@ def filter_missions(world: World) -> Dict[MissionPools, List[SC2Mission]]:
7071
# Finding the goal map
7172
goal_priorities = {campaign: get_campaign_goal_priority(campaign, excluded_missions) for campaign in enabled_campaigns}
7273
goal_level = max(goal_priorities.values())
73-
candidate_campaigns = [campaign for campaign, goal_priority in goal_priorities.items() if goal_priority == goal_level]
74+
candidate_campaigns: List[SC2Campaign] = [campaign for campaign, goal_priority in goal_priorities.items() if goal_priority == goal_level]
75+
candidate_campaigns.sort(key=lambda it: it.id)
7476
goal_campaign = world.random.choice(candidate_campaigns)
7577
primary_goal = campaign_final_mission_locations[goal_campaign]
7678
if primary_goal is None or primary_goal.mission in excluded_missions:

0 commit comments

Comments
 (0)