From dff7cd3bbfdb73b58f09eebd5c514290f267d051 Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Tue, 23 Sep 2025 14:18:51 +0300 Subject: [PATCH] Fix aircraft failing to reload --- .../Activities/Air/FlyAttack.cs | 8 +++++-- .../Traits/Attack/AttackFollow.cs | 21 +++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/OpenRA.Mods.Common/Activities/Air/FlyAttack.cs b/OpenRA.Mods.Common/Activities/Air/FlyAttack.cs index 386814d65b..1adbc2f92a 100644 --- a/OpenRA.Mods.Common/Activities/Air/FlyAttack.cs +++ b/OpenRA.Mods.Common/Activities/Air/FlyAttack.cs @@ -134,11 +134,15 @@ namespace OpenRA.Mods.Common.Activities if (source == AttackSource.AttackMove) return true; - // AbortOnResupply cancels the current activity (after resupplying) plus any queued activities if (attackAircraft.Info.AbortOnResupply) + { + // AbortOnResupply cancels the current activity (after resupplying) plus any queued activities NextActivity?.Cancel(self); + Queue(new ReturnToBase(self)); + } + else + QueueChild(new ReturnToBase(self)); - QueueChild(new ReturnToBase(self)); returnToBase = true; return attackAircraft.Info.AbortOnResupply; } diff --git a/OpenRA.Mods.Common/Traits/Attack/AttackFollow.cs b/OpenRA.Mods.Common/Traits/Attack/AttackFollow.cs index 772833af31..0fdc79dd10 100644 --- a/OpenRA.Mods.Common/Traits/Attack/AttackFollow.cs +++ b/OpenRA.Mods.Common/Traits/Attack/AttackFollow.cs @@ -373,12 +373,9 @@ namespace OpenRA.Mods.Common.Traits if (source == AttackSource.AttackMove) return true; - // AbortOnResupply cancels the current activity (after resupplying) plus any queued activities - if (attack.Info.AbortOnResupply) - NextActivity?.Cancel(self); - + Activity rearmActivity = null; if (isAircraft) - QueueChild(new ReturnToBase(self)); + rearmActivity = new ReturnToBase(self); else { var target = self.World.ActorsHavingTrait() @@ -390,9 +387,21 @@ namespace OpenRA.Mods.Common.Traits .FirstOrDefault(); if (target != null) - QueueChild(new Resupply(self, target, new WDist(512))); + rearmActivity = new Resupply(self, target, new WDist(512)); } + if (rearmActivity == null) + return true; + + if (attack.Info.AbortOnResupply) + { + // AbortOnResupply cancels the current activity (after resupplying) plus any queued activities + NextActivity?.Cancel(self); + Queue(rearmActivity); + } + else + QueueChild(rearmActivity); + returnToBase = true; return attack.Info.AbortOnResupply; }