diff --git a/OpenRA.Mods.Common/Activities/Air/HeliReturnToBase.cs b/OpenRA.Mods.Common/Activities/Air/HeliReturnToBase.cs index 1fccc96e02..7ce5e2a7de 100644 --- a/OpenRA.Mods.Common/Activities/Air/HeliReturnToBase.cs +++ b/OpenRA.Mods.Common/Activities/Air/HeliReturnToBase.cs @@ -106,7 +106,9 @@ namespace OpenRA.Mods.Common.Activities { aircraft.MakeReservation(dest); - landingProcedures.Add(new Turn(self, initialFacing)); + if (aircraft.Info.TurnToDock) + landingProcedures.Add(new Turn(self, initialFacing)); + landingProcedures.Add(new HeliLand(self, false)); landingProcedures.Add(new ResupplyAircraft(self)); if (!abortOnResupply) diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index 7b07a4726d..82aae460e1 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -69,9 +69,12 @@ namespace OpenRA.Mods.Common.Traits [Desc("Will this actor try to land after it has no more commands?")] public readonly bool LandWhenIdle = true; - [Desc("Does this actor need to turn before landing?")] + [Desc("Does this VTOL actor need to turn before landing (on terrain)?")] public readonly bool TurnToLand = false; + [Desc("Does this VTOL actor need to turn before landing on a resupplier?")] + public readonly bool TurnToDock = true; + [Desc("Does this actor cancel its previous activity after resupplying?")] public readonly bool AbortOnResupply = true; @@ -752,7 +755,9 @@ namespace OpenRA.Mods.Common.Traits var offset = exit != null ? exit.Info.SpawnOffset : WVec.Zero; self.QueueActivity(new HeliFly(self, Target.FromPos(targetActor.CenterPosition + offset))); - self.QueueActivity(new Turn(self, Info.InitialFacing)); + if (Info.TurnToDock) + self.QueueActivity(new Turn(self, Info.InitialFacing)); + self.QueueActivity(new HeliLand(self, false)); self.QueueActivity(new ResupplyAircraft(self)); };