From 90d9ee1f5cf4ad3f1a75962878a1591eff26c738 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sun, 18 Oct 2020 16:46:45 +0200 Subject: [PATCH] Fix harv dock sequence issuing drag despite cancellation --- .../Activities/HarvesterDockSequence.cs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/OpenRA.Mods.Common/Activities/HarvesterDockSequence.cs b/OpenRA.Mods.Common/Activities/HarvesterDockSequence.cs index 73e9b17a24..eda650ebbe 100644 --- a/OpenRA.Mods.Common/Activities/HarvesterDockSequence.cs +++ b/OpenRA.Mods.Common/Activities/HarvesterDockSequence.cs @@ -59,7 +59,7 @@ namespace OpenRA.Mods.Common.Activities return false; case DockingState.Drag: - if (!Refinery.IsInWorld || Refinery.IsDead) + if (IsCanceling || !Refinery.IsInWorld || Refinery.IsDead) return true; dockingState = DockingState.Dock; @@ -69,7 +69,7 @@ namespace OpenRA.Mods.Common.Activities return false; case DockingState.Dock: - if (Refinery.IsInWorld && !Refinery.IsDead) + if (!IsCanceling && Refinery.IsInWorld && !Refinery.IsDead) { foreach (var nd in Refinery.TraitsImplementing()) nd.Docked(Refinery, self); @@ -82,7 +82,7 @@ namespace OpenRA.Mods.Common.Activities return false; case DockingState.Loop: - if (!Refinery.IsInWorld || Refinery.IsDead || Harv.TickUnload(self, Refinery)) + if (IsCanceling || !Refinery.IsInWorld || Refinery.IsDead || Harv.TickUnload(self, Refinery)) dockingState = DockingState.Undock; return false; @@ -107,12 +107,6 @@ namespace OpenRA.Mods.Common.Activities throw new InvalidOperationException("Invalid harvester dock state"); } - public override void Cancel(Actor self, bool keepQueue = false) - { - dockingState = DockingState.Undock; - base.Cancel(self); - } - public override IEnumerable GetTargets(Actor self) { yield return Target.FromActor(Refinery);