diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index 23f22e92c9..94b138a6f6 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -16,7 +16,7 @@ import mindustry.graphics.*; import mindustry.logic.*; import mindustry.ui.*; import mindustry.world.*; -import mindustry.world.blocks.defense.turrets.Turret.*; +import mindustry.world.blocks.defense.turrets.BaseTurret.*; import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.CoreBlock.*; import mindustry.world.meta.*; @@ -277,7 +277,7 @@ public class RtsAI{ float extraRadius = 50f; for(var turret : Vars.indexer.getEnemy(data.team, BlockFlag.turret)){ - if(turret instanceof TurretBuild t && Intersector.distanceSegmentPoint(fromX, fromY, x, y, t.x, t.y) <= t.range() + extraRadius){ + if(turret instanceof BaseTurretBuild t && Intersector.distanceSegmentPoint(fromX, fromY, x, y, t.x, t.y) <= t.range() + extraRadius){ health[0] += t.health; dps[0] += t.estimateDps(); } diff --git a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java index a2413de8c1..be68f57f40 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java @@ -83,5 +83,9 @@ public class BaseTurret extends Block{ public void drawSelect(){ Drawf.dashCircle(x, y, range(), team.color); } + + public float estimateDps(){ + return 0f; + } } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java b/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java index c21332bbb2..217b9ec605 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java @@ -58,7 +58,7 @@ public class TractorBeamTurret extends BaseTurret{ stats.add(Stat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround); - stats.add(Stat.damage, damage * 60f, StatUnit.perSecond); + if(damage > 0) stats.add(Stat.damage, damage * 60f, StatUnit.perSecond); } @Override @@ -137,6 +137,12 @@ public class TractorBeamTurret extends BaseTurret{ return super.shouldConsume() && target != null; } + @Override + public float estimateDps(){ + if(!any || damage <= 0) return 0f; + return damage * 60f * efficiency * coolantMultiplier; + } + @Override public void draw(){ Draw.rect(baseRegion, x, y); diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index a720f7f1c3..b584f1d2b7 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -214,6 +214,7 @@ public class Turret extends ReloadTurret{ public float heatReq; public float[] sideHeat = new float[4]; + @Override public float estimateDps(){ if(!hasAmmo()) return 0f; return shoot.shots / reload * 60f * (peekAmmo() == null ? 0f : peekAmmo().estimateDPS()) * potentialEfficiency * timeScale;