aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5909e1f814c..d4888150eb1 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -14748,11 +14748,6 @@ void Player::AddQuestAndCheckCompletion(Quest const* quest, Object* questGiver)
{
AddQuest(quest, questGiver);
- for (QuestObjective const& obj : quest->GetObjectives())
- if (obj.Type == QUEST_OBJECTIVE_CRITERIA_TREE)
- if (m_questObjectiveCriteriaMgr->HasCompletedObjective(&obj))
- KillCreditCriteriaTreeObjective(obj);
-
if (CanCompleteQuest(quest->GetQuestId()))
CompleteQuest(quest->GetQuestId());
@@ -16375,22 +16370,31 @@ uint16 Player::GetReqKillOrCastCurrentCount(uint32 quest_id, int32 entry) const
void Player::AdjustQuestObjectiveProgress(Quest const* quest)
{
// adjust progress of quest objectives that rely on external counters, like items
- if (quest->HasQuestObjectiveType(QUEST_OBJECTIVE_ITEM))
+ for (QuestObjective const& obj : quest->GetObjectives())
{
- for (QuestObjective const& obj : quest->GetObjectives())
+ switch (obj.Type)
{
- if (obj.Type == QUEST_OBJECTIVE_ITEM && !(obj.Flags2 & QUEST_OBJECTIVE_FLAG_2_QUEST_BOUND_ITEM))
- {
- uint32 reqItemCount = obj.Amount;
- uint32 curItemCount = GetItemCount(obj.ObjectID, true);
- SetQuestObjectiveData(obj, std::min(curItemCount, reqItemCount));
- }
- else if (obj.Type == QUEST_OBJECTIVE_HAVE_CURRENCY)
+ case QUEST_OBJECTIVE_ITEM:
+ if (!(obj.Flags2 & QUEST_OBJECTIVE_FLAG_2_QUEST_BOUND_ITEM))
+ {
+ uint32 reqItemCount = obj.Amount;
+ uint32 curItemCount = GetItemCount(obj.ObjectID, true);
+ SetQuestObjectiveData(obj, std::min(curItemCount, reqItemCount));
+ }
+ break;
+ case QUEST_OBJECTIVE_HAVE_CURRENCY:
{
uint32 reqCurrencyCount = obj.Amount;
uint32 curCurrencyCount = GetCurrencyQuantity(obj.ObjectID);
SetQuestObjectiveData(obj, std::min(reqCurrencyCount, curCurrencyCount));
+ break;
}
+ case QUEST_OBJECTIVE_CRITERIA_TREE:
+ if (m_questObjectiveCriteriaMgr->HasCompletedObjective(&obj))
+ SetQuestObjectiveData(obj, 1);
+ break;
+ default:
+ break;
}
}
}