diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 26099b607..d11a096d6 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -702,11 +702,6 @@ namespace Game.Entities { AddQuest(quest, questGiver); - foreach (QuestObjective obj in quest.Objectives) - if (obj.Type == QuestObjectiveType.CriteriaTree) - if (m_questObjectiveCriteriaMgr.HasCompletedObjective(obj)) - KillCreditCriteriaTreeObjective(obj); - if (CanCompleteQuest(quest.Id)) CompleteQuest(quest.Id); @@ -2229,22 +2224,27 @@ namespace Game.Entities public void AdjustQuestObjectiveProgress(Quest quest) { // adjust progress of quest objectives that rely on external counters, like items - if (quest.HasQuestObjectiveType(QuestObjectiveType.Item)) + foreach (QuestObjective obj in quest.Objectives) { - foreach (QuestObjective obj in quest.Objectives) + switch (obj.Type) { - if (obj.Type == QuestObjectiveType.Item && !obj.Flags2.HasFlag(QuestObjectiveFlags2.QuestBoundItem)) - { - uint reqItemCount = (uint)obj.Amount; - uint curItemCount = GetItemCount((uint)obj.ObjectID, true); - SetQuestObjectiveData(obj, (int)Math.Min(curItemCount, reqItemCount)); - } - else if (obj.Type == QuestObjectiveType.HaveCurrency) - { + case QuestObjectiveType.Item: + if (!obj.Flags2.HasFlag(QuestObjectiveFlags2.QuestBoundItem)) + { + uint reqItemCount = (uint)obj.Amount; + uint curItemCount = GetItemCount((uint)obj.ObjectID, true); + SetQuestObjectiveData(obj, (int)Math.Min(curItemCount, reqItemCount)); + } + break; + case QuestObjectiveType.Currency: uint reqCurrencyCount = (uint)obj.Amount; uint curCurrencyCount = GetCurrencyQuantity((uint)obj.ObjectID); SetQuestObjectiveData(obj, (int)Math.Min(reqCurrencyCount, curCurrencyCount)); - } + break; + case QuestObjectiveType.CriteriaTree: + if (m_questObjectiveCriteriaMgr.HasCompletedObjective(obj)) + SetQuestObjectiveData(obj, 1); + break; } } }