Index: binaries/data/mods/public/simulation/components/Attack.js =================================================================== --- binaries/data/mods/public/simulation/components/Attack.js +++ binaries/data/mods/public/simulation/components/Attack.js @@ -679,6 +679,19 @@ let range = this.GetRange("Ranged"); let rangeOverlays = []; + let bonus = range["max"]; + let cmpPosition = Engine.QueryInterface(this.entity, IID_Position); + let cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); + let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); + if (cmpUnitAI && cmpPosition && cmpPosition.IsInWorld()) { + bonus = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 0); + } + else if(cmpPosition && cmpPosition.IsInWorld()) + { + // For buildings, take the average elevation around it. So angle = 2*pi + bonus = cmpRangeManager.GetElevationAdaptedRange(cmpPosition.GetPosition(), cmpPosition.GetRotation(), range.max, range.elevationBonus, 2*Math.PI); + } + range["max"] = bonus; for (let i in range) if ((i == "min" || i == "max") && range[i]) rangeOverlays.push({