From 883834f1c3bb5415f50c06802abbffa0e2f66060 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 24 May 2018 19:43:10 +0100 Subject: [PATCH] Remove order.TargetActor from Aircraft. --- OpenRA.Mods.Common/Traits/Air/Aircraft.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index 93d1033f46..fe2ab59821 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -712,10 +712,16 @@ namespace OpenRA.Mods.Common.Traits } else if (order.OrderString == "Enter") { + // Enter orders are only valid for own/allied actors, + // which are guaranteed to never be frozen. + if (order.Target.Type != TargetType.Actor) + return; + if (!order.Queued) UnReserve(); - if (Reservable.IsReserved(order.TargetActor)) + var targetActor = order.Target.Actor; + if (Reservable.IsReserved(targetActor)) { if (!Info.CanHover) self.QueueActivity(new ReturnToBase(self, Info.AbortOnResupply)); @@ -724,24 +730,24 @@ namespace OpenRA.Mods.Common.Traits } else { - self.SetTargetLine(Target.FromActor(order.TargetActor), Color.Green); + self.SetTargetLine(Target.FromActor(targetActor), Color.Green); if (!Info.CanHover && !Info.VTOL) { self.QueueActivity(order.Queued, ActivityUtils.SequenceActivities( - new ReturnToBase(self, Info.AbortOnResupply, order.TargetActor), + new ReturnToBase(self, Info.AbortOnResupply, targetActor), new ResupplyAircraft(self))); } else { - MakeReservation(order.TargetActor); + MakeReservation(targetActor); Action enter = () => { - var exit = order.TargetActor.Info.FirstExitOrDefault(null); + var exit = targetActor.Info.FirstExitOrDefault(null); var offset = (exit != null) ? exit.SpawnOffset : WVec.Zero; - self.QueueActivity(new HeliFly(self, Target.FromPos(order.TargetActor.CenterPosition + offset))); + self.QueueActivity(new HeliFly(self, Target.FromPos(targetActor.CenterPosition + offset))); self.QueueActivity(new Turn(self, Info.InitialFacing)); self.QueueActivity(new HeliLand(self, false)); self.QueueActivity(new ResupplyAircraft(self));