diff --git a/binaries/data/mods/public/simulation/ai/common-api/entity.js b/binaries/data/mods/public/simulation/ai/common-api/entity.js index b3a348a024..4be0072dae 100644 --- a/binaries/data/mods/public/simulation/ai/common-api/entity.js +++ b/binaries/data/mods/public/simulation/ai/common-api/entity.js @@ -519,11 +519,9 @@ m.Template = m.Class({ }, hasDefensiveFire: function() { - let fire = this.getDefaultArrow(); - if (fire && fire > 0) - return true; - fire = this.getArrowMultiplier(); - return (fire && fire > 0); + if (!this.get("Attack") || !this.get("Attack/Ranged")) + return false; + return (this.getDefaultArrow() || this.getArrowMultiplier()); }, territoryInfluenceRadius: function() { diff --git a/binaries/data/mods/public/simulation/ai/petra/headquarters.js b/binaries/data/mods/public/simulation/ai/petra/headquarters.js index 000a2f1d89..bcfcb7b534 100644 --- a/binaries/data/mods/public/simulation/ai/petra/headquarters.js +++ b/binaries/data/mods/public/simulation/ai/petra/headquarters.js @@ -355,7 +355,7 @@ m.HQ.prototype.checkEvents = function (gameState, events, queues) let decayToGaia = true; for (let i = 1; i < capture.length; ++i) { - if (i == PlayerID || capture[i] < capture[0]) + if (gameState.isPlayerAlly(i) || !capture[i]) continue; decayToGaia = false; break; @@ -1900,7 +1900,7 @@ m.HQ.prototype.isNearInvadingArmy = function(pos) m.HQ.prototype.isUnderEnemyFire = function(gameState, pos, radius = 0) { if (!this.turnCache["firingStructures"]) - this.turnCache["firingStructures"] = gameState.updatingGlobalCollection("FiringStructures", API3.Filters.hasDefensiveFire(), gameState.getEnemyStructures()); + this.turnCache["firingStructures"] = gameState.updatingCollection("FiringStructures", API3.Filters.hasDefensiveFire(), gameState.getEnemyStructures()); for (let ent of this.turnCache["firingStructures"].values()) { let range = radius + ent.attackRange("Ranged").max;