From 3b1607883df1b0d9680fa1e7e4ca0bd746284447 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Wed, 22 Jul 2015 03:42:38 +0200 Subject: [PATCH] Fix D2k harvesters getting stuck on spice field after drop by carryall --- OpenRA.Mods.D2k/Traits/Carryable.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.D2k/Traits/Carryable.cs b/OpenRA.Mods.D2k/Traits/Carryable.cs index 2915cb9cee..e96847daf3 100644 --- a/OpenRA.Mods.D2k/Traits/Carryable.cs +++ b/OpenRA.Mods.D2k/Traits/Carryable.cs @@ -10,6 +10,7 @@ using System.Linq; using OpenRA.Activities; +using OpenRA.Mods.Common.Activities; using OpenRA.Mods.Common.Traits; using OpenRA.Traits; @@ -113,7 +114,15 @@ namespace OpenRA.Mods.D2k.Traits locked = false; if (afterLandActivity != null) - self.QueueActivity(false, afterLandActivity); + { + // HACK: Harvesters need special treatment to avoid getting stuck on resource fields, + // so if a Harvester's afterLandActivity is not DeliverResources, queue a new FindResources activity + var findResources = self.HasTrait() && !(afterLandActivity is DeliverResources); + if (findResources) + self.QueueActivity(new FindResources(self)); + else + self.QueueActivity(false, afterLandActivity); + } } public bool Reserve(Actor carrier) @@ -148,7 +157,7 @@ namespace OpenRA.Mods.D2k.Traits if (locked || !WantsTransport) return false; - // Last change to change our mind... + // Last chance to change our mind... var destPos = self.World.Map.CenterOfCell(Destination); if ((self.CenterPosition - destPos).LengthSquared < info.MinDistance.LengthSquared) {