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,22 @@ let range = this.GetRange("Ranged"); let rangeOverlays = []; + + let cmpUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); + if (range.max && !cmpUnitAI) + { + let cmpPosition = Engine.QueryInterface(this.entity, IID_Position); + let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); + if (cmpRangeManager && cmpPosition && cmpPosition.IsInWorld()) + range.max = cmpRangeManager.GetElevationAdaptedRange( + cmpPosition.GetPosition(), + cmpPosition.GetRotation(), + range.max, + range.elevationBonus, + 2 * Math.PI + ); + } + for (let i in range) if ((i == "min" || i == "max") && range[i]) rangeOverlays.push({ Index: binaries/data/mods/public/simulation/components/RangeOverlayManager.js =================================================================== --- binaries/data/mods/public/simulation/components/RangeOverlayManager.js +++ binaries/data/mods/public/simulation/components/RangeOverlayManager.js @@ -73,7 +73,8 @@ { if (msg.valueNames.indexOf("Heal/Range") == -1 && msg.valueNames.indexOf("Attack/Ranged/MinRange") == -1 && - msg.valueNames.indexOf("Attack/Ranged/MaxRange") == -1) + msg.valueNames.indexOf("Attack/Ranged/MaxRange") == -1 && + msg.valueNames.indexOf("Attack/Ranged/ElevationBonus") == -1) return; this.UpdateRangeOverlays(msg.component);