mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-06 08:40:03 +00:00
Fix to allow multiple prayers.
Fixed not caching enum values.
This commit is contained in:
committed by
Gary Tierney
parent
94783da9e5
commit
1c0b1d827f
@@ -5,10 +5,12 @@ import org.apollo.game.model.entity.Player
|
|||||||
|
|
||||||
val BURY_BONE_ANIMATION = Animation(827)
|
val BURY_BONE_ANIMATION = Animation(827)
|
||||||
|
|
||||||
val PLAYER_PRAYERS = hashMapOf<Player, Prayer?>()
|
val PLAYER_PRAYERS = hashMapOf<Player, ArrayList<Prayer>?>()
|
||||||
|
|
||||||
fun Player.getCurrentPrayer(): Prayer? = PLAYER_PRAYERS[this]
|
fun Player.getCurrentPrayers(): ArrayList<Prayer> {
|
||||||
fun Player.setCurrentPrayer(prayer: Prayer?) = {PLAYER_PRAYERS[this] = prayer}
|
PLAYER_PRAYERS[this] = PLAYER_PRAYERS[this] ?: ArrayList<Prayer>(); //Make sure that the array list exists
|
||||||
|
return PLAYER_PRAYERS[this]!!
|
||||||
|
}
|
||||||
|
|
||||||
enum class Bone(val id: Int, val xp: Double) {
|
enum class Bone(val id: Int, val xp: Double) {
|
||||||
REGULAR_BONES(526, 5.0),
|
REGULAR_BONES(526, 5.0),
|
||||||
@@ -32,7 +34,8 @@ enum class Bone(val id: Int, val xp: Double) {
|
|||||||
OURG_BONES(4834, 140.0);
|
OURG_BONES(4834, 140.0);
|
||||||
|
|
||||||
companion object {
|
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);
|
SMITE(685, 52, 100, 0.2);
|
||||||
|
|
||||||
companion object {
|
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
|
//Clear active prayer
|
||||||
if (prayer != null) {
|
if (player.getCurrentPrayers().contains(prayer)) {
|
||||||
if (player.getCurrentPrayer() == prayer) {
|
player.send(ConfigMessage(prayer.setting, 0))
|
||||||
player.send(ConfigMessage(prayer.setting, 0))
|
} else {
|
||||||
} else if (player.getCurrentPrayer() == null) {
|
player.send(ConfigMessage(prayer.setting, 1))
|
||||||
player.send(ConfigMessage(prayer.setting, 1))
|
|
||||||
} else {
|
|
||||||
val cprayer: Prayer = player.getCurrentPrayer()!!
|
|
||||||
player.send(ConfigMessage(cprayer.setting, 0))
|
|
||||||
player.send(ConfigMessage(prayer.setting, 1))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
player.setCurrentPrayer(prayer)
|
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,6 @@ on { ButtonMessage::class }
|
|||||||
.then {
|
.then {
|
||||||
val prayer = Prayer.findByButton(widgetId) ?: return@then
|
val prayer = Prayer.findByButton(widgetId) ?: return@then
|
||||||
if (prayer.level > it.prayer.current) {
|
if (prayer.level > it.prayer.current) {
|
||||||
updatePrayer(it,null)
|
|
||||||
terminate();
|
terminate();
|
||||||
return@then
|
return@then
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user