From 0bed22a5094e33b0ffaba91087aca18ef265f6f1 Mon Sep 17 00:00:00 2001 From: Shade Date: Sun, 4 Feb 2024 15:49:46 +0800 Subject: [PATCH 01/12] implemented optionalBoostIntensity in BurstDrill --- .../world/blocks/production/BurstDrill.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index cf4340866e6b..07020961bfef 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -11,6 +11,11 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; +import mindustry.world.blocks.environment.*; +import mindustry.world.consumers.*; +import mindustry.world.meta.*; + +import static mindustry.Vars.*; public class BurstDrill extends Drill{ public float shake = 2f; @@ -22,6 +27,8 @@ public class BurstDrill extends Drill{ public @Load("@-arrow-blur") TextureRegion arrowBlurRegion; public float invertedTime = 200f; + /** How many times faster the drill will progress when boosted by an optional consumer. */ + public float optionalBoostIntensity = 1.5f; public float arrowSpacing = 4f, arrowOffset = 0f; public int arrows = 3; public Color arrowColor = Color.valueOf("feb380"), baseArrowColor = Color.valueOf("6e7080"); @@ -53,6 +60,23 @@ public float getDrillTime(Item item){ return drillTime / drillMultipliers.get(item, 1f); } + @Override + public void setStats(){ + stats.add(Stat.drillTier, StatValues.drillables(drillTime, hardnessDrillMultiplier, size * size, drillMultipliers, b -> b instanceof Floor f && !f.wallOre && f.itemDrop != null && + f.itemDrop.hardness <= tier && f.itemDrop != blockedItem && (indexer.isBlockPresent(f) || state.isMenu()))); + + stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond); + + if(optionalBoostIntensity != 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, optionalBoostIntensity, false, + l -> (consumesLiquid(l) && (findConsumer(f -> f instanceof ConsumeLiquid).booster || ((ConsumeLiquid)findConsumer(f -> f instanceof ConsumeLiquid)).liquid != l))) + ); + } + } + public class BurstDrillBuild extends DrillBuild{ //used so the lights don't fade out immediately public float smoothProgress = 0f; @@ -70,7 +94,8 @@ public void updateTile(){ dump(items.has(dominantItem) ? dominantItem : null); } - float drillTime = getDrillTime(dominantItem); + float multiplier = Mathf.lerp(1f, optionalBoostIntensity, optionalEfficiency); + float drillTime = getDrillTime(dominantItem) / multiplier; smoothProgress = Mathf.lerpDelta(smoothProgress, progress / (drillTime - 20f), 0.1f); From efcd99f505da9271782f70c32f895f5757c479e6 Mon Sep 17 00:00:00 2001 From: Shade Date: Sun, 4 Feb 2024 17:07:48 +0800 Subject: [PATCH 02/12] Fixes... pt 1 Thanks BalaM314 using liquidBoostIntensity rather than optionalBoostIntensity applied on speed rather than drillTime --- .../world/blocks/production/BurstDrill.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index 07020961bfef..3bc3e76abfe6 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -27,8 +27,6 @@ public class BurstDrill extends Drill{ public @Load("@-arrow-blur") TextureRegion arrowBlurRegion; public float invertedTime = 200f; - /** How many times faster the drill will progress when boosted by an optional consumer. */ - public float optionalBoostIntensity = 1.5f; public float arrowSpacing = 4f, arrowOffset = 0f; public int arrows = 3; public Color arrowColor = Color.valueOf("feb380"), baseArrowColor = Color.valueOf("6e7080"); @@ -67,11 +65,11 @@ public void setStats(){ stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond); - if(optionalBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase && f.booster) 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, optionalBoostIntensity, false, + consBase.amount, liquidBoostIntensity, false, l -> (consumesLiquid(l) && (findConsumer(f -> f instanceof ConsumeLiquid).booster || ((ConsumeLiquid)findConsumer(f -> f instanceof ConsumeLiquid)).liquid != l))) ); } @@ -93,16 +91,15 @@ public void updateTile(){ if(timer(timerDump, dumpTime)){ dump(items.has(dominantItem) ? dominantItem : null); } - - float multiplier = Mathf.lerp(1f, optionalBoostIntensity, optionalEfficiency); - float drillTime = getDrillTime(dominantItem) / multiplier; + + float drillTime = getDrillTime(dominantItem); smoothProgress = Mathf.lerpDelta(smoothProgress, progress / (drillTime - 20f), 0.1f); 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; From c0047c0f49774de2e7965f6a66a27e81a4a34079 Mon Sep 17 00:00:00 2001 From: Shade Date: Sun, 4 Feb 2024 18:12:46 +0800 Subject: [PATCH 03/12] Stat Changes Round 1 impact drill beryl multi (2.5x -> 2x) nitro buff (2.5x) (2/s) eruption drill base drill (6 sec -> 5.5 sec, or 4.16 -> 4.54) beryl multi (2.5x -> 1.5x) cyano buff (2.1x) (0.64/s) --- core/src/mindustry/content/Blocks.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index c86f3ffe5628..b2191841b460 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2847,17 +2847,19 @@ public static void load(){ blockedItem = Items.thorium; researchCostMultiplier = 0.5f; - drillMultipliers.put(Items.beryllium, 2.5f); + drillMultipliers.put(Items.beryllium, 2f); + liquidBoostIntensity = 2.5f; fogRadius = 4; consumePower(160f / 60f); consumeLiquid(Liquids.water, 0.2f); + consumeLiquid(Liquids.nitrogen, 2f / 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; + drillTime = 60f * 5.5f; size = 5; hasPower = true; tier = 7; @@ -2876,11 +2878,13 @@ public static void load(){ glowColor.a = 0.6f; fogRadius = 5; - drillMultipliers.put(Items.beryllium, 2.5f); - + drillMultipliers.put(Items.beryllium, 1.5f); + liquidBoostIntensity = 2.1f; + //TODO different requirements consumePower(6f); - consumeLiquids(LiquidStack.with(Liquids.hydrogen, 4f / 60f)); + consumeLiquid(Liquids.hydrogen, 4f / 60f); + consumeLiquid(Liquids.cyanogen, 0.64f / 60f).boost(); }}; //endregion From 096f3ec0d39ef75ae736f989d88fd3feb162e31b Mon Sep 17 00:00:00 2001 From: Shade Date: Sun, 4 Feb 2024 20:34:30 +0800 Subject: [PATCH 04/12] forgor super.setStats(), removed uneccesary liquidBoostIntensity from Constructor --- core/src/mindustry/world/blocks/production/BurstDrill.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index 3bc3e76abfe6..c8e92996d816 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -40,7 +40,6 @@ public BurstDrill(String name){ //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; @@ -60,10 +59,7 @@ public float getDrillTime(Item item){ @Override public void setStats(){ - stats.add(Stat.drillTier, StatValues.drillables(drillTime, hardnessDrillMultiplier, size * size, drillMultipliers, b -> b instanceof Floor f && !f.wallOre && f.itemDrop != null && - f.itemDrop.hardness <= tier && f.itemDrop != blockedItem && (indexer.isBlockPresent(f) || state.isMenu()))); - - stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond); + super.setStats(); if(liquidBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase && f.booster) instanceof ConsumeLiquidBase consBase){ stats.remove(Stat.booster); From 6f4716cb53761fd77727d81387fd4c9cd030c88a Mon Sep 17 00:00:00 2001 From: Shade Date: Fri, 9 Feb 2024 23:22:01 +0800 Subject: [PATCH 05/12] Round 2 Drill Stats Eruption and nitro impact now has the same tile efficiency Beryl nitro impact doesn't beat Beryl eruption Buffed Base Eruption Further (now to 5.33 * 60f) Nerfed Cyano Boost Cost --- core/src/mindustry/content/Blocks.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index b2191841b460..9b1265b9d6d7 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2847,8 +2847,8 @@ public static void load(){ blockedItem = Items.thorium; researchCostMultiplier = 0.5f; - drillMultipliers.put(Items.beryllium, 2f); - liquidBoostIntensity = 2.5f; + drillMultipliers.put(Items.beryllium, 1.3f); + liquidBoostIntensity = 2.25f; fogRadius = 4; @@ -2859,7 +2859,7 @@ public static void load(){ eruptionDrill = new BurstDrill("eruption-drill"){{ requirements(Category.production, with(Items.silicon, 200, Items.oxide, 20, Items.tungsten, 200, Items.thorium, 120)); - drillTime = 60f * 5.5f; + drillTime = 320f; size = 5; hasPower = true; tier = 7; @@ -2879,12 +2879,12 @@ public static void load(){ fogRadius = 5; drillMultipliers.put(Items.beryllium, 1.5f); - liquidBoostIntensity = 2.1f; + liquidBoostIntensity = 2f; //TODO different requirements consumePower(6f); consumeLiquid(Liquids.hydrogen, 4f / 60f); - consumeLiquid(Liquids.cyanogen, 0.64f / 60f).boost(); + consumeLiquid(Liquids.cyanogen, 1.5f / 60f).boost(); }}; //endregion From bfbd11b11f81ddbd75bcddb8c6cc17412b5ee108 Mon Sep 17 00:00:00 2001 From: Shade Date: Fri, 9 Feb 2024 23:40:47 +0800 Subject: [PATCH 06/12] Forgot This nitro beryl impact can now match lpd if at full ore coverage --- core/src/mindustry/content/Blocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 9b1265b9d6d7..128fa1b8146e 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2847,7 +2847,7 @@ public static void load(){ blockedItem = Items.thorium; researchCostMultiplier = 0.5f; - drillMultipliers.put(Items.beryllium, 1.3f); + drillMultipliers.put(Items.beryllium, 1.5f); liquidBoostIntensity = 2.25f; fogRadius = 4; From 69c3e368c3806b36ea9ef65b95abf23c5b35b4ad Mon Sep 17 00:00:00 2001 From: Shade Date: Tue, 27 Feb 2024 22:51:40 +0800 Subject: [PATCH 07/12] Final Stats for Attempt#2 nitro -> ozone and base eruption buff (which causes knock on effects as shown) --- core/src/mindustry/content/Blocks.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 128fa1b8146e..e561767aff36 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2847,19 +2847,19 @@ public static void load(){ blockedItem = Items.thorium; researchCostMultiplier = 0.5f; - drillMultipliers.put(Items.beryllium, 1.5f); - liquidBoostIntensity = 2.25f; + drillMultipliers.put(Items.beryllium, 1.95f); + liquidBoostIntensity = 1.75f; fogRadius = 4; consumePower(160f / 60f); - consumeLiquid(Liquids.water, 0.2f); - consumeLiquid(Liquids.nitrogen, 2f / 60f).boost(); + 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 = 320f; + drillTime = 3000f / 11f; size = 5; hasPower = true; tier = 7; @@ -2871,14 +2871,14 @@ public static void load(){ 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, 1.5f); + drillMultipliers.put(Items.beryllium, 1.35f); liquidBoostIntensity = 2f; //TODO different requirements From edd235774c17ff359e2ee5a0a39bb976d80a852c Mon Sep 17 00:00:00 2001 From: Shade Date: Sat, 2 Mar 2024 23:47:00 +0800 Subject: [PATCH 08/12] Nerfed Eruption Drill Speed (5.5 i/s -> 5.33 i/s) --- core/src/mindustry/content/Blocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index e561767aff36..7ce7e26741db 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2859,7 +2859,7 @@ public static void load(){ eruptionDrill = new BurstDrill("eruption-drill"){{ requirements(Category.production, with(Items.silicon, 200, Items.oxide, 20, Items.tungsten, 200, Items.thorium, 120)); - drillTime = 3000f / 11f; + drillTime = 281.25f; size = 5; hasPower = true; tier = 7; From 65156e440953297b1bc9a41a4a0c5ef12bf85b73 Mon Sep 17 00:00:00 2001 From: Shade Date: Mon, 4 Mar 2024 22:39:08 +0800 Subject: [PATCH 09/12] Cyano Boost Requirement Nerfed 1.5 -> 3 cyano/s I knew it felt too high, this should be better by a long shot --- core/src/mindustry/content/Blocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 7ce7e26741db..1463c0be0f59 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2884,7 +2884,7 @@ public static void load(){ //TODO different requirements consumePower(6f); consumeLiquid(Liquids.hydrogen, 4f / 60f); - consumeLiquid(Liquids.cyanogen, 1.5f / 60f).boost(); + consumeLiquid(Liquids.cyanogen, 3f / 60f).boost(); }}; //endregion From 4070a5e1803ab5b238f7db0bbc8d6adfe89f21c0 Mon Sep 17 00:00:00 2001 From: Shade Date: Tue, 19 Mar 2024 19:03:06 +0800 Subject: [PATCH 10/12] Code Cleanup --- core/src/mindustry/world/blocks/production/BurstDrill.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index c8e92996d816..f38a1ec687c8 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -11,12 +11,9 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; -import mindustry.world.blocks.environment.*; import mindustry.world.consumers.*; import mindustry.world.meta.*; -import static mindustry.Vars.*; - public class BurstDrill extends Drill{ public float shake = 2f; public Interp speedCurve = Interp.pow2In; @@ -87,7 +84,7 @@ public void updateTile(){ if(timer(timerDump, dumpTime)){ dump(items.has(dominantItem) ? dominantItem : null); } - + float drillTime = getDrillTime(dominantItem); smoothProgress = Mathf.lerpDelta(smoothProgress, progress / (drillTime - 20f), 0.1f); From f95a7fd97fe46bed14155a9ae554ed7a862c3352 Mon Sep 17 00:00:00 2001 From: Shade Date: Sat, 4 May 2024 15:49:14 +0800 Subject: [PATCH 11/12] Eruption material requirements nerf 200 sil -> 300 sil 200 tung -> 250 tung 120 thor -> 150 thor 20 oxi remains the same --- core/src/mindustry/content/Blocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index eaee7091a7da..42585ea28a99 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2858,7 +2858,7 @@ public static void load(){ }}; 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 = 281.25f; size = 5; hasPower = true; From ec7a8f886d8b7bfe426e9a41bdb12deb5e11d91e Mon Sep 17 00:00:00 2001 From: Shade Date: Sat, 4 May 2024 16:01:58 +0800 Subject: [PATCH 12/12] bundles - impact and eruption --- core/assets/bundles/bundle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 260c5af6512f..5ab63ab09635 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2168,8 +2168,8 @@ block.vent-condenser.description = Condenses vent gases into water. Consumes pow block.plasma-bore.description = When placed facing an ore wall, outputs items indefinitely. Requires small amounts of power.\nOptionally uses hydrogen 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.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.