diff --git a/OpenRA.Mods.RA/Bridge.cs b/OpenRA.Mods.RA/Bridge.cs index 57279b17b0..cedd249a20 100644 --- a/OpenRA.Mods.RA/Bridge.cs +++ b/OpenRA.Mods.RA/Bridge.cs @@ -152,6 +152,8 @@ namespace OpenRA.Mods.RA return b != null && b.self.IsInWorld && b.self.Health > 0; } + + bool dead = false; void UpdateState() { var ds = self.GetDamageState(); @@ -165,6 +167,15 @@ namespace OpenRA.Mods.RA ds = DamageState.Dead; } + if (ds == DamageState.Dead && !dead) + { + dead = true; + + // Kill any units on the bridge + foreach (var c in TileSprites[currentTemplate].Keys) + self.World.WorldActor.traits.Get().GetUnitsAt(c).Do(a => a.InflictDamage(self, a.Health, null)); + } + currentTemplate = (ds == DamageState.Half && Info.DamagedTemplate > 0) ? Info.DamagedTemplate : (ds == DamageState.Dead && Info.DestroyedTemplate > 0) ? Info.DestroyedTemplate : Info.Template;