Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@ import com.odtheking.odin.events.ScoreUpdateEvent
import com.odtheking.odin.events.core.on
import com.odtheking.odin.events.core.onReceive
import com.odtheking.odin.features.Module
import com.odtheking.odin.features.impl.dungeon.map.tile.RoomType
import com.odtheking.odin.utils.Color.Companion.withAlpha
import com.odtheking.odin.utils.Colors
import com.odtheking.odin.utils.alert
import com.odtheking.odin.utils.handlers.TickTask
import com.odtheking.odin.utils.modMessage
import com.odtheking.odin.utils.noControlCodes
import com.odtheking.odin.utils.render.drawFilledBox
Expand Down Expand Up @@ -71,10 +69,11 @@ object MapInfo : Module(
}
}

val batKilled = DungeonUtils.batKilled
val mimicText = buildString {
append("${if (DungeonUtils.mimicKilled) "§a" else "§c"}\uD83D\uDCE6")
append(" §8| ${if (DungeonUtils.princeKilled) "§a" else "§c"}\uD83E\uDD34")
append(" §8| ${if (DungeonUtils.batKilled) "§a" else "§c"}\uD83E\uDD87")
append(" §8| ${colorizeBats(DungeonUtils.dungeonTeammates.size - batKilled)}\uD83E\uDD87$batKilled")
}

val cryptText = buildString {
Expand Down Expand Up @@ -151,9 +150,10 @@ object MapInfo : Module(
val mimicKilled = DungeonUtils.mimicKilled
val princeKilled = DungeonUtils.princeKilled
val batKilled = DungeonUtils.batKilled
val playerCount = DungeonUtils.dungeonTeammates.size

val missing = (if (mimicKilled) 0 else 2) + (if (princeKilled) 0 else 1) + (if (batKilled) 0 else 1)

val missing = (if (mimicKilled) 0 else 2) + (if (princeKilled) 0 else 1) + (playerCount - batKilled)
val scoreText = buildString {
append("§7Score: ")
append(colorizeScore(score))
Expand Down Expand Up @@ -234,7 +234,15 @@ object MapInfo : Module(
portalAABB = null
}
}


private fun colorizeBats(score: Int): String {
return when {
score > 2 -> "§c"
score > 0 -> "§e"
else -> "§a"
}
}

private fun colorizeCrypts(count: Int): String {
return when {
count < 3 -> "§c${count}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ object Mimic : Module(
description = "Announces Mimic, Prince and Bat kills in dungeons."
) {
private val mimicMessageToggle by BooleanSetting("Send Mimic Message", true, desc = "Toggles the mimic killed message.")
private val reset by ActionSetting("Mimic Killed", desc = "Sends Mimic killed message in party chat.") { mimicKilled() }
private val mimicReset by ActionSetting("Mimic Killed", desc = "Sends Mimic killed message in party chat.") { mimicKilled() }

private val princeMessageToggle by BooleanSetting("Send Prince Message", true, desc = "Toggles the prince killed message.")
private val princeReset by ActionSetting("Prince Killed", desc = "Sends Prince killed message in party chat.") { princeKilled() }
Expand Down Expand Up @@ -59,8 +59,8 @@ object Mimic : Module(
}

private fun batKilled() {
if (DungeonUtils.batKilled || !DungeonUtils.inClear) return
if (!DungeonUtils.inClear) return
if (batMessageToggle) sendCommand("pc Bat Killed!")
DungeonListener.dungeonStats.batKilled = true
DungeonListener.dungeonStats.batKilled++
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -110,16 +110,20 @@ object DungeonListener {
teammate.name == (match.groupValues[1].takeUnless { it == "You" } ?: mc.player?.name?.string)
}?.deaths?.inc()
}

when (partyMessageRegex.find(value)?.groupValues?.get(1)?.lowercase() ?: return@on) {
"mimic killed", "mimic slain", "mimic killed!", "mimic dead", "mimic dead!", ->

// I know people can abuse it to get multiple additional score no idc hopefully hypixel will fix it before i have to
// the check is to make sure that its not proccing off your own party chat message, forgot the return@on before
val partyMessage = partyMessageRegex.find(value)?.groupValues ?: return@on
if (partyMessage.get(1) == DungeonUtils.currentDungeonPlayer.name) return@on
when (partyMessage.get(2).lowercase()) {
"mimic killed", "mimic slain", "mimic killed!", "mimic dead", "mimic dead!" ->
if (DungeonUtils.isFloor(6, 7)) dungeonStats.mimicKilled = true

"prince killed", "prince slain", "prince killed!", "prince dead", "prince dead!", ->
"prince killed", "prince slain", "prince killed!", "prince dead", "prince dead!" ->
dungeonStats.princeKilled = true

"bat killed", "bat slain", "bat killed!", "bat dead", "bat dead!" ->
dungeonStats.batKilled = true
dungeonStats.batKilled++

"blaze done!", "blaze done", "blaze puzzle solved!" ->
puzzles.find { it == Puzzle.BLAZE }.let { it?.status = PuzzleStatus.Completed }
Expand Down Expand Up @@ -199,7 +203,7 @@ object DungeonListener {
private val secretCountRegex = Regex("^ Secrets Found: (\\d+)$")
private val openedRoomsRegex = Regex("^ Opened Rooms: (\\d+)$")
private val floorRegex = Regex("The Catacombs \\((\\w+)\\)$")
private val partyMessageRegex = Regex("^Party > .*?: (.+)$")
private val partyMessageRegex = Regex("^Party > (.*?): (.+)$")
private val puzzleCountRegex = Regex("^Puzzles: \\((\\d+)\\)$")
private val deathsRegex = Regex("^Team Deaths: (\\d+)$")
private val cryptRegex = Regex("^ Crypts: (\\d+)$")
Expand All @@ -216,7 +220,7 @@ object DungeonListener {
var elapsedTime: String = "0s",
private var _mimicKilled: Boolean = false,
var princeKilled: Boolean = false,
var batKilled: Boolean = false,
var batKilled: Int = 0,
var doorOpener: String = "Unknown",
var bloodDone: Boolean = false,
var puzzleCount: Int = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,8 @@ object DungeonUtils {
inline val princeKilled: Boolean
get() = DungeonListener.dungeonStats.princeKilled

inline val batKilled: Boolean
get() = DungeonListener.dungeonStats.batKilled
inline val batKilled: Int
get() = DungeonListener.dungeonStats.batKilled.coerceAtMost(dungeonTeammates.size)

inline val currentRoom: DungeonRoom?
get() = WorldScan.currentRoom
Expand All @@ -110,7 +110,7 @@ object DungeonUtils {
var score = cryptCount.coerceAtMost(5)
if (mimicKilled) score += 2
if (princeKilled) score += 1
if (batKilled) score += 1
score += batKilled
if ((isPaul && togglePaul == 0) || togglePaul == 2) score += 10
return score
}
Expand Down
Loading