diff --git a/OpenRA.Mods.Cnc/Traits/AttackPopupTurreted.cs b/OpenRA.Mods.Cnc/Traits/AttackPopupTurreted.cs index ea0fe29d67..ea8a4482d3 100644 --- a/OpenRA.Mods.Cnc/Traits/AttackPopupTurreted.cs +++ b/OpenRA.Mods.Cnc/Traits/AttackPopupTurreted.cs @@ -79,7 +79,7 @@ namespace OpenRA.Mods.Cnc.Traits return false; } - return turret.FaceTarget(self, target); + return true; } public void TickIdle(Actor self) diff --git a/OpenRA.Mods.Common/Traits/Attack/AttackTurreted.cs b/OpenRA.Mods.Common/Traits/Attack/AttackTurreted.cs index bfd26e0620..be6092e318 100644 --- a/OpenRA.Mods.Common/Traits/Attack/AttackTurreted.cs +++ b/OpenRA.Mods.Common/Traits/Attack/AttackTurreted.cs @@ -32,14 +32,16 @@ namespace OpenRA.Mods.Common.Traits protected override bool CanAttack(Actor self, Target target) { - if (!base.CanAttack(self, target)) + if (target.Type == TargetType.Invalid) return false; + // Don't break early from this loop - we want to bring all turrets to bear! + var turretReady = false; foreach (var t in turrets) if (t.FaceTarget(self, target)) - return true; + turretReady = true; - return false; + return turretReady && base.CanAttack(self, target); } } }