From e740af0750dda563c0afc4cc9f27573c1bdc3ddb Mon Sep 17 00:00:00 2001 From: Tooze Date: Tue, 27 Jan 2026 10:02:26 -0500 Subject: [PATCH] Cleaned up code and added messages for taking items. --- .../barbassault/arena/scenery/ItemMachine.kt | 90 +++++++++---------- 1 file changed, 41 insertions(+), 49 deletions(-) diff --git a/Server/src/main/content/minigame/barbassault/arena/scenery/ItemMachine.kt b/Server/src/main/content/minigame/barbassault/arena/scenery/ItemMachine.kt index b64278225..6df053644 100644 --- a/Server/src/main/content/minigame/barbassault/arena/scenery/ItemMachine.kt +++ b/Server/src/main/content/minigame/barbassault/arena/scenery/ItemMachine.kt @@ -25,8 +25,8 @@ class ItemMachine: InteractionListener { private val TAKE_WORMS = Items.WORMS_10515 private val TAKE_CRACKERS = Items.CRACKERS_10513 private val TAKE_TOFU = Items.TOFU_10514 - val baseItems_DEF = intArrayOf(TAKE_WORMS, TAKE_CRACKERS, TAKE_TOFU) - val STOCK_UP_DEF = IntArray(11 * baseItems_DEF.size) { i -> baseItems_DEF[i % baseItems_DEF.size] } + private val baseItems_DEF = intArrayOf(TAKE_WORMS, TAKE_CRACKERS, TAKE_TOFU) + private val STOCK_UP_DEF = IntArray(10 * baseItems_DEF.size) { i -> baseItems_DEF[i % baseItems_DEF.size] } //Healer// private val ALL_HEALER_VAILS = intArrayOf(Items.HEALING_VIAL_10546,Items.HEALING_VIAL1_10545,Items.HEALING_VIAL2_10544,Items.HEALING_VIAL3_10543,Items.HEALING_VIAL4_10542) private val TAKE_VAIL = Items.HEALING_VIAL4_10542 @@ -35,115 +35,107 @@ class ItemMachine: InteractionListener { private val TAKE_POIS_MEAT = Items.POISONED_MEAT_10541 private val baseItems_HEAL = intArrayOf(TAKE_POIS_WORMS, TAKE_POIS_TOFU, TAKE_POIS_MEAT) - private val STOCK_UP_HEAL = IntArray(11 * baseItems_HEAL.size) { i -> baseItems_HEAL[i % baseItems_HEAL.size] } + private val STOCK_UP_HEAL = IntArray(10 * baseItems_HEAL.size) { i -> baseItems_HEAL[i % baseItems_HEAL.size] } override fun defineListeners() { //Attacker// on(Scenery.ATTACKER_ITEM_MACHINE_20241, IntType.SCENERY, "Take-runes") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10556) { - handleAddItemMachine(player, node, TAKE_RUNES, 300) - sendMessage(player,"You take a selection of runes from the dispenser.") - } + handleAddItemMachine(player, node,10556, TAKE_RUNES, 300,DispenserType.RUNES) return@on true } on(Scenery.ATTACKER_ITEM_MACHINE_20241, IntType.SCENERY, "Take-arrows") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10556) { - handleAddItemMachine(player, node, TAKE_ARROWS, 300) - sendMessage(player,"You take a selection of arrows from the dispenser.") - } + handleAddItemMachine(player, node,10556, TAKE_ARROWS, 300,DispenserType.ARROWS) return@on true } //Defender// on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Stock-up") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) { - handleAddItemMachine(player, node, STOCK_UP_DEF, 1) - } + handleAddItemMachine(player, node,10558, STOCK_UP_DEF, 1,DispenserType.FOOD) return@on true } on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Take-crackers") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) { - handleAddItemMachine(player, node, intArrayOf(TAKE_CRACKERS), 5) - } + handleAddItemMachine(player, node,10558, intArrayOf(TAKE_CRACKERS), 5,DispenserType.FOOD) return@on true } on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Take-tofu") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) { - handleAddItemMachine(player, node, intArrayOf(TAKE_TOFU), 5) - } + handleAddItemMachine(player, node,10558, intArrayOf(TAKE_TOFU), 5,DispenserType.FOOD) return@on true } on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Take-worms") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) { - handleAddItemMachine(player, node, intArrayOf(TAKE_WORMS), 5) - } + handleAddItemMachine(player, node,10558, intArrayOf(TAKE_WORMS), 5,DispenserType.FOOD) return@on true } //Healer// on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Stock-up") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) { - //todo only allowed to have one vial - handleAddItemMachine(player, node, STOCK_UP_HEAL, 1) + if (hasAnyVial(player)) { + sendMessage(player, "You can only carry one healing vial at a time.") + return@on true } + handleAddItemMachine(player, node,10559, STOCK_UP_HEAL, 1,DispenserType.POISONED) return@on true } on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-vail") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) { - //todo only allowed to have one vial - handleAddItemMachine(player, node, intArrayOf(TAKE_VAIL), 1) + if (hasAnyVial(player)) { + sendMessage(player, "You can only carry one healing vial at a time.") + return@on true } + handleAddItemMachine(player, node,10559, intArrayOf(TAKE_VAIL), 1,DispenserType.VAIL) return@on true } on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-worms") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) { - handleAddItemMachine(player, node, intArrayOf(TAKE_POIS_WORMS), 5) - } + handleAddItemMachine(player, node,10559, intArrayOf(TAKE_POIS_WORMS), 5,DispenserType.POISONED) return@on true } on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-tofu") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) { - handleAddItemMachine(player, node, intArrayOf(TAKE_POIS_TOFU), 5) - } + handleAddItemMachine(player, node,10559, intArrayOf(TAKE_POIS_TOFU), 5,DispenserType.POISONED) return@on true } on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-meat") { player, node -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) { - handleAddItemMachine(player, node, intArrayOf(TAKE_POIS_MEAT), 5) - } + handleAddItemMachine(player, node,10559, intArrayOf(TAKE_POIS_MEAT), 5,DispenserType.POISONED) return@on true } //Collector// on(Scenery.COLLECTOR_CONVERTER_21250, IntType.SCENERY, "Convert") { player, _ -> - if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10557) { + if (!hasCape(player, 10557)) return@on true + //Items.RED_EGG_10532 //Items.BLUE_EGG_10533 //Items.GREEN_EGG_10531 //uhhhhhh //more research is needed. - } + return@on true } - } - - private fun handleAddItemMachine(player: Player,node: Node, items: IntArray, amount: Int) + private fun handleAddItemMachine(player: Player,node: Node,capeId: Int, items: IntArray, amount: Int,message: DispenserType = DispenserType.GENERIC) { - player.animate(Animation(5419)) // find right animation + if (!hasCape(player, capeId)) return + player.animate(Animation(5419)) player.lock(5) GameWorld.Pulser.submit(object : Pulse(3, player) { override fun pulse(): Boolean { - //sendMessage(player,"You fill up your inventory with food from the dispenser") //defender - //sendMessage(player,"You fill up your inventory with poisoned food from the dispenser")// healer - //todo send right message depending on role addArrayOfItems(player,items,amount) + sendMessage(player, message.message) player.unlock() return true } }) } - private fun addArrayOfItems(player: Player, ids: IntArray, amount: Int) { ids.forEach { id -> addItem(player,id,amount) } } - + private fun hasAnyVial(player: Player): Boolean { + return ALL_HEALER_VAILS.any { player.inventory.contains(it,1) } + } + private fun hasCape(player: Player, capeId: Int): Boolean { + return getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == capeId + } + private enum class DispenserType(val message: String) { + ARROWS("You take a selection of arrows from the dispenser."), + RUNES("You take a selection of runes from the dispenser."), + FOOD("You fill up your inventory with food from the dispenser."), + POISONED("You fill up your inventory with poisoned food from the dispenser."), + VAIL("You take a vial from the dispenser."), + GENERIC("You take items from the dispenser.") + } } \ No newline at end of file