mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-03-09 20:29:06 +07:00
Merge branch 'SomeonesShade-balancing_burst-drill-optional-multiplier'
This commit is contained in:
commit
0db7c1e36a
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user