diff --git a/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderFog.cs b/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderFog.cs index c668a2ffbe..063b71fc5a 100644 --- a/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderFog.cs +++ b/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderFog.cs @@ -31,7 +31,11 @@ namespace OpenRA.Mods.Common.Traits if (Info.Type == VisibilityType.Footprint) return byPlayer.Shroud.AnyVisible(self.OccupiesSpace.OccupiedCells()); - return byPlayer.Shroud.IsVisible(self.CenterPosition); + var pos = self.CenterPosition; + if (Info.Type == VisibilityType.GroundPosition) + pos -= new WVec(WDist.Zero, WDist.Zero, self.World.Map.DistanceAboveTerrain(pos)); + + return byPlayer.Shroud.IsVisible(pos); } } } diff --git a/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderShroud.cs b/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderShroud.cs index bbedbcfc7c..53b22958a7 100644 --- a/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderShroud.cs +++ b/OpenRA.Mods.Common/Traits/Modifiers/HiddenUnderShroud.cs @@ -44,7 +44,11 @@ namespace OpenRA.Mods.Common.Traits if (Info.Type == VisibilityType.Footprint) return byPlayer.Shroud.AnyExplored(self.OccupiesSpace.OccupiedCells()); - return byPlayer.Shroud.IsExplored(self.CenterPosition); + var pos = self.CenterPosition; + if (Info.Type == VisibilityType.GroundPosition) + pos -= new WVec(WDist.Zero, WDist.Zero, self.World.Map.DistanceAboveTerrain(pos)); + + return byPlayer.Shroud.IsExplored(pos); } public bool IsVisible(Actor self, Player byPlayer)