aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp13
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))