From 57b4833a49e7a82608874e8f0f7f2c429c8a86a3 Mon Sep 17 00:00:00 2001 From: SubAt0mic <118155259+SubAt0m1c@users.noreply.github.com> Date: Thu, 19 Dec 2024 01:12:17 -0500 Subject: [PATCH] Dragon Priority sorting logic fix (#142) * Fixed Dragon Priority sorting logic * nice job bonsai * Prevented unnecessary sorting * Renamed function parameters * use toMutableList instead of casting to MutableList --------- Co-authored-by: odtheking --- .../me/odinmain/commands/impl/DevCommand.kt | 8 ++++-- .../features/impl/floor7/DragonPriority.kt | 28 ++++++++++--------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt b/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt index 35eee8659..43aa084e1 100644 --- a/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt +++ b/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt @@ -32,7 +32,7 @@ val devCommand = commodore("oddev") { literal("drags") { runs { text: GreedyString -> - WitherDragonsEnum.entries.forEach { + val drags = WitherDragonsEnum.entries.mapNotNull { if (text.string.lowercase().contains(it.name.lowercase())) { when (it.name) { "Red" -> sendChatMessage("/particle flame 27 18 60 1 1 1 1 100 force") @@ -41,8 +41,10 @@ val devCommand = commodore("oddev") { "Blue" -> sendChatMessage("/particle flame 84 18 95 1 1 1 1 100 force") "Purple" -> sendChatMessage("/particle flame 57 18 125 1 1 1 1 100 force") } - } - } + it + } else null + }.toMutableList() + modMessage("Expected priority for dragons [${drags.joinToString(", ")}], with class ${DungeonUtils.currentDungeonPlayer.clazz}, with result of ${findPriority(drags)}") } literal("reset").runs { soft: Boolean? -> diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/DragonPriority.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/DragonPriority.kt index 2f6d53976..54d57748c 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/DragonPriority.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/DragonPriority.kt @@ -10,18 +10,19 @@ import me.odinmain.features.impl.floor7.WitherDragons.soloDebuffOnAll import me.odinmain.utils.equalsOneOf import me.odinmain.utils.skyblock.PlayerUtils import me.odinmain.utils.skyblock.devMessage -import me.odinmain.utils.skyblock.dungeon.* +import me.odinmain.utils.skyblock.dungeon.Blessing +import me.odinmain.utils.skyblock.dungeon.DungeonClass +import me.odinmain.utils.skyblock.dungeon.DungeonUtils import me.odinmain.utils.skyblock.modMessage object DragonPriority { - fun findPriority(spawningDragon: MutableList): WitherDragonsEnum { - val priorityList = listOf(WitherDragonsEnum.Red, WitherDragonsEnum.Orange, WitherDragonsEnum.Blue, WitherDragonsEnum.Purple, WitherDragonsEnum.Green) + fun findPriority(spawningDragons: MutableList): WitherDragonsEnum { return if (!dragonPriorityToggle) { - spawningDragon.sortBy { priorityList.indexOf(it) } - spawningDragon[0] + spawningDragons.sortBy { listOf(WitherDragonsEnum.Red, WitherDragonsEnum.Orange, WitherDragonsEnum.Blue, WitherDragonsEnum.Purple, WitherDragonsEnum.Green).indexOf(it) } + spawningDragons[0] } else - sortPriority(spawningDragon) + sortPriority(spawningDragons) } fun displaySpawningDragon(dragon: WitherDragonsEnum) { @@ -30,23 +31,24 @@ object DragonPriority { if (dragonPriorityToggle && WitherDragons.enabled) modMessage("§${dragon.colorCode}${dragon.name} §7is your priority dragon!") } - private fun sortPriority(spawningDragon: MutableList): WitherDragonsEnum { + private fun sortPriority(spawningDragons: MutableList): WitherDragonsEnum { val totalPower = Blessing.POWER.current * (if (paulBuff) 1.25 else 1.0) + (if (Blessing.TIME.current > 0) 2.5 else 0.0) val playerClass = DungeonUtils.currentDungeonPlayer.clazz.apply { if (this == DungeonClass.Unknown) modMessage("§cFailed to get dungeon class.") } val dragonList = listOf(WitherDragonsEnum.Orange, WitherDragonsEnum.Green, WitherDragonsEnum.Red, WitherDragonsEnum.Blue, WitherDragonsEnum.Purple) val priorityList = - if (totalPower >= normalPower || (spawningDragon.any { it == WitherDragonsEnum.Purple } && totalPower >= easyPower)) + if (totalPower >= normalPower || (spawningDragons.any { it == WitherDragonsEnum.Purple } && totalPower >= easyPower)) if (playerClass.equalsOneOf(DungeonClass.Berserk, DungeonClass.Mage)) dragonList else dragonList.reversed() else listOf(WitherDragonsEnum.Red, WitherDragonsEnum.Orange, WitherDragonsEnum.Blue, WitherDragonsEnum.Purple, WitherDragonsEnum.Green) - spawningDragon.sortBy { priorityList.indexOf(it) } + spawningDragons.sortBy { priorityList.indexOf(it) } if (totalPower >= easyPower) { - if (soloDebuff == 1 && playerClass == DungeonClass.Tank && (spawningDragon.any { it == WitherDragonsEnum.Purple } || soloDebuffOnAll)) spawningDragon.sortByDescending { priorityList.indexOf(it) } - else if (playerClass == DungeonClass.Healer && spawningDragon.any { it == WitherDragonsEnum.Purple } || soloDebuffOnAll) spawningDragon.sortByDescending { priorityList.indexOf(it) } + if (soloDebuff == 1 && playerClass == DungeonClass.Tank && (spawningDragons.any { it == WitherDragonsEnum.Purple } || soloDebuffOnAll)) spawningDragons.sortByDescending { priorityList.indexOf(it) } + else if (playerClass == DungeonClass.Healer && (spawningDragons.any { it == WitherDragonsEnum.Purple } || soloDebuffOnAll)) spawningDragons.sortByDescending { priorityList.indexOf(it) } } - devMessage("§7Priority: §6$totalPower §7Class: §${playerClass.colorCode}${playerClass.name} §7Dragons: §a${spawningDragon.joinToString(", ") { it.name }} §7-> §c${priorityList.joinToString(", ") { it.name.first().toString() }}") - return spawningDragon[0] + + devMessage("§7Priority: §6$totalPower §7Class: §${playerClass.colorCode}${playerClass.name} §7Dragons: §a${spawningDragons.joinToString(", ") { it.name }} §7-> §c${priorityList.joinToString(", ") { it.name.first().toString() }}") + return spawningDragons[0] } } \ No newline at end of file