diff --git a/Source/msg.cpp b/Source/msg.cpp index b22a3adff..c05dc451f 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -2248,7 +2248,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); + SetMultiQuest(message.q, message.qstate, message.qlog != 0, message.qvar1, message.qvar2); sgbDeltaChanged = true; } @@ -2936,6 +2936,7 @@ void NetSendCmdQuest(bool bHiPri, const Quest &quest) cmd.qstate = quest._qactive; cmd.qlog = quest._qlog ? 1 : 0; cmd.qvar1 = quest._qvar1; + cmd.qvar2 = quest._qvar2; if (bHiPri) NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd)); diff --git a/Source/msg.h b/Source/msg.h index 5e1524028..6f260b1ff 100644 --- a/Source/msg.h +++ b/Source/msg.h @@ -536,6 +536,7 @@ struct TCmdQuest { quest_state qstate; uint8_t qlog; uint8_t qvar1; + uint8_t qvar2; }; struct TItemDef { diff --git a/Source/quests.cpp b/Source/quests.cpp index 7a88330b9..71bb2df38 100644 --- a/Source/quests.cpp +++ b/Source/quests.cpp @@ -787,19 +787,21 @@ void QuestlogESC() } } -void SetMultiQuest(int q, quest_state s, bool log, int v1) +void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2) { if (gbIsSpawn) return; - if (Quests[q]._qactive != QUEST_DONE) { - if (s > Quests[q]._qactive) - Quests[q]._qactive = s; + auto &quest = Quests[q]; + if (quest._qactive != QUEST_DONE) { + if (s > quest._qactive) + quest._qactive = s; if (log) - Quests[q]._qlog = true; - if (v1 > Quests[q]._qvar1) - Quests[q]._qvar1 = v1; + quest._qlog = true; } + if (v1 > quest._qvar1) + quest._qvar1 = v1; + quest._qvar2 = v2; } bool Quest::IsAvailable() diff --git a/Source/quests.h b/Source/quests.h index 4bd254b39..f11e8b000 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); +void SetMultiQuest(int q, quest_state s, bool log, int v1, int v2); /* rdata */ extern QuestData QuestsData[];