From e2c117f5bee714219bef33918e491783b34189eb Mon Sep 17 00:00:00 2001 From: Tooze Date: Wed, 18 Mar 2026 14:43:56 -0400 Subject: [PATCH] Healer interface started --- .../barbassault/arena/HealerInterface.kt | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Server/src/main/content/minigame/barbassault/arena/HealerInterface.kt diff --git a/Server/src/main/content/minigame/barbassault/arena/HealerInterface.kt b/Server/src/main/content/minigame/barbassault/arena/HealerInterface.kt new file mode 100644 index 000000000..da9701d84 --- /dev/null +++ b/Server/src/main/content/minigame/barbassault/arena/HealerInterface.kt @@ -0,0 +1,62 @@ +package content.minigame.barbassault.arena + +import content.minigame.barbassault.BarbRole +import content.minigame.barbassault.lobby.CurrentTeam +import content.minigame.barbassault.lobby.CurrentTeam.modelZoom +import core.api.sendItemOnInterface +import core.api.sendItemZoomOnInterface +import core.api.setInterfaceModel +import core.api.setInterfaceText +import core.game.component.Component +import core.game.component.ComponentDefinition +import core.game.component.ComponentPlugin +import core.game.node.entity.player.Player +import core.plugin.Initializable +import core.plugin.Plugin +import org.rs09.consts.Components + +// Todo find actual varbits for controlling the interface +@Initializable +class HealerInterface : ComponentPlugin() { + override fun newInstance(arg: Any?): Plugin { + ComponentDefinition.forId(HealerIface.ID).plugin = this + return this + } + override fun open(player: Player?, component: Component?) { + super.open(player, component) + player ?: return + val uiSlot = CurrentTeam.team[1] + // setInterfaceText(player, "nameText", CurrentTeam.ID, uiSlot.name) + setInterfaceText(player, "7", HealerIface.ID, 7) + // setInterfaceText(player, "slot1name", HealerIface.ID, 3)//slot1name + // setInterfaceText(player, "slot2name", HealerIface.ID, 9)//slot2Name + // setInterfaceText(player, "slot3name", HealerIface.ID, 14)//slot3Name + // setInterfaceText(player, "slot4name", HealerIface.ID, 19)//slot4Name + setInterfaceText(player, "11", HealerIface.ID, 11) + setInterfaceText(player, "12", HealerIface.ID, 12) + // setInterfaceText(player, "6", CurrentTeam.ID, 6) + + setInterfaceModel(player, 20578, HealerIface.ID, 24, modelZoom,572,0) + sendItemZoomOnInterface(player, HealerIface.ID, 24, 10559,1940) + //player.packetDispatch.sendRepositionOnInterface(HealerIface.ID, 24, 45, 46) + } + + override fun handle( player: Player?, component: Component?, opcode: Int, button: Int, slot: Int, itemId: Int): Boolean { + return true + } +} + + +object HealerIface { + const val ID = Components.BARBASSAULT_OVER_HEAL_488 + val modelZoom = 2372//1940 + val ROLE_MODEL_MAP = mapOf(BarbRole.ATTACKER to 20561, BarbRole.COLLECTOR to 20563, BarbRole.DEFENDER to 20566, BarbRole.HEALER to 20569) + data class Slot(val roleChild: Int, val nameChild: Int, val hpChild:Int, val helpChild: Int) + val team = listOf( + Slot(16, 3,4,5), + Slot(17, 9,10,8), + Slot(18, 14,15,13), + Slot(19, 19,20,18), + ) + fun formatHp(current: Int, max: Int) = "HP $current/$max" +} \ No newline at end of file