diff --git a/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs b/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs index e17450c8a5..ed30c7ecd8 100644 --- a/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs +++ b/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs @@ -38,15 +38,16 @@ namespace OpenRA.Mods.RA { if (--ticks <= 0) { - if (self.Trait().Altitude > 0) + var move = self.Trait(); + if (move.Altitude > 0 && self.GetDamageState() >= DamageState.Heavy) { var facing = self.Trait(); - var altitude = new float2(0, self.Trait().Altitude); - position = (self.CenterLocation - Combat.GetTurretPosition(self, facing, smokeTurret) - altitude).ToInt2(); + var altitude = new int2(0, move.Altitude); + position = (self.CenterLocation - Combat.GetTurretPosition(self, facing, smokeTurret)).ToInt2(); - if (self.GetDamageState() >= DamageState.Heavy) + if (self.World.LocalShroud.IsVisible(Util.CellContaining(position))) self.World.AddFrameEndTask( - w => w.Add(new Smoke(w, position, "smokey"))); + w => w.Add(new Smoke(w, position - altitude, "smokey"))); } ticks = interval;