aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxSkewer <43712386+xSkewer@users.noreply.github.com>2023-04-20 11:40:42 -0400
committerGitHub <noreply@github.com>2023-04-20 17:40:42 +0200
commita51537f9d259cbf0b6c8fc5cd4ecae45511cd59e (patch)
treec638a3525126cd1a1847ddbdf6832ac1ffb773b7
parent0683f5ec20953c6246aa19ea59c212755d858af0 (diff)
downloadGT5-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.java18
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);
}
/**