From 5e9801f0cfb7347a463d02cdceb49e7f6eff7be2 Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 22 Jan 2023 17:10:04 +0100 Subject: [PATCH] Sync Quest._qmsg --- Source/msg.cpp | 6 +++++- Source/msg.h | 1 + Source/quests.cpp | 3 ++- Source/quests.h | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/msg.cpp b/Source/msg.cpp index 66ab20e1b..05c291db9 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -203,6 +203,7 @@ struct MultiQuests { uint8_t qlog; uint8_t qvar1; uint8_t qvar2; + int16_t qmsg; }; struct DJunk { @@ -536,6 +537,7 @@ byte *DeltaExportJunk(byte *dst) sgJunk.quests[q].qstate = quest._qactive; sgJunk.quests[q].qvar1 = quest._qvar1; sgJunk.quests[q].qvar2 = quest._qvar2; + sgJunk.quests[q].qmsg = static_cast(quest._qmsg); memcpy(dst, &sgJunk.quests[q], sizeof(MultiQuests)); dst += sizeof(MultiQuests); q++; @@ -2431,7 +2433,7 @@ size_t OnSyncQuest(const TCmd *pCmd, size_t pnum) SendPacket(pnum, &message, sizeof(message)); } else { if (pnum != MyPlayerId && message.q < MAXQUESTS && message.qstate <= QUEST_HIVE_DONE) - SetMultiQuest(message.q, message.qstate, message.qlog != 0, message.qvar1, message.qvar2); + SetMultiQuest(message.q, message.qstate, message.qlog != 0, message.qvar1, message.qvar2, message.qmsg); sgbDeltaChanged = true; } @@ -2732,6 +2734,7 @@ void DeltaSyncJunk() quest._qactive = sgJunk.quests[q].qstate; quest._qvar1 = sgJunk.quests[q].qvar1; quest._qvar2 = sgJunk.quests[q].qvar2; + quest._qmsg = static_cast<_speech_id>(sgJunk.quests[q].qmsg); } q++; } @@ -3125,6 +3128,7 @@ void NetSendCmdQuest(bool bHiPri, const Quest &quest) cmd.qlog = quest._qlog ? 1 : 0; cmd.qvar1 = quest._qvar1; cmd.qvar2 = quest._qvar2; + cmd.qmsg = quest._qmsg; if (bHiPri) NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd)); diff --git a/Source/msg.h b/Source/msg.h index 6ad3fdd2d..d0a415dd2 100644 --- a/Source/msg.h +++ b/Source/msg.h @@ -537,6 +537,7 @@ struct TCmdQuest { uint8_t qlog; uint8_t qvar1; uint8_t qvar2; + int16_t qmsg; }; struct TItemDef { diff --git a/Source/quests.cpp b/Source/quests.cpp index 349457bce..24c0ff249 100644 --- a/Source/quests.cpp +++ b/Source/quests.cpp @@ -830,7 +830,7 @@ void QuestlogESC() } } -void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2) +void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2, int16_t qmsg) { if (gbIsSpawn) return; @@ -846,6 +846,7 @@ void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2) if (v1 > quest._qvar1) quest._qvar1 = v1; quest._qvar2 = v2; + quest._qmsg = static_cast<_speech_id>(qmsg); if (!UseMultiplayerQuests()) { // Ensure that changes on another client is also updated on our own ResyncQuests(); diff --git a/Source/quests.h b/Source/quests.h index 2eab3313c..d5ae79381 100644 --- a/Source/quests.h +++ b/Source/quests.h @@ -103,7 +103,7 @@ void QuestlogUp(); void QuestlogDown(); void QuestlogEnter(); void QuestlogESC(); -void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2); +void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2, int16_t qmsg); bool UseMultiplayerQuests(); /* rdata */