zealot start of quest dialogue is done

This commit is contained in:
aidan 2025-12-02 11:49:48 -06:00
parent 09e92e9256
commit a8becdf020
4 changed files with 481 additions and 69 deletions

View file

@ -63,37 +63,38 @@ class AbandonedMineListeners : InteractionListener {
// entrance from outside (main) to mine level 1 // entrance from outside (main) to mine level 1
on(Scenery.CART_TUNNEL_4913, IntType.SCENERY, "Crawl-down") { player, node -> on(Scenery.CART_TUNNEL_4913, IntType.SCENERY, "Crawl-down") { player, node ->
animate(player, 844) //todo fix all these animations and make them play before teleporting
animate(player, 844, true)
teleport(player, Location.create(3436, 9637, 0)) teleport(player, Location.create(3436, 9637, 0))
} }
// mine level 1 back to entrance // mine level 1 back to entrance
on(Scenery.CART_TUNNEL_4920, IntType.SCENERY, "Crawl-through") { player, node -> on(Scenery.CART_TUNNEL_4920, IntType.SCENERY, "Crawl-through") { player, node ->
animate(player, 844) animate(player, 844, true)
teleport(player, Location.create(3441, 3232, 0)) teleport(player, Location.create(3441, 3232, 0))
} }
// mine level 1 to outside (west) // mine level 1 to outside (west)
on(Scenery.CART_TUNNEL_4921, IntType.SCENERY, "Crawl-through") { player, node -> on(Scenery.CART_TUNNEL_4921, IntType.SCENERY, "Crawl-through") { player, node ->
animate(player, 844) animate(player, 844, true)
teleport(player, Location.create(3429, 3233, 0)) teleport(player, Location.create(3429, 3233, 0))
} }
// mine level 1 to outside (west) // mine level 1 to outside (west)
on(Scenery.CART_TUNNEL_20524, IntType.SCENERY, "Crawl-through") { player, node -> on(Scenery.CART_TUNNEL_20524, IntType.SCENERY, "Crawl-through") { player, node ->
animate(player, 844) animate(player, 844, true)
teleport(player, Location.create(3428, 3225, 0)) teleport(player, Location.create(3428, 3225, 0))
} }
// outside (west) to mine level 1 // outside (west) to mine level 1
on(Scenery.CART_TUNNEL_4914, IntType.SCENERY, "Crawl-down") { player, node -> on(Scenery.CART_TUNNEL_4914, IntType.SCENERY, "Crawl-down") { player, node ->
animate(player, 844) animate(player, 844, true)
teleport(player, Location.create(3405, 9631, 0)) teleport(player, Location.create(3405, 9631, 0))
} }
// outside (west) to mine level 1 // outside (west) to mine level 1
on(Scenery.CART_TUNNEL_4915, IntType.SCENERY, "Crawl-down") { player, node -> on(Scenery.CART_TUNNEL_4915, IntType.SCENERY, "Crawl-down") { player, node ->
animate(player, 844) animate(player, 844, true)
teleport(player, Location.create(3409, 9623, 0)) teleport(player, Location.create(3409, 9623, 0))
} }
@ -107,7 +108,7 @@ class AbandonedMineListeners : InteractionListener {
loc.x in 3412..3414 && loc.x in 3412..3414 &&
loc.y in 9632..9634) { loc.y in 9632..9634) {
animate(player, 828) animate(player, 828, true)
teleport(player, Location.create(2774, 4577, 0)) teleport(player, Location.create(2774, 4577, 0))
// Check around a 1-tile radius of the south ladder // Check around a 1-tile radius of the south ladder
@ -115,7 +116,7 @@ class AbandonedMineListeners : InteractionListener {
loc.x in 3421..3423 && loc.x in 3421..3423 &&
loc.y in 9624..9626) { loc.y in 9624..9626) {
animate(player, 828) animate(player, 828, true)
teleport(player, Location.create(2783, 4569, 0)) teleport(player, Location.create(2783, 4569, 0))
} }
@ -132,7 +133,7 @@ class AbandonedMineListeners : InteractionListener {
loc.x in 2772..2774 && loc.x in 2772..2774 &&
loc.y in 4576..4578) { loc.y in 4576..4578) {
animate(player, 828) animate(player, 828, true)
teleport(player, Location.create(3412, 9633, 0)) teleport(player, Location.create(3412, 9633, 0))
// Check around a 1-tile radius of the south ladder // Check around a 1-tile radius of the south ladder
@ -140,7 +141,7 @@ class AbandonedMineListeners : InteractionListener {
loc.x in 2781..2783 && loc.x in 2781..2783 &&
loc.y in 4568..4570) { loc.y in 4568..4570) {
animate(player, 828) animate(player, 828, true)
teleport(player, Location.create(3422, 9624, 0)) teleport(player, Location.create(3422, 9624, 0))
} }

View file

@ -12,8 +12,9 @@ import org.rs09.consts.Items
* Haunted Mine Quest * Haunted Mine Quest
* *
* Some of the sources used: * Some of the sources used:
* https://www.youtube.com/watch?v=g3F4tC1KOck (primary) * Primary Source (March 2008): https://www.youtube.com/watch?v=g3F4tC1KOck
* https://www.youtube.com/watch?v=CD77NeKz1J4 (secondary) * Secondary source (May 2009): https://www.youtube.com/watch?v=CD77NeKz1J4
* Secondary source (Feb 2009): https://www.youtube.com/watch?v=PMn0LRo4MCo
* https://web.archive.org/web/20081216051045/http://runescape.wikia.com/wiki/Haunted_Mine * https://web.archive.org/web/20081216051045/http://runescape.wikia.com/wiki/Haunted_Mine
* *
*/ */
@ -36,6 +37,7 @@ class HauntedMine : Quest(Quests.HAUNTED_MINE,73 ,72 ,2 ,382, 0, 1, 11) {
} }
// Quest Journal ref: https://youtu.be/CD77NeKz1J4?si=AxNEg5YZU5oJ3T11&t=231 // Quest Journal ref: https://youtu.be/CD77NeKz1J4?si=AxNEg5YZU5oJ3T11&t=231
// Contains pre-starting journal entry: https://www.youtube.com/watch?v=PMn0LRo4MCo
// The video fragment matches the current RS3 journal: https://runescape.wiki/w/Transcript:Haunted_Mine/Journal // The video fragment matches the current RS3 journal: https://runescape.wiki/w/Transcript:Haunted_Mine/Journal
override fun drawJournal(player: Player, stage: Int) { override fun drawJournal(player: Player, stage: Int) {
super.drawJournal(player, stage) super.drawJournal(player, stage)
@ -45,14 +47,13 @@ class HauntedMine : Quest(Quests.HAUNTED_MINE,73 ,72 ,2 ,382, 0, 1, 11) {
var started = getQuestStage(player, Quests.HAUNTED_MINE) > 0 var started = getQuestStage(player, Quests.HAUNTED_MINE) > 0
if(!started){ if(!started){
line(player, "I can start this quest by speaking to the !!Zealot?? at the", line++, false) line(player, "I can start this quest by speaking to the !!Saradominist??", line++, false)
line(player, "entrance of the Abandoned Mine in south !!Morytania??.", line++, false) line(player, "!!Zealot?? outside the !!mines of Morytania??.", line++, false)
line(player, "I must be able to defeat a !!level 95 monster??, and need the", line++, false) // git gud line(player, "To complete this quest I need:", line++, false)
line(player, "following skill levels:", line++, false) line(player, "Level 15 Agility.", line++, hasLevelStat(player, Skills.AGILITY, 15)) // to go over a minecart at the entrance to the mine
line(player, "Level 35 Crafting", line++, hasLevelStat(player, Skills.CRAFTING, 35)) // to cut a salve shard from the crystal outcrop line(player, "Level 35 Crafting.", line++, hasLevelStat(player, Skills.CRAFTING, 35)) // to cut a salve shard from the crystal outcrop
line(player, "Level 15 Agility", line++, hasLevelStat(player, Skills.AGILITY, 15)) // to go over a minecart at the entrance to the mine line(player, "Access to Morytania.", line++, isQuestComplete(player, Quests.PRIEST_IN_PERIL)) // to be able to access Morytania
line(player, "I also need to have completed the following quests:", line++, false) line(player, "I must be able to !!defeat a level 95 enemy.??", line++, false) // git gud
line(player, "Priest in Peril", line++, isQuestComplete(player, Quests.PRIEST_IN_PERIL)) // to be able to access Morytania
limitScrolling(player, line, true) limitScrolling(player, line, true)
} }
if(stage >= 1) { // set stage 1 after talking to Zealot. if(stage >= 1) { // set stage 1 after talking to Zealot.

View file

@ -1,8 +1,15 @@
package content.region.morytania.quest.hauntedmine package content.region.morytania.quest.hauntedmine
import content.region.morytania.quest.hauntedmine.HauntedMine.Companion.attributeKeyMentioned
import core.api.* import core.api.*
import core.game.interaction.IntType
import core.game.interaction.InteractionListener import core.game.interaction.InteractionListener
import core.game.node.item.Item
import core.game.system.task.Pulse
import core.game.world.GameWorld
import core.game.world.update.flag.context.Animation
import org.rs09.consts.Items import org.rs09.consts.Items
import org.rs09.consts.NPCs
class HauntedMineListeners : InteractionListener { class HauntedMineListeners : InteractionListener {
@ -15,5 +22,32 @@ class HauntedMineListeners : InteractionListener {
sendMessage(player, "You string the salve amulet.") sendMessage(player, "You string the salve amulet.")
return@onUseWith true return@onUseWith true
} }
on(NPCs.ZEALOT_1528, IntType.NPC, "pickpocket"){ player, node ->
if(getAttribute(player, attributeKeyMentioned, false) && !player.inventory.containsItem(Item(Items.ZEALOTS_KEY_4078))){
player.lock()
GameWorld.Pulser.submit(object : Pulse(){
var counter = 0
override fun pulse(): Boolean {
when(counter++){
0 -> player.animator.animate(Animation(881))
3 -> {
player.unlock()
return true
}
}
return false
}
})
addItemOrDrop(player, Items.ZEALOTS_KEY_4078)
sendMessage(player, "You pick the zealot's pocket and retrieve a small silvery key.")
} else if(getAttribute(player, attributeKeyMentioned, false) && player.inventory.containsItem(Item(Items.ZEALOTS_KEY_4078))) {
sendMessage(player, "I've already picked his pockets.")
} else {
sendMessage(player, "I doubt he's got much of value on him.")
}
return@on true
}
} }
} }

View file

@ -1,6 +1,9 @@
package content.region.morytania.quest.hauntedmine package content.region.morytania.quest.hauntedmine
import content.data.Quests import content.data.Quests
import content.region.kandarin.quest.murdermystery.MurderMystery.Companion.attributeAskPoisonAnna
import content.region.kandarin.quest.murdermystery.MurderMystery.Companion.attributePoisonClue
import content.region.morytania.quest.hauntedmine.HauntedMine.Companion.attributeKeyMentioned
import core.api.* import core.api.*
import core.game.dialogue.* import core.game.dialogue.*
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
@ -23,85 +26,458 @@ class ZealotDialogue (player: Player? = null) : DialoguePlugin(player) {
} }
} }
// Dialogue formatted mostly by ovenbread's scriptConvert.html // If you ask "Where is the plugin for space to skip dialogue?" I will send you a sternly-worded
// message on why you should appreciate this bespoke, small-batch, hand-crafted dialogue. >:(
class ZealotDialogueFile : DialogueFile() { class ZealotDialogueFile : DialogueFile() {
override fun handle(componentID: Int, buttonID: Int) { override fun handle(componentID: Int, buttonID: Int) {
when (getQuestStage(player!!, Quests.HAUNTED_MINE)){ when (getQuestStage(player!!, Quests.MURDER_MYSTERY)) {
// dialogue before starting the quest // dialogue before starting the quest
0 -> when (stage) { 0 -> when (stage) {
0 -> playerl(FacialExpression.FRIENDLY, "Hello there.").also { stage++ } 0 -> playerl(FacialExpression.NEUTRAL, "Hello there.").also { stage++ }
1 -> npcl(FacialExpression.FRIENDLY, "State thy allegiance stranger.").also { stage++ } 1 -> npcl(FacialExpression.NEUTRAL, "State thy allegiance stranger.").also { stage++ }
2 -> showTopics( 2 -> showTopics(
Topic(FacialExpression.FRIENDLY, "I follow the path of Saradomin.", 3), Topic("I follow the path of Saradomin.", 3, true),
Topic(FacialExpression.FRIENDLY, "I serve only Zamorak.", 11), Topic("I serve only Zamorak.", 12, true),
Topic(FacialExpression.FRIENDLY, "My beliefs are in accord with the teachings of Guthix.", 21), Topic("My beliefs are in accord with the teachings of Guthix.", 19, true),
Topic(FacialExpression.FRIENDLY, "I have no particular allegiance.", 27), Topic("I have no particular allegiance.", 26, true),
) )
3 -> npcl(FacialExpression.FRIENDLY, "Ah, a wise choice my friend. But if you truly follow Saradomin, what brings you to these evil lands?").also { stage++ }
4 -> showTopics( 3 -> playerl(
FacialExpression.NEUTRAL,
"I follow the path of Saradomin. Strength through wisdom."
).also { stage++ }
4 -> npcl(
FacialExpression.NEUTRAL,
"Ah, a wise choice my friend. But if you truly follow Saradomin, what brings you to these evil lands?"
).also { stage++ }
5 -> showTopics(
Topic("I come seeking challenges and quests.", 6, true),
Topic("Ok I lied.", 8, true),
Topic("I could ask the same of you.", 10, true),
) )
5 -> npcl(FacialExpression.FRIENDLY, "A noble cause indeed. One that I can sympathise with, for I myself am upon a quest. One that will allow Saradomin to be glorified even in these dark lands.").also { stage++ }
6 -> npcl(FacialExpression.FRIENDLY, "Then leave me, I have no time to listen to your poisonous tongue.").also { stage++ } 6 -> playerl(FacialExpression.NEUTRAL, "I come seeking challenges and quests.").also { stage++ }
7 -> npcl(FacialExpression.FRIENDLY, "Saradomin has granted you wisdom. The evil creatures of this land are cunning and you are right to question anyone's purposes here. I am upon a quest. One that will allow Saradomin to be glorified even in these dark lands.").also { stage++ } 7 -> npcl(
8 -> npcl(FacialExpression.FRIENDLY, "A noble cause indeed. One that I can sympathise with, for I myself am upon a quest. One that will allow Saradomin to be glorified even in these dark lands.").also { stage++ } FacialExpression.NEUTRAL,
9 -> npcl(FacialExpression.FRIENDLY, "Then leave me, I have no time to listen to your poisonous tongue.").also { stage++ } "A noble cause indeed. One that I can sympathise with, for I myself am upon a quest. One that will allow Saradomin to be glorified even in these dark lands."
10 -> npcl(FacialExpression.FRIENDLY, "Saradomin has granted you wisdom. The evil creatures of this land are cunning and you are right to question anyone's purposes here. I am upon a quest. One that will allow Saradomin to be glorified even in these dark lands.").also { ).also {
stage = 31
}
8 -> playerl(
FacialExpression.NEUTRAL,
"Ok I lied, I don't support Saradomin. I'm only here for dastardly evil purposes."
).also { stage++ }
9 -> npcl(
FacialExpression.NEUTRAL,
"Then leave me, I have no time to listen to your poisonous tongue."
).also {
stage = END_DIALOGUE stage = END_DIALOGUE
} }
11 -> npcl(FacialExpression.FRIENDLY, "Then begone. Normally I would strike you down in an instant, but for now I have no time. I am on a quest of the utmost importance.").also { stage++ }
12 -> showTopics( 10 -> playerl(FacialExpression.NEUTRAL, "I could ask the same of you.").also { stage++ }
Topic(FacialExpression.FRIENDLY, "What is this quest of which you speak?", 13), 11 -> npcl(
Topic(FacialExpression.FRIENDLY, "Fine, I didn't want to talk to you either.", 16), FacialExpression.NEUTRAL,
"Saradomin has granted you wisdom. The evil creatures of this land are cunning and you are right to question anyone's purposes here. I am upon a quest. One that will allow Saradomin to be glorified even in these dark lands."
).also {
stage = 31
}
12 -> playerl(
FacialExpression.NEUTRAL,
"I serve only Zamorak. Strength through chaos."
).also { stage++ }
13 -> npcl(
FacialExpression.NEUTRAL,
"Then begone. Normally I would strike you down in an instant, but for now I have no time. I am on a quest of the utmost importance."
).also { stage++ }
14 -> showTopics(
Topic(FacialExpression.NEUTRAL, "What is this quest of which you speak?", 15),
Topic(FacialExpression.NEUTRAL, "Fine, I didn't want to talk to you either.", 18),
) )
13 -> npcl(FacialExpression.FRIENDLY, "It is no concern of yours, but rest assured it will help in crushing you and those others who serve your vile master.").also { stage++ }
14 -> playerl(FacialExpression.FRIENDLY, "I doubt that.").also { stage++ } 15 -> npcl(
15 -> npcl(FacialExpression.FRIENDLY, "I would expect nothing less of you, misguided as you already are.").also { FacialExpression.NEUTRAL,
"It is no concern of yours, but rest assured it will help in crushing you and those others who serve your vile master."
).also { stage++ }
16 -> playerl(FacialExpression.NEUTRAL, "I doubt that.").also { stage++ }
17 -> npcl(
FacialExpression.NEUTRAL,
"I would expect nothing less of you, misguided as you already are."
).also {
stage = END_DIALOGUE stage = END_DIALOGUE
} }
16 -> npcl(FacialExpression.FRIENDLY, "Fear not fiend, even though I may leave you be, you shall not escape justice at the hands of the righteous.").also { stage++ }
17 -> npcl(FacialExpression.FRIENDLY, "It is no concern of yours, but rest assured it will help in crushing you and those others who serve your vile master.").also { stage++ } 18 -> npcl(
18 -> playerl(FacialExpression.FRIENDLY, "I doubt that.").also { stage++ } FacialExpression.NEUTRAL,
19 -> npcl(FacialExpression.FRIENDLY, "I would expect nothing less of you, misguided as you already are.").also { stage++ } "Fear not fiend, even though I may leave you be, you shall not escape justice at the hands of the righteous."
20 -> npcl(FacialExpression.FRIENDLY, "Fear not fiend, even though I may leave you be, you shall not escape justice at the hands of the righteous.").also { ).also {
stage = END_DIALOGUE stage = END_DIALOGUE
} }
21 -> npcl(FacialExpression.FRIENDLY, "A wishy washy set of beliefs. You should follow Saradomin and find a real purpose in your life.").also { stage++ }
22 -> showTopics( 19 -> playerl(
Topic(FacialExpression.FRIENDLY, "And what sort of purpose would that be?", 23), FacialExpression.NEUTRAL,
Topic(FacialExpression.FRIENDLY, "I can make my own choices.", 24), "My beliefs are in accord with the teachings of Guthix. Balance is power."
).also { stage++ }
20 -> npcl(
FacialExpression.NEUTRAL,
"A wishy washy set of beliefs. You should follow Saradomin and find a real purpose in your life."
).also { stage++ }
21 -> showTopics(
Topic("And what sort of purpose would that be?", 22, true),
Topic("I can make my own choices.", 24, true),
) )
23 -> npcl(FacialExpression.FRIENDLY, "To further the glory of Saradomin of course. Take myself, I am upon a quest that will allow Saradomin to be glorified even in these dark lands.").also {
22 -> playerl(FacialExpression.NEUTRAL, "And what sort of purpose would that be?").also { stage++ }
23 -> npcl(
FacialExpression.NEUTRAL,
"To further the glory of Saradomin of course. Take myself, I am upon a quest that will allow Saradomin to be glorified even in these dark lands."
).also {
stage = 31
}
24 -> playerl(
FacialExpression.NEUTRAL,
"I can make my own choices, who are you to dispute them?"
).also { stage++ }
25 -> npcl(FacialExpression.NEUTRAL, "I look only to help those who are misguided.").also {
stage = END_DIALOGUE stage = END_DIALOGUE
} }
24 -> npcl(FacialExpression.FRIENDLY, "I look only to help those who are misguided.").also { stage++ }
25 -> npcl(FacialExpression.FRIENDLY, "To further the glory of Saradomin of course. Take myself, I am upon a quest that will allow Saradomin to be glorified even in these dark lands.").also { stage++ } 26 -> playerl(FacialExpression.NEUTRAL, "I have no particular allegiance.").also { stage++ }
26 -> npcl(FacialExpression.FRIENDLY, "I look only to help those who are misguided.").also { 27 -> npcl(
stage = END_DIALOGUE FacialExpression.NEUTRAL,
} "Then your life is without reason or direction. I would talk to you further on this matter, but for now my attentions must be elsewhere."
27 -> npcl(FacialExpression.FRIENDLY, "Then your life is without reason or direction. I would talk to you further on this matter, but for now my attentions must be elsewhere.").also { stage++ } ).also { stage++ }
28 -> showTopics( 28 -> showTopics(
Topic(FacialExpression.FRIENDLY, "Then I shall leave you to your business.", 29), Topic(FacialExpression.NEUTRAL, "Then I shall leave you to your business.", 29),
Topic(FacialExpression.FRIENDLY, "Why, what are you doing?", 30), Topic(FacialExpression.NEUTRAL, "Why, what are you doing?", 30),
) )
29 -> npcl(FacialExpression.FRIENDLY, "I shall pray that Saradomin grants you the wisdom to see through your folly.").also {
29 -> npcl(
FacialExpression.NEUTRAL,
"I shall pray that Saradomin grants you the wisdom to see through your folly."
).also {
stage = END_DIALOGUE stage = END_DIALOGUE
} }
30 -> npcl(FacialExpression.FRIENDLY, "I am upon a quest. One that will allow Saradomin to be glorified even in these dark lands.").also { stage++ }
31 -> npcl(FacialExpression.FRIENDLY, "I shall pray that Saradomin grants you the wisdom to see through your folly.").also { stage++ }
32 -> npcl(FacialExpression.FRIENDLY, "I am upon a quest. One that will allow Saradomin to be glorified even in these dark lands.").also {
stage = END_DIALOGUE
}
}
// dialogue when quest is in progress 30 -> npcl(
FacialExpression.NEUTRAL,
"I am upon a quest. One that will allow Saradomin to be glorified even in these dark lands."
).also { stage++ }
// first breakpoint.
31 -> showTopics(
Topic(FacialExpression.NEUTRAL, "What quest is that then?", 32),
Topic(FacialExpression.NEUTRAL, "I hope it goes well. Goodbye.", 88),
)
32 -> npcl(
FacialExpression.NEUTRAL,
"Well, below the very ground you stand upon lies an intricate network of tunnels that make up the abandoned Mort Ridge mines. These mines used to be a valuable resource to the inhabitants of Morytania."
).also { stage++ }
33 -> npcl(
FacialExpression.NEUTRAL,
"As with many things, this changed when Misthalin was finally able to push the minions of Morytania back, and Saradomin himself blessed the river Salve."
).also { stage++ }
34 -> npcl(
FacialExpression.NEUTRAL,
"The mines are also the site where the legendary artefact, the salve amulet, was thought to have been carved from the crystals that grow in the lower levels of the mine."
).also { stage++ }
35 -> npcl(
FacialExpression.NEUTRAL,
"These crystals are thought to be formed by the blessed water of the river Salve as it percolates through the rocks to the lower levels of the mine."
).also { stage++ }
36 -> npcl(
FacialExpression.NEUTRAL,
"It is not know what happened to the salve amulet, but it is generally believed that by encapsulating within it some of the goodness of Saradomin himself, it afforded the bearer power over evil."
).also { stage++ }
37 -> npcl(
FacialExpression.NEUTRAL,
"Saradomin has entrusted me alone with the task of regaining access to the mines, whatever the dangers."
).also { stage++ }
38 -> playerl(FacialExpression.NEUTRAL, "How can an abandoned mine be dangerous?").also { stage++ }
39 -> npcl(
FacialExpression.NEUTRAL,
"Because the mines are said to be haunted. The crystals and the ridge used to be protected by Zamorak's mage, Treus Dayth."
).also { stage++ }
40 -> npcl(
FacialExpression.NEUTRAL,
"Dayth failed and fell during and incursion by Saradominists, who then made it into the mines and were able to remove a shard of crystal."
).also { stage++ }
41 -> npcl(
FacialExpression.NEUTRAL,
"Zamorak, furious at his mage, condemned Dayth's soul indefinitely to an existence of turmoil in the mines. Dayth's soul is bound to prevent the crystals from ever being reached again."
).also { stage++ }
42 -> npcl(
FacialExpression.NEUTRAL,
"Further, Zamorak's then ruler upon the land ordered the slaughter of anyone within the mines and that the mines be sealed."
).also { stage++ }.also {
setQuestStage(player!!, Quests.HAUNTED_MINE, 1)
}
// Haunted mine quest is now activated (stage 1)
43 -> showTopics(
Topic("Is there any other way into the mines?", 44, true),
Topic("How does a lost artefact that was only legendary help?", 77, true),
Topic("Why was everyone in the mines slaughtered?", 80, true),
Topic("I must be going now.", 86, true),
)
44 -> playerl(FacialExpression.NEUTRAL, "Is there any other way into the mines?").also { stage++ }
45 -> npcl(
FacialExpression.NEUTRAL,
"Indeed I have found hope that this may be so. By making discreet inquiries I have been led to believe that a second entrance may exist into the mines."
).also { stage++ }
46 -> npcl(
FacialExpression.NEUTRAL,
"Further, I have come into possession of a key that will apparently afford entrance to the lower levels of the mines once inside."
).also { stage++ }.also {
setAttribute(player!!, attributeKeyMentioned, true)
}
// the key has been mentioned, so you can pickpocket it now.
47 -> showTopics(
Topic("Where is the second entrance to the mines?", 48, true),
Topic("How can you be discreet with THAT star emblazoned on your robes?", 51, true),
Topic("Can I borrow your key?", 63, true),
Topic("How does a lost artefact that was only legendary help?", 77, true),
Topic("Why was everyone in the mines slaughtered?", 80, true),
)
48 -> playerl(FacialExpression.NEUTRAL, "Where is the second entrance to the mines?").also { stage++ }
49 -> npcl(
FacialExpression.NEUTRAL,
"Of this I am not yet sure. From what I have been able to gather, it was not originally built for humans to enter by. Where it may be, I am still endeavoring to find out."
).also { stage++ }
50 -> showTopics(
Topic("Can I borrow your key?", 63, true),
Topic("How does a lost artefact that was only legendary help?", 77, true),
Topic("Why was everyone in the mines slaughtered?", 80, true),
Topic("I must be going now.", 86, true),
)
51 -> playerl(
FacialExpression.NEUTRAL,
"How can you be discreet with THAT star emblazoned on your robes?"
).also { stage++ }
52 -> npcl(
FacialExpression.NEUTRAL,
"Saradomin watches over me, I am not troubled by those who are not meant to notice."
).also { stage++ }
53 -> playerl(
FacialExpression.NEUTRAL,
"Even so, you're not exactly keeping quiet about your allegiance are you?"
).also { stage++ }
54 -> npcl(
FacialExpression.NEUTRAL,
"Saradomin will protect me. Even if I should fall there are many behind me who would stand in my place."
).also { stage++ }
55 -> showTopics(
Topic("Is that much consolation?", 56, true),
Topic("I can't see anyone behind you.", 58, true),
Topic("And I would be one of them. So, can I borrow that key?", 63, true),
Topic("You're right, I was wrong to doubt Saradomin.", 60, true),
Topic("You're nuts, goodbye.", 62, true),
)
56 -> playerl(
FacialExpression.NEUTRAL,
"Is that much consolation when you get chopped up into little pieces?"
).also { stage++ }
57 -> npcl(
FacialExpression.NEUTRAL,
"I would rather be cut into little pieces whilst proclaiming the goodness of Saradomin than hiding my faith."
).also { stage = END_DIALOGUE }
58 -> playerl(FacialExpression.NEUTRAL, "I can't see anyone behind you.").also { stage++ }
59 -> npcl(
FacialExpression.NEUTRAL,
"Although you may not realise it, Saradomin works quietly in many people, such is the folly of looking with your eyes and not your heart."
).also { stage = END_DIALOGUE }
60 -> playerl(
FacialExpression.NEUTRAL,
"You're right, I was wrong to doubt Saradomin."
).also { stage++ }
61 -> npcl(
FacialExpression.NEUTRAL,
"Let not your faith in Saradomin falter, for all else is insignificant."
).also { stage = END_DIALOGUE }
62 -> playerl(FacialExpression.NEUTRAL, "You're nuts, goodbye.").also { stage = END_DIALOGUE }
63 -> playerl(FacialExpression.NEUTRAL, "Can I borrow your key?").also { stage++ }
64 -> npcl(
FacialExpression.NEUTRAL,
"I am afraid my task can be entrusted to nobody else. Saradomin has asked me alone to do this. I cannot take the slightest risk of losing this key. The stakes are too high."
).also { stage++ }
65 -> showTopics(
Topic("Please? I'll be very careful with it.", 66, true),
Topic("I didn't want that key anyway.", 75, true),
)
66 -> playerl(FacialExpression.NEUTRAL, "Please? I'll be very careful with it.").also { stage++ }
67 -> npcl(
FacialExpression.NEUTRAL,
"You know not what you deal with. There is evil in that mine and, whatever your assurances, I cannot risk you falling to the creatures within."
).also { stage++ }
68 -> showTopics(
Topic("And you think you'll be safer in the mine than me?", 69, true),
Topic("I'll trade for it.", 71, true),
Topic("Pretty pretty please?", 73, true),
Topic("I didn't want that key anyway.", 75, true),
)
69 -> playerl(
FacialExpression.NEUTRAL,
"And you think you'll be safer in the mine than me?"
).also { stage++ }
70 -> npcl(
FacialExpression.NEUTRAL,
"Of course I'll be safe, my faith in Saradomin protects me."
).also { stage = END_DIALOGUE }
71 -> playerl(FacialExpression.NEUTRAL, "I'll trade for it.").also { stage++ }
72 -> npcl(
FacialExpression.NEUTRAL,
"Saradomin provides for my every need. There is nothing you could offer me."
).also { stage = END_DIALOGUE }
73 -> playerl(FacialExpression.NEUTRAL, "Pretty pretty please?").also { stage++ }
74 -> npcl(FacialExpression.NEUTRAL, "Saradomin grant me patience. The answer is no.").also {
stage = END_DIALOGUE
}
75 -> playerl(FacialExpression.NEUTRAL, "I didn't want that key anyway.").also { stage++ }
76 -> npcl(
FacialExpression.NEUTRAL,
"Witness the goodness of Saradomin, that he has granted you the wisdom to see our positions in perspective."
).also { stage = END_DIALOGUE }
77 -> playerl(
FacialExpression.NEUTRAL,
"How does a lost artefact that was only legendary help?"
).also { stage++ }
78 -> npcl(
FacialExpression.NEUTRAL,
"Although the amulet was lost, it is my hope that if I can make into the mines I can craft another."
).also { stage++ }
79 -> showTopics(
Topic("Is there any other way into the mines?", 44, true),
Topic("Why was everyone in the mines slaughtered?", 80, true),
Topic("I must be going now.", 86, true),
)
80 -> playerl(
FacialExpression.NEUTRAL,
"Why was everyone in the mines slaughtered? Surely it wasn't their fault that the crystals formed?"
).also { stage++ }
81 -> npcl(
FacialExpression.NEUTRAL,
"It is said that some of the workers in the mines, merely from being in the presence of these crystals, found themselves bestowed with the love of Saradomin."
).also { stage++ }
82 -> npcl(
FacialExpression.NEUTRAL,
"The advantage to our cause was considered too great by some within Morytania. They set about mercilessly and brutally killing everyone in the mines rather than risk losing them to us."
).also { stage++ }
83 -> npcl(
FacialExpression.NEUTRAL,
"Such is the treachery of the servants of evil, that they even destroy their own kind without a moments [sic] thought."
).also { stage++ }
84 -> npcl(
FacialExpression.NEUTRAL,
"The mines are now rumored to be haunted by the souls of all those brutally and needlessly killed."
).also { stage++ }
85 -> showTopics(
Topic("Is there any other way into the mines?", 44, true),
Topic("How does a lost artefact that was only legendary help?", 77, true),
Topic("I must be going now.", 86, true),
)
86 -> playerl(
FacialExpression.NEUTRAL,
"I must be going now, good luck on your quest."
).also { stage++ }
87 -> npcl(
FacialExpression.NEUTRAL,
"You should believe not in luck, but in the protection of Saradomin. Farewell."
).also { stage = END_DIALOGUE }
88 -> playerl(FacialExpression.NEUTRAL, "I hope it goes well. Goodbye.").also { stage = END_DIALOGUE }
}
// dialogue after the quest is in progress
in 1..99 -> when (stage) { in 1..99 -> when (stage) {
0 -> sendDialogue(player!!, "where crystal").also { stage = END_DIALOGUE } 0 -> playerl(FacialExpression.NEUTRAL, "Quest in progress").also { stage = END_DIALOGUE }
/*
// these are here so i can copy them
0 -> playerl(FacialExpression.NEUTRAL, "").also { stage++ }
0 -> npcl(FacialExpression.NEUTRAL, "").also { stage++ }
0 -> showTopics(
Topic("", 0, true),
Topic("", 0, true),
Topic("", 0, true),
Topic("", 0, true),
)
*/
} }
// dialogue after completing quest // dialogue after the quest is completed
100 -> when (stage) { 100 -> when (stage) {
0 -> sendDialogue(player!!, "gz on the necklace").also { stage = END_DIALOGUE } 0 -> playerl(FacialExpression.NEUTRAL, "Quest complete").also { stage = END_DIALOGUE }
/*
// these are here so i can copy them
0 -> playerl(FacialExpression.NEUTRAL, "").also { stage++ }
0 -> npcl(FacialExpression.NEUTRAL, "").also { stage++ }
0 -> showTopics(
Topic("", 0, true),
Topic("", 0, true),
Topic("", 0, true),
Topic("", 0, true),
)
*/
} }
} }
} }