diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index 9f1b43d0d4..1f8f82831d 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -194,6 +194,7 @@ namespace OpenRA.Mods.Common.Traits public void RemovedFromWorld(Actor self) { + UnReserve(); self.World.ActorMap.RemoveInfluence(self, this); self.World.ActorMap.RemovePosition(self, this); self.World.ScreenMap.Remove(self); diff --git a/OpenRA.Mods.Common/Traits/Air/Helicopter.cs b/OpenRA.Mods.Common/Traits/Air/Helicopter.cs index 0cf5cdfc13..ad014678ce 100644 --- a/OpenRA.Mods.Common/Traits/Air/Helicopter.cs +++ b/OpenRA.Mods.Common/Traits/Air/Helicopter.cs @@ -133,8 +133,10 @@ namespace OpenRA.Mods.Common.Traits if (firstTick) { firstTick = false; - if (!self.HasTrait()) // TODO: Aircraft husks don't properly unreserve. - ReserveSpawnBuilding(); + if (self.HasTrait()) // TODO: Aircraft husks don't properly unreserve. + return; + + ReserveSpawnBuilding(); var host = GetActorBelow(); if (host == null) diff --git a/OpenRA.Mods.Common/Traits/Air/Plane.cs b/OpenRA.Mods.Common/Traits/Air/Plane.cs index b993cefe03..36451eed1b 100644 --- a/OpenRA.Mods.Common/Traits/Air/Plane.cs +++ b/OpenRA.Mods.Common/Traits/Air/Plane.cs @@ -43,8 +43,10 @@ namespace OpenRA.Mods.Common.Traits if (firstTick) { firstTick = false; - if (!self.HasTrait()) // TODO: Aircraft husks don't properly unreserve. - ReserveSpawnBuilding(); + if (self.HasTrait()) // TODO: Aircraft husks don't properly unreserve. + return; + + ReserveSpawnBuilding(); var host = GetActorBelow(); if (host == null) @@ -93,7 +95,8 @@ namespace OpenRA.Mods.Common.Traits } else if (order.OrderString == "Enter") { - if (Reservable.IsReserved(order.TargetActor)) return; + if (Reservable.IsReserved(order.TargetActor)) + return; UnReserve(); @@ -111,7 +114,8 @@ namespace OpenRA.Mods.Common.Traits else if (order.OrderString == "ReturnToBase") { var airfield = ReturnToBase.ChooseAirfield(self, true); - if (airfield == null) return; + if (airfield == null) + return; UnReserve(); self.CancelActivity();