Core/Quests: Don't send update of already completed CriteriaTree objectives to the client when accepting quests
Port From (https://github.com/TrinityCore/TrinityCore/commit/6ac0f7bd1c4260cc7258f23a2f69a38e5ee7606b)
This commit is contained in:
@@ -702,11 +702,6 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
AddQuest(quest, questGiver);
|
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))
|
if (CanCompleteQuest(quest.Id))
|
||||||
CompleteQuest(quest.Id);
|
CompleteQuest(quest.Id);
|
||||||
|
|
||||||
@@ -2229,22 +2224,27 @@ namespace Game.Entities
|
|||||||
public void AdjustQuestObjectiveProgress(Quest quest)
|
public void AdjustQuestObjectiveProgress(Quest quest)
|
||||||
{
|
{
|
||||||
// adjust progress of quest objectives that rely on external counters, like items
|
// 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))
|
case QuestObjectiveType.Item:
|
||||||
{
|
if (!obj.Flags2.HasFlag(QuestObjectiveFlags2.QuestBoundItem))
|
||||||
uint reqItemCount = (uint)obj.Amount;
|
{
|
||||||
uint curItemCount = GetItemCount((uint)obj.ObjectID, true);
|
uint reqItemCount = (uint)obj.Amount;
|
||||||
SetQuestObjectiveData(obj, (int)Math.Min(curItemCount, reqItemCount));
|
uint curItemCount = GetItemCount((uint)obj.ObjectID, true);
|
||||||
}
|
SetQuestObjectiveData(obj, (int)Math.Min(curItemCount, reqItemCount));
|
||||||
else if (obj.Type == QuestObjectiveType.HaveCurrency)
|
}
|
||||||
{
|
break;
|
||||||
|
case QuestObjectiveType.Currency:
|
||||||
uint reqCurrencyCount = (uint)obj.Amount;
|
uint reqCurrencyCount = (uint)obj.Amount;
|
||||||
uint curCurrencyCount = GetCurrencyQuantity((uint)obj.ObjectID);
|
uint curCurrencyCount = GetCurrencyQuantity((uint)obj.ObjectID);
|
||||||
SetQuestObjectiveData(obj, (int)Math.Min(reqCurrencyCount, curCurrencyCount));
|
SetQuestObjectiveData(obj, (int)Math.Min(reqCurrencyCount, curCurrencyCount));
|
||||||
}
|
break;
|
||||||
|
case QuestObjectiveType.CriteriaTree:
|
||||||
|
if (m_questObjectiveCriteriaMgr.HasCompletedObjective(obj))
|
||||||
|
SetQuestObjectiveData(obj, 1);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user