diff --git a/Server/src/main/content/region/desert/quest/shadowofthestorm/DarklightListener.kt b/Server/src/main/content/region/desert/quest/shadowofthestorm/DarklightListener.kt new file mode 100644 index 000000000..26e72c57f --- /dev/null +++ b/Server/src/main/content/region/desert/quest/shadowofthestorm/DarklightListener.kt @@ -0,0 +1,20 @@ +package content.region.desert.quest.shadowofthestorm + +import core.api.addItem +import core.api.hasRequirement +import core.api.removeItem +import core.game.interaction.IntType +import core.game.interaction.InteractionListener +import org.rs09.consts.Items + +class DarklightListener : InteractionListener { + override fun defineListeners() { + onUseWith(IntType.ITEM, Items.BLACK_MUSHROOM_INK_4622, Items.SILVERLIGHT_2402) { player, used, with -> + if (!hasRequirement(player, "Shadow of the Storm") || (!player.inventory.contains(Items.BLACK_MUSHROOM_INK_4622, 1) && (!player.inventory.contains(Items.SILVERLIGHT_2402, 1)))) + return@onUseWith false + if (removeItem(player, used.id) && removeItem(player, with.id)) + addItem(player, Items.DARKLIGHT_6746) + return@onUseWith true + } + } +} diff --git a/Server/src/main/content/region/misthalin/varrock/quest/demonslayer/SirPyrsinDialogue.java b/Server/src/main/content/region/misthalin/varrock/quest/demonslayer/SirPyrsinDialogue.java index d4cbccda2..2a38253f5 100644 --- a/Server/src/main/content/region/misthalin/varrock/quest/demonslayer/SirPyrsinDialogue.java +++ b/Server/src/main/content/region/misthalin/varrock/quest/demonslayer/SirPyrsinDialogue.java @@ -1,15 +1,21 @@ package content.region.misthalin.varrock.quest.demonslayer; +import content.region.misthalin.draynor.handlers.DraynorNodePlugin; +import core.api.Container; import core.game.dialogue.DialoguePlugin; 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.system.task.Pulse; import core.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; +import org.rs09.consts.Items; import static core.api.ContentAPIKt.*; +import static core.tools.DialogueConstKt.END_DIALOGUE; +import static core.tools.GlobalsKt.colorize; /** * Represents the dialogue which handles the Sir Prysin NPC. @@ -475,7 +481,10 @@ public class SirPyrsinDialogue extends DialoguePlugin { private final void handleDefault(int buttonId) { switch (stage) { case 0: - options("I am a mighty adventurer. Who are you?", "I'm not sure, I was hoping you could tell me."); + if(getQuestStage(player, "Demon Slayer") == 100) + options("I am a mighty adventurer. Who are you?", "I'm not sure, I was hoping you could tell me.", "Hey can you give me another Silverlight"); + else + options("I am a mighty adventurer. Who are you?", "I'm not sure, I was hoping you could tell me."); stage = 1; break; case 1: @@ -488,6 +497,9 @@ public class SirPyrsinDialogue extends DialoguePlugin { player("I'm not sure, I was hoping you could tell me."); stage = 20; break; + case 3: + npc("I can sell you another one for 500GP"); + stage = 30; } break; case 10: @@ -504,6 +516,18 @@ public class SirPyrsinDialogue extends DialoguePlugin { case 21: end(); break; + case 30: + if(inInventory(player, Items.COINS_995, 500)) { + if(removeItem(player, new Item(Items.COINS_995, 500), Container.INVENTORY)) { + addItem(player, Items.SILVERLIGHT_2402, 1, Container.INVENTORY); + sendItemDialogue(player, Items.SILVERLIGHT_2402, "Sir Prysin gives you another Silverlight"); + stage = END_DIALOGUE; + } + } else { + npc(id, "Come back when you have 500GP to buy another one."); + stage = END_DIALOGUE; + } + break; } }