Index: ps/trunk/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js +++ ps/trunk/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js @@ -270,6 +270,7 @@ if (numWorkers < 20) { for (let data of this.criticalEnts.values()) + { for (let guardId of data.guards.keys()) { let guardEnt = gameState.getEntityById(guardId); @@ -285,7 +286,13 @@ if (guardEnt.getMetadata(PlayerID, "guardedEnt")) guardEnt.setMetadata(PlayerID, "guardedEnt", undefined); + + if (++numWorkers >= 20) + break; } + if (numWorkers >= 20) + break; + } } for (let [id, data] of this.criticalEnts) @@ -319,22 +326,24 @@ { if (!this.tryAssignMilitaryGuard(gameState, entity, criticalEnt, checkForSameAccess)) continue; - if (++data.guardsAssigned >= militaryGuardsPerCriticalEnt) + --numWorkers; + if (++data.guardsAssigned >= militaryGuardsPerCriticalEnt || numWorkers <= 25) break; } - if (data.guardsAssigned >= militaryGuardsPerCriticalEnt) + if (data.guardsAssigned >= militaryGuardsPerCriticalEnt || numWorkers <= 25) break; for (let entity of gameState.getOwnEntitiesByClass("Soldier", true).values()) { if (!this.tryAssignMilitaryGuard(gameState, entity, criticalEnt, checkForSameAccess)) continue; - if (++data.guardsAssigned >= militaryGuardsPerCriticalEnt) + --numWorkers; + if (++data.guardsAssigned >= militaryGuardsPerCriticalEnt || numWorkers <= 25) break; } - if (data.guardsAssigned >= militaryGuardsPerCriticalEnt) + if (data.guardsAssigned >= militaryGuardsPerCriticalEnt || numWorkers <= 25) break; } } @@ -441,7 +450,7 @@ this.criticalEnts.get(criticalEntId).guards.set(guardEnt.id(), guardRole); // Switch this guard ent to the criticalEnt's base - if (criticalEnt.hasClass("Wonder") && criticalEnt.getMetadata(PlayerID, "base") !== undefined) + if (criticalEnt.hasClass("Structure") && criticalEnt.getMetadata(PlayerID, "base") !== undefined) guardEnt.setMetadata(PlayerID, "base", criticalEnt.getMetadata(PlayerID, "base")); } else