From 759e13f6e2027f576fb2593b6ee7d38cfda05460 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 9 Feb 2021 13:09:44 -0500 Subject: [PATCH] Core/Quests: Correct criteria tree quest objective update conditions Port From (https://github.com/TrinityCore/TrinityCore/commit/b37163b5e2aee2fe7a720559442cf85f3b0ccfbb) --- .../Quest/QuestObjectiveCriteriaManager.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Source/Game/Quest/QuestObjectiveCriteriaManager.cs b/Source/Game/Quest/QuestObjectiveCriteriaManager.cs index 06d8cadf2..08b32556a 100644 --- a/Source/Game/Quest/QuestObjectiveCriteriaManager.cs +++ b/Source/Game/Quest/QuestObjectiveCriteriaManager.cs @@ -225,14 +225,10 @@ namespace Game void CompletedObjective(QuestObjective questObjective, Player referencePlayer) { - // disable for gamemasters with GM-mode enabled - if (_owner.IsGameMaster()) - return; - if (HasCompletedObjective(questObjective)) return; - referencePlayer.KillCreditCriteriaTreeObjective(questObjective); + _owner.KillCreditCriteriaTreeObjective(questObjective); Log.outInfo(LogFilter.Player, $"QuestObjectiveCriteriaMgr.CompletedObjective({questObjective.Id}). {GetOwnerInfo()}"); @@ -281,6 +277,19 @@ namespace Game return false; } + if (_owner.GetQuestStatus(objective.QuestID) != QuestStatus.Incomplete) + { + Log.outTrace(LogFilter.Achievement, $"QuestObjectiveCriteriaMgr.CanUpdateCriteriaTree: (Id: {criteria.Id} Type {criteria.Entry.Type} Quest Objective {objective.Id}) Not on quest"); + return false; + } + + Quest quest = Global.ObjectMgr.GetQuestTemplate(objective.QuestID); + if (_owner.GetGroup() && _owner.GetGroup().IsRaidGroup() && !quest.IsAllowedInRaid(referencePlayer.GetMap().GetDifficultyID())) + { + Log.outTrace(LogFilter.Achievement, $"QuestObjectiveCriteriaMgr.CanUpdateCriteriaTree: (Id: {criteria.Id} Type {criteria.Entry.Type} Quest Objective {objective.Id}) Quest cannot be completed in raid group"); + return false; + } + return base.CanUpdateCriteriaTree(criteria, tree, referencePlayer); }