From 815e1251887915fd54dab814c848bb99a37f65f3 Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 17 Sep 2023 13:50:32 +0100 Subject: [PATCH] Disable all g_dialogue-dependent ACS behaviour in netgame conditions Actual solution to Test Run dialogue in servers --- src/acs/call-funcs.cpp | 30 ++++++++++++++++++++++++++++++ src/acs/environment.cpp | 6 ++++++ 2 files changed, 36 insertions(+) diff --git a/src/acs/call-funcs.cpp b/src/acs/call-funcs.cpp index 07b8cd957..25af308f7 100644 --- a/src/acs/call-funcs.cpp +++ b/src/acs/call-funcs.cpp @@ -681,6 +681,12 @@ bool CallFunc_DialogueWaitDismiss(ACSVM::Thread *thread, const ACSVM::Word *argV (void)argV; (void)argC; + // TODO when we move away from g_dialogue + if (netgame) + { + return false; + } + g_dialogue.SetDismissable(true); thread->state = { @@ -703,6 +709,12 @@ bool CallFunc_DialogueWaitText(ACSVM::Thread *thread, const ACSVM::Word *argV, A (void)argV; (void)argC; + // TODO when we move away from g_dialogue + if (netgame) + { + return false; + } + g_dialogue.SetDismissable(false); thread->state = { @@ -1977,6 +1989,12 @@ bool CallFunc_DialogueSetSpeaker(ACSVM::Thread *thread, const ACSVM::Word *argV, (void)argC; + // TODO when we move away from g_dialogue + if (netgame) + { + return false; + } + map = thread->scopeMap; skinStr = map->getString(argV[0]); @@ -2015,6 +2033,12 @@ bool CallFunc_DialogueSetCustomSpeaker(ACSVM::Thread *thread, const ACSVM::Word (void)argC; + // TODO when we move away from g_dialogue + if (netgame) + { + return false; + } + map = thread->scopeMap; nametagStr = map->getString(argV[0]); @@ -2096,6 +2120,12 @@ bool CallFunc_DialogueNewText(ACSVM::Thread *thread, const ACSVM::Word *argV, AC (void)argC; + // TODO when we move away from g_dialogue + if (netgame) + { + return false; + } + map = thread->scopeMap; textStr = map->getString(argV[0]); diff --git a/src/acs/environment.cpp b/src/acs/environment.cpp index 289cfdb39..796abeceb 100644 --- a/src/acs/environment.cpp +++ b/src/acs/environment.cpp @@ -301,6 +301,12 @@ bool Environment::checkTag(ACSVM::Word type, ACSVM::Word tag) case ACS_TAGTYPE_DIALOGUE: { + // TODO when we move away from g_dialogue + if (netgame) + { + return true; + } + if (tag == 0) // cheeky reuse { // wait for dismissal