finished zealot dialogue

This commit is contained in:
aidan 2025-12-02 16:06:45 -06:00
parent a8becdf020
commit 6f728cbef8
3 changed files with 128 additions and 30 deletions

View file

@ -34,6 +34,7 @@ class HauntedMine : Quest(Quests.HAUNTED_MINE,73 ,72 ,2 ,382, 0, 1, 11) {
const val attributeKilledTreusDayth = "/save:quest:hauntedmine-killedtreusdayth" // True after you've killed Treus Dayth.
const val attributeKeyMentioned = "/save:quest:hauntedmine-keymentioned" // True after the player asks about a way into the mines.
const val attributeZealotKeyReturned = "/save:quest:hauntedmine-zealotkeyreturned" // True after you return the zealot's key after the quest. Note that this should not reset after quest completion
}
// Quest Journal ref: https://youtu.be/CD77NeKz1J4?si=AxNEg5YZU5oJ3T11&t=231

View file

@ -23,6 +23,7 @@ class HauntedMineListeners : InteractionListener {
return@onUseWith true
}
// you should not be able to pickpocket the key after the quest, but that should be taken care of by clearing the attributeKeyMentioned when the quest finishes.
on(NPCs.ZEALOT_1528, IntType.NPC, "pickpocket"){ player, node ->
if(getAttribute(player, attributeKeyMentioned, false) && !player.inventory.containsItem(Item(Items.ZEALOTS_KEY_4078))){
player.lock()

View file

@ -1,9 +1,8 @@
package content.region.morytania.quest.hauntedmine
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 content.region.morytania.quest.hauntedmine.HauntedMine.Companion.attributeZealotKeyReturned
import core.api.*
import core.game.dialogue.*
import core.game.node.entity.player.Player
@ -30,11 +29,18 @@ class ZealotDialogue (player: Player? = null) : DialoguePlugin(player) {
// message on why you should appreciate this bespoke, small-batch, hand-crafted dialogue. >:(
class ZealotDialogueFile : DialogueFile() {
override fun handle(componentID: Int, buttonID: Int) {
when (getQuestStage(player!!, Quests.MURDER_MYSTERY)) {
when (getQuestStage(player!!, Quests.HAUNTED_MINE)) {
// dialogue before/during the quest
in 0..99 -> when (stage) {
0 -> playerl(
FacialExpression.NEUTRAL, "Hello there."
).also {
if (getQuestStage(player!!, Quests.HAUNTED_MINE) == 0) {
stage = 1
} else stage = 89
}
// dialogue before starting the quest
0 -> when (stage) {
0 -> playerl(FacialExpression.NEUTRAL, "Hello there.").also { stage++ }
1 -> npcl(FacialExpression.NEUTRAL, "State thy allegiance stranger.").also { stage++ }
2 -> showTopics(
Topic("I follow the path of Saradomin.", 3, true),
@ -444,40 +450,130 @@ class ZealotDialogueFile : DialogueFile() {
).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) {
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),
// break point where if we've already started the quest
89 -> npcl(
FacialExpression.NEUTRAL,
"Hello again. I'm afraid I'm rather preoccupied. What was it you wanted?"
).also {
stage = if (getAttribute(player!!, attributeKeyMentioned, false)) {
90
} else 91
}
90 -> showTopics(
Topic(FacialExpression.NEUTRAL, "Can you explain the history of these mines again?", 32),
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),
)
*/
91 -> showTopics(
Topic(FacialExpression.NEUTRAL, "Can you explain the history of these mines again?", 32),
Topic("Where is the second entrance to the mines?", 48, 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),
)
}
// dialogue after the quest is completed
100 -> when (stage) {
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),
Topic("I've done it, I've managed to recreate the salve amulet!", 1, true),
Topic(FacialExpression.NEUTRAL, "What powers does the salve amulet have?", 23),
)
// check if the zealot's key has been returned.
1 -> playerl(
FacialExpression.NEUTRAL,
"I've done it, I've managed to recreate the salve amulet!"
).also {
stage = if (!getAttribute(player!!, attributeZealotKeyReturned, false)) {
2
} else 19
}
2 -> npcl(
FacialExpression.NEUTRAL,
"That hardly seems likely. There is no way you could have made it to the bottom of the mines without the key which is in my possession."
).also { stage++ }
3 -> showTopics(
Topic("I found another way down.", 4, true),
Topic("Correction, the key that was in your possession.", 6, true),
Topic("Fine, don't believe me.", 18, true),
)
*/
4 -> playerl(FacialExpression.NEUTRAL, "I, er... found another way down.").also { stage++ }
5 -> npcl(
FacialExpression.NEUTRAL,
"Mock me not, this is a serious task I am undertaking. I don't have the time for your halfwitted attempt at humour."
).also { stage = END_DIALOGUE }
6 -> playerl(
FacialExpression.NEUTRAL,
"Correction, the key that was in your possession."
).also { stage++ }
7 -> npcl(FacialExpression.NEUTRAL, "My key, where is it? You stole it?").also { stage++ }
8 -> npcl(FacialExpression.NEUTRAL, "Return that key to me now!").also {
stage = if (player!!.inventory.contains(Items.ZEALOTS_KEY_4078, 1)) {
10
} else 16
}
10 -> showTopics(
Topic("Ok, I've finished with it now anyway.", 11, true),
Topic("Actually maybe I'll just keep hold of it for now.", 14, true),
)
11 -> playerl(FacialExpression.NEUTRAL, "Ok, I've finished with it now anyway.").also { stage++ }
12 -> npcl(
FacialExpression.NEUTRAL,
"Good, maybe all is not lost, despite your apparent lack of common sense."
).also { stage++ }
// remove the key and set an attribute that it's been returned.
13 -> playerl(FacialExpression.NEUTRAL, "Er... you're welcome?").also { stage = END_DIALOGUE }.also {
removeItem(
player!!, Items.ZEALOTS_KEY_4078
)
}.also { setAttribute(player!!, attributeZealotKeyReturned, true) }
14 -> playerl(
FacialExpression.NEUTRAL,
"Actually maybe I'll just keep hold of it for now."
).also { stage++ }
15 -> npcl(
FacialExpression.NEUTRAL,
"Meddling fool, there are bigger things at stake here than you and your petty thieving intellect can understand."
).also { stage = END_DIALOGUE }
16 -> playerl(FacialExpression.NEUTRAL, "I seem to have misplaced it, sorry.").also { stage++ }
17 -> npcl(
FacialExpression.NEUTRAL,
"Arrrrrrrgh, you're unbelievable. Get out of my sight."
).also { stage++ }
18 -> playerl(FacialExpression.NEUTRAL, "Fine, don't believe me.").also { stage = END_DIALOGUE }
19 -> npcl(
FacialExpression.NEUTRAL,
"Then it is fortunate for us that Saradomin has guided you. Success certainly doesn't seem likely to have stemmed from rational behaviour on your part."
).also { stage++ }
20 -> playerl(
FacialExpression.NEUTRAL,
"You still haven't forgiven me for borrowing your key have you?"
).also { stage++ }
21 -> npcl(FacialExpression.NEUTRAL, "Borrowed!? You stole it!").also { stage++ }
22 -> playerl(FacialExpression.NEUTRAL, "I'd better be going now.").also { stage = END_DIALOGUE }
23 -> npcl(
FacialExpression.NEUTRAL,
"From what I have heard they would be put to best use in the slaying of the evil undead, the zombies and skeletons that walk this land."
).also { stage++ }
24 -> playerl(FacialExpression.NEUTRAL, "Thanks for the tip.").also { stage = END_DIALOGUE }
}
}
}