From c42a39e06469c6bb37087bb028d9d9f78ab3f924 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Tue, 4 Oct 2011 22:11:57 +1300 Subject: [PATCH] fix #625 -- aircraft smoke should not be visible under fog --- OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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;