Merge pull request #5340 from obrakmann/fix5338

Check proc's health before (un)docking. Fixes #5338
This commit is contained in:
Matthias Mailänder
2014-05-17 18:05:49 +02:00
2 changed files with 13 additions and 9 deletions

View File

@@ -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<INotifyDocking>())
nd.Docked(proc, self);
if (proc.IsInWorld && !proc.IsDead())
foreach (var nd in proc.TraitsImplementing<INotifyDocking>())
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<INotifyDocking>())
nd.Undocked(proc, self);
if (proc.IsInWorld && !proc.IsDead())
foreach (var nd in proc.TraitsImplementing<INotifyDocking>())
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);
}
}
}
}

View File

@@ -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<INotifyDocking>())
nd.Docked(proc, self);
if (proc.IsInWorld && !proc.IsDead())
foreach (var nd in proc.TraitsImplementing<INotifyDocking>())
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<INotifyDocking>())
nd.Undocked(proc, self);
if (proc.IsInWorld && !proc.IsDead())
foreach (var nd in proc.TraitsImplementing<INotifyDocking>())
nd.Undocked(proc, self);
return NextActivity;
}