aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 0bd004d04f7..66b7b9ee684 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -19386,7 +19386,8 @@ void Player::_LoadQuestStatus(PreparedQueryResult result)
if (quest)
{
// find or create
- QuestStatusData& questStatusData = m_QuestStatus[quest_id];
+ auto questStatusItr = m_QuestStatus.emplace(quest_id, QuestStatusData{}).first;
+ QuestStatusData& questStatusData = questStatusItr->second;
uint8 qstatus = fields[1].GetUInt8();
if (qstatus < MAX_QUEST_STATUS)
@@ -19419,6 +19420,10 @@ void Player::_LoadQuestStatus(PreparedQueryResult result)
if (slot < MAX_QUEST_LOG_SIZE && questStatusData.Status != QUEST_STATUS_NONE)
{
questStatusData.Slot = slot;
+
+ for (QuestObjective const& obj : quest->GetObjectives())
+ m_questObjectiveStatus.emplace(std::make_pair(QuestObjectiveType(obj.Type), obj.ObjectID), QuestObjectiveStatusData{ questStatusItr, &obj });
+
SetQuestSlot(slot, quest_id);
SetQuestSlotEndTime(slot, endTime);
SetQuestSlotAcceptTime(slot, acceptTime);