diff --git a/binaries/data/mods/public/simulation/components/Attack.js b/binaries/data/mods/public/simulation/components/Attack.js index 138f50de8d..37a646d721 100644 --- a/binaries/data/mods/public/simulation/components/Attack.js +++ b/binaries/data/mods/public/simulation/components/Attack.js @@ -286,6 +286,15 @@ Attack.prototype.CanAttack = function(target, wantedTypes) if (!cmpTargetPlayer || !cmpEntityPlayer) return false; + // Must be visible or miraged / with retainInFog flag, not completely hidden + const cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); + if (cmpRangeManager) + { + const visibility = cmpRangeManager.GetLosVisibility(target, cmpEntityPlayer.GetPlayerID()); + if (visibility == "hidden") + return false; + } + const types = this.GetAttackTypes(wantedTypes); const entityOwner = cmpEntityPlayer.GetPlayerID(); const targetOwner = cmpTargetPlayer.GetPlayerID();