diff --git a/binaries/data/mods/public/simulation/components/BuildingAI.js b/binaries/data/mods/public/simulation/components/BuildingAI.js index 7c3349f7da..8f3f7dba5d 100644 --- a/binaries/data/mods/public/simulation/components/BuildingAI.js +++ b/binaries/data/mods/public/simulation/components/BuildingAI.js @@ -257,15 +257,10 @@ BuildingAI.prototype.GetGarrisonArrowClasses = function() */ BuildingAI.prototype.GetArrowCount = function() { - let count = this.GetDefaultArrowCount(); + let count = this.GetDefaultArrowCount() + + Math.round(this.archersGarrisoned * this.GetGarrisonArrowMultiplier()); - let cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder); - if (cmpGarrisonHolder) - count += Math.round(this.archersGarrisoned * this.GetGarrisonArrowMultiplier()); - - if (this.GetMaxArrowCount() < count) - return this.GetMaxArrowCount(); - return count; + return Math.min(this.GetMaxArrowCount(), count); }; BuildingAI.prototype.SetUnitAITarget = function(ent) diff --git a/binaries/data/mods/public/simulation/components/GarrisonHolder.js b/binaries/data/mods/public/simulation/components/GarrisonHolder.js index 1f0aaadbdc..07db012026 100644 --- a/binaries/data/mods/public/simulation/components/GarrisonHolder.js +++ b/binaries/data/mods/public/simulation/components/GarrisonHolder.js @@ -698,6 +698,7 @@ GarrisonHolder.prototype.EjectOrKill = function(entities) } // And destroy all remaining entities + var killedEntities = []; for each (var entity in entities) { var entityIndex = this.entities.indexOf(entity); @@ -707,9 +708,11 @@ GarrisonHolder.prototype.EjectOrKill = function(entities) if (cmpHealth) cmpHealth.Kill(); this.entities.splice(entityIndex, 1); + killedEntities.push(entity); } - Engine.PostMessage(this.entity, MT_GarrisonedUnitsChanged, { "added" : [], "removed" : entities }); + if (killedEntities.length > 0) + Engine.PostMessage(this.entity, MT_GarrisonedUnitsChanged, { "added" : [], "removed" : killedEntities }); this.UpdateGarrisonFlag(); };