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:
hondacrx
2024-02-21 17:44:48 -05:00
parent 1806eb52a3
commit f99c371a85
+16 -16
View File
@@ -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;
}
}
}