diff --git a/OpenRA.Mods.RA/Buildings/RepairableBuilding.cs b/OpenRA.Mods.RA/Buildings/RepairableBuilding.cs index 3fb2dc23aa..3e7fb264eb 100755 --- a/OpenRA.Mods.RA/Buildings/RepairableBuilding.cs +++ b/OpenRA.Mods.RA/Buildings/RepairableBuilding.cs @@ -53,8 +53,11 @@ namespace OpenRA.Mods.RA.Buildings Repairer = p; Sound.PlayNotification(self.World.Map.Rules, Repairer, "Speech", "Repairing", self.Owner.Country.Race); - self.World.AddFrameEndTask( - w => w.Add(new RepairIndicator(self, Info.IndicatorPalettePrefix, p))); + self.World.AddFrameEndTask(w => + { + if (!self.IsDead()) + w.Add(new RepairIndicator(self, Info.IndicatorPalettePrefix, p)); + }); } } } diff --git a/OpenRA.Mods.RA/Effects/RepairIndicator.cs b/OpenRA.Mods.RA/Effects/RepairIndicator.cs index 7c239be907..a37e99e567 100755 --- a/OpenRA.Mods.RA/Effects/RepairIndicator.cs +++ b/OpenRA.Mods.RA/Effects/RepairIndicator.cs @@ -1,6 +1,6 @@ #region Copyright & License Information /* - * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * Copyright 2007-2014 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation. For more information, @@ -30,7 +30,7 @@ namespace OpenRA.Mods.RA.Effects this.player = player; this.palettePrefix = palettePrefix; - rb = building.Trait(); + rb = building.TraitOrDefault(); anim = new Animation(building.World, "allyrepair"); anim.PlayRepeating("repair"); } @@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Effects public void Tick(World world) { if (!building.IsInWorld || building.IsDead() || - rb.Repairer == null || rb.Repairer != player) + rb == null || rb.Repairer == null || rb.Repairer != player) world.AddFrameEndTask(w => w.Remove(this)); anim.Tick();