Separate turret tracking range for malign/smite

This commit is contained in:
Anuken 2024-09-24 12:36:51 -04:00
parent 56f3dac3d2
commit b2ef7f346f
2 changed files with 11 additions and 1 deletions

View File

@ -4954,6 +4954,7 @@ public class Blocks{
reload = 100f;
recoil = 2f;
range = 300;
trackingRange = range * 1.4f;
shootCone = 30f;
scaledHealth = 350;
rotateSpeed = 1.5f;
@ -5290,6 +5291,7 @@ public class Blocks{
envEnabled |= Env.space;
reload = 9f;
range = 370;
trackingRange = range * 1.4f;
shootCone = 100f;
scaledHealth = 370;
rotateSpeed = 2f;

View File

@ -60,6 +60,8 @@ public class Turret extends ReloadTurret{
public float shootX = 0f, shootY = Float.NEGATIVE_INFINITY;
/** Random spread on the X axis. */
public float xRand = 0f;
/** Range at which it finds and locks on to the taget, but does not shoot. */
public float trackingRange = 0f;
/** Minimum bullet range. Used for artillery only. */
public float minRange = 0f;
/** Minimum warmup needed to fire. */
@ -182,6 +184,7 @@ public class Turret extends ReloadTurret{
if(newTargetInterval <= 0f) newTargetInterval = targetInterval;
super.init();
trackingRange = Math.max(range, trackingRange);
}
@Override
@ -248,6 +251,10 @@ public class Turret extends ReloadTurret{
return range;
}
public float trackingRange(){
return range() + trackingRange - range;
}
@Override
public float warmup(){
return shootWarmup;
@ -425,6 +432,7 @@ public class Turret extends ReloadTurret{
targetPosition(target);
if(Float.isNaN(rotation)) rotation = 0;
canShoot = within(target, range() + (target instanceof Sized hb ? hb.hitSize()/1.9f : 0f));
}
if(!isControlled()){
@ -475,7 +483,7 @@ public class Turret extends ReloadTurret{
}
protected void findTarget(){
float range = range();
float range = trackingRange();
if(targetAir && !targetGround){
target = Units.bestEnemy(team, x, y, range, e -> !e.dead() && !e.isGrounded() && unitFilter.get(e), unitSort);