From 2cea22e8d1a2f30d4c4456b852ba96af6190918b Mon Sep 17 00:00:00 2001 From: Tooze Date: Sat, 23 May 2026 20:13:21 -0400 Subject: [PATCH] Fill healer vials with USE vails on Spring --- .../barbassault/arena/BAArenaListener.kt | 57 +++++++++++-------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/Server/src/main/content/minigame/barbassault/arena/BAArenaListener.kt b/Server/src/main/content/minigame/barbassault/arena/BAArenaListener.kt index 6b4324d52..b92f604fa 100644 --- a/Server/src/main/content/minigame/barbassault/arena/BAArenaListener.kt +++ b/Server/src/main/content/minigame/barbassault/arena/BAArenaListener.kt @@ -16,6 +16,7 @@ import core.api.* import core.game.global.action.ClimbActionHandler import core.game.interaction.IntType import core.game.interaction.InteractionListener +import core.game.interaction.InteractionListeners import core.game.interaction.QueueStrength import core.game.node.Node import core.game.node.entity.Entity @@ -33,6 +34,7 @@ import core.game.world.map.Direction import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics +import org.rs09.consts.Animations import org.rs09.consts.Items import org.rs09.consts.Scenery @@ -149,45 +151,40 @@ class BarbassaultArenaListener : InteractionListener { } onUseWithPlayer(*All_HEALING_VIALS) { player, _, target -> - //todo quescirpt this and emote target as Player + //todo find Healing sound if (target.skills.lifepoints >= target.skills.maximumLifepoints) { sendMessage(player, "The player's hitpoints are full.") return@onUseWithPlayer true } - val current = All_HEALING_VIALS.firstOrNull { player.inventory.containsAtLeastOneItem(it) }?: return@onUseWithPlayer true val index = All_HEALING_VIALS.indexOf(current) if (index > 0) { - val session = getBASession(player) - val next = All_HEALING_VIALS[index - 1] - player.inventory.remove(Item(current)) - player.inventory.add(Item(next)) + queueScript(player, 0) { + val session = getBASession(player) + val next = All_HEALING_VIALS[index - 1] + player.inventory.remove(Item(current)) + player.inventory.add(Item(next)) - val restoreAmount = minOf(getHealerHealAmount(player) ,target.skills.maximumLifepoints - target.skills.lifepoints) - sendMessage(target,"You've been healed $restoreAmount hitpoints.") - sendMessage(player,"You healed $restoreAmount hitpoints.") - heal(target, restoreAmount) - target.settings.updateRunEnergy((-restoreAmount).toDouble()) - session?.updateBarbHealerIfaceHPOfPlayer(target) + val restoreAmount = + minOf(getHealerHealAmount(player), target.skills.maximumLifepoints - target.skills.lifepoints) + sendMessage(target, "You've been healed $restoreAmount hitpoints.") + sendMessage(player, "You healed $restoreAmount hitpoints.") + player.animate(Animation(537)) + heal(target, restoreAmount) + target.settings.updateRunEnergy((-restoreAmount).toDouble()) + session?.updateBarbHealerIfaceHPOfPlayer(target) + session?.eventBus?.emit(HitpointsHealed(player, restoreAmount)) + return@queueScript stopExecuting(player) + } - session?.eventBus?.emit(HitpointsHealed(player,restoreAmount)) } return@onUseWithPlayer true } - on(Scenery.HEALER_SPRING_20150, IntType.SCENERY, "Take-from") { player, _ -> - //todo quescript this - player.animate(Animation(5400)) - if (player.inventory.containsAtLeastOneItem(All_HEALING_VIALS)) { - val current = All_HEALING_VIALS.firstOrNull { player.inventory.containsAtLeastOneItem(it) } ?: return@on true - player.inventory.remove(Item(current)) - player.inventory.add(Item(Items.HEALING_VIAL4_10542)) - sendMessage(player,"You filled the vial.") - } - return@on true - } + on(Scenery.HEALER_SPRING_20150, IntType.SCENERY, "Take-from") { player, _ -> fillHealerVial(player); return@on true } + onUseAnyWith( IntType.SCENERY,Scenery.HEALER_SPRING_20150,*All_HEALING_VIALS) { player, used, with -> fillHealerVial(player); return@onUseAnyWith true} onUnequip(ROLE_ICON) { player, _ -> if (getBASession(player)?.state == BarbassaultState.IN_ARENA){ @@ -314,6 +311,18 @@ class BarbassaultArenaListener : InteractionListener { val level = getBALevels(player).heal return healerHealAmounts.getOrElse(level) { healerHealAmounts.last() } } + fun fillHealerVial(player: Player){ + queueScript(player,1, QueueStrength.STRONG) { + if (player.inventory.containsAtLeastOneItem(All_HEALING_VIALS)) { + val current = All_HEALING_VIALS.firstOrNull { player.inventory.containsAtLeastOneItem(it) } ?: return@queueScript stopExecuting(player) + player.animate(Animation(5400)) + player.inventory.remove(Item(current)) + player.inventory.add(Item(Items.HEALING_VIAL4_10542)) + sendMessage(player, "You filled the vial.") + } + return@queueScript stopExecuting(player) + } + } } object BACombatValidation {