diff --git a/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnTerrain.cs b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnTerrain.cs index 12887665a6..8e3e783fe0 100644 --- a/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnTerrain.cs +++ b/OpenRA.Mods.Common/Traits/Conditions/GrantConditionOnTerrain.cs @@ -35,9 +35,7 @@ namespace OpenRA.Mods.Common.Traits ConditionManager conditionManager; int conditionToken = ConditionManager.InvalidConditionToken; - string cachedTerrain; - CPos cachedLocation; public GrantConditionOnTerrain(ActorInitializer init, GrantConditionOnTerrainInfo info) { @@ -53,9 +51,10 @@ namespace OpenRA.Mods.Common.Traits void ITick.Tick(Actor self) { var loc = self.Location; - if (conditionManager == null || loc == cachedLocation) + if (conditionManager == null) return; + // The terrain type may change between ticks without the actor moving var currentTerrain = loc.Layer == 0 ? self.World.Map.GetTerrainInfo(loc).Type : tileSet[self.World.GetCustomMovementLayers()[loc.Layer].GetTerrainIndex(loc)].Type; @@ -69,7 +68,6 @@ namespace OpenRA.Mods.Common.Traits } cachedTerrain = currentTerrain; - cachedLocation = loc; } } }