From bb41f61263da20cb1616dd574fecbf5bc1e9381a Mon Sep 17 00:00:00 2001 From: Oven Bread Date: Fri, 5 May 2023 14:50:23 +0000 Subject: [PATCH] Removed DestroyItemPlugin and bundled functionality into DropListener --- .../handlers/item/DestroyItemPlugin.java | 75 ------------------- .../core/game/global/action/DropListener.kt | 25 +++++-- 2 files changed, 20 insertions(+), 80 deletions(-) delete mode 100644 Server/src/main/content/global/handlers/item/DestroyItemPlugin.java diff --git a/Server/src/main/content/global/handlers/item/DestroyItemPlugin.java b/Server/src/main/content/global/handlers/item/DestroyItemPlugin.java deleted file mode 100644 index ced363027..000000000 --- a/Server/src/main/content/global/handlers/item/DestroyItemPlugin.java +++ /dev/null @@ -1,75 +0,0 @@ -package content.global.handlers.item; - -import core.game.dialogue.DialoguePlugin; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.audio.Audio; -import core.plugin.Initializable; -import core.game.node.item.Item; - -/** - * Represents the destroy item plugin. - * @author Vexia - * - */ -@Initializable -public final class DestroyItemPlugin extends DialoguePlugin { - - /** - * Represents the sound to send for destroying an item. - */ - private static final Audio SOUND = new Audio(4500, 1, 0); - - /** - * Represents the item parameter. - */ - private Item item; - - /** - * Constructs a new {@code DestroyItemPlugin} {@code Object}. - */ - public DestroyItemPlugin() { - /** - * empty. - */ - } - - /** - * Constructs a new {@code DestroyItemPlugin} {@code Object}. - * @param player the player. - */ - public DestroyItemPlugin(Player player) { - super(player); - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new DestroyItemPlugin(player); - } - - @Override - public boolean open(Object... args) { - item = (Item) args[0]; - interpreter.sendDestroyItem(item.getId(), item.getName()); - return true; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - if (buttonId == 2) { - if (player.getInventory().remove(item)) { - player.getAudioManager().send(SOUND); - end(); - } - } - if (buttonId == 3) { - end(); - } - return true; - } - - @Override - public int[] getIds() { - return new int[] { 9878 }; - } - -} diff --git a/Server/src/main/core/game/global/action/DropListener.kt b/Server/src/main/core/game/global/action/DropListener.kt index 60d7f9029..92fbf8ce9 100644 --- a/Server/src/main/core/game/global/action/DropListener.kt +++ b/Server/src/main/core/game/global/action/DropListener.kt @@ -12,13 +12,21 @@ import core.game.node.entity.player.link.audio.Audio import core.game.node.item.GroundItemManager import core.game.node.item.Item import core.game.system.config.ItemConfigParser +import org.rs09.consts.Items +/** + * Represents the item drop/destroy/dissolve handler. + * @author Ceikry, ovenbreado + */ class DropListener : InteractionListener { override fun defineListeners() { on(IntType.ITEM, "drop", "destroy", "dissolve", handler = ::handleDropAction) } companion object { + private val DROP_COINS_SOUND = Audio(10, 1, 0) + private val DROP_ITEM_SOUND = Audio(2739, 1, 0) + private val DESTROY_ITEM_SOUND = Audio(4500, 1, 0) @JvmStatic fun drop(player: Player, item: Item) : Boolean { return handleDropAction(player, item) } @@ -35,15 +43,22 @@ class DropListener : InteractionListener { queueScript (player, strength = QueueStrength.SOFT) { if (player.inventory.replace(null, item.slot) != item) return@queueScript stopExecuting(player) - item = item.dropItem - player.audioManager.send(Audio(if (item.id == 995) 10 else 2739, 1, 0)) - GroundItemManager.create(item, player.location, player) - setAttribute(player, "droppedItem:${item.id}", getWorldTicks() + 2) + val droppedItem = item.dropItem + if (droppedItem.id == Items.COINS_995) playAudio(player, DROP_COINS_SOUND) else playAudio(player, DROP_ITEM_SOUND) + GroundItemManager.create(droppedItem, player.location, player) + setAttribute(player, "droppedItem:${droppedItem.id}", getWorldTicks() + 2) PlayerParser.save(player) return@queueScript stopExecuting(player) } } else if (option == "destroy" || option == "dissolve" || item.definition.handlers.getOrDefault(ItemConfigParser.DESTROY, false) as Boolean) { - player.dialogueInterpreter.open(9878, item) + player.dialogueInterpreter.sendDestroyItem(item.id, item.name) + addDialogueAction(player) { player, button -> + if (button == 3) { + if (removeItem(player, item)) { + playAudio(player, DESTROY_ITEM_SOUND) + } + } + } } return true }