From 062e7f529882e76ca39a1aabb91b7f1a18efbbe6 Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Sat, 17 May 2014 16:57:55 +0200 Subject: [PATCH] Check proc's health before (un)docking. Fixes #5338 --- OpenRA.Mods.Cnc/Activities/HarvesterDockSequence.cs | 12 +++++++----- OpenRA.Mods.RA/Activities/RAHarvesterDockSequence.cs | 10 ++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/OpenRA.Mods.Cnc/Activities/HarvesterDockSequence.cs b/OpenRA.Mods.Cnc/Activities/HarvesterDockSequence.cs index 4c827722e1..69c6aa2e21 100644 --- a/OpenRA.Mods.Cnc/Activities/HarvesterDockSequence.cs +++ b/OpenRA.Mods.Cnc/Activities/HarvesterDockSequence.cs @@ -54,8 +54,9 @@ namespace OpenRA.Mods.Cnc case State.Dock: ru.PlayCustomAnimation(self, "dock", () => { ru.PlayCustomAnimRepeating(self, "dock-loop"); - foreach (var nd in proc.TraitsImplementing()) - nd.Docked(proc, self); + if (proc.IsInWorld && !proc.IsDead()) + foreach (var nd in proc.TraitsImplementing()) + nd.Docked(proc, self); state = State.Loop; }); state = State.Wait; @@ -66,8 +67,9 @@ namespace OpenRA.Mods.Cnc return this; case State.Undock: ru.PlayCustomAnimBackwards(self, "dock", () => state = State.DragOut); - foreach (var nd in proc.TraitsImplementing()) - nd.Undocked(proc, self); + if (proc.IsInWorld && !proc.IsDead()) + foreach (var nd in proc.TraitsImplementing()) + nd.Undocked(proc, self); state = State.Wait; return this; case State.DragOut: @@ -87,4 +89,4 @@ namespace OpenRA.Mods.Cnc yield return Target.FromActor(proc); } } -} \ No newline at end of file +} diff --git a/OpenRA.Mods.RA/Activities/RAHarvesterDockSequence.cs b/OpenRA.Mods.RA/Activities/RAHarvesterDockSequence.cs index ca9d2c1517..f04bf6a317 100644 --- a/OpenRA.Mods.RA/Activities/RAHarvesterDockSequence.cs +++ b/OpenRA.Mods.RA/Activities/RAHarvesterDockSequence.cs @@ -47,8 +47,9 @@ namespace OpenRA.Mods.RA case State.Dock: ru.PlayCustomAnimation(self, "dock", () => { ru.PlayCustomAnimRepeating(self, "dock-loop"); - foreach (var nd in proc.TraitsImplementing()) - nd.Docked(proc, self); + if (proc.IsInWorld && !proc.IsDead()) + foreach (var nd in proc.TraitsImplementing()) + nd.Docked(proc, self); state = State.Loop; }); state = State.Wait; @@ -64,8 +65,9 @@ namespace OpenRA.Mods.RA case State.Complete: harv.LastLinkedProc = harv.LinkedProc; harv.LinkProc(self, null); - foreach (var nd in proc.TraitsImplementing()) - nd.Undocked(proc, self); + if (proc.IsInWorld && !proc.IsDead()) + foreach (var nd in proc.TraitsImplementing()) + nd.Undocked(proc, self); return NextActivity; }