From 0802941cb84d9ac0525d13c0e444174e2765ea22 Mon Sep 17 00:00:00 2001 From: BlackDeluxeCat <65377021+BlackDeluxeCat@users.noreply.github.com> Date: Tue, 9 Aug 2022 02:24:45 +0800 Subject: [PATCH] Fixed HeatCrafter Consumes Less Liquid (#7288) --- core/src/mindustry/entities/comp/BuildingComp.java | 5 +++++ core/src/mindustry/world/blocks/production/HeatCrafter.java | 1 + core/src/mindustry/world/consumers/ConsumeLiquid.java | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index dd2be20678..2a3d37c517 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1685,6 +1685,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } + /** Calculate your own efficiency multiplier. */ + public float efficiencyScale(){ + return 1f; + } + public void updateConsumption(){ //everything is valid when cheating if(!block.hasConsumers || cheating()){ diff --git a/core/src/mindustry/world/blocks/production/HeatCrafter.java b/core/src/mindustry/world/blocks/production/HeatCrafter.java index 7ab6317608..46565256be 100644 --- a/core/src/mindustry/world/blocks/production/HeatCrafter.java +++ b/core/src/mindustry/world/blocks/production/HeatCrafter.java @@ -72,6 +72,7 @@ public class HeatCrafter extends GenericCrafter{ potentialEfficiency *= efficiencyScale(); } + @Override public float efficiencyScale(){ float over = Math.max(heat - heatRequirement, 0f); return Math.min(Mathf.clamp(heat / heatRequirement) + over / heatRequirement * overheatScale, maxEfficiency); diff --git a/core/src/mindustry/world/consumers/ConsumeLiquid.java b/core/src/mindustry/world/consumers/ConsumeLiquid.java index 03806918ad..bef8e3a8d6 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquid.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquid.java @@ -40,7 +40,7 @@ public class ConsumeLiquid extends ConsumeLiquidBase{ @Override public float efficiency(Building build){ - float ed = build.edelta(); + float ed = build.edelta() * build.efficiencyScale(); if(ed <= 0.00000001f) return 0f; //there can be more liquid than necessary, so cap at 1 return Math.min(build.liquids.get(liquid) / (amount * ed), 1f);