From 82f7d0663b591cbb916837c5c49e9f19a085e5fe Mon Sep 17 00:00:00 2001 From: Byte Date: Sat, 22 Oct 2022 15:08:44 +0000 Subject: [PATCH] Updated PriestInPerilUse plugin to listener --- .../withobject/PriestInPerilUsePlugin.java | 157 ------------------ .../priestinperil/PriestInPerilUseListener.kt | 127 ++++++++++++++ 2 files changed, 127 insertions(+), 157 deletions(-) delete mode 100644 Server/src/main/java/core/game/interaction/item/withobject/PriestInPerilUsePlugin.java create mode 100644 Server/src/main/kotlin/rs09/game/content/quest/members/priestinperil/PriestInPerilUseListener.kt diff --git a/Server/src/main/java/core/game/interaction/item/withobject/PriestInPerilUsePlugin.java b/Server/src/main/java/core/game/interaction/item/withobject/PriestInPerilUsePlugin.java deleted file mode 100644 index 0e712f0f0..000000000 --- a/Server/src/main/java/core/game/interaction/item/withobject/PriestInPerilUsePlugin.java +++ /dev/null @@ -1,157 +0,0 @@ -package core.game.interaction.item.withobject; - -import core.game.content.dialogue.FacialExpression; -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.npc.NPC; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.quest.Quest; -import core.game.node.item.Item; -import core.game.node.scenery.Scenery; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * @author 'Vexia - */ -@Initializable -public class PriestInPerilUsePlugin extends UseWithHandler { - private int[] monumentIds = new int[] { 3499, 3493, 3494, 3497, 3495, 3498, 3496 }; - /** - * Constructs a new {@code PriestInPerilUsePlugin.java} {@code Object}. - */ - public PriestInPerilUsePlugin() { - super(2944, 1925, 2945, 2954, 2347, 1733, 1931, 314, 36, 590); - } - - /** - * (non-Javadoc) - * @see Plugin#newInstance(Object) - */ - @Override - public Plugin newInstance(Object arg) throws Throwable { - for(int i = 0; i < monumentIds.length; i++){ - addHandler(monumentIds[i], OBJECT_TYPE, this); - } - addHandler(3485, OBJECT_TYPE, this); - addHandler(3463, OBJECT_TYPE, this); - addHandler(30728, OBJECT_TYPE, this); - return this; - } - - /** - * (non-Javadoc) - * @see UseWithHandler#handle(NodeUsageEvent) - */ - @Override - public boolean handle(NodeUsageEvent event) { - Player player = event.getPlayer(); - int objUse = ((Scenery) event.getUsedWith()).getId(); - int itemUse = ((Item) event.getUsedItem()).getId(); - switch(objUse) { - case 3499: - if (!event.getPlayer().getGameAttributes().getAttributes().containsKey("priest_in_peril:key") && event.getPlayer().getInventory().remove(new Item(2944))) { - event.getPlayer().getInventory().add(new Item(2945)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the Golden key for the Iron key."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:key", true); - } else { - return true; - } - break; - case 3493: - if(!player.getGameAttributes().getAttributes().containsKey("priest_in_peril:tinderbox")){ - if (itemUse == 590) { - if (event.getPlayer().getInventory().remove(new Item(590))) { - event.getPlayer().getInventory().add(new Item(2946)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the tinderbox for the golden tinderbox."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:tinderbox", true); - } - } - } - break; - case 3494: - if(!player.getGameAttributes().getAttributes().containsKey("priest_in_peril:candle")){ - if (itemUse == 36) { - if (event.getPlayer().getInventory().remove(new Item(36))) { - event.getPlayer().getInventory().add(new Item(2947)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the candle for the golden candle."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:candle", true); - } - } - } - break; - case 3497: - if(!player.getGameAttributes().getAttributes().containsKey("priest_in_peril:feather")){ - if (itemUse == 314) { - if (event.getPlayer().getInventory().remove(new Item(314))) { - event.getPlayer().getInventory().add(new Item(2950)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the feather for the golden feather."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:feather", true); - } - } - } - break; - case 3495: - if(!player.getGameAttributes().getAttributes().containsKey("priest_in_peril:pot")){ - if (itemUse == 1931) { - if (event.getPlayer().getInventory().remove(new Item(1931))) { - event.getPlayer().getInventory().add(new Item(2948)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the empty pot for the golden pot."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:pot", true); - } - } - } - break; - case 3498: - if(!player.getGameAttributes().getAttributes().containsKey("priest_in_peril:needle")){ - if (itemUse == 1733) { - if (event.getPlayer().getInventory().remove(new Item(1733))) { - event.getPlayer().getInventory().add(new Item(2951)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the needle for the golden needle."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:needle", true); - } - } - } - break; - case 3496: - if(!player.getGameAttributes().getAttributes().containsKey("priest_in_peril:hammer")){ - if (itemUse == 2347) { - if (event.getPlayer().getInventory().remove(new Item(2347))) { - event.getPlayer().getInventory().add(new Item(2949)); - event.getPlayer().getPacketDispatch().sendMessage("You swap the hammer for the golden hammer."); - event.getPlayer().getGameAttributes().setAttribute("/save:priest_in_peril:hammer", true); - } - } - } - break; - case 3485: { - if (event.getPlayer().getInventory().remove(new Item(1925))) { - event.getPlayer().getInventory().add(new Item(2953)); - event.getPlayer().getPacketDispatch().sendMessage("You fill the bucket from the well."); - } - } - break; - case 3463: { - if (player.getInventory().remove(new Item(2945))) { - Quest quest = player.getQuestRepository().getQuest("Priest in Peril"); - quest.setStage(player, 15); - player.getPacketDispatch().sendMessage("You have unlocked the cell door."); - NPC npc = NPC.create(7690, player.getLocation()); - npc.setName("Drezel"); - player.getDialogueInterpreter().sendDialogues(npc, FacialExpression.HALF_GUILTY, "Oh! Thank you! You have found the key!"); - } - } - break; - case 30728: { - if (player.getInventory().remove(new Item(2954))) { - player.getInventory().add(new Item(1925)); - Quest quest = player.getQuestRepository().getQuest("Priest in Peril"); - quest.setStage(player, 16); - player.getPacketDispatch().sendMessage("You pour the blessed water over the coffin..."); - } - } - break; - } - return true; - } -} diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/priestinperil/PriestInPerilUseListener.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/priestinperil/PriestInPerilUseListener.kt new file mode 100644 index 000000000..035322d7a --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/priestinperil/PriestInPerilUseListener.kt @@ -0,0 +1,127 @@ +package rs09.game.content.quest.members.priestinperil + +import api.* +import core.game.content.dialogue.FacialExpression +import core.game.node.item.Item +import org.rs09.consts.Items +import org.rs09.consts.NPCs +import org.rs09.consts.Scenery +import rs09.game.interaction.IntType +import rs09.game.interaction.InteractionListener + +/** + * Listener for Priest in Peril usage interactions + * @author Byte + */ +class PriestInPerilUseListener : InteractionListener { + + override fun defineListeners() { + onUseWith(IntType.SCENERY, Items.TINDERBOX_590, Scenery.MONUMENT_3493) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:tinderbox", false) && removeItem(player, used)) { + addItem(player, Items.GOLDEN_TINDERBOX_2946) + sendMessage(player, "You swap the tinderbox for the golden tinderbox.") + setAttribute(player, "/save:priest_in_peril:tinderbox", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.CANDLE_36, Scenery.MONUMENT_3494) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:candle", false) && removeItem(player, used)) { + addItem(player, Items.GOLDEN_CANDLE_2947) + sendMessage(player, "You swap the candle for the golden candle.") + setAttribute(player, "/save:priest_in_peril:candle", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.EMPTY_POT_1931, Scenery.MONUMENT_3495) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:pot", false) && removeItem(player, used)) { + addItem(player, Items.GOLDEN_POT_2948) + sendMessage(player, "You swap the pot for the golden pot.") + setAttribute(player, "/save:priest_in_peril:pot", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.HAMMER_2347, Scenery.MONUMENT_3496) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:hammer", false) && removeItem(player, used)) { + addItem(player, Items.GOLDEN_HAMMER_2949) + sendMessage(player, "You swap the hammer for the golden hammer.") + setAttribute(player, "/save:priest_in_peril:hammer", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.FEATHER_314, Scenery.MONUMENT_3497) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:feather", false) && removeItem(player, Item(used.id, 1))) { + addItem(player, Items.GOLDEN_FEATHER_2950) + sendMessage(player, "You swap the feather for the golden feather.") + setAttribute(player, "/save:priest_in_peril:feather", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.NEEDLE_1733, Scenery.MONUMENT_3498) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:needle", false) && removeItem(player, Item(used.id, 1))) { + addItem(player, Items.GOLDEN_NEEDLE_2951) + sendMessage(player, "You swap the needle for the golden needle.") + setAttribute(player, "/save:priest_in_peril:needle", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.GOLDEN_KEY_2944, Scenery.MONUMENT_3499) { player, used, _ -> + if (!getAttribute(player, "priest_in_peril:key", false) && removeItem(player, used)) { + addItem(player, Items.IRON_KEY_2945) + sendMessage(player, "You swap the golden key for the iron key.") + setAttribute(player, "/save:priest_in_peril:key", true) + } + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.BUCKET_1925, Scenery.WELL_3485) { player, used, _ -> + if (!removeItem(player, used)) { + return@onUseWith false + } + + addItem(player, Items.BUCKET_OF_WATER_2953) + sendMessage(player, "You fill the bucket from the well.") + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.IRON_KEY_2945, Scenery.CELL_DOOR_3463) { player, used, _ -> + if (!removeItem(player, used)) { + return@onUseWith false + } + + setQuestStage(player, "Priest in Peril", 15) + sendMessage(player, "You have unlocked the cell door.") + + val npc = core.game.node.entity.npc.NPC.create(NPCs.DREZEL_7690, player.location) + npc.name = "Drezel" + sendNPCDialogue(player, npc.id, "Oh! Thank you! You have found the key!", FacialExpression.HALF_GUILTY) + + return@onUseWith true + } + + onUseWith(IntType.SCENERY, Items.BUCKET_OF_WATER_2954, Scenery.MORYTANIA_COFFIN_30728) { player, used, _ -> + if (!removeItem(player, used)) { + return@onUseWith false + } + + addItem(player, Items.BUCKET_1925) + setQuestStage(player, "Priest in Peril", 16) + sendMessage(player, "You pour the blessed water over the coffin...") + + return@onUseWith true + } + } +}