From a880cfc0257e97e11e4b94cf031fe88600288d71 Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Wed, 8 Jun 2022 05:50:20 -0700 Subject: [PATCH] Fix #6949 (#6988) * Fix #6949 * No point in calculating if it already does no damage Also don't show damage stat if it deals no damage. Co-authored-by: Anuken --- core/src/mindustry/ai/RtsAI.java | 4 ++-- .../world/blocks/defense/turrets/BaseTurret.java | 4 ++++ .../world/blocks/defense/turrets/TractorBeamTurret.java | 8 +++++++- .../mindustry/world/blocks/defense/turrets/Turret.java | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) 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;