From 2f551aba026a39120481bb954a3a17ecda9fe70c Mon Sep 17 00:00:00 2001 From: David Cernat Date: Wed, 26 Jul 2017 22:37:57 +0300 Subject: [PATCH] [Client] Don't start dialogue via client scripts if already in dialogue This prevents infinite greeting spam in scripts such as hlormarScript. --- apps/openmw/mwscript/dialogueextensions.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwscript/dialogueextensions.cpp b/apps/openmw/mwscript/dialogueextensions.cpp index a5a44635e..3380f6b7f 100644 --- a/apps/openmw/mwscript/dialogueextensions.cpp +++ b/apps/openmw/mwscript/dialogueextensions.cpp @@ -5,6 +5,7 @@ Include additional headers for multiplayer purposes */ +#include "../mwbase/windowmanager.hpp" #include "../mwmp/Main.hpp" #include "../mwmp/LocalPlayer.hpp" /* @@ -178,7 +179,17 @@ namespace MWScript if (!ptr.getRefData().isEnabled()) return; - MWBase::Environment::get().getDialogueManager()->startDialogue (ptr); + /* + Start of tes3mp change (major) + + Don't start a dialogue if the target is already engaged in one, thus + preventing infinite greeting loops + */ + if (!MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_Dialogue)) + MWBase::Environment::get().getDialogueManager()->startDialogue(ptr); + /* + End of tes3mp change (major) + */ } };