aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorappable <enzospiacitelli@gmail.com>2024-05-29 13:23:59 -0700
committerGitHub <noreply@github.com>2024-05-29 22:23:59 +0200
commit97f4433127b9a0e9963eb727a0c5fd8594ac70f5 (patch)
treed071b604ec5366a6f61f28f27fbcde60b56d2521
parent28efe42942ead21fb4ba9fa16e132975e34f65fb (diff)
downloadskyhanni-97f4433127b9a0e9963eb727a0c5fd8594ac70f5.tar.gz
skyhanni-97f4433127b9a0e9963eb727a0c5fd8594ac70f5.tar.bz2
skyhanni-97f4433127b9a0e9963eb727a0c5fd8594ac70f5.zip
Fix: sigma bonus ignored in hoppity collection stats (#1925)
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityCollectionStats.kt31
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryAPI.kt15
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryTimeTowerManager.kt2
3 files changed, 23 insertions, 25 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityCollectionStats.kt b/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityCollectionStats.kt
index 6807a712f..f8ef5ac62 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityCollectionStats.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityCollectionStats.kt
@@ -63,7 +63,6 @@ object HoppityCollectionStats {
inInventory = true
display = buildDisplay(event)
- checkSpecialRabbits()
}
@SubscribeEvent
@@ -107,7 +106,7 @@ object HoppityCollectionStats {
}
private fun getRabbitStats(): MutableList<DisplayTableEntry> {
- var totalAmountFound = 0
+ var totalUniquesFound = 0
var totalDuplicates = 0
var totalChocolatePerSecond = 0
var totalChocolateMultiplier = 0.0
@@ -121,8 +120,8 @@ object HoppityCollectionStats {
}
val title = "${rarity.displayName} Rabbits"
- val amountFound = foundOfRarity.size
- val duplicates = foundOfRarity.values.sum() - amountFound
+ val uniquesFound = foundOfRarity.size
+ val duplicates = foundOfRarity.values.sum() - uniquesFound
val chocolateBonuses = foundOfRarity.keys.map {
HoppityCollectionData.getChocolateBonuses(it)
@@ -131,14 +130,18 @@ object HoppityCollectionStats {
val chocolatePerSecond = chocolateBonuses.sumOf { it.chocolate }
val chocolateMultiplier = chocolateBonuses.sumOf { it.multiplier }
+ if (hasFoundRabbit("Sigma") && rarity == RabbitCollectionRarity.MYTHIC) {
+ totalChocolatePerSecond += uniquesFound * 5
+ }
+
if (!isTotal) {
- totalAmountFound += amountFound
+ totalUniquesFound += uniquesFound
totalDuplicates += duplicates
totalChocolatePerSecond += chocolatePerSecond
totalChocolateMultiplier += chocolateMultiplier
}
- val displayFound = if (isTotal) totalAmountFound else amountFound
+ val displayFound = if (isTotal) totalUniquesFound else uniquesFound
val displayTotal = if (isTotal) {
HoppityCollectionData.knownRabbitCount
} else {
@@ -175,7 +178,6 @@ object HoppityCollectionStats {
val rabbit = name.removeColor()
if (!HoppityCollectionData.isKnownRabbit(rabbit)) return
loggedRabbits[rabbit] = (loggedRabbits[rabbit] ?: 0) + 1
- checkSpecialRabbits()
}
// Gets the found rabbits according to the Hypixel progress bar
@@ -215,20 +217,7 @@ object HoppityCollectionStats {
ChatUtils.chat("Cleared saved rabbit data.")
}
-
- // checks special rabbits whenever loggedRabbits is modified to update misc stored values
- // TODO: make this better than hard-coded checks
- private fun checkSpecialRabbits() {
- if (hasFoundRabbit("Einstein")) {
- ChocolateFactoryAPI.profileStorage?.timeTowerCooldown = 7
- }
-
- if (hasFoundRabbit("Mu")) {
- ChocolateFactoryAPI.profileStorage?.hasMuRabbit = true
- }
- }
-
- private fun hasFoundRabbit(rabbit: String): Boolean = loggedRabbits.containsKey(rabbit)
+ fun hasFoundRabbit(rabbit: String): Boolean = loggedRabbits.containsKey(rabbit)
private fun isEnabled() = LorenzUtils.inSkyBlock && config.hoppityCollectionStats
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryAPI.kt
index fa532dab6..8b9ef3f2a 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryAPI.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryAPI.kt
@@ -8,6 +8,7 @@ import at.hannibal2.skyhanni.data.ProfileStorageData
import at.hannibal2.skyhanni.data.jsonobjects.repo.HoppityEggLocationsJson
import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
+import at.hannibal2.skyhanni.features.event.hoppity.HoppityCollectionStats
import at.hannibal2.skyhanni.features.event.hoppity.HoppityEggLocator
import at.hannibal2.skyhanni.utils.CollectionUtils.nextAfter
import at.hannibal2.skyhanni.utils.DelayedRun
@@ -21,6 +22,7 @@ import at.hannibal2.skyhanni.utils.UtilsPatterns
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration
+import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.seconds
object ChocolateFactoryAPI {
@@ -149,20 +151,27 @@ object ChocolateFactoryAPI {
fun isMaxPrestige() = currentPrestige >= maxPrestige
+ fun timeTowerChargeDuration() =
+ if (HoppityCollectionStats.hasFoundRabbit("Einstein")) 7.hours else 8.hours
+
+ private fun timeTowerMultiplier(): Double {
+ var multiplier = (profileStorage?.timeTowerLevel ?: 0) * 0.1
+ if (HoppityCollectionStats.hasFoundRabbit("Mu")) multiplier += 0.7
+ return multiplier
+ }
+
fun timeUntilNeed(goal: Long): Duration {
var needed = goal
val profileStorage = profileStorage ?: return Duration.ZERO
val baseMultiplier = profileStorage.rawChocolateMultiplier
val rawChocolatePerSecond = profileStorage.rawChocPerSecond
- var timeTowerMultiplier = baseMultiplier + profileStorage.timeTowerLevel * 0.1
- if (profileStorage.hasMuRabbit) timeTowerMultiplier += 0.7
if (rawChocolatePerSecond == 0) return Duration.INFINITE
val secondsUntilTowerExpires = ChocolateFactoryTimeTowerManager.timeTowerActiveDuration().inWholeSeconds
- val timeTowerChocPerSecond = rawChocolatePerSecond * timeTowerMultiplier
+ val timeTowerChocPerSecond = rawChocolatePerSecond * (baseMultiplier + timeTowerMultiplier())
val secondsAtRate = needed / timeTowerChocPerSecond
if (secondsAtRate < secondsUntilTowerExpires) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryTimeTowerManager.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryTimeTowerManager.kt
index 530bd7558..94ebe2dac 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryTimeTowerManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/chocolatefactory/ChocolateFactoryTimeTowerManager.kt
@@ -128,7 +128,7 @@ object ChocolateFactoryTimeTowerManager {
if (timeTowerFull()) return SimpleTimeMark.farPast()
val nextChargeDuration = SimpleTimeMark(profileStorage.nextTimeTower)
val remainingChargesAfter = profileStorage.maxTimeTowerUses - (profileStorage.currentTimeTowerUses + 1)
- val endTime = nextChargeDuration + (profileStorage.timeTowerCooldown).hours * remainingChargesAfter
+ val endTime = nextChargeDuration + ChocolateFactoryAPI.timeTowerChargeDuration() * remainingChargesAfter
return endTime
}