From 475f1d67fbbba7352a73377e141beb1a4f9859a6 Mon Sep 17 00:00:00 2001 From: obligaron Date: Mon, 6 Feb 2023 21:13:11 +0100 Subject: [PATCH] Spawn Fungal Tome during level generation to avoid desyncs --- Source/items.cpp | 3 +++ Source/quests.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/items.cpp b/Source/items.cpp index c23ce7de9..e1ace570c 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -2286,6 +2286,9 @@ void InitItems() SpawnQuestItem(IDI_BROWNSUIT, { 25, 25 }, 3, 1, false); if (sgGameInitInfo.bCowQuest != 0 && currlevel == 19) SpawnQuestItem(IDI_GREYSUIT, { 25, 25 }, 3, 1, false); + // In multiplayer items spawn during level generation to avoid desyncs + if (gbIsMultiplayer && Quests[Q_MUSHROOM].IsAvailable()) + SpawnQuestItem(IDI_FUNGALTM, { 0, 0 }, 5, 1, false); if (currlevel > 0 && currlevel < 16) AddInitItems(); if (currlevel >= 21 && currlevel <= 23) diff --git a/Source/quests.cpp b/Source/quests.cpp index 24c0ff249..9f2a1a16f 100644 --- a/Source/quests.cpp +++ b/Source/quests.cpp @@ -285,6 +285,9 @@ void InitQuests() Quests[Q_LTBANNER]._qvar1 = 1; if (UseMultiplayerQuests()) Quests[Q_BETRAYER]._qvar1 = 2; + // In multiplayer items spawn during level generation to avoid desyncs + if (gbIsMultiplayer && Quests[Q_MUSHROOM]._qactive == QUEST_INIT) + Quests[Q_MUSHROOM]._qvar1 = QS_TOMESPAWNED; } void InitialiseQuestPools(uint32_t seed, Quest quests[]) @@ -658,10 +661,11 @@ void ResyncQuests() } } } - if (currlevel == Quests[Q_MUSHROOM]._qlevel) { + if (currlevel == Quests[Q_MUSHROOM]._qlevel && !setlevel) { if (Quests[Q_MUSHROOM]._qactive == QUEST_INIT && Quests[Q_MUSHROOM]._qvar1 == QS_INIT) { - SpawnQuestItem(IDI_FUNGALTM, { 0, 0 }, 5, 1, false); + SpawnQuestItem(IDI_FUNGALTM, { 0, 0 }, 5, 1, true); Quests[Q_MUSHROOM]._qvar1 = QS_TOMESPAWNED; + NetSendCmdQuest(true, Quests[Q_MUSHROOM]); } else { if (Quests[Q_MUSHROOM]._qactive == QUEST_ACTIVE) { if (Quests[Q_MUSHROOM]._qvar1 >= QS_MUSHGIVEN) {