aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2023-08-05 17:46:27 +0200
committerGitHub <noreply@github.com>2023-08-05 17:46:27 +0200
commit1312f5b1bccfa48ad87b2fa040005398a97ed6ad (patch)
tree1dcaeb1a0b09f4f1e7cb657c6119f33e97e58572 /src
parent6af9397f43561548086b8ed7fcfb5690136278ea (diff)
parent4e7cd6dd7c997f75778f3640248bf4a9057eb841 (diff)
downloadskyhanni-1312f5b1bccfa48ad87b2fa040005398a97ed6ad.tar.gz
skyhanni-1312f5b1bccfa48ad87b2fa040005398a97ed6ad.tar.bz2
skyhanni-1312f5b1bccfa48ad87b2fa040005398a97ed6ad.zip
Merge pull request #352
Ghost bestiary update
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Storage.java3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/GhostCounterConfig.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostCounter.kt63
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostData.kt57
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostUtil.kt22
5 files changed, 79 insertions, 71 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/Storage.java b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
index 166514e30..080b77ce8 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/Storage.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
@@ -248,6 +248,9 @@ public class Storage {
@Expose
public double totalMF = 0;
+ @Expose
+ public int configUpdateVersion = 0;
+
}
@Expose
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/GhostCounterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/GhostCounterConfig.java
index 4aed852c1..d69b6e833 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/GhostCounterConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/GhostCounterConfig.java
@@ -172,7 +172,8 @@ public class GhostCounterConfig {
"§e%nextLevel% §7is replaced with your current bestiary level +1.\n" +
"§e%value% §7is replaced with one of the text below.")
@ConfigEditorText
- public String base = " &6Bestiary %currentLevel%->%nextLevel%: &b%value%";
+ // public String base = " &6Bestiary %currentLevel%->%nextLevel%: &b%value%";
+ public String base = " &6Bestiary %display%: &b%value%";
@Expose
@ConfigOption(name = "No Data", desc = "Text to show when you need to open the\nBestiary Menu to gather data.")
@@ -189,7 +190,7 @@ public class GhostCounterConfig {
@ConfigOption(name = "Progress to Max", desc = "Text to show progress when the §eMaxed Bestiary §7option is §aON\n" +
"§e%currentKill% §7is replaced with your current total kill.")
@ConfigEditorText
- public String showMax_progress = "%currentKill%/3M (%percentNumber%%)";
+ public String showMax_progress = "%currentKill%/250k (%percentNumber%%)";
@Expose
@ConfigOption(name = "Progress", desc = "Text to show progress when the §eMaxed Bestiary§7 option is §cOFF\n" +
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostCounter.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostCounter.kt
index 49a2223f9..d301fdf6f 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostCounter.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostCounter.kt
@@ -11,6 +11,7 @@ import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostData.bestiaryData
import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostUtil.formatBestiary
import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostUtil.formatText
import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostUtil.isUsingCTGhostCounter
+import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostUtil.preFormat
import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostUtil.prettyTime
import at.hannibal2.skyhanni.utils.CombatUtils._isKilling
import at.hannibal2.skyhanni.utils.CombatUtils.calculateETA
@@ -26,6 +27,7 @@ import at.hannibal2.skyhanni.utils.CombatUtils.xpGainHourLast
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
+import at.hannibal2.skyhanni.utils.LorenzUtils.chat
import at.hannibal2.skyhanni.utils.LorenzUtils.clickableChat
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.NumberUtil.formatNumber
@@ -74,8 +76,7 @@ object GhostCounter {
private var killETA = ""
private var currentSkill = ""
private var currentSkillLevel = -1
-
- var bestiaryUpdate = false
+ private const val configUpdateVersion = 1
@SubscribeEvent
fun onRenderOverlay(event: GuiRenderEvent.GameOverlayRenderEvent) {
@@ -132,12 +133,13 @@ object GhostCounter {
val bestiaryFormatting = config.textFormatting.bestiaryFormatting
val currentKill = hidden?.bestiaryCurrentKill?.toInt() ?: 0
val killNeeded = hidden?.bestiaryKillNeeded?.toInt() ?: 0
- val nextLevel = hidden?.bestiaryNextLevel?.toInt() ?: 0
+ val nextLevel = hidden?.bestiaryNextLevel?.toInt() ?: -1
val bestiary = if (config.showMax) {
when (nextLevel) {
- -1 -> bestiaryFormatting.maxed
- in 1..46 -> {
+ 26 -> bestiaryFormatting.maxed.replace("%currentKill%", currentKill.addSeparators())
+ in 1..25 -> {
val sum = bestiaryData.filterKeys { it <= nextLevel - 1 }.values.sum()
+
val cKill = sum + currentKill
bestiaryCurrentKill = cKill
bestiaryFormatting.showMax_progress
@@ -147,17 +149,15 @@ object GhostCounter {
}
} else {
when (nextLevel) {
- -1 -> bestiaryFormatting.maxed
- in 1..46 -> bestiaryFormatting.progress
+ 26 -> bestiaryFormatting.maxed
+ in 1..25 -> bestiaryFormatting.progress
else -> bestiaryFormatting.openMenu
}
}
val etaFormatting = config.textFormatting.etaFormatting
- //TODO: update
- val max = if (bestiaryUpdate) 100_000 else 3_000_000
val remaining: Int = when (config.showMax) {
- true -> max - bestiaryCurrentKill
+ true -> 250_000 - bestiaryCurrentKill
false -> killNeeded - currentKill
}
@@ -206,7 +206,8 @@ object GhostCounter {
addAsSingletonList(config.textFormatting.killComboFormat.formatText(KILLCOMBO.getInt(), MAXKILLCOMBO.getInt(true)))
addAsSingletonList(config.textFormatting.highestKillComboFormat.formatText(MAXKILLCOMBO.getInt(), MAXKILLCOMBO.getInt(true)))
addAsSingletonList(config.textFormatting.skillXPGainFormat.formatText(SKILLXPGAINED.get(), SKILLXPGAINED.get(true)))
- addAsSingletonList(bestiaryFormatting.base.formatText(bestiary).formatBestiary(currentKill, killNeeded))
+ addAsSingletonList(bestiaryFormatting.base.preFormat(bestiary, nextLevel - 1, nextLevel).formatBestiary(currentKill, killNeeded))
+
addAsSingletonList(xpHourFormatting.base.formatText(xp))
addAsSingletonList(killHourFormatting.base.formatText(killHour))
addAsSingletonList(etaFormatting.base.formatText(eta).formatText(killETA))
@@ -354,7 +355,7 @@ object GhostCounter {
fun onChat(event: LorenzChatEvent) {
if (!isEnabled()) return
if (LorenzUtils.skyBlockIsland != IslandType.DWARVEN_MINES) return
- for (opt in GhostData.Option.values()) {
+ for (opt in entries) {
val pattern = opt.pattern ?: continue
pattern.matchMatcher(event.message) {
when (opt) {
@@ -396,19 +397,17 @@ object GhostCounter {
update()
}
//replace with BestiaryLevelUpEvent ?
- bestiaryPattern.matchMatcher(event.message.removeColor()) {
- val currentLevel = group("newLevel").toInt()
- val max = if (bestiaryUpdate) 100_000.0 else 3_000_000.0
- val maxLevel = if (bestiaryUpdate) 26 else 47
- when (val nextLevel = if (currentLevel >= maxLevel - 1) maxLevel else currentLevel + 1) {
- maxLevel -> {
- hidden?.bestiaryNextLevel = -1.0
- hidden?.bestiaryCurrentKill = max
+ bestiaryPattern.matchMatcher(event.message) {
+ val currentLevel = group("nextLevel").toInt()
+ when (val nextLevel = if (currentLevel >= 25) 26 else currentLevel + 1) {
+ 26 -> {
+ hidden?.bestiaryNextLevel = 26.0
+ hidden?.bestiaryCurrentKill = 250_000.0
hidden?.bestiaryKillNeeded = 0.0
}
else -> {
- val killNeeded: Int = bestiaryData[nextLevel] ?: 0
+ val killNeeded: Int = bestiaryData[nextLevel] ?: -1
hidden?.bestiaryNextLevel = nextLevel.toDouble()
hidden?.bestiaryCurrentKill = 0.0
hidden?.bestiaryKillNeeded = killNeeded.toDouble()
@@ -431,22 +430,34 @@ object GhostCounter {
fun onInventoryOpen(event: InventoryFullyOpenedEvent) {
if (!LorenzUtils.inSkyBlock) return
val inventoryName = event.inventoryName
- val name = if (bestiaryUpdate) "Bestiary ➜ Dwarven Mines" else "Bestiary ➜ Deep Caverns"
- if (inventoryName != name) return
+ if (inventoryName != "Bestiary ➜ Dwarven Mines") return
val stacks = event.inventoryItems
- val stack = if (bestiaryUpdate) 10 else 13
- val ghostStack = stacks[stack] ?: return
+ val ghostStack = stacks[10] ?: return
val bestiaryNextLevel = if (ghostStack.displayName == "§cGhost") 1 else ghostStack.displayName.substring(8).romanToDecimal() + 1
hidden?.bestiaryNextLevel = bestiaryNextLevel.toDouble()
+ var kills = 0.0
for (line in ghostStack.getLore()) {
+ val l = line.removeColor().trim()
+ if (l.startsWith("Kills: ")) {
+ kills = "Kills: (.*)".toRegex().find(l)?.groupValues?.get(1)?.formatNumber()?.toDouble() ?: 0.0
+ }
ghostXPPattern.matchMatcher(line.removeColor().trim()) {
- hidden?.bestiaryCurrentKill = group("current").formatNumber().toDouble()
+ hidden?.bestiaryCurrentKill = if (kills > 0) kills else group("current").formatNumber().toDouble()
hidden?.bestiaryKillNeeded = group("total").formatNumber().toDouble()
}
}
update()
}
+ @SubscribeEvent
+ fun onConfigLoad(event: ConfigLoadEvent) {
+ if (hidden?.configUpdateVersion == 0) {
+ config.textFormatting.bestiaryFormatting.base = " &6Bestiary %display%: &b%value%"
+ chat("§e[SkyHanni] Your GhostCounter config has been automatically adjusted.")
+ hidden?.configUpdateVersion = configUpdateVersion
+ }
+ }
+
fun isEnabled(): Boolean {
return LorenzUtils.inSkyBlock && config.enabled && LorenzUtils.skyBlockIsland == IslandType.DWARVEN_MINES
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostData.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostData.kt
index 1ba330244..b67dea5d0 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostData.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostData.kt
@@ -20,46 +20,29 @@ object GhostData {
)
val bestiaryData = mutableMapOf<Int, Int>().apply {
-
- if (GhostCounter.bestiaryUpdate) {
- val commonValue = 100_000
- for (i in 1..46) {
+ for (i in 1..25) {
this[i] = when (i) {
- 1 -> 10
- 2 -> 15
- 3 -> 75
- 4 -> 150
- 5 -> 250
- 6 -> 500
- 7 -> 1_500
- 8 -> 2_500
- 9 -> 5_000
- 10 -> 15_000
- 11 -> 25_000
- 12 -> 50_000
- else -> commonValue
+ 1 -> 5
+ 2 -> 5
+ 3 -> 5
+ 4 -> 10
+ 5 -> 25
+ 6 -> 50
+ 7 -> 100
+ 8 -> 150
+ 9 -> 150
+ 10 -> 250
+ 11 -> 750
+ 12 -> 1_500
+ 13 -> 2_000
+ 14,15,16,17 -> 2_500
+ 18 -> 3_000
+ 19,20 -> 3_500
+ 21 -> 25_000
+ 22,23,24,25 -> 50_000
+ else -> 0
}
}
- } else {
- val commonValue = 100_000
- for (i in 1..46) {
- this[i] = when (i) {
- 1 -> 10
- 2 -> 15
- 3 -> 75
- 4 -> 150
- 5 -> 250
- 6 -> 500
- 7 -> 1_500
- 8 -> 2_500
- 9 -> 5_000
- 10 -> 15_000
- 11 -> 25_000
- 12 -> 50_000
- else -> commonValue
- }
- }
- }
}
enum class Option(val pattern: Pattern? = null) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostUtil.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostUtil.kt
index 2067af8f0..436cbcd53 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostUtil.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/ghostcounter/GhostUtil.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.misc.ghostcounter
+import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.ConfigManager
import at.hannibal2.skyhanni.data.ProfileStorageData
import at.hannibal2.skyhanni.utils.LorenzUtils
@@ -12,7 +13,7 @@ import java.io.FileReader
object GhostUtil {
fun reset() {
- for (opt in GhostData.Option.values()) {
+ for (opt in GhostData.Option.entries) {
opt.set(0.0)
opt.set(0.0, true)
}
@@ -85,6 +86,17 @@ object GhostUtil {
.replace("&", "§"))
}
+ fun String.preFormat(t: String, level: Int, nextLevel: Int): String {
+ return if (nextLevel == 26) {
+ val lol = Utils.chromaStringByColourCode(this.replace("%value%", t)
+ .replace("%display%", "25"))
+ lol
+ } else {
+ Utils.chromaStringByColourCode(this.replace("%value%", t)
+ .replace("%display%", "$level->${if (SkyHanniMod.feature.ghostCounter.showMax) "25" else nextLevel}"))
+ }
+ }
+
fun String.formatText(value: Double, session: Double): String {
return Utils.chromaStringByColourCode(this.replace("%value%", value.roundToPrecision(2).addSeparators())
.replace("%session%", session.roundToPrecision(2).addSeparators())
@@ -92,11 +104,10 @@ object GhostUtil {
}
fun String.formatBestiary(currentKill: Int, killNeeded: Int): String {
- val maxLevel = if (GhostCounter.bestiaryUpdate) "25" else "46"
val bestiaryNextLevel = GhostCounter.hidden?.bestiaryNextLevel
val currentLevel =
- bestiaryNextLevel?.let { if (it.toInt() < 0) maxLevel else "${it.toInt() - 1}" } ?: "§cNo Bestiary Level Data!"
- val nextLevel = bestiaryNextLevel?.let { if (GhostCounter.config.showMax) maxLevel else "${it.toInt()}" }
+ bestiaryNextLevel?.let { if (it.toInt() < 0) "25" else "${it.toInt() - 1}" } ?: "§cNo Bestiary Level Data!"
+ val nextLevel = bestiaryNextLevel?.let { if (GhostCounter.config.showMax) "25" else "${it.toInt()}" }
?: "§cNo Bestiary Level data!"
return Utils.chromaStringByColourCode(
@@ -110,7 +121,6 @@ object GhostUtil {
}
private fun percent(number: Double): String {
- val max = if (GhostCounter.bestiaryUpdate) 3_000_000 else 100_000
- return "${((number / max) * 100).roundToPrecision(4)}"
+ return "${((number / 250_000) * 100).roundToPrecision(4)}"
}
} \ No newline at end of file