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

View File

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