From cbc4797f4e26222eeb6e75002bf0e68198078f16 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Sep 2024 22:09:46 -0400 Subject: [PATCH] Fixed turrets ignoring nearby targets with increased tracking range --- .../world/blocks/defense/turrets/Turret.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 0679c6cdf2..d9d8208927 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -482,13 +482,21 @@ public class Turret extends ReloadTurret{ return targetHealing && hasAmmo() && peekAmmo().collidesTeam && peekAmmo().heals(); } - protected void findTarget(){ - float range = trackingRange(); - + protected Posc findEnemy(float range){ if(targetAir && !targetGround){ - target = Units.bestEnemy(team, x, y, range, e -> !e.dead() && !e.isGrounded() && unitFilter.get(e), unitSort); + return Units.bestEnemy(team, x, y, range, e -> !e.dead() && !e.isGrounded() && unitFilter.get(e), unitSort); }else{ - target = Units.bestTarget(team, x, y, range, e -> !e.dead() && unitFilter.get(e) && (e.isGrounded() || targetAir) && (!e.isGrounded() || targetGround), b -> targetGround && buildingFilter.get(b), unitSort); + return Units.bestTarget(team, x, y, range, e -> !e.dead() && unitFilter.get(e) && (e.isGrounded() || targetAir) && (!e.isGrounded() || targetGround), b -> targetGround && buildingFilter.get(b), unitSort); + } + } + + protected void findTarget(){ + float trackRange = trackingRange(), range = range(); + + target = findEnemy(trackRange); + //find another target within the tracking range, but only if there's nothing else (always prioritize standard target) + if(!Mathf.equal(trackRange, range) && target == null){ + target = findEnemy(trackRange); } if(target == null && canHeal()){