diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 7 |
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); |