diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 2dc036d97b..9a1eba1fac 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -99,9 +99,9 @@ public class ForceProjector extends Block{ stats.add(Stat.shieldHealth, shieldHealth, StatUnit.none); stats.add(Stat.cooldownTime, (int) (shieldHealth / cooldownBrokenBase / 60f), StatUnit.seconds); - if(consItems){ + if(consItems && itemConsumer instanceof ConsumeItems coni){ stats.remove(Stat.booster); - stats.add(Stat.booster, StatValues.itemBoosters("+{0} " + StatUnit.shieldHealth.localized(), stats.timePeriod, phaseShieldBoost, phaseRadiusBoost, ((ConsumeItems)findConsumer(f -> f instanceof ConsumeItems)).items, this::consumesItem)); + stats.add(Stat.booster, StatValues.itemBoosters("+{0} " + StatUnit.shieldHealth.localized(), stats.timePeriod, phaseShieldBoost, phaseRadiusBoost, coni.items, this::consumesItem)); stats.add(Stat.booster, StatValues.speedBoosters("", coolantConsumption, Float.MAX_VALUE, true, this::consumesLiquid)); } } diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index 873849bd6a..369d0eecea 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -54,8 +54,14 @@ public class MendProjector extends Block{ stats.add(Stat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds); stats.add(Stat.range, range / tilesize, StatUnit.blocks); - stats.remove(Stat.booster); - stats.add(Stat.booster, StatValues.itemBoosters("{0}" + StatUnit.timesSpeed.localized(), stats.timePeriod, (phaseBoost + healPercent) / healPercent, phaseRangeBoost, ((ConsumeItems)findConsumer(f -> f instanceof ConsumeItems)).items, this::consumesItem)); + if(findConsumer(c -> c instanceof ConsumeItems) instanceof ConsumeItems cons){ + stats.remove(Stat.booster); + stats.add(Stat.booster, StatValues.itemBoosters( + "{0}" + StatUnit.timesSpeed.localized(), + stats.timePeriod, (phaseBoost + healPercent) / healPercent, phaseRangeBoost, + cons.items, this::consumesItem) + ); + } } @Override diff --git a/core/src/mindustry/world/blocks/defense/RegenProjector.java b/core/src/mindustry/world/blocks/defense/RegenProjector.java index 43c78bc61c..10c1126695 100644 --- a/core/src/mindustry/world/blocks/defense/RegenProjector.java +++ b/core/src/mindustry/world/blocks/defense/RegenProjector.java @@ -12,6 +12,7 @@ import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.world.*; +import mindustry.world.consumers.*; import mindustry.world.draw.*; import mindustry.world.meta.*; @@ -89,7 +90,15 @@ public class RegenProjector extends Block{ stats.add(Stat.repairTime, (int)(1f / (healPercent / 100f) / 60f), StatUnit.seconds); stats.add(Stat.range, range, StatUnit.blocks); - stats.add(Stat.boostEffect, optionalMultiplier, StatUnit.timesSpeed); + + if(findConsumer(c -> c instanceof ConsumeItems) instanceof ConsumeItems cons){ + stats.remove(Stat.booster); + stats.add(Stat.booster, StatValues.itemBoosters( + "{0}" + StatUnit.timesSpeed.localized(), + stats.timePeriod, optionalMultiplier, 0f, + cons.items, this::consumesItem) + ); + } } public class RegenProjectorBuild extends Building{ diff --git a/core/src/mindustry/world/blocks/production/BeamDrill.java b/core/src/mindustry/world/blocks/production/BeamDrill.java index f5473c36f2..d855de4e1d 100644 --- a/core/src/mindustry/world/blocks/production/BeamDrill.java +++ b/core/src/mindustry/world/blocks/production/BeamDrill.java @@ -114,9 +114,14 @@ public class BeamDrill extends Block{ stats.add(Stat.drillTier, StatValues.drillables(drillTime, 0f, size, drillMultipliers, b -> (b instanceof Floor f && f.wallOre && f.itemDrop != null && f.itemDrop.hardness <= tier) || (b instanceof StaticWall w && w.itemDrop != null && w.itemDrop.hardness <= tier))); stats.add(Stat.drillSpeed, 60f / drillTime * size, StatUnit.itemsSecond); - if(optionalBoostIntensity != 1){ + + if(optionalBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase) instanceof ConsumeLiquidBase consBase){ stats.remove(Stat.booster); - stats.add(Stat.booster, StatValues.speedBoosters("{0}" + StatUnit.timesSpeed.localized(), ((ConsumeLiquidBase)findConsumer(f -> f instanceof ConsumeLiquidBase)).amount, optionalBoostIntensity, false, l -> (consumesLiquid(l) && (findConsumer(f -> f instanceof ConsumeLiquid).booster || ((ConsumeLiquid)findConsumer(f -> f instanceof ConsumeLiquid)).liquid != l)))); + stats.add(Stat.booster, + StatValues.speedBoosters("{0}" + StatUnit.timesSpeed.localized(), + consBase.amount, optionalBoostIntensity, false, + l -> (consumesLiquid(l) && (findConsumer(f -> f instanceof ConsumeLiquid).booster || ((ConsumeLiquid)findConsumer(f -> f instanceof ConsumeLiquid)).liquid != l))) + ); } } diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index af677767f9..0068ed4d65 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -175,9 +175,14 @@ public class Drill extends Block{ f.itemDrop.hardness <= tier && f.itemDrop != blockedItem && (indexer.isBlockPresent(f) || state.isMenu()))); stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond); - if(liquidBoostIntensity != 1){ + + if(liquidBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase) instanceof ConsumeLiquidBase consBase){ stats.remove(Stat.booster); - stats.add(Stat.booster, StatValues.speedBoosters("{0}" + StatUnit.timesSpeed.localized(), ((ConsumeLiquidBase)findConsumer(f -> f instanceof ConsumeLiquidBase)).amount, liquidBoostIntensity * liquidBoostIntensity, false, this::consumesLiquid)); + stats.add(Stat.booster, + StatValues.speedBoosters("{0}" + StatUnit.timesSpeed.localized(), + consBase.amount, + liquidBoostIntensity * liquidBoostIntensity, false, this::consumesLiquid) + ); } }