diff --git a/binaries/data/mods/public/simulation/ai/petra/entityExtend.js b/binaries/data/mods/public/simulation/ai/petra/entityExtend.js index b30b292075..546c3b6d32 100644 --- a/binaries/data/mods/public/simulation/ai/petra/entityExtend.js +++ b/binaries/data/mods/public/simulation/ai/petra/entityExtend.js @@ -235,7 +235,7 @@ m.IsSupplyFull = function(gameState, ent) /** * get the best base (in terms of distance and accessIndex) for an entity */ -m.getBestBase = function(gameState, ent) +m.getBestBase = function(gameState, ent, onlyConstructedBase = false) { let pos = ent.position(); if (!pos) @@ -254,7 +254,7 @@ m.getBestBase = function(gameState, ent) let accessIndex = gameState.ai.accessibility.getAccessValue(pos); for (let base of gameState.ai.HQ.baseManagers) { - if (!base.anchor) + if (!base.anchor || onlyConstructedBase && base.anchor.foundationProgress() !== undefined) continue; let dist = API3.SquareVectorDistance(base.anchor.position(), pos); if (base.accessIndex !== accessIndex) diff --git a/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js b/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js index 92526e6445..c07e9cf1e8 100644 --- a/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js +++ b/binaries/data/mods/public/simulation/ai/petra/gameTypeManager.js @@ -376,7 +376,7 @@ m.GameTypeManager.prototype.pickCriticalEntRetreatLocation = function(gameState, // Couldn't find a place to garrison, so the ent will flee from attacks criticalEnt.setStance("passive"); let accessIndex = gameState.ai.accessibility.getAccessValue(criticalEnt.position()); - let basePos = m.getBestBase(gameState, criticalEnt); + let basePos = m.getBestBase(gameState, criticalEnt, true); if (basePos && basePos.accessIndex == accessIndex) criticalEnt.move(basePos.anchor.position()[0], basePos.anchor.position()[1]); };