diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4613532a31..e9f5aa6008 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2297,8 +2297,8 @@ block.plasma-bore.description = When placed facing an ore wall, outputs items in block.large-plasma-bore.description = A larger plasma bore. Capable of mining tungsten and thorium. Requires hydrogen and power.\nOptionally uses nitrogen to boost efficiency. block.cliff-crusher.description = Crushes walls, outputting sand indefinitely. Requires power. Efficiency varies based on type of wall. block.large-cliff-crusher.description = Crushes walls, outputting sand indefinitely. Requires power and ozone. Efficiency varies based on type of wall. Optionally consumes tungsten to increase efficiency. -block.impact-drill.description = When placed on ore, outputs items in bursts indefinitely. Requires power and water. -block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. +block.impact-drill.description = When placed on ore, outputs items in bursts indefinitely. Requires power and water.\nOptionally uses ozone to boost efficiency. +block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen.\nOptionally uses cyanogen to boost efficiency. block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. block.reinforced-liquid-router.description = Distributes fluids equally to all sides. block.reinforced-liquid-tank.description = Stores a large amount of fluids. diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 9919875489..1d1c788b2b 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2882,17 +2882,19 @@ public class Blocks{ blockedItem = Items.thorium; researchCostMultiplier = 0.5f; - drillMultipliers.put(Items.beryllium, 2.5f); + drillMultipliers.put(Items.beryllium, 1.95f); + liquidBoostIntensity = 1.75f; fogRadius = 4; consumePower(160f / 60f); consumeLiquid(Liquids.water, 10f/60f); + consumeLiquid(Liquids.ozone, 3f / 60f).boost(); }}; eruptionDrill = new BurstDrill("eruption-drill"){{ - requirements(Category.production, with(Items.silicon, 200, Items.oxide, 20, Items.tungsten, 200, Items.thorium, 120)); - drillTime = 60f * 6f; + requirements(Category.production, with(Items.silicon, 300, Items.oxide, 20, Items.tungsten, 250, Items.thorium, 150)); + drillTime = 281.25f; size = 5; hasPower = true; tier = 7; @@ -2904,18 +2906,20 @@ public class Blocks{ Fx.mineImpactWave.wrap(Liquids.hydrogen.color, 45f) ); shake = 4f; - itemCapacity = 50; + itemCapacity = 60; arrowOffset = 2f; arrowSpacing = 5f; arrows = 2; glowColor.a = 0.6f; fogRadius = 5; - drillMultipliers.put(Items.beryllium, 2.5f); - + drillMultipliers.put(Items.beryllium, 1.35f); + liquidBoostIntensity = 2f; + //TODO different requirements consumePower(6f); - consumeLiquids(LiquidStack.with(Liquids.hydrogen, 4f / 60f)); + consumeLiquid(Liquids.hydrogen, 4f / 60f); + consumeLiquid(Liquids.cyanogen, 3f / 60f).boost(); }}; //endregion diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index cf4340866e..150800705c 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -11,6 +11,8 @@ import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; +import mindustry.world.consumers.*; +import mindustry.world.meta.*; public class BurstDrill extends Drill{ public float shake = 2f; @@ -35,7 +37,6 @@ public class BurstDrill extends Drill{ //does not drill in the traditional sense, so this is not even used hardnessDrillMultiplier = 0f; - liquidBoostIntensity = 1f; //generally at center drillEffectRnd = 0f; drillEffect = Fx.shockwave; @@ -53,6 +54,19 @@ public class BurstDrill extends Drill{ return drillTime / drillMultipliers.get(item, 1f); } + @Override + public void setStats(){ + super.setStats(); + + if(liquidBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase && f.booster) instanceof ConsumeLiquidBase consBase){ + stats.remove(Stat.booster); + stats.add(Stat.booster, + StatValues.speedBoosters("{0}" + StatUnit.timesSpeed.localized(), + consBase.amount, liquidBoostIntensity, false, consBase::consumes) + ); + } + } + public class BurstDrillBuild extends DrillBuild{ //used so the lights don't fade out immediately public float smoothProgress = 0f; @@ -77,7 +91,7 @@ public class BurstDrill extends Drill{ if(items.total() <= itemCapacity - dominantItems && dominantItems > 0 && efficiency > 0){ warmup = Mathf.approachDelta(warmup, progress / drillTime, 0.01f); - float speed = efficiency; + float speed = Mathf.lerp(1f, liquidBoostIntensity, optionalEfficiency) * efficiency; timeDrilled += speedCurve.apply(progress / drillTime) * speed; diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index 9e165e18f1..cd54b6f0c5 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -181,12 +181,12 @@ public class Drill extends Block{ stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond); - if(liquidBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase) instanceof ConsumeLiquidBase consBase){ + if(liquidBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase && f.booster) instanceof ConsumeLiquidBase consBase){ stats.remove(Stat.booster); stats.add(Stat.booster, StatValues.speedBoosters("{0}" + StatUnit.timesSpeed.localized(), consBase.amount, - liquidBoostIntensity * liquidBoostIntensity, false, this::consumesLiquid) + liquidBoostIntensity * liquidBoostIntensity, false, consBase::consumes) ); } }