diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-08-16 16:33:43 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-08-16 16:33:43 +0200 |
commit | c0261468c58a994f2d87a70b1d08a9db507cf2b4 (patch) | |
tree | 2443bec280380c5bff3f43f02af4ac0a7a757bfd /src | |
parent | 38aa015196f336f1b4c6c83617dc941445777653 (diff) |
Core/Quests: Fixed quests not working after relogging
Closes #26823
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); |