aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp11
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp4
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h1
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