diff --git a/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt b/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt index 1b7ce1a14..7f371bb37 100644 --- a/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt +++ b/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt @@ -10,7 +10,7 @@ abstract class DialogueFile { var player: Player? = null var npc: NPC? = null var interpreter: DialogueInterpreter? = null - var stage = START_DIALOGUE + open var stage = START_DIALOGUE abstract fun handle(componentID: Int, buttonID: Int) fun load(player: Player, npc: NPC, interpreter: DialogueInterpreter): DialogueFile{ this.player = player @@ -80,4 +80,8 @@ abstract class DialogueFile { player("Huh. Nevermind.") } + open fun getCurrentStage(): Int{ + return stage + } + } \ No newline at end of file diff --git a/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java b/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java index 9dc66c8f9..564472dea 100644 --- a/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java +++ b/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java @@ -174,8 +174,10 @@ public final class DialogueInterpreter { return; } player.setAttribute("chatbox-buttonid",buttonId); - if(player.getDialogueInterpreter().getDialogue().stage == END_DIALOGUE){ - dialogue.close(); + if((player.getDialogueInterpreter().getDialogue().file != null && player.getDialogueInterpreter().getDialogue().file.getCurrentStage() == END_DIALOGUE) || player.getDialogueInterpreter().getDialogue().stage == END_DIALOGUE){ + player.getInterfaceManager().closeChatbox(); + player.getInterfaceManager().openChatbox(137); + player.getDialogueInterpreter().dialogue.finished = true; close(); return; } diff --git a/Server/src/main/java/Server/core/game/content/dialogue/SigmundDialogue.java b/Server/src/main/java/Server/core/game/content/dialogue/SigmundDialogue.java index faf0ddd01..d83ce01bf 100644 --- a/Server/src/main/java/Server/core/game/content/dialogue/SigmundDialogue.java +++ b/Server/src/main/java/Server/core/game/content/dialogue/SigmundDialogue.java @@ -26,6 +26,18 @@ public class SigmundDialogue extends DialoguePlugin { return new int[] { 2082, 2083, 2090, 3713, 3716, 3717, 3718, 3719, 3720, 4328, 4331, 4332, 4333, 4334, 4335 }; } + @Override + public boolean open(Object... args) { + npc = (NPC) args[0]; + interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Can I help you?"); + if(player.getQuestRepository().getQuest("Lost Tribe").getStage(player) > 0 && player.getQuestRepository().getQuest("Lost Tribe").getStage(player) < 100){ + npc("Have you found out what it was?"); + stage = 34; + } + stage = 0; + return true; + } + @Override public boolean handle(int interfaceId, int buttonId) { switch (stage) { @@ -108,16 +120,4 @@ public class SigmundDialogue extends DialoguePlugin { return new SigmundDialogue(player); } - - @Override - public boolean open(Object... args) { - npc = (NPC) args[0]; - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Can I help you?"); - if(player.getQuestRepository().getQuest("Lost Tribe").getStage(player) > 0 && player.getQuestRepository().getQuest("Lost Tribe").getStage(player) < 100){ - npc("Have you found out what it was?"); - stage = 34; - } - stage = 0; - return true; - } } diff --git a/Server/src/main/java/Server/core/game/content/quest/free/dragonslayer/DukeHoracioDSDialogue.kt b/Server/src/main/java/Server/core/game/content/quest/free/dragonslayer/DukeHoracioDSDialogue.kt index 3a1c3e3b7..e7be4c6e8 100644 --- a/Server/src/main/java/Server/core/game/content/quest/free/dragonslayer/DukeHoracioDSDialogue.kt +++ b/Server/src/main/java/Server/core/game/content/quest/free/dragonslayer/DukeHoracioDSDialogue.kt @@ -13,7 +13,7 @@ class DukeHoracioDSDialogue(val questStage: Int) : DialogueFile() { if(questStage >= 20 && !hasShield(player!!)){ when(stage){ - START_DIALOGUE -> player("I seek a shield that will protect me from dragonbreath.") + START_DIALOGUE -> player("I seek a shield that will protect me from dragonbreath.").also { stage++ } 1 -> npc("A knight going on a dragon quest, hmm? What", "dragon do you intend to slay?").also{ stage++ } 2 -> player("Elvarg, the dragon of Crandor island!").also { stage++ } 3 -> npc("Elvarg? Are you sure?").also { stage++ } diff --git a/Server/src/main/java/Server/core/game/content/quest/free/runemysteries/DukeHoracioRMDialogue.kt b/Server/src/main/java/Server/core/game/content/quest/free/runemysteries/DukeHoracioRMDialogue.kt index 15c1229e5..7024c6454 100644 --- a/Server/src/main/java/Server/core/game/content/quest/free/runemysteries/DukeHoracioRMDialogue.kt +++ b/Server/src/main/java/Server/core/game/content/quest/free/runemysteries/DukeHoracioRMDialogue.kt @@ -46,7 +46,7 @@ class DukeHoracioRMDialogue(val questStage: Int) : DialogueFile() { when(stage){ START_DIALOGUE -> npc("The only task remotely approaching a quest is the", "delivery of the talisman I gave you to the head wizard", "of the Wizards' Tower,").also { stage++ } - 2 -> npc("south-west of here. I suggest you deliver it to him as", "soon as possible. I have the oddest feeling that is", "important...").also { stage = END_DIALOGUE } + 1 -> npc("south-west of here. I suggest you deliver it to him as", "soon as possible. I have the oddest feeling that is", "important...").also { stage = END_DIALOGUE } } }