diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a99c1af16fc..008b5c12956 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -15358,13 +15358,11 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) QuestStatus oldStatus = questStatusData.Status; // check for repeatable quests status reset + SetQuestSlot(log_slot, quest_id); questStatusData.Slot = log_slot; questStatusData.Status = QUEST_STATUS_INCOMPLETE; questStatusData.Explored = false; - GiveQuestSourceItem(quest); - AdjustQuestObjectiveProgress(quest); - for (QuestObjective const& obj : quest->GetObjectives()) { m_questObjectiveStatus.emplace(std::make_pair(QuestObjectiveType(obj.Type), obj.ObjectID), QuestObjectiveStatusData { questStatusItr, &obj }); @@ -15383,6 +15381,9 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) } } + GiveQuestSourceItem(quest); + AdjustQuestObjectiveProgress(quest); + time_t endTime = 0; if (uint32 limittime = quest->GetLimitTime()) { @@ -15414,7 +15415,6 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) caster->CastSpell(this, spellInfo->Id, CastSpellExtraArgs(TRIGGERED_FULL_MASK).SetCastDifficulty(spellInfo->Difficulty)); } - SetQuestSlot(log_slot, quest_id); SetQuestSlotEndTime(log_slot, endTime); SetQuestSlotAcceptTime(log_slot, GameTime::GetGameTime()); @@ -15447,9 +15447,8 @@ void Player::CompleteQuest(uint32 quest_id) { SetQuestStatus(quest_id, QUEST_STATUS_COMPLETE); - uint16 log_slot = FindQuestSlot(quest_id); - if (log_slot < MAX_QUEST_LOG_SIZE) - SetQuestSlotState(log_slot, QUEST_STATE_COMPLETE); + if (QuestStatusData const* questStatus = Trinity::Containers::MapGetValuePtr(m_QuestStatus, quest_id)) + SetQuestSlotState(questStatus->Slot, QUEST_STATE_COMPLETE); if (Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id)) if (qInfo->HasFlag(QUEST_FLAGS_TRACKING)) |