Fix aircraft being repaired mid-air

Repairable was originally written for ground actors,
so it's both safer and much easier to just handle this in Aircraft directly.
This commit is contained in:
reaperrr
2018-11-19 10:36:52 +01:00
committed by Paul Chote
parent 560d7b4ee8
commit b8d3c9f73a
2 changed files with 6 additions and 2 deletions

View File

@@ -717,9 +717,9 @@ namespace OpenRA.Mods.Common.Traits
else else
self.QueueActivity(order.Queued, new HeliFlyAndLandWhenIdle(self, target, Info)); self.QueueActivity(order.Queued, new HeliFlyAndLandWhenIdle(self, target, Info));
} }
else if (order.OrderString == "Enter") else if (order.OrderString == "Enter" || order.OrderString == "Repair")
{ {
// Enter orders are only valid for own/allied actors, // Enter and Repair orders are only valid for own/allied actors,
// which are guaranteed to never be frozen. // which are guaranteed to never be frozen.
if (order.Target.Type != TargetType.Actor) if (order.Target.Type != TargetType.Actor)
return; return;

View File

@@ -101,6 +101,10 @@ namespace OpenRA.Mods.Common.Traits
if (order.Target.Type != TargetType.Actor) if (order.Target.Type != TargetType.Actor)
return; return;
// Aircraft handle Repair orders directly in the Aircraft trait
if (self.Info.HasTraitInfo<AircraftInfo>())
return;
if (!CanRepairAt(order.Target.Actor) || (!CanRepair() && !CanRearm())) if (!CanRepairAt(order.Target.Actor) || (!CanRepair() && !CanRearm()))
return; return;