Updated PriestInPerilUse plugin to listener

This commit is contained in:
Byte 2022-10-22 15:08:44 +00:00 committed by Ryan
parent 0bdd8326d9
commit 82f7d0663b
2 changed files with 127 additions and 157 deletions

View file

@ -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<Object> 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;
}
}

View file

@ -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
}
}
}