diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 6125c6610a..b64c2aca99 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1853,7 +1853,7 @@ public class Blocks implements ContentList{ }}; health = 200 * size * size; - consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false); + consumes.add(new ConsumeCoolant(0.5f)).update(false); }}; //endregion diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 7c77770cf3..2227e6134f 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -228,6 +228,7 @@ public class ContentParser{ case "item" -> block.consumes.item(find(ContentType.item, child.asString())); case "items" -> block.consumes.add((Consume)parser.readValue(ConsumeItems.class, child)); case "liquid" -> block.consumes.add((Consume)parser.readValue(ConsumeLiquid.class, child)); + case "coolant" -> block.consumes.add((Consume)parser.readValue(ConsumeCoolant.class, child)); case "power" -> { if(child.isNumber()){ block.consumes.power(child.asFloat()); diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 5c464f59c9..092d6c2520 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -53,7 +53,7 @@ public class ForceProjector extends Block{ hasItems = true; ambientSound = Sounds.shield; ambientSoundVolume = 0.08f; - consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.1f)).boost().update(false); + consumes.add(new ConsumeCoolant(0.1f)).boost().update(false); } @Override diff --git a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java index 8289b42366..a2ad89ca24 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java @@ -37,7 +37,7 @@ public class BaseTurret extends Block{ public void init(){ if(acceptCoolant && !consumes.has(ConsumeType.liquid)){ hasLiquids = true; - consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.2f)).update(false).boost(); + consumes.add(new ConsumeCoolant(0.2f)).update(false).boost(); } super.init(); diff --git a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java index a708b39bc7..704cb6f5d5 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -19,7 +19,7 @@ public class LaserTurret extends PowerTurret{ super(name); canOverdrive = false; - consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.01f)).update(false); + consumes.add(new ConsumeCoolant(0.01f)).update(false); coolantMultiplier = 1f; } diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 5f551748d2..e797bf19b4 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -116,7 +116,7 @@ public class Turret extends ReloadTurret{ public void init(){ if(acceptCoolant && !consumes.has(ConsumeType.liquid)){ hasLiquids = true; - consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, coolantUsage)).update(false).boost(); + consumes.add(new ConsumeCoolant(coolantUsage)).update(false).boost(); } if(shootLength < 0) shootLength = size * tilesize / 2f; diff --git a/core/src/mindustry/world/blocks/units/RepairPoint.java b/core/src/mindustry/world/blocks/units/RepairPoint.java index b79413e3c4..1e8e9c9ddf 100644 --- a/core/src/mindustry/world/blocks/units/RepairPoint.java +++ b/core/src/mindustry/world/blocks/units/RepairPoint.java @@ -76,7 +76,7 @@ public class RepairPoint extends Block{ public void init(){ if(acceptCoolant){ hasLiquids = true; - consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, coolantUse)).optional(true, true); + consumes.add(new ConsumeCoolant(coolantUse)).optional(true, true); } consumes.powerCond(powerUse, (RepairPointBuild entity) -> entity.target != null); diff --git a/core/src/mindustry/world/consumers/ConsumeCoolant.java b/core/src/mindustry/world/consumers/ConsumeCoolant.java new file mode 100644 index 0000000000..a71f6fdb55 --- /dev/null +++ b/core/src/mindustry/world/consumers/ConsumeCoolant.java @@ -0,0 +1,16 @@ +package mindustry.world.consumers; + +/** A ConsumeLiquidFilter that consumes specific coolant, selected based on stats. */ +public class ConsumeCoolant extends ConsumeLiquidFilter{ + public float maxTemp = 0.5f, maxFlammability = 0.1f; + + public ConsumeCoolant(float amount){ + this.filter = liquid -> liquid.temperature <= maxTemp && liquid.flammability < maxFlammability; + this.amount = amount; + } + + //mods + public ConsumeCoolant(){ + this(0.1f); + } +} diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidBase.java b/core/src/mindustry/world/consumers/ConsumeLiquidBase.java index 5e581fc610..fb13ba7dc8 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquidBase.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquidBase.java @@ -4,12 +4,14 @@ import mindustry.gen.*; public abstract class ConsumeLiquidBase extends Consume{ /** amount used per frame */ - public final float amount; + public float amount; public ConsumeLiquidBase(float amount){ this.amount = amount; } + public ConsumeLiquidBase(){} + @Override public ConsumeType type(){ return ConsumeType.liquid; diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java b/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java index 8a7fc026d1..8b2e8fe270 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java @@ -11,13 +11,17 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class ConsumeLiquidFilter extends ConsumeLiquidBase{ - public final Boolf filter; + public Boolf filter; public ConsumeLiquidFilter(Boolf liquid, float amount){ super(amount); this.filter = liquid; } + public ConsumeLiquidFilter(){ + this.filter = l -> false; + } + @Override public void applyLiquidFilter(Bits arr){ content.liquids().each(filter, item -> arr.set(item.id)); diff --git a/gradle.properties b/gradle.properties index f70323573b..daf6453a0a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,4 +9,4 @@ kapt.use.worker.api=true kapt.include.compile.classpath=false # I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues kotlin.stdlib.default.dependency=false -archash=2583b8229309dbe5a5c30b647779be5163feb68f +archash=dabe9d3e89a9ed1b1c4cb8496a4525dedf29f613