Implemented Monk's Friend quest
This commit is contained in:
@@ -14302,6 +14302,34 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"default": [
|
||||||
|
{
|
||||||
|
"minAmount": "1",
|
||||||
|
"weight": "100.0",
|
||||||
|
"id": "526",
|
||||||
|
"maxAmount": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charm": [],
|
||||||
|
"ids": "281",
|
||||||
|
"description": "",
|
||||||
|
"main": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": [
|
||||||
|
{
|
||||||
|
"minAmount": "1",
|
||||||
|
"weight": "100.0",
|
||||||
|
"id": "526",
|
||||||
|
"maxAmount": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charm": [],
|
||||||
|
"ids": "283",
|
||||||
|
"description": "",
|
||||||
|
"main": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"default": [
|
"default": [
|
||||||
{
|
{
|
||||||
@@ -63870,4 +63898,4 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -19,6 +19,10 @@
|
|||||||
"item_id": "88",
|
"item_id": "88",
|
||||||
"loc_data": "{1,2654,9767,0,4587583}"
|
"loc_data": "{1,2654,9767,0,4587583}"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"item_id": "90",
|
||||||
|
"loc_data": "{1,2570,9604,0,5898270}"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"item_id": "185",
|
"item_id": "185",
|
||||||
"loc_data": "{1,2467,3176,0,7209050}"
|
"loc_data": "{1,2467,3176,0,7209050}"
|
||||||
|
|||||||
@@ -745,15 +745,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"npc_id": "279",
|
"npc_id": "279",
|
||||||
"loc_data": "{2604,3209,0,0,0}"
|
"loc_data": "{2604,3209,0,1,6}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"npc_id": "280",
|
||||||
|
"loc_data": "{2615,3258,0,1,6}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"npc_id": "281",
|
"npc_id": "281",
|
||||||
"loc_data": "{2604,3219,0,0,0}-{2609,3207,0,0,0}-{2618,3211,0,0,0}"
|
"loc_data": "{2604,3219,0,1,6}-{2609,3207,0,1,6}-{2618,3211,0,1,6}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"npc_id": "282",
|
"npc_id": "282",
|
||||||
"loc_data": "{3280,3494,0,1,6}"
|
"loc_data": "{3280,3494,0,1,6}-{2562,9608,0,1,6}-{2564,9604,0,1,6}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"npc_id": "283",
|
||||||
|
"loc_data": "{2569,9602,0,1,6}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"npc_id": "284",
|
"npc_id": "284",
|
||||||
|
|||||||
+119
@@ -0,0 +1,119 @@
|
|||||||
|
package rs09.game.content.quest.members.monksfriend
|
||||||
|
|
||||||
|
import api.sendItemDialogue
|
||||||
|
import core.game.content.dialogue.FacialExpression
|
||||||
|
import core.game.node.entity.npc.NPC
|
||||||
|
import core.game.node.item.Item
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
import org.rs09.consts.NPCs
|
||||||
|
import rs09.game.content.dialogue.DialogueFile
|
||||||
|
import rs09.game.interaction.InteractionListener
|
||||||
|
import rs09.tools.END_DIALOGUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles BrotherCedricDialogue Dialogue
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
class BrotherCedricDialogue : DialogueFile() {
|
||||||
|
override fun handle(componentID: Int, buttonID: Int) {
|
||||||
|
val questStage = player!!.questRepository.getStage("Monk's Friend")
|
||||||
|
when {
|
||||||
|
questStage < 30 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello.").also{stage++}
|
||||||
|
1 -> npcl(FacialExpression.DRUNK, "Honey, money, woman and wine!").also{stage++}
|
||||||
|
2 -> playerl(FacialExpression.HALF_ASKING, "Are you ok?").also{stage++ }
|
||||||
|
3 -> npcl(FacialExpression.DRUNK, "Yesshh...hic up...beautiful!").also{stage++}
|
||||||
|
4 -> playerl(FacialExpression.NEUTRAL, "Take care old monk.").also{ stage++ }
|
||||||
|
5 -> npcl(FacialExpression.DRUNK, "La..di..da..hic..up!").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
questStage == 30 -> {
|
||||||
|
when(stage){
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Brother Cedric are you okay?").also{stage++}
|
||||||
|
1 -> npcl(FacialExpression.DRUNK, "Yeesshhh, I'm very, very drunk..hic..up..").also{stage++}
|
||||||
|
2 -> playerl(FacialExpression.NEUTRAL, "Brother Omad needs the wine for the party.").also{stage++}
|
||||||
|
3 -> npcl(FacialExpression.SAD, "Oh dear, oh dear, I knew I had to do something!").also{stage = END_DIALOGUE}.also{setQuest(player!!, 40)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
questStage == 40 -> {
|
||||||
|
when(stage){
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Are you okay?").also{stage++}
|
||||||
|
1 -> npcl(FacialExpression.DRUNK, "Hic up! Oh my head! I need a jug of water.").also{stage++}
|
||||||
|
2 -> if (player!!.inventory.containItems(Items.JUG_OF_WATER_1937)){
|
||||||
|
playerl(FacialExpression.FRIENDLY, "Cedric! Here, drink! I have some water.").also{stage=10}
|
||||||
|
} else {
|
||||||
|
playerl(FacialExpression.NEUTRAL, "I'll see if I can get some.").also{stage = 3}
|
||||||
|
}
|
||||||
|
3 -> npcl(FacialExpression.DRUNK, "Thanks! *hic*").also{stage = END_DIALOGUE}
|
||||||
|
10 -> npcl(FacialExpression.DRUNK, "Good stuff, my head's spinning!").also {stage++}
|
||||||
|
11 -> {
|
||||||
|
sendItemDialogue(player!!, Items.JUG_OF_WATER_1937, "You hand the monk a jug of water.")
|
||||||
|
stage=0
|
||||||
|
player!!.inventory.remove(Item(Items.JUG_OF_WATER_1937))
|
||||||
|
setQuest(player!!, 41)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
questStage == 41 -> {
|
||||||
|
when(stage){
|
||||||
|
0 -> npcl(FacialExpression.HAPPY, "Aah! That's better!").also{stage++}
|
||||||
|
1 -> npcl(FacialExpression.HAPPY, "Now I just need to fix this cart and we can go party.").also {stage++}
|
||||||
|
2 -> npcl(FacialExpression.NEUTRAL, "Could you help?").also{stage++}
|
||||||
|
3 -> options(
|
||||||
|
"No, I've helped enough monks today!",
|
||||||
|
"Yes, I'd be happy to!").also{stage++}
|
||||||
|
4 -> when(buttonID){
|
||||||
|
1 -> playerl(FacialExpression.ANGRY, "No, I've helped enough monks today!").also{stage++}
|
||||||
|
2 -> playerl(FacialExpression.FRIENDLY, "Yes, I'd be happy to!").also{stage=10}
|
||||||
|
}
|
||||||
|
5 -> npcl(FacialExpression.HAPPY, "In that case I'd better drink more wine! It helps me think.").also {stage=END_DIALOGUE}
|
||||||
|
10 -> npcl(FacialExpression.HAPPY, "Excellent, I just need some wood.").also{stage++}
|
||||||
|
11 -> playerl(FacialExpression.NEUTRAL, "Ok, I'll see what I can find.").also{stage = END_DIALOGUE}.also{setQuest(player!!, 42)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
questStage == 42 -> {
|
||||||
|
when(stage){
|
||||||
|
0 -> npcl(FacialExpression.HALF_ASKING, "Did you manage to get some wood?").also{stage++}
|
||||||
|
1 -> if (player!!.inventory.containItems(Items.LOGS_1511)){
|
||||||
|
sendItemDialogue(player!!, Items.LOGS_1511, "You hand Cedric some logs.")
|
||||||
|
stage=2
|
||||||
|
} else {
|
||||||
|
playerl(FacialExpression.SAD, "Not yet, I'm afraid.").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
2 -> playerl(FacialExpression.HAPPY, "Here you go!").also{stage++}
|
||||||
|
3 -> npcl(FacialExpression.HAPPY, "Well done! Now I'll fix this cart. You head back to Brother Omad and tell him I'll be there soon.").also{stage++}
|
||||||
|
4 -> playerl(FacialExpression.HAPPY, "Ok! I'll see you later!").also{
|
||||||
|
stage=END_DIALOGUE
|
||||||
|
player!!.inventory.remove(Item(Items.LOGS_1511))
|
||||||
|
setQuest(player!!, 50)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
questStage == 50 -> {
|
||||||
|
when(stage){
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello Cedric.").also{stage++}
|
||||||
|
1 -> npcl(FacialExpression.NEUTRAL, "Hi, I'm almost done here. Could you tell Omad that I'll be back soon?").also{stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
questStage == 100 -> {
|
||||||
|
when(stage){
|
||||||
|
0 -> npcl(FacialExpression.NEUTRAL, "Brother Omad sends you his thanks! He won't be in a fit state to thank you in person.").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles BrotherCedricListener to launch the dialogue
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
class BrotherCedricListener : InteractionListener() {
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(NPCs.BROTHER_CEDRIC_280, NPC, "talk-to"){ player, _ ->
|
||||||
|
player.dialogueInterpreter.open(BrotherCedricDialogue(), NPC(NPCs.BROTHER_CEDRIC_280))
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,215 @@
|
|||||||
|
package rs09.game.content.quest.members.monksfriend
|
||||||
|
|
||||||
|
import api.*
|
||||||
|
import core.game.content.dialogue.FacialExpression
|
||||||
|
import core.game.node.entity.npc.NPC
|
||||||
|
import core.game.node.item.Item
|
||||||
|
import core.game.system.task.Pulse
|
||||||
|
import core.game.world.map.Location
|
||||||
|
import core.game.world.map.RegionManager
|
||||||
|
import core.game.world.update.flag.context.Animation
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
import org.rs09.consts.NPCs
|
||||||
|
import rs09.game.content.dialogue.DialogueFile
|
||||||
|
import rs09.game.interaction.InteractionListener
|
||||||
|
import rs09.game.world.GameWorld.Pulser
|
||||||
|
import rs09.tools.END_DIALOGUE
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles BrotherOmadDialogue Dialogue
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
class BrotherOmadDialogue : DialogueFile() {
|
||||||
|
override fun handle(componentID: Int, buttonID: Int) {
|
||||||
|
val questStage = player!!.questRepository.getStage("Monk's Friend")
|
||||||
|
when (questStage) {
|
||||||
|
0 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello there. What's wrong?").also { stage++ }
|
||||||
|
1 -> npcl(FacialExpression.SAD, "*yawn*...oh, hello...*yawn* I'm sorry! I'm just so tired! I haven't slept in a week!").also { stage++ }
|
||||||
|
2 -> options(
|
||||||
|
"Why can't you sleep, what's wrong?",
|
||||||
|
"Sorry! I'm too busy to hear your problems!").also { stage++ }
|
||||||
|
3 -> when (buttonID) {
|
||||||
|
1 -> playerl(FacialExpression.HALF_ASKING, "Why can't you sleep, what's wrong?").also { stage++ }
|
||||||
|
2 -> playerl(FacialExpression.FRIENDLY, "Sorry! I'm too busy to hear your problems!").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
4 -> npcl(FacialExpression.SAD, "It's brother Androe's son! With his constant: Waaaaaah! Waaaaaaaaah! Androe said it's natural, but it's so annoying!").also { stage++ }
|
||||||
|
|
||||||
|
5 -> playerl(FacialExpression.NEUTRAL, "I suppose that's what kids do.").also { stage++ }
|
||||||
|
6 -> npcl(FacialExpression.SAD, "He was fine, up until last week! Thieves broke in! They stole his favourite sleeping blanket!").also { stage++ }
|
||||||
|
7 -> npcl(FacialExpression.SAD, "Now he won't rest until it's returned... ...and that, means neither can I!").also { stage++ }
|
||||||
|
8 -> options(
|
||||||
|
"Can I help at all?",
|
||||||
|
"I'm sorry to hear that! I hope you find his blanket.").also { stage++ }
|
||||||
|
9 -> when (buttonID) {
|
||||||
|
1 -> playerl(FacialExpression.HALF_ASKING, "Can I help at all?").also { stage++ }
|
||||||
|
2 -> playerl(FacialExpression.FRIENDLY, "I'm sorry to hear that! I hope you find his blanket.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
10 -> npcl(FacialExpression.HALF_WORRIED, "Please do. We won't be able to help you as we are peaceful men but we would be grateful for your help!").also { stage++ }
|
||||||
|
11 -> playerl(FacialExpression.HALF_ASKING, "Where are they?").also { stage++ }
|
||||||
|
12 -> npcl(FacialExpression.SAD, "They hide in a secret cave in the forest. It's hidden under a ring of stones. Please, bring back the blanket!").also { stage = END_DIALOGUE }.also { player!!.questRepository.getQuest("Monk's Friend").start(player) }.also { player!!.questRepository.syncronizeTab(player) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
10 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello.").also{stage = 20 }
|
||||||
|
20 -> npcl(FacialExpression.SAD, "*yawn*...oh, hello again...*yawn*").also{stage++ }
|
||||||
|
21 -> npcl(FacialExpression.SAD, "Please tell me you have the blanket.").also{stage++}
|
||||||
|
22 -> if(player!!.inventory.containItems(Items.CHILDS_BLANKET_90)){
|
||||||
|
playerl(FacialExpression.HAPPY, "Yes! I've recovered it from the clutches of the evil thieves!").also{stage = 30}
|
||||||
|
} else {
|
||||||
|
playerl(FacialExpression.SAD, "I'm afraid not.").also{stage++}
|
||||||
|
}
|
||||||
|
23 -> npcl(FacialExpression.SAD, "I need some sleep!").also{stage = END_DIALOGUE}
|
||||||
|
30 -> {
|
||||||
|
sendItemDialogue(player!!, Items.CHILDS_BLANKET_90, "You hand the monk the childs blanket.")
|
||||||
|
stage=31
|
||||||
|
}
|
||||||
|
31 -> npcl(FacialExpression.HAPPY, "Really, that's excellent, well done! Maybe now I will be able to get some rest.").also{stage++}
|
||||||
|
32 -> npcl(FacialExpression.SAD, "*yawn*..I'm off to bed! Farewell brave traveller!").also{player!!.inventory.remove(Item(Items.CHILDS_BLANKET_90))
|
||||||
|
setQuest(player!!, 20); stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
20 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello, how are you?").also{stage = 30 }
|
||||||
|
30 -> npcl(FacialExpression.HAPPY, "Much better now I'm sleeping well! Now I can organise the party.").also{stage++}
|
||||||
|
31 -> playerl(FacialExpression.HAPPY, "Ooh! What party?").also{stage++}
|
||||||
|
32 -> npcl(FacialExpression.HAPPY, "The son of Brother Androe's birthday party. He's going to be one year old!").also {stage++}
|
||||||
|
33 -> playerl(FacialExpression.HAPPY, "That's sweet!").also{stage++ }
|
||||||
|
34 -> npcl(FacialExpression.HAPPY, "It's also a great excuse for a drink!").also{stage++}
|
||||||
|
35 -> npcl(FacialExpression.NEUTRAL, "We just need Brother Cedric to return with the wine.").also{stage++}
|
||||||
|
36 -> options(
|
||||||
|
"Who's Brother Cedric?",
|
||||||
|
"Enjoy it! I'll see you soon!").also { stage++}
|
||||||
|
37 -> when(buttonID){
|
||||||
|
1 -> playerl(FacialExpression.HALF_ASKING, "Who's Brother Cedric?").also{stage++}
|
||||||
|
2 -> playerl(FacialExpression.FRIENDLY, "Enjoy it! I'll see you soon!").also{stage = 998}
|
||||||
|
}
|
||||||
|
998 -> npcl(FacialExpression.NEUTRAL, "Take care traveller.").also{stage = END_DIALOGUE}
|
||||||
|
38 -> npcl(FacialExpression.FRIENDLY, "Cedric is a member of the order too. We sent him out three days ago to collect wine. But he didn't return!").also{stage++}
|
||||||
|
39 -> npcl(FacialExpression.NEUTRAL, "He most probably got drunk and lost in the forest!").also{stage++}
|
||||||
|
40 -> options(
|
||||||
|
"I've no time for that, sorry.",
|
||||||
|
"Where should I look?",
|
||||||
|
"Can I come to the party?").also { stage++}
|
||||||
|
41 -> when(buttonID){
|
||||||
|
1 -> playerl(FacialExpression.NEUTRAL, "I've no time for that, sorry.").also {stage = 996}
|
||||||
|
2 -> playerl(FacialExpression.HALF_ASKING, "Where should I look?").also {stage++}
|
||||||
|
3 -> playerl(FacialExpression.HALF_ASKING, "Can I come to the party?").also{stage = 997}
|
||||||
|
}
|
||||||
|
996 -> npcl(FacialExpression.NEUTRAL, "Okay traveller, take care.").also{stage = END_DIALOGUE}
|
||||||
|
997 -> npcl(FacialExpression.NEUTRAL, "Of course, but we need the wine first.").also{stage = END_DIALOGUE}
|
||||||
|
42 -> npcl(FacialExpression.FRIENDLY, "Oh, he won't be far. Probably out in the forest.").also{stage++}
|
||||||
|
43 -> playerl(FacialExpression.FRIENDLY, "Ok, I'll go and find him.").also { stage = END_DIALOGUE}.also{ setQuest(player!!, 30);}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
30 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello brother Omad.").also{stage = 50}
|
||||||
|
50 -> npcl(FacialExpression.NEUTRAL, "Hello adventurer, have you found Brother Cedric?").also{stage++}
|
||||||
|
51 -> playerl(FacialExpression.SAD, "Not yet.").also{stage++}
|
||||||
|
52 -> npcl(FacialExpression.FRIENDLY, "Well, keep looking, we need that wine!").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
40 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> npcl(FacialExpression.HAPPY, "Hello adventurer, have you found Brother Cedric?").also{stage = 60}
|
||||||
|
60 -> playerl(FacialExpression.NEUTRAL, "Yes I've seen him, he's a bit drunk!").also{stage++}
|
||||||
|
61 -> npcl(FacialExpression.FRIENDLY, "Well, try your best to get him back here!").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
41, 42 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hello again brother Omad.").also{stage = 70}
|
||||||
|
70 -> npcl(FacialExpression.NEUTRAL, "Hello adventurer, where's Brother Cedric?").also{stage++}
|
||||||
|
71 -> npcl(FacialExpression.NEUTRAL, "He's having a bit of trouble with his cart.").also{stage++}
|
||||||
|
72 -> npcl(FacialExpression.NEUTRAL, "Hmmm! Maybe you could help?").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
50 -> {
|
||||||
|
when(stage) {
|
||||||
|
0 -> playerl(FacialExpression.HAPPY, "Hi Omad, Brother Cedric is on his way!").also{stage = 80}
|
||||||
|
80 -> npcl(FacialExpression.HAPPY, "Good! Good! Now we can party!").also{stage++}
|
||||||
|
81 -> npcl(FacialExpression.HAPPY, "I have little to repay you with, but I'd like to offer you some rune stones. But first, let's party!").also{stage++}
|
||||||
|
82 -> sendDialogue(player!!, "Brother Omad gives you 8 Law Runes").also{stage++}
|
||||||
|
83 -> playerl(FacialExpression.HAPPY, "Thanks Brother Omad!").also{stage++}
|
||||||
|
84 -> {
|
||||||
|
commenceMonkParty(true)
|
||||||
|
end()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
100 -> {
|
||||||
|
commenceMonkParty(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun commenceMonkParty(questComplete : Boolean) {
|
||||||
|
val brotherOmad: NPC? = RegionManager.getNpc(Location(2604, 3209, 0), 279, 6)
|
||||||
|
val monk: NPC? = RegionManager.getNpc(Location(2609, 3207, 0), 281, 6)
|
||||||
|
|
||||||
|
// Spawn balloons when PartyRoom code is fixed.
|
||||||
|
|
||||||
|
Pulser.submit(object : Pulse(1) {
|
||||||
|
var count = 0
|
||||||
|
override fun pulse(): Boolean {
|
||||||
|
when (count) {
|
||||||
|
1 -> {
|
||||||
|
brotherOmad!!.sendChat("Party!")
|
||||||
|
brotherOmad.animator.animate(Animation(866)) // Dance
|
||||||
|
|
||||||
|
}
|
||||||
|
3 -> {
|
||||||
|
player!!.sendChat("Woop!")
|
||||||
|
player!!.animator.animate(Animation(866)) // Dance
|
||||||
|
}
|
||||||
|
5 -> {
|
||||||
|
monk!!.sendChat("Yeah!")
|
||||||
|
monk.animator.animate(Animation(2106)) // Jig
|
||||||
|
}
|
||||||
|
7 -> brotherOmad!!.sendChat("Let's boogie!")
|
||||||
|
9 -> player!!.sendChat("Oh, baby!")
|
||||||
|
11 -> monk!!.sendChat("GO!")
|
||||||
|
13 -> {
|
||||||
|
brotherOmad!!.sendChat("Get down!")
|
||||||
|
brotherOmad.animator.animate(Animation(2108)) // Headbang
|
||||||
|
}
|
||||||
|
15 -> player!!.sendChat("Feel the rhythm!")
|
||||||
|
17 -> monk!!.sendChat("Dance!")
|
||||||
|
19 -> brotherOmad!!.sendChat("Oh my!")
|
||||||
|
21 -> {
|
||||||
|
player!!.sendChat("Watch me go!")
|
||||||
|
player!!.animator.animate(Animation(861)) // Laugh
|
||||||
|
}
|
||||||
|
23 -> {
|
||||||
|
monk!!.sendChat("You go!")
|
||||||
|
monk.animator.animate(Animation(2109)) // Jump for joy
|
||||||
|
}
|
||||||
|
25 -> if (questComplete) {
|
||||||
|
player!!.questRepository.getQuest("Monk's Friend").finish(player)
|
||||||
|
player!!.questRepository.getQuest("Monk's Friend").setStage(player, 100)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count++
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles BrotherCedricListener to launch the dialogue
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
class BrotherOmadListener : InteractionListener() {
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(NPCs.BROTHER_OMAD_279, NPC, "talk-to"){ player, _ ->
|
||||||
|
player.dialogueInterpreter.open(BrotherOmadDialogue(), NPC(NPCs.BROTHER_OMAD_279))
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
package rs09.game.content.quest.members.monksfriend
|
||||||
|
|
||||||
|
import core.game.content.dialogue.FacialExpression
|
||||||
|
import core.game.node.entity.npc.NPC
|
||||||
|
import org.rs09.consts.NPCs
|
||||||
|
import rs09.game.content.dialogue.DialogueFile
|
||||||
|
import rs09.game.interaction.InteractionListener
|
||||||
|
import rs09.tools.END_DIALOGUE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles MonasteryMonkDialogue Dialogue
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
class MonasteryMonkDialogue : DialogueFile() {
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int) {
|
||||||
|
var questStage = player!!.questRepository.getStage("Monk's Friend")
|
||||||
|
if (questStage == 0){
|
||||||
|
when(stage) {
|
||||||
|
0 -> npcl(FacialExpression.NEUTRAL,"Peace brother.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
} else if (questStage < 100) {
|
||||||
|
when(stage) {
|
||||||
|
0 -> npcl(FacialExpression.FRIENDLY,"*yawn*").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
when(stage) {
|
||||||
|
0 -> npcl(FacialExpression.HAPPY,"Can't wait for the party!").also{stage = END_DIALOGUE}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles BrotherCedricListener to launch the dialogue
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
class MonasteryMonkListener : InteractionListener() {
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(NPCs.MONK_281, NPC, "talk-to"){ player, _ ->
|
||||||
|
player.dialogueInterpreter.open(MonasteryMonkDialogue(), NPC(NPCs.MONK_281))
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
package rs09.game.content.quest.members.monksfriend
|
||||||
|
|
||||||
|
|
||||||
|
import api.*
|
||||||
|
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.game.node.item.Item
|
||||||
|
import core.plugin.Initializable
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the "Monk's Friend" quest.
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Initializable
|
||||||
|
class MonksFriend: Quest("Monk's Friend", 89, 88, 1, 30, 0, 1, 80) {
|
||||||
|
|
||||||
|
override fun newInstance(`object`: Any?): Quest {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun drawJournal(player: Player?, stage: Int) {
|
||||||
|
super.drawJournal(player, stage)
|
||||||
|
var line = 11
|
||||||
|
player?: return
|
||||||
|
if(stage == 0){
|
||||||
|
line(player, "I can start this quest by speaking to !!Brother Omad?? in the", line++)
|
||||||
|
line(player, "!!Monastery?? south of !!Ardougne??.", line++)
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
if(stage == 10){
|
||||||
|
line(player, "Brother Omad asked me to recover a child's blanket.", line++)
|
||||||
|
}
|
||||||
|
if(stage >= 20){
|
||||||
|
line(player, "Brother Omad asked me to recover a child's blanket, I ", line++, true)
|
||||||
|
line(player, "found the secret cave and gave back the blanket.", line++, true)
|
||||||
|
|
||||||
|
}
|
||||||
|
if(stage ==30){
|
||||||
|
line(player, "I agreed to find !!Brother Cedric.?? he is somewhere in the", line++)
|
||||||
|
line(player, "!!forest?? south of !!Ardougne??", line++)
|
||||||
|
}
|
||||||
|
if(stage >= 50){
|
||||||
|
line(player, "I found Brother Cedric in the forest south of Ardougne.", line++, true)
|
||||||
|
line(player, "I sobered him up and I helped him fix his cart.", line++, true)
|
||||||
|
}
|
||||||
|
if(stage == 100){
|
||||||
|
line(player, "I had a party with the Monks. There were party balloons and we danced the night away!", line++, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun finish(player: Player?) {
|
||||||
|
super.finish(player)
|
||||||
|
player ?: return
|
||||||
|
var ln = 10
|
||||||
|
player.packetDispatch.sendItemZoomOnInterface(Items.LAW_RUNE_563, 230, 277, 5)
|
||||||
|
drawReward(player,"1 Quest Point", ln++)
|
||||||
|
drawReward(player,"8 Law Runes", ln++)
|
||||||
|
drawReward(player,"2000 Woodcutting XP", ln++)
|
||||||
|
|
||||||
|
rewardXP(player, Skills.WOODCUTTING, 2000.0)
|
||||||
|
player.inventory.add(Item(563, 8))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setQuest(player: Player, stage: Int){
|
||||||
|
player.questRepository.getQuest("Monk's Friend").setStage(player, stage)
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package rs09.game.content.zone
|
||||||
|
|
||||||
|
import core.game.node.entity.Entity
|
||||||
|
import core.game.node.entity.player.Player
|
||||||
|
import core.game.world.map.zone.MapZone
|
||||||
|
import core.game.world.map.zone.ZoneBorders
|
||||||
|
import core.game.world.map.zone.ZoneBuilder
|
||||||
|
import core.plugin.Initializable
|
||||||
|
import core.plugin.Plugin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the stone circle zone south of Ardougne.
|
||||||
|
* @author Kya
|
||||||
|
*/
|
||||||
|
@Initializable
|
||||||
|
class StoneCircleZone : MapZone("stone circle", true), Plugin<Any> {
|
||||||
|
/**
|
||||||
|
* Constructs a new `StoneCircleZone` `Object`.
|
||||||
|
*/
|
||||||
|
override fun configure() {
|
||||||
|
register(ZoneBorders(2558, 3219, 2559, 3225))
|
||||||
|
register(ZoneBorders(2560, 3219, 2564, 3225))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun fireEvent(identifier: String?, vararg args: Any?): Any? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newInstance(arg: Any?): Plugin<Any> {
|
||||||
|
ZoneBuilder.configure(this)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun enter(e: Entity): Boolean {
|
||||||
|
if (e is Player) {
|
||||||
|
e.varpManager.get(1184).setVarbit(28, 1).send(e)
|
||||||
|
}
|
||||||
|
return super.enter(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun leave(e: Entity, logout: Boolean): Boolean {
|
||||||
|
if (!logout && e is Player) {
|
||||||
|
e.varpManager.get(1184).setVarbit(28, 0).send(e)
|
||||||
|
}
|
||||||
|
return super.leave(e, logout)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user