Skip to content

Commit

Permalink
Fix: Hotm wrong max Powder if disabled (#2269)
Browse files Browse the repository at this point in the history
  • Loading branch information
Thunderblade73 authored Jul 30, 2024
1 parent a3c9409 commit 14adb67
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
11 changes: 7 additions & 4 deletions src/main/java/at/hannibal2/skyhanni/data/HotmData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.math.ceil
import kotlin.math.pow


private fun calculatePeakOfTheMountainLoot(level: Int): Map<HotmReward, Double> = buildMap {
for (i in 1..level) {
when (i) {
Expand All @@ -52,7 +51,6 @@ private fun calculatePeakOfTheMountainLoot(level: Int): Map<HotmReward, Double>
}
}


enum class HotmData(
val guiName: String,
val maxLevel: Int,
Expand Down Expand Up @@ -359,17 +357,22 @@ enum class HotmData(

val printName = name.allLettersFirstUppercase()

/** Level which are actually paid with powder (does exclude [blueEgg]*/
val rawLevel: Int
get() = storage?.perks?.get(this.name)?.level ?: 0

/** Level for which the effect that is present (considers [enabled] and [blueEgg])*/
var activeLevel: Int
get() = if (enabled) storage?.perks?.get(this.name)?.level?.plus(blueEgg()) ?: 0 else 0
get() = if (enabled) effectivLevel else 0
private set(value) {
storage?.perks?.computeIfAbsent(this.name) { HotmTree.HotmPerk() }?.level = value.minus(blueEgg())
}

/** Level that considering [blueEgg]*/
val effectivLevel: Int get() = storage?.perks?.get(this.name)?.level?.plus(blueEgg()) ?: 0

val isMaxLevel: Boolean
get() = activeLevel >= maxLevel // >= to account for +1 from Blue Cheese
get() = effectivLevel >= maxLevel // >= to account for +1 from Blue Cheese

private fun blueEgg() = if (this != PEAK_OF_THE_MOUNTAIN && maxLevel != 1 && HotmAPI.isBlueEggActive) 1 else 0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,35 +40,35 @@ object PowderPerHotmPerk {
if (indexOfCost == -1) return

val powderFor10Levels =
perk.calculateTotalCost(perk.activeLevel + 10) - perk.calculateTotalCost(perk.activeLevel)
perk.calculateTotalCost(perk.rawLevel + 10) - perk.calculateTotalCost(perk.rawLevel)

event.toolTip.add(indexOfCost + 2, "§7Powder for 10 levels: §e${powderFor10Levels.addSeparators()}")
}

private fun handlePowderSpend(perk: HotmData): String {
val currentPowderSpend = perk.calculateTotalCost(perk.activeLevel)
val currentPowderSpend = perk.calculateTotalCost(perk.rawLevel)
val maxPowderNeeded = perk.totalCostMaxLevel
val percentage = (currentPowderSpend.fractionOf(maxPowderNeeded) * 100).round(2)

return when (config.powderSpentDesign) {
PowderSpentDesign.NUMBER -> {
if (perk.activeLevel == perk.maxLevel) {
if (perk.rawLevel == perk.maxLevel) {
"§7Powder spent: §e${maxPowderNeeded.addSeparators()} §7(§aMax level§7)"
} else {
"§7Powder spent: §e${currentPowderSpend.addSeparators()}§7 / §e${maxPowderNeeded.addSeparators()}"
}
}

PowderSpentDesign.PERCENTAGE -> {
if (perk.activeLevel == perk.maxLevel) {
if (perk.rawLevel == perk.maxLevel) {
"§7Powder spent: §e$percentage% §7(§aMax level§7)"
} else {
"§7Powder spent: §e$percentage%§7 of max"
}
}

PowderSpentDesign.NUMBER_AND_PERCENTAGE -> {
if (perk.activeLevel == perk.maxLevel) {
if (perk.rawLevel == perk.maxLevel) {
"§7Powder spent: §e${maxPowderNeeded.addSeparators()} §7(§aMax level§7)"
} else {
"§7Powder spent: §e${currentPowderSpend.addSeparators()}§7/§e${maxPowderNeeded.addSeparators()}§7 (§e$percentage%§7)"
Expand Down

0 comments on commit 14adb67

Please sign in to comment.