mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-02 15:17:27 +01:00
Core/Quests: Don't send update of already completed CriteriaTree objectives to the client when accepting quests (#29665)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user