From 146923ee2e4236beef8b31b8f15a96fd15628b09 Mon Sep 17 00:00:00 2001 From: Stian Grenborgen Date: Tue, 2 May 2023 19:01:17 +0200 Subject: [PATCH] Fixes slow AI turns caused by not being able to build new colonies. This is a temporary fix that should be removed when BuildColonyMissions are building colonies according to a grand plan (and the costly searches per unit therefor can be avoided). --- src/net/sf/freecol/server/ai/EuropeanAIPlayer.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java index a903e21be..04c6bfe77 100644 --- a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java +++ b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java @@ -1795,11 +1795,22 @@ public class EuropeanAIPlayer extends MissionAIPlayer { done.clear(); } if (nBuilders > 0) { + /* + * Temporary fix for endless amount of colonists not being assigned + * any mission. See BR#3322 + */ + final int MAX_BUILDING_MISSION_TRIES = 50; + + int tries = 0; for (AIUnit aiUnit : sort(aiUnits, builderComparator)) { if (aiUnit.getUnit().isArmed() && getGame().getTurn().getNumber() > 20) { // Quickfix to avoid having all soldies being given a BuildColonyMission. continue; } + tries++; + if (tries > MAX_BUILDING_MISSION_TRIES) { + break; + } final Location oldTarget = ((m = aiUnit.getMission()) == null) ? null : m.getTarget(); if ((m = getBuildColonyMission(aiUnit, null)) == null)