diff options
author | xSkewer <43712386+xSkewer@users.noreply.github.com> | 2023-04-20 11:40:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-20 17:40:42 +0200 |
commit | a51537f9d259cbf0b6c8fc5cd4ecae45511cd59e (patch) | |
tree | c638a3525126cd1a1847ddbdf6832ac1ffb773b7 | |
parent | 0683f5ec20953c6246aa19ea59c212755d858af0 (diff) | |
download | GT5-Unofficial-a51537f9d259cbf0b6c8fc5cd4ecae45511cd59e.tar.gz GT5-Unofficial-a51537f9d259cbf0b6c8fc5cd4ecae45511cd59e.tar.bz2 GT5-Unofficial-a51537f9d259cbf0b6c8fc5cd4ecae45511cd59e.zip |
Account for EU discounts when calculating OCs/parallels in multis (#1901)
-rw-r--r-- | src/main/java/gregtech/api/util/GT_OverclockCalculator.java | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/main/java/gregtech/api/util/GT_OverclockCalculator.java b/src/main/java/gregtech/api/util/GT_OverclockCalculator.java index 3555b8938d..f07a60f822 100644 --- a/src/main/java/gregtech/api/util/GT_OverclockCalculator.java +++ b/src/main/java/gregtech/api/util/GT_OverclockCalculator.java @@ -209,11 +209,13 @@ public class GT_OverclockCalculator { mDuration = Integer.MAX_VALUE; return; } - int heatDiscounts = (mMultiHeat - mRecipeHeat) / HEAT_DISCOUNT_THRESHOLD; + int heatDiscounts = mHeatDiscount ? (mMultiHeat - mRecipeHeat) / HEAT_DISCOUNT_THRESHOLD : 0; + double heatDiscountMultiplier = Math.pow(mHeatDiscountAmount, heatDiscounts); mDuration = (int) Math.ceil(mDuration * mSpeedBoost); if (mHeatOC) { while (mRecipeHeat + HEAT_PERFECT_OVERCLOCK_THRESHOLD <= mMultiHeat - && mRecipeEUt * mParallel * mRecipeAmps << 2 < mEUt * mAmps) { + && (long) Math.ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount * heatDiscountMultiplier) << 2 + < mEUt * mAmps) { if (mDuration < 1) { break; } @@ -227,7 +229,8 @@ public class GT_OverclockCalculator { if (tRecipeTier == 0) { int tTier = GT_Utility.getTier(mEUt); int tTierDifference = tTier - 1; - long tNextConsumption = ((long) Math.ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount)) + long tNextConsumption = ((long) Math + .ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount * heatDiscountMultiplier)) << mEUtIncreasePerOC; while (tTierDifference > 0 && tNextConsumption < mEUt * mAmps) { mRecipeEUt <<= mEUtIncreasePerOC; @@ -236,7 +239,8 @@ public class GT_OverclockCalculator { tTierDifference--; } } else { - long tNextConsumption = ((long) Math.ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount)) + long tNextConsumption = ((long) Math + .ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount * heatDiscountMultiplier)) << mEUtIncreasePerOC; while (tNextConsumption < mEUt * mAmps) { if (mDuration <= 1) { @@ -252,10 +256,6 @@ public class GT_OverclockCalculator { mDuration = 1; } - if (mHeatDiscount) { - mRecipeEUt = (long) Math.ceil(mRecipeEUt * Math.pow(mHeatDiscountAmount, heatDiscounts)); - } - if (mOneTickDiscount) { int voltageDifference = GT_Utility.getTier(mEUt) - GT_Utility.getTier(mRecipeEUt); mRecipeEUt >>= voltageDifference * mDurationDecreasePerOC; @@ -264,7 +264,7 @@ public class GT_OverclockCalculator { } } - mRecipeEUt = (long) Math.ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount); + mRecipeEUt = (long) Math.ceil(mRecipeEUt * mParallel * mRecipeAmps * mEUtDiscount * heatDiscountMultiplier); } /** |