From ae056e969f0bb156c61bb84b67208a4e85593845 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 24 May 2018 19:44:59 +0100 Subject: [PATCH] Remove order.TargetActor from Harvester. --- OpenRA.Mods.Common/Traits/Harvester.cs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Harvester.cs b/OpenRA.Mods.Common/Traits/Harvester.cs index c5996c768c..313db6a27d 100644 --- a/OpenRA.Mods.Common/Traits/Harvester.cs +++ b/OpenRA.Mods.Common/Traits/Harvester.cs @@ -395,26 +395,31 @@ namespace OpenRA.Mods.Common.Traits } else if (order.OrderString == "Deliver") { - // NOTE: An explicit deliver order forces the harvester to always deliver to this refinery. - var iao = order.TargetActor.TraitOrDefault(); - if (iao == null || !iao.AllowDocking || !IsAcceptableProcType(order.TargetActor)) + // Deliver orders are only valid for own/allied actors, + // which are guaranteed to never be frozen. + if (order.Target.Type != TargetType.Actor) + return; + + // NOTE: An explicit deliver order forces the harvester to always deliver to this refinery. + var targetActor = order.Target.Actor; + var iao = targetActor.TraitOrDefault(); + if (iao == null || !iao.AllowDocking || !IsAcceptableProcType(targetActor)) return; - if (order.TargetActor != OwnerLinkedProc) - LinkProc(self, OwnerLinkedProc = order.TargetActor); + if (targetActor != OwnerLinkedProc) + LinkProc(self, OwnerLinkedProc = targetActor); idleSmart = true; - self.SetTargetLine(Target.FromOrder(self.World, order), Color.Green); + self.SetTargetLine(order.Target, Color.Green); self.CancelActivity(); var deliver = new DeliverResources(self); self.QueueActivity(deliver); - if (order.Target.Type == TargetType.Actor) - foreach (var n in notify) - n.MovingToRefinery(self, order.Target.Actor, deliver); + foreach (var n in notify) + n.MovingToRefinery(self, targetActor, deliver); } else if (order.OrderString == "Stop" || order.OrderString == "Move") {