diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 0c74faf4d0..3e7f67adcc 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4811,7 +4811,7 @@ public class Blocks{ afflict = new PowerTurret("afflict"){{ requirements(Category.turret, with(Items.surgeAlloy, 125, Items.silicon, 200, Items.graphite, 250, Items.oxide, 40)); buildCostMultiplier = 1.5f; - + shootType = new BasicBulletType(){{ shootEffect = new MultiEffect(Fx.shootTitan, new WaveEffect(){{ colorTo = Pal.surge; diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 44a75c783a..86719ed541 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -348,6 +348,8 @@ public class BulletType extends Content implements Cloneable{ /** Whether to display the ammo multiplayer for this bullet type in its stats. */ public boolean displayAmmoMultiplier = true; + /** If >0, this is displayed divided by the ammo multiplier. */ + public float statLiquidConsumed; /** Radius of light emitted by this bullet; <0 to use defaults. */ public float lightRadius = -1f; diff --git a/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java index b785e3ec4f..0b33122722 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ContinuousLiquidTurret.java @@ -31,21 +31,23 @@ public class ContinuousLiquidTurret extends ContinuousTurret{ @Override public void setStats(){ super.setStats(); + //mirror stats onto each bullet (purely visual) + ammoTypes.each((l, b) -> b.statLiquidConsumed = liquidConsumed); - stats.remove(Stat.ammo); - //TODO looks bad - stats.add(Stat.ammo, table -> { - table.row(); - StatValues.number(liquidConsumed * 60f, StatUnit.perSecond, true).display(table); - }); - stats.add(Stat.ammo, StatValues.ammo(ammoTypes)); + stats.replace(Stat.ammo, StatValues.ammo(ammoTypes)); } @Override public void init(){ - //TODO display ammoMultiplier. consume(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), liquidConsumed){ + { + multiplier = b -> { + var ammo = ammoTypes.get(b.liquids.current()); + return ammo == null ? 1f : 1f / ammo.ammoMultiplier; + }; + } + @Override public void display(Stats stats){ diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index 054d1d0276..74e253ca38 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -625,7 +625,12 @@ public class StatValues{ if(!compact && !(t instanceof Turret)){ bt.table(title -> { title.image(icon(t)).size(3 * 8).padRight(4).right().scaling(Scaling.fit).top().with(i -> withTooltip(i, t, false)); + title.add(t.localizedName).padRight(10).left().top(); + + if(type.displayAmmoMultiplier && type.statLiquidConsumed > 0f){ + title.add("[stat]" + fixValue(type.statLiquidConsumed / type.ammoMultiplier * 60f) + " [lightgray]" + StatUnit.perSecond.localized()); + } }); bt.row(); } @@ -654,7 +659,7 @@ public class StatValues{ sep(bt, Core.bundle.format("bullet.splashdamage", (int)type.splashDamage, Strings.fixed(type.splashDamageRadius / tilesize, 1))); } - if(!compact && !Mathf.equal(type.ammoMultiplier, 1f) && type.displayAmmoMultiplier && (!(t instanceof Turret turret) || turret.displayAmmoMultiplier)){ + if(type.statLiquidConsumed <= 0f && !compact && !Mathf.equal(type.ammoMultiplier, 1f) && type.displayAmmoMultiplier && (!(t instanceof Turret turret) || turret.displayAmmoMultiplier)){ sep(bt, Core.bundle.format("bullet.multiplier", (int)type.ammoMultiplier)); }