diff --git a/OpenRA.Mods.D2k/Traits/Carryable.cs b/OpenRA.Mods.D2k/Traits/Carryable.cs index 07ea7f824d..93ba447330 100644 --- a/OpenRA.Mods.D2k/Traits/Carryable.cs +++ b/OpenRA.Mods.D2k/Traits/Carryable.cs @@ -54,17 +54,18 @@ namespace OpenRA.Mods.D2k.Traits void RequestTransport(CPos destination, Activity afterLandActivity) { - if (locked || Reserved) - return; - - if (destination == CPos.Zero) - return; - - if ((self.Location - destination).Length < info.MinDistance) + if (destination == CPos.Zero || (self.Location - destination).Length < info.MinDistance) + { + WantsTransport = false; // Be sure to cancel any pending transports return; + } Destination = destination; this.afterLandActivity = afterLandActivity; + + if (locked || Reserved) + return; + WantsTransport = true; // Inform all idle carriers @@ -87,7 +88,7 @@ namespace OpenRA.Mods.D2k.Traits return; WantsTransport = false; - Reserved = false; + afterLandActivity = null; // TODO: We could implement something like a carrier.Trait().CancelTransportNotify(self) and call it here } diff --git a/OpenRA.Mods.RA/Traits/Harvester.cs b/OpenRA.Mods.RA/Traits/Harvester.cs index ae3b814d5e..fd4d2514bd 100644 --- a/OpenRA.Mods.RA/Traits/Harvester.cs +++ b/OpenRA.Mods.RA/Traits/Harvester.cs @@ -181,7 +181,7 @@ namespace OpenRA.Mods.RA.Traits foreach (var n in notify) n.MovingToResources(self, moveTo, next); - self.QueueActivity(next); + self.QueueActivity(new FindResources()); return; } } @@ -355,9 +355,9 @@ namespace OpenRA.Mods.RA.Traits self.QueueActivity(new DeliverResources()); var notify = self.TraitsImplementing(); - var next = new FindResources(); + var next = new DeliverResources(); foreach (var n in notify) - n.MovingToResources(self, order.TargetLocation, next); + n.MovingToRefinery(self, order.TargetLocation, next); } else if (order.OrderString == "Stop" || order.OrderString == "Move") {