Merge branch 'balancing_burst-drill-optional-multiplier' of https://github.com/SomeonesShade/Mindustry into SomeonesShade-balancing_burst-drill-optional-multiplier

This commit is contained in:
Anuken
2025-02-10 15:51:47 -05:00
3 changed files with 30 additions and 11 deletions

View File

@@ -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.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.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.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.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. 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-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-router.description = Distributes fluids equally to all sides.
block.reinforced-liquid-tank.description = Stores a large amount of fluids. block.reinforced-liquid-tank.description = Stores a large amount of fluids.

View File

@@ -2882,17 +2882,19 @@ public class Blocks{
blockedItem = Items.thorium; blockedItem = Items.thorium;
researchCostMultiplier = 0.5f; researchCostMultiplier = 0.5f;
drillMultipliers.put(Items.beryllium, 2.5f); drillMultipliers.put(Items.beryllium, 1.95f);
liquidBoostIntensity = 1.75f;
fogRadius = 4; fogRadius = 4;
consumePower(160f / 60f); consumePower(160f / 60f);
consumeLiquid(Liquids.water, 10f/60f); consumeLiquid(Liquids.water, 10f/60f);
consumeLiquid(Liquids.ozone, 3f / 60f).boost();
}}; }};
eruptionDrill = new BurstDrill("eruption-drill"){{ eruptionDrill = new BurstDrill("eruption-drill"){{
requirements(Category.production, with(Items.silicon, 200, Items.oxide, 20, Items.tungsten, 200, Items.thorium, 120)); requirements(Category.production, with(Items.silicon, 300, Items.oxide, 20, Items.tungsten, 250, Items.thorium, 150));
drillTime = 60f * 6f; drillTime = 281.25f;
size = 5; size = 5;
hasPower = true; hasPower = true;
tier = 7; tier = 7;
@@ -2904,18 +2906,20 @@ public class Blocks{
Fx.mineImpactWave.wrap(Liquids.hydrogen.color, 45f) Fx.mineImpactWave.wrap(Liquids.hydrogen.color, 45f)
); );
shake = 4f; shake = 4f;
itemCapacity = 50; itemCapacity = 60;
arrowOffset = 2f; arrowOffset = 2f;
arrowSpacing = 5f; arrowSpacing = 5f;
arrows = 2; arrows = 2;
glowColor.a = 0.6f; glowColor.a = 0.6f;
fogRadius = 5; fogRadius = 5;
drillMultipliers.put(Items.beryllium, 2.5f); drillMultipliers.put(Items.beryllium, 1.35f);
liquidBoostIntensity = 2f;
//TODO different requirements //TODO different requirements
consumePower(6f); consumePower(6f);
consumeLiquids(LiquidStack.with(Liquids.hydrogen, 4f / 60f)); consumeLiquid(Liquids.hydrogen, 4f / 60f);
consumeLiquid(Liquids.cyanogen, 3f / 60f).boost();
}}; }};
//endregion //endregion

View File

@@ -11,6 +11,8 @@ import mindustry.entities.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.consumers.*;
import mindustry.world.meta.*;
public class BurstDrill extends Drill{ public class BurstDrill extends Drill{
public float shake = 2f; 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 //does not drill in the traditional sense, so this is not even used
hardnessDrillMultiplier = 0f; hardnessDrillMultiplier = 0f;
liquidBoostIntensity = 1f;
//generally at center //generally at center
drillEffectRnd = 0f; drillEffectRnd = 0f;
drillEffect = Fx.shockwave; drillEffect = Fx.shockwave;
@@ -53,6 +54,20 @@ public class BurstDrill extends Drill{
return drillTime / drillMultipliers.get(item, 1f); 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,
l -> (consumesLiquid(l) && (findConsumer(f -> f instanceof ConsumeLiquid).booster || ((ConsumeLiquid)findConsumer(f -> f instanceof ConsumeLiquid)).liquid != l)))
);
}
}
public class BurstDrillBuild extends DrillBuild{ public class BurstDrillBuild extends DrillBuild{
//used so the lights don't fade out immediately //used so the lights don't fade out immediately
public float smoothProgress = 0f; public float smoothProgress = 0f;
@@ -77,7 +92,7 @@ public class BurstDrill extends Drill{
if(items.total() <= itemCapacity - dominantItems && dominantItems > 0 && efficiency > 0){ if(items.total() <= itemCapacity - dominantItems && dominantItems > 0 && efficiency > 0){
warmup = Mathf.approachDelta(warmup, progress / drillTime, 0.01f); 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; timeDrilled += speedCurve.apply(progress / drillTime) * speed;