Remove order.TargetActor from Harvester.

This commit is contained in:
Paul Chote
2018-05-24 19:44:59 +01:00
committed by reaperrr
parent 883834f1c3
commit ae056e969f

View File

@@ -395,26 +395,31 @@ namespace OpenRA.Mods.Common.Traits
} }
else if (order.OrderString == "Deliver") else if (order.OrderString == "Deliver")
{ {
// NOTE: An explicit deliver order forces the harvester to always deliver to this refinery. // Deliver orders are only valid for own/allied actors,
var iao = order.TargetActor.TraitOrDefault<IAcceptResources>(); // which are guaranteed to never be frozen.
if (iao == null || !iao.AllowDocking || !IsAcceptableProcType(order.TargetActor)) if (order.Target.Type != TargetType.Actor)
return; return;
if (order.TargetActor != OwnerLinkedProc) // NOTE: An explicit deliver order forces the harvester to always deliver to this refinery.
LinkProc(self, OwnerLinkedProc = order.TargetActor); var targetActor = order.Target.Actor;
var iao = targetActor.TraitOrDefault<IAcceptResources>();
if (iao == null || !iao.AllowDocking || !IsAcceptableProcType(targetActor))
return;
if (targetActor != OwnerLinkedProc)
LinkProc(self, OwnerLinkedProc = targetActor);
idleSmart = true; idleSmart = true;
self.SetTargetLine(Target.FromOrder(self.World, order), Color.Green); self.SetTargetLine(order.Target, Color.Green);
self.CancelActivity(); self.CancelActivity();
var deliver = new DeliverResources(self); var deliver = new DeliverResources(self);
self.QueueActivity(deliver); self.QueueActivity(deliver);
if (order.Target.Type == TargetType.Actor) foreach (var n in notify)
foreach (var n in notify) n.MovingToRefinery(self, targetActor, deliver);
n.MovingToRefinery(self, order.Target.Actor, deliver);
} }
else if (order.OrderString == "Stop" || order.OrderString == "Move") else if (order.OrderString == "Stop" || order.OrderString == "Move")
{ {