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);