diff --git a/Server/data/configs/npc_spawns.json b/Server/data/configs/npc_spawns.json index 46a5a18e7..d3ee0a239 100644 --- a/Server/data/configs/npc_spawns.json +++ b/Server/data/configs/npc_spawns.json @@ -12411,6 +12411,34 @@ "npc_id": "8545", "loc_data": "{3122,3626,0,1,0}-" }, + { + "npc_id": "8557", + "loc_data": "{3497,5223,0,1,0}-{3504,5211,0,1,0}-{3514,5188,0,1,0}-{3514,5209,0,1,0}-{3526,5224,0,1,0}-" + }, + { + "npc_id": "8559", + "loc_data": "{3460,5222,0,1,0}-{3469,5201,0,1,0}-{3470,5211,0,1,0}-{3474,5244,0,1,0}-{3482,5206,0,1,0}-{3484,5237,0,1,0}-{3494,5226,0,1,0}-{3495,5211,0,1,0}-{3501,5233,0,1,0}-{3508,5223,0,1,0}-{3526,5245,0,1,0}-{3536,5222,0,1,0}-" + }, + { + "npc_id": "8561", + "loc_data": "{3466,5206,0,1,0}-{3516,5240,0,1,0}-{3530,5237,0,1,0}-{3546,5240,0,1,0}-" + }, + { + "npc_id": "8563", + "loc_data": "{3462,5206,0,1,0}-{3464,5243,0,1,0}-{3469,5221,0,1,0}-{3483,5199,0,1,0}-{3483,5231,0,1,0}-{3497,5243,0,1,0}-{3506,5204,0,1,0}-{3516,5227,0,1,0}-" + }, + { + "npc_id": "8565", + "loc_data": "{3461,5237,0,1,0}-{3465,5211,0,1,0}-{3477,5225,0,1,0}-{3498,5202,0,1,0}-{3525,5241,0,1,0}-" + }, + { + "npc_id": "8567", + "loc_data": "{3479,5212,0,1,0}-{3492,5188,0,1,0}-{3494,5238,0,1,0}-{3496,5192,0,1,0}-{3504,5242,0,1,0}-{3513,5196,0,1,0}-{3534,5234,0,1,0}-{3547,5222,0,1,0}-{3547,5232,0,1,0}-" + }, + { + "npc_id": "8579", + "loc_data": "{2292,3626,0,1,0}-" + }, { "npc_id": "8590", "loc_data": "{2743,3444,0,1,0}-" diff --git a/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/InPyreNeed.kt b/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/InPyreNeed.kt new file mode 100644 index 000000000..baefdfbc2 --- /dev/null +++ b/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/InPyreNeed.kt @@ -0,0 +1,228 @@ +package content.region.kandarin.pisc.quest.inpyreneed + +import content.data.Quests +import core.api.getQuestStage +import core.api.hasLevelStat +import core.api.isQuestComplete +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 + +@Initializable +class InPyreNeed : Quest(Quests.IN_PYRE_NEED,162, 161, 1, 1370, 5761, 0, 1, 30){ + + companion object { + val questName = Quests.IN_PYRE_NEED + const val attributeRegionInstance = "/save:quest:inpyreneed-regioninstance" + + fun hasRequirements(player: Player): Boolean { + return arrayOf( + hasLevelStat(player, Skills.FLETCHING, 53), + hasLevelStat(player, Skills.CRAFTING, 52), + hasLevelStat(player, Skills.FIREMAKING, 55), + ).all { it } + } + } + + 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 the !!Priest of Guthix??", line++) + line(player,"near the cave south of the !!Piscatoris Fishing Colony??.", line++) + line++ + line(player,"This quest has the following requirements:", line++) + line(player, "!!Level 53 Fletching??", line++, hasLevelStat(player, Skills.FLETCHING, 53)) + line(player, "!!Level 52 Crafting??", line++, hasLevelStat(player, Skills.CRAFTING, 52)) + line(player, "!!Level 55 Firemaking??", line++, hasLevelStat(player, Skills.FIREMAKING, 55)) + } else { + line(player, "I spoke to the Priest of Guthix, near the cave south of the", line++, true) + line(player, "Piscatoris Fishing Colony. He wants me to enter a cave", line++, true) + line(player, "that is apparently the lair of the legendary phoenix, which", line++, true) + line(player, "was attacked and mortally wounded on its way back to its", line++, true) + line(player, "roost. I must complete a ritual, which he believes will", line++, true) + line(player, "ensure the phoenix's survival.", line++, true) + + if (stage >= 2) { + line++ + line(player, "I could !!enter the cave?? and try to figure it out for myself, or I", line++, true) + line(player, "should ask the !!Priest of Guthix?? for more information.", line++, true) + } else if (stage >= 1) { + line++ + line(player, "I could !!enter the cave?? and try to figure it out for myself, or I", line++, false) + line(player, "should ask the !!Priest of Guthix?? for more information.", line++, false) + } + + if (stage >= 3) { + line++ + line(player, "I have gained some more information about the ritual.", line++, true) + line(player, "Apparently, there are !!five?? different !!aromatic trees?", line++, true) + line(player, "growing inside the !!phoenix's?? lair. I must gather !!twigs?? from", line++, true) + line(player, "each of these !!trees?? as I progress through the lair. These", line++, true) + line(player, "must then be !!fletched?? into !!weaving ribbon??, which in turn", line++, true) + line(player, "must be !!crafted?? into a large !!basket?? atop a !!funeral pyre?? in", line++, true) + line(player, "the !!phoenix's roost??. I must then !!light?? this !!completed??", line++, true) + line(player, "!!funeral pyre??, so that the !!phoenix?? can burn to, and be", line++, true) + line(player, "reborn from, ashes. !!If I leave the cave, I will have to??", line++, true) + line(player, "!!gather all the twigs again, as only fresh twigs are suitable??", line++, true) + line(player, "!!for the ritual??.", line++, true) + } else if (stage >= 2) { + line++ + line(player, "I have gained some more information about the ritual.", line++, false) + line(player, "Apparently, there are !!five?? different !!aromatic trees?", line++, false) + line(player, "growing inside the !!phoenix's?? lair. I must gather !!twigs?? from", line++, false) + line(player, "each of these !!trees?? as I progress through the lair. These", line++, false) + line(player, "must then be !!fletched?? into !!weaving ribbon??, which in turn", line++, false) + line(player, "must be !!crafted?? into a large !!basket?? atop a !!funeral pyre?? in", line++, false) + line(player, "the !!phoenix's roost??. I must then !!light?? this !!completed??", line++, false) + line(player, "!!funeral pyre??, so that the !!phoenix?? can burn to, and be", line++, false) + line(player, "reborn from, ashes. !!If I leave the cave, I will have to??", line++, false) + line(player, "!!gather all the twigs again, as only fresh twigs are suitable??", line++, false) + line(player, "!!for the ritual??.", line++, false) + } + + if (stage >= 3) { + line++ + line(player, "I have entered the cave.", line++, true) + } + + if (stage >= 3) { + line++ + line(player, "I have gathered the cinnamon twigs.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have fletched the cinnamon twigs into weaving ribbon.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have gathered the sassafras twigs.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have fletched the sassafras twigs into weaving ribbon.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have gathered the ailanthus twigs.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have fletched the ailanthus twigs into weaving ribbon.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have gathered the cedar twigs.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have fletched the cedar twigs into weaving ribbon.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have gathered the mastic twigs.", line++, true) + } + if (stage >= 3) { + line++ + line(player, "I have fletched the mastic twigs into weaving ribbon.", line++, true) + } + + if (stage >= 5) { + line++ + line(player, "I have gathered all the twigs, and made my way to the", line++, true) + line(player, "phoenix's roost. The phoenix is here. It is gravely", line++, true) + line(player, "wounded.", line++, true) + line(player, "I should look around for clues as to what to do next.", line++, true) + } else if (stage >= 4) { + line++ + line(player, "I have gathered all the twigs, and made my way to the", line++, true) + line(player, "phoenix's roost. The phoenix is here. It is gravely", line++, true) + line(player, "wounded.", line++, true) + line(player, "I should look around for clues as to what to do next.", line++, false) + } + + if (stage >= 6) { + line++ + line(player, "I should hurry and !!fletch?? all of the !!twigs?? into !!weaving??.", line++, true) + line(player, "!!ribbons??, construct the !!funeral pyre?? and !!light?? it.", line++, true) + } else if (stage >= 5) { + line++ + line(player, "I should hurry and !!fletch?? all of the !!twigs?? into !!weaving??.", line++, false) + line(player, "!!ribbons??, construct the !!funeral pyre?? and !!light?? it.", line++, false) + } + + if (stage >= 7) { + line++ + line(player, "I have constructed and lit the !!funeral pyre??. The !!phoenix??", line++, true) + line(player, "managed to limp over and throw itself into the fire.", line++, true) + line(player, "It burned to ashes, and in a flash of flame was reborn. I", line++, true) + line(player, "should speak to the !!phoenix?? and ensure all is okay before", line++, true) + line(player, "returning to the !!Priest of Guthix??.", line++, true) + } else if (stage >= 6) { + line++ + line(player, "I have constructed and lit the !!funeral pyre??. The !!phoenix??", line++, false) + line(player, "managed to limp over and throw itself into the fire.", line++, false) + line(player, "It burned to ashes, and in a flash of flame was reborn. I", line++, false) + line(player, "should speak to the !!phoenix?? and ensure all is okay before", line++, false) + line(player, "returning to the !!Priest of Guthix??.", line++, false) + } + + if (stage >= 8) { + line(player, "The !!reborn phoenix?? spoke to me, thanking me for helping", line++, true) + line(player, "her its time of need. As a reward, the !!phoenix?? gave me", line++, true) + line(player, "!!5 phoenix quills??, and also gave me permission to !!challenge??", line++, true) + line(player, "!!it to combat?? in its roost !!once per day, once my combat??", line++, true) + line(player, "!!skills are proven??. I should meet the !!Priest of Guthix?? at the", line++, true) + line(player, "entrance to the !!phoenix's lair?? to claim my !!reward?? from him,", line++, true) + line(player, "too.", line++, true) + } else if (stage >= 7) { + line(player, "The !!reborn phoenix?? spoke to me, thanking me for helping", line++, false) + line(player, "her its time of need. As a reward, the !!phoenix?? gave me", line++, false) + line(player, "!!5 phoenix quills??, and also gave me permission to !!challenge??", line++, false) + line(player, "!!it to combat?? in its roost !!once per day, once my combat??", line++, false) + line(player, "!!skills are proven??. I should meet the !!Priest of Guthix?? at the", line++, false) + line(player, "entrance to the !!phoenix's lair?? to claim my !!reward?? from him,", line++, false) + line(player, "too.", line++, false) + } + if (stage >= 100) { + line++ + line(player, "I have spoken to the Priest of Guthix, who thanked and rewarded me", line++, true) + line(player, "for my help.", line++, true) + line++ + line(player,"QUEST COMPLETE!", line) + } + } + } + + override fun reset(player: Player) { + + } + + override fun finish(player: Player) { + var ln = 10 + super.finish(player) + player.packetDispatch.sendString("You have completed the In Pyre Need Quest!", 277, 4) + player.packetDispatch.sendItemZoomOnInterface(Items.PHOENIX_QUILL_14616, 240, 277, 5) + + drawReward(player,"1 Quest Points", ln++) + drawReward(player,"14,400 Firemaking XP", ln++) + drawReward(player,"12,500 Fletching XP", ln++) + drawReward(player,"11,556 Crafting XP", ln++) + drawReward(player,"Access to the phoenix lair", ln) + drawReward(player,"once per day", ln) + + player.skills.addExperience(Skills.FIREMAKING, 14400.0) + player.skills.addExperience(Skills.FLETCHING, 12500.0) + player.skills.addExperience(Skills.CRAFTING, 11556.0) + } + + override fun newInstance(`object`: Any?): Quest { + return this + } +} \ No newline at end of file diff --git a/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/InPyreNeedListeners.kt b/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/InPyreNeedListeners.kt new file mode 100644 index 000000000..f6f0c3994 --- /dev/null +++ b/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/InPyreNeedListeners.kt @@ -0,0 +1,89 @@ +package content.region.kandarin.pisc.quest.inpyreneed + +import core.api.* +import core.game.dialogue.DialogueFile +import core.game.interaction.IntType +import core.game.interaction.InteractionListener +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.game.world.map.Location +import core.game.world.map.build.DynamicRegion +import core.tools.END_DIALOGUE +import org.rs09.consts.NPCs +import org.rs09.consts.Scenery + +class InPyreNeedListeners: InteractionListener { + + companion object { + + // For region 13905 + val entrancesLeft = arrayOf( + Location(20, 2), // SW entrance + Location(37, 2), // SE entrance + Location(5, 34), // NW entrance + Location(60, 40), // NE entrance + ) + + // For region 14161 + val entrancesRight = arrayOf( + Location(26, 61), // NW entrance + Location(46, 40), // NE entrance egg + Location(15, 2), // SW entrance phoenix lair + ) + + // Trees are in order. + val trees = arrayOf( + Scenery.CINNAMON_TREE_41903, + Scenery.SASSAFRAS_TREE_41904, + Scenery.AILANTHUS_TREE_41905, + Scenery.CEDAR_TREE_41906, + Scenery.MASTIC_TREE_41907, + ) + + fun randomizeLayout(player: Player) { + + } + + } + + override fun defineListeners() { + + on(Scenery.CAVE_ENTRANCE_41900, IntType.SCENERY, "enter") { player, node -> + if (getQuestStage(player, InPyreNeed.questName) >= 100) { + // This is the weekly minigame. + }else if (getQuestStage(player, InPyreNeed.questName) >= 1) { + val regionInstance = DynamicRegion.create(13905) + //setAttribute(player, InPyreNeed.attributeRegionInstance, regionInstance) + teleport(player, regionInstance.baseLocation.transform(37,2, 0)) + + registerLogoutListener(player, "in-pyre-need-logout") { + player.location = Location.create(2294, 3626, 0) + player.locks.unlockTeleport() + } +// zone.register(getRegionBorders(regionInstance.id)) + // Fade + } else { + openDialogue(player, object : DialogueFile() { + override fun handle(componentID: Int, buttonID: Int) { + when (stage) { + 0 -> npcl("Hey, wait! I have something to as you if you're going down there.").also { stage++ } + 1 -> playerl("Maybe I should see what he has to say before entering this dark, scary and unreasonably warm cave.").also { + stage = END_DIALOGUE + } + } + } + }, NPC(NPCs.PRIEST_OF_GUTHIX_8555)) + } + return@on true + } + + on(Scenery.CAVE_ENTRANCE_41902, IntType.SCENERY, "escape") { player, node -> + teleport(player, Location(2294, 3626, 0)) + val regionInstance = getAttribute(player, InPyreNeed.attributeRegionInstance, null) + if (regionInstance != null) { + + } + return@on true + } + } +} \ No newline at end of file diff --git a/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/PriestOfGuthixDialogue.kt b/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/PriestOfGuthixDialogue.kt new file mode 100644 index 000000000..b2cd8f445 --- /dev/null +++ b/Server/src/main/content/region/kandarin/pisc/quest/inpyreneed/PriestOfGuthixDialogue.kt @@ -0,0 +1,157 @@ +package content.region.kandarin.pisc.quest.inpyreneed + +import core.api.* +import core.game.dialogue.* +import core.game.interaction.IntType +import core.game.interaction.InteractionListener +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.plugin.Initializable +import org.rs09.consts.NPCs + +@Initializable +class PriestOfGuthixDialogue: InteractionListener { + + override fun defineListeners() { + on(NPCs.PRIEST_OF_GUTHIX_8555, IntType.NPC, "talk-to") { player, node -> + DialogueLabeller.open(player, PriestOfGuthixDialogueFile (), node as NPC) + return@on true + } + } + + // https://youtu.be/DZQqDsvxGM0 + class PriestOfGuthixDialogueFile : DialogueLabeller() { + override fun addConversation() { + player(ChatAnim.FRIENDLY,"Hello there.") + exec { player, npc -> + if (getQuestStage(player, InPyreNeed.questName) in 1..6) { + loadLabel(player, "InPyreNeedAlreadyStarted") + } else if (InPyreNeed.hasRequirements(player)) { + loadLabel(player, "InPyreNeedStart") + } else { + loadLabel(player, "InPyreNeedRequirementsNotMet") + } + } + + label("InPyreNeedRequirementsNotMet") + npc("Oh, isn't there anyone around here who is willing and able to help me?") + player("I'm willing to help.") + npc("Unfortunately, you are not able.") + line("You need 52 Crafting, 53 Fletching and 55 Firemaking to start this quest.") + + label("InPyreNeedAlreadyStarted") + npc("@name! How is your quest to save the phoenix progressing?") + player("I'm a little unsure on what I have to do next. Could I ask you some questions?") + npc("What would you like to ask about?") + goto("InPyreNeedMoreInformation") + + label("InPyreNeedStart") + npc("Please, adventurer, I beg you. You must help her!") + player("Woah, hold your unicorns! Help who?") + npc("I...I'm sorry. My emotions have run away with me. Allow me to explain.") + npc("This cave is a place of great significance. Do you know why?") + player("I can't say I do.") + npc("It is the roost of the legendary firebird, the phoenix!") + player("Really?") + player("But wait, how is this related to who I have to help?") + npc("It is related because it is the phoenix that is in need of your assistance.") + player("You're starting to confuse me.") + player("Perhaps you should take a deep breath and start from the beginning.") + npc("Okay...*sigh*") + npc("I have been studying the phoenix for some time now, out of curiosity and admiration.") + npc("While not truly immortal, the phoenix has the capacity to live forever if certain...conditions...are met.") + player("Conditions?") + npc("The phoenix has a natural lifespan of 500 years. There is a set ritual it must go through when its life is ending, in order for it to be reborn and live for another five centuries.") + npc("The end of the phoenix's current lifespan is nigh and it has returned to its roost to complete this ritual. I came here to witness this once in a lifetime event.") + player("So, the phoenix has returned to its roost and you came to watch it be reborn. I fail to see the problem.") + npc("The phoenix was gravely wounded on its way back to its roost. It barely managed to reach its lair.") + npc("It now rests there, slowly slipping from this world and soon it will be gone forever, incapable of completing its rebirth ritual owing to its wounds.") + player("A tragic tale, but what can I do about it?") + npc("I know the ritual that must be completed. To save the phoenix, you must go into the cave and perform it.") + npc("Completing the ritual before the phoenix takes its last breath will ensure its revival, and continue the potentially eternal life of this magnificent beast.") + player("If you know the ritual, why can't you venture forth and help the phoenix yourself?") + npc("Because I am an old man whose mind and fingers lack the necessary skill to complete the ritual...") + npc("...and whose body lacks the necessary heat-resistance.") + player("...") + npc("The task I ask of you will not take long, and you will be well rewarded for your efforts. Will you please complete the phoenix's ritual?") + options ( + DialogueOption("StartYes", "Yes, I will help."), + DialogueOption("StartNo", "No, I have other things to do.") + ) + + label("StartYes") + exec { player, npc -> + if(getQuestStage(player, InPyreNeed.questName) == 0) { + setQuestStage(player, InPyreNeed.questName, 1) + } + } + npc("You'll help? Oh, praise be to Guthix! I knew I could trust you from the moment I saw you.") + npc("What is your name, adventurer?") + player("You can call me @name.") + npc("Well, @name, it's nice to meet you. No doubt you have questions about the task at hand.") + goto("InPyreNeedMoreInformation") + + label("StartNo") + npc("Well, I can't force you. If you change your mind, hurry back. The phoenix's life could fade at any moment.") + + label("InPyreNeedMoreInformation") + options ( + DialogueOption("ThePhoenix", "The phoenix.", skipPlayer = true), + DialogueOption("TheRitual", "The ritual.", skipPlayer = true), + DialogueOption("ThePhoenixLair", "The phoenix lair.", skipPlayer = true), + DialogueOption("NoMoreQuestions", "No more questions", skipPlayer = true), + ) + + label("ThePhoenix") + player("Could you tell me about the phoenix?") + npc("The phoenix is an ancient creature - older than either of us can comprehend.") + npc("It is a large, powerful avian creature, surrounded by flames and covered in a fiery plumage. It also has strong magical abilities.") + npc("Every five hundred years, as it reaches the limits of its lifespan, it returns to its roost to complete a ritual and be reborn.") + npc("You see, while not truly immortal, the phoenix can be reborn any number of times, so long as it completes its rebirth ritual.") + npc("But, thanks to its wounds, the phoenix could soon be gone from this world forever.") + player("Thanks for the information. Now, back to my other questions.") + goto("InPyreNeedMoreInformation") + + label("TheRitual") + player("Could you tell me about the phoenix's rebirth ritual?") + npc("The ritual is not that complicated, really; it just requires certain ingredients and a set of dexterous hands.") + npc("In order to be reborn, the phoenix must be burnt alive on a funeral pyre woven from the wood of five particular trees.") + npc("You must weave a basket from the fletched twigs of cinnamon, sassafras, ailanthus, cedar and mastic trees.") + npc("This basket must be placed on the base of the pyre in the phoenix's roost, and then it must be lit.") + npc("Usually, you would also need to best the phoenix in combat to weaken it, so that it can succumb to the flames.") + npc("This time, however, the phoenix is already weak and dying.") + npc("The phoenix will enter the pyre and be burnt to ashes. From these ashes, it will be reborn - young and strong again.") + /** First time */ + player("Oh, I see. I need to search the four corners of the world for five trees. Well, I suppose I'd best get packing-") + npc("While I understand your concern, that won't be a problem at all.") + player("How so?") + npc("As I have said, the phoenix is an ancient creature with some limited power over life and death.") + npc("The trees you require are growing inside its very lair, and have been for millennia! The phoenix revives them from their own ashes each time they die.") + player("That's amazing. What a foresighted creature the phoenix is!") + /** Repeated instead of First time: npcl There are specimens of each tree growing inside the phoenix's lair, tended to by the phoenix's thralls in its absence and revived from the trees[sic] ashes whenever they die. */ + npc("Each tree is on a separate level of the lair. You must collect the twigs before moving on. It's pointless to continue on to a deeper level without having the twigs from all the levels before it.") + npc("Only fresh twigs will suffice for the ritual. If you leave the lair at any time, you will have to go through and collect fresh twigs from every tree.") + npc("There are some other items required for the ritual that you cannot get from inside the lair.") + player("Oh? What would those be then?") + npc("Tools. Secateurs, to prune the trees and gather the twigs, a knife to fletch them and a tinderbox to light the pyre.") + npc("Given the circumstances, I'd be happy to give you the necessary tools for free. I brought a set to complete the ritual myself, but...I'm too old.") + goto("InPyreNeedMoreInformation") + + label("ThePhoenixLair") + player("Could you tell me about the phoenix's lair?") + npc("The phoenix's lair is a lava-filled cave, guarded by its thralls.") + npc("You see, the phoenix has power over life and death that is not limited to itself. It has the ability to resurrect lesser creatures.") + npc("These revived creatures now roam the phoenix's lair, guarding it from interlopers during the phoenix's long absences.") + npc("They usually attack anyone who enters, weeding out the weaklings to ensure only the worthy reach the phoenix in its roost, deep inside the lair.") + npc("I have had a peek inside, however, and the creatures seem unusually passive at the moment.") + npc("Standing out here, I occasionally hear them cry out, as if in pain.") + player("Thanks for the information. Now, back to my other questions.") + goto("InPyreNeedMoreInformation") + + label("NoMoreQuestions") + player("That's all the information I need for now.") + npc("Please, help the phoenix. Such a wondrous creature should not be taken from this world in this way.") + player("I'll try my best. I'll be back soon.") + } + } +} \ No newline at end of file