diff options
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index b6636b1e246..cca62c6ac08 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -844,10 +844,21 @@ void WorldSession::HandleUiMapQuestLinesRequest(WorldPackets::Quest::UiMapQuestL if (!questLineQuests) continue; + bool isQuestLineCompleted = true; for (QuestLineXQuestEntry const* questLineQuest : *questLineQuests) + { if (Quest const* quest = sObjectMgr->GetQuestTemplate(questLineQuest->QuestID)) + { if (_player->CanTakeQuest(quest, false)) response.QuestLineXQuestIDs.push_back(questLineQuest->ID); + + if (isQuestLineCompleted && !_player->GetQuestRewardStatus(questLineQuest->QuestID)) + isQuestLineCompleted = false; + } + } + + if (!isQuestLineCompleted) + response.QuestLineIDs.push_back(questLineId); } } diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 0aeee26a837..768947dc23b 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -865,6 +865,7 @@ WorldPacket const* UiMapQuestLinesResponse::Write() _worldPacket << int32(UiMapID); _worldPacket << uint32(QuestLineXQuestIDs.size()); _worldPacket << uint32(QuestIDs.size()); + _worldPacket << uint32(QuestLineIDs.size()); for (uint32 const& questLineQuestID : QuestLineXQuestIDs) _worldPacket << uint32(questLineQuestID); @@ -872,6 +873,9 @@ WorldPacket const* UiMapQuestLinesResponse::Write() for (uint32 const& questID : QuestIDs) _worldPacket << uint32(questID); + for (uint32 const& questLineID : QuestLineIDs) + _worldPacket << uint32(questLineID); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 5f0e339aa7c..133afeff714 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -800,6 +800,7 @@ namespace WorldPackets int32 UiMapID = 0; std::vector<uint32> QuestLineXQuestIDs; std::vector<uint32> QuestIDs; + std::vector<uint32> QuestLineIDs; }; class UiMapQuestLinesRequest final : public ClientPacket |