aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-08-16 16:33:43 +0200
committerShauren <shauren.trinity@gmail.com>2021-08-16 16:33:43 +0200
commitc0261468c58a994f2d87a70b1d08a9db507cf2b4 (patch)
tree2443bec280380c5bff3f43f02af4ac0a7a757bfd /src
parent38aa015196f336f1b4c6c83617dc941445777653 (diff)
Core/Quests: Fixed quests not working after relogging
Closes #26823
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);