From 272e03603a3e8442037b6b420522188623c6d152 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 28 Jun 2010 13:05:52 +1200 Subject: [PATCH] Kill any units on a bridge piece when it dies. Todo: need to mask the death regions for cnc bridges --- OpenRA.Mods.RA/Bridge.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) 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;