diff --git a/Server/src/main/content/region/asgarnia/falador/handlers/BankNotices.kt b/Server/src/main/content/region/asgarnia/falador/handlers/BankNotices.kt
new file mode 100644
index 000000000..11a124e8b
--- /dev/null
+++ b/Server/src/main/content/region/asgarnia/falador/handlers/BankNotices.kt
@@ -0,0 +1,48 @@
+package content.region.asgarnia.falador.handlers
+
+import content.global.handlers.iface.ScrollInterface
+import content.global.handlers.iface.ScrollLine
+import core.game.interaction.InteractionListener
+import org.rs09.consts.Components
+import org.rs09.consts.Scenery
+
+class BankNotices : InteractionListener {
+ companion object {
+ val CONTENTS_PIN = arrayOf(
+ ScrollLine("If you're worried about someone stealing items from your",3),
+ ScrollLine("bank, why not protect yourself with a Bank PIN?",4),
+
+ ScrollLine("A Bank PIN is a four-digit number. It's like a password that",6),
+ ScrollLine("protects your bank account. If you set one, you'll be asked to",7),
+ ScrollLine("enter it before you can take items out of the bank.",8),
+
+ ScrollLine("If you're interested, speak to the bankers and ask about Bank",10),
+ ScrollLine("PINs.",11),
+
+ ScrollLine("But remember, KEEP YOUR PIN SECRET!",13),
+ )
+
+ val CONTENTS_PASSWORD = arrayOf(
+ ScrollLine("The Bank of RuneScape would like to remind customers that",4),
+ ScrollLine("they should NEVER tell ANYONE their password.",5),
+
+ ScrollLine("If someone asks you to say your password, please report",7),
+ ScrollLine("them using the 'Report Abuse' button at the bottom of your",8),
+ ScrollLine("screen. ",9),
+
+ ScrollLine("Change your password regularly, and make sure no-one else",11),
+ ScrollLine("could easily guess it!",12),
+ )
+ }
+
+ override fun defineListeners() {
+ on(Scenery.NOTICEBOARD_11755, SCENERY, "read") { player, _ ->
+ ScrollInterface.scrollSetup(player, Components.MESSAGESCROLL_220, CONTENTS_PIN)
+ return@on true
+ }
+ on(Scenery.NOTICEBOARD_11756, SCENERY, "read") { player, _ ->
+ ScrollInterface.scrollSetup(player, Components.MESSAGESCROLL_220, CONTENTS_PASSWORD)
+ return@on true
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server/src/main/content/region/asgarnia/taverley/quest/DruidicRitual.java b/Server/src/main/content/region/asgarnia/taverley/quest/DruidicRitual.java
deleted file mode 100644
index 83afb86c1..000000000
--- a/Server/src/main/content/region/asgarnia/taverley/quest/DruidicRitual.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package content.region.asgarnia.taverley.quest;
-
-import core.game.component.CloseEvent;
-import core.game.component.Component;
-import core.game.node.entity.skill.Skills;
-import core.game.node.entity.npc.NPC;
-import core.game.node.entity.player.Player;
-import core.plugin.Initializable;
-import core.game.node.entity.player.link.quest.Quest;
-
-/**
- * The main type for the druidic ritual quest.
- * @author Vexia
- *
- */
-@Initializable
-public class DruidicRitual extends Quest {
-
- /**
- * Constructs a new {@code DruidicRitual} {@code Object}.
- */
- public DruidicRitual() {
- super("Druidic Ritual", 48, 47, 4, 80, 0, 3, 4);
- }
-
- @Override
- public void drawJournal(Player player, int stage) {
- super.drawJournal(player, stage);
- player.getPacketDispatch().sendString("
I can start this quest by speaking to the
Kaqemeex
who is at", 275, 4+ 7);
- player.getPacketDispatch().sendString("
the
Druids Circle
just
North
of
Taverley.
", 275, 5+ 7);
- if (stage == 10) {
- player.getPacketDispatch().sendString("I told Kaqemeex I would help them prepare their ceremony.", 275, 4+ 7);
- player.getPacketDispatch().sendString("
I should speak to
Sanfew
in the village to the
South", 275, 5+ 7);
- }
- if (stage == 20) {
- player.getPacketDispatch().sendString("", 275, 5+ 7);
- player.getPacketDispatch().sendString("I told Kaqemeex I would help them prepare their ceremony.", 275, 4+ 7);
- player.getPacketDispatch().sendString("
Sanfew
told me for the ritual they would need me to place", 275, 6+ 7);
- player.getPacketDispatch().sendString("
Taverley", 275, 8+ 7);
- }
- if (stage == 99) {
- player.getPacketDispatch().sendString("I told Kaqemeex I would help them prepare their ceremony.", 275, 4+ 7);
- player.getPacketDispatch().sendString("The ceremony required various meats being placed in the.", 275, 5+ 7);
- player.getPacketDispatch().sendString("Cauldron of Thunder. I did this and gave them to Sanfew.", 275, 6+ 7);
- player.getPacketDispatch().sendString("
I should speak to
Kaqemeex
again and claim my
reward", 275, 7+ 7);
- }
- if (stage == 100) {
- player.getPacketDispatch().sendString("I told Kaqemeex I would help them prepare their ceremony.", 275, 4+ 7);
- player.getPacketDispatch().sendString("The ceremony required various meats being placed in the.", 275, 5+ 7);
- player.getPacketDispatch().sendString("Cauldron of Thunder. I did this and gave them to Sanfew.", 275, 6+ 7);
- player.getPacketDispatch().sendString("Kaqemeex then taught me the basics of the skill Herblore", 275, 7+ 7);
- player.getPacketDispatch().sendString("
QUEST COMPLETE!", 275, 11+ 7);
- }
- }
-
- @Override
- public void finish(Player player) {
- super.finish(player);
- player.getInterfaceManager().open(new Component(277).setCloseEvent(new CloseEvent() {
- @Override
- public boolean close(Player player, Component c) {
- if (player != null) {
- player.getDialogueInterpreter().open(455, NPC.create(455, player.getLocation()), true);
- }
- return true;
- }
- }));
- player.getPacketDispatch().sendString("You have completed the Druidic Ritual Quest!", 277, 4);
- player.getPacketDispatch().sendItemZoomOnInterface(249, 240, 277, 3 + 2);
- player.getPacketDispatch().sendString("4 Quest Points", 277, 8 + 2);
- player.getPacketDispatch().sendString("250 Herblore XP", 277, 9 + 2);
- player.getPacketDispatch().sendString("Access to Herblore skill", 277, 10 + 2);
- player.getSkills().addExperience(Skills.HERBLORE, 250);
- player.getInterfaceManager().closeChatbox();
- }
-
- @Override
- public Quest newInstance(Object object) {
- // TODO Auto-generated method stub
- return this;
- }
-}
diff --git a/Server/src/main/content/region/asgarnia/taverley/quest/DruidicRitual.kt b/Server/src/main/content/region/asgarnia/taverley/quest/DruidicRitual.kt
new file mode 100644
index 000000000..af35cb386
--- /dev/null
+++ b/Server/src/main/content/region/asgarnia/taverley/quest/DruidicRitual.kt
@@ -0,0 +1,97 @@
+package content.region.asgarnia.taverley.quest
+
+import content.region.asgarnia.taverley.dialogue.KaqemeexDialogue
+import core.api.*
+import core.game.component.Component
+import core.game.interaction.QueueStrength
+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.entity.skill.Skills
+import core.plugin.Initializable
+import org.rs09.consts.Items
+import org.rs09.consts.NPCs
+
+/**
+ * Druidic Ritual Quest
+ */
+@Initializable
+class DruidicRitual : Quest("Druidic Ritual", 48, 47, 4, 80, 0, 3, 4) {
+
+ companion object {
+ const val questName = "Druidic Ritual"
+ }
+ override fun drawJournal(player: Player, stage: Int) {
+ super.drawJournal(player, stage)
+ var line = 12
+ var stage = getStage(player)
+
+ var started = getQuestStage(player, questName) > 0
+
+ if (!started) {
+ line(player, "I can start this quest by speaking to !!Kaqemeex?? who is at", line++)
+ line(player, "the !!Druids Circle?? just !!north?? of !!Taverly??.", line++)
+ } else {
+ line(player, "Kaqemeex and the druids are preparing a ceremony to", line++, true)
+ line(player, "purify the Varrock stone circle. I told Kaqemeex I would", line++, true)
+ line(player, "help them.", line++, true)
+
+ if (stage >= 20) {
+ // Line disappears.
+ } else if (stage >= 10) {
+ line++
+ line(player, "I should speak to !!Sanfew?? in the village to the !!south??.", line++)
+ }
+
+ if (stage >= 99) {
+ line(player, "The ceremony required various meats being placed in the", line++, true)
+ line(player, "Cauldron of Thunder. I did this and gave them to Sanfew.", line++, true)
+ } else if (stage >= 20) {
+ line++
+ line(player, "!!Sanfew?? told me for the ritual they would need me to place", line++)
+ line(player, "!!raw bear meat??, !!raw chicken??, !!raw rat meat??, and !!raw beef?? in", line++)
+ line(player, "the !!Cauldron of Thunder?? in the !!dungeon south?? of !!Taverley??.", line++)
+ }
+
+ if (stage >= 100) {
+ line(player, "Kaqemeex then taught me the basics of the Heblore skill.", line++, true)
+ } else if (stage >= 99) {
+ line++
+ line(player, "I should speak to !!Kaqemeex?? again and claim my !!reward??.", line++)
+ }
+
+ if (stage >= 100) {
+ line++
+ line(player,"