diff --git a/game/plugin/skills/prayer/src/data.kt b/game/plugin/skills/prayer/src/data.kt index aeb99991..34f61bc4 100644 --- a/game/plugin/skills/prayer/src/data.kt +++ b/game/plugin/skills/prayer/src/data.kt @@ -5,10 +5,12 @@ import org.apollo.game.model.entity.Player val BURY_BONE_ANIMATION = Animation(827) -val PLAYER_PRAYERS = hashMapOf() +val PLAYER_PRAYERS = hashMapOf?>() -fun Player.getCurrentPrayer(): Prayer? = PLAYER_PRAYERS[this] -fun Player.setCurrentPrayer(prayer: Prayer?) = {PLAYER_PRAYERS[this] = prayer} +fun Player.getCurrentPrayers(): ArrayList { + PLAYER_PRAYERS[this] = PLAYER_PRAYERS[this] ?: ArrayList(); //Make sure that the array list exists + return PLAYER_PRAYERS[this]!! +} enum class Bone(val id: Int, val xp: Double) { REGULAR_BONES(526, 5.0), @@ -32,7 +34,8 @@ enum class Bone(val id: Int, val xp: Double) { OURG_BONES(4834, 140.0); companion object { - fun findById(id: Int): Bone? = Bone.values().find { bone -> bone.id == id } + val BONES = Bone.values() + fun findById(id: Int): Bone? = BONES.find { bone -> bone.id == id } } } @@ -57,22 +60,16 @@ enum class Prayer(val button: Int, val level: Int, val setting: Int, val drain: SMITE(685, 52, 100, 0.2); companion object { - fun findByButton(button: Int): Prayer? = Prayer.values().find { prayer -> prayer.button == button } + val PRAYERS = Prayer.values() + fun findByButton(button: Int): Prayer? = PRAYERS.find { prayer -> prayer.button == button } } } -fun updatePrayer(player: Player, prayer: Prayer?) { +fun updatePrayer(player: Player, prayer: Prayer) { //Clear active prayer - if (prayer != null) { - if (player.getCurrentPrayer() == prayer) { - player.send(ConfigMessage(prayer.setting, 0)) - } else if (player.getCurrentPrayer() == null) { - player.send(ConfigMessage(prayer.setting, 1)) - } else { - val cprayer: Prayer = player.getCurrentPrayer()!! - player.send(ConfigMessage(cprayer.setting, 0)) - player.send(ConfigMessage(prayer.setting, 1)) - } + if (player.getCurrentPrayers().contains(prayer)) { + player.send(ConfigMessage(prayer.setting, 0)) + } else { + player.send(ConfigMessage(prayer.setting, 1)) } - player.setCurrentPrayer(prayer) } \ No newline at end of file diff --git a/game/plugin/skills/prayer/src/prayer.plugin.kts b/game/plugin/skills/prayer/src/prayer.plugin.kts index 008b1b61..8a57dd74 100644 --- a/game/plugin/skills/prayer/src/prayer.plugin.kts +++ b/game/plugin/skills/prayer/src/prayer.plugin.kts @@ -17,7 +17,6 @@ on { ButtonMessage::class } .then { val prayer = Prayer.findByButton(widgetId) ?: return@then if (prayer.level > it.prayer.current) { - updatePrayer(it,null) terminate(); return@then }