mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 01:15:35 +01:00
Core/Quests: Correct criteria tree quest objective update conditions
* Apply same raid group restriction as normal objectives * Check that player is on quest before updating criteria * Remove non-GM requirement
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "AchievementPackets.h"
|
||||
#include "DatabaseEnv.h"
|
||||
#include "DB2Structure.h"
|
||||
#include "Group.h"
|
||||
#include "Log.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Player.h"
|
||||
@@ -225,14 +226,10 @@ void QuestObjectiveCriteriaMgr::SendAllData(Player const* /*receiver*/) const
|
||||
|
||||
void QuestObjectiveCriteriaMgr::CompletedObjective(QuestObjective const* questObjective, Player* referencePlayer)
|
||||
{
|
||||
// disable for gamemasters with GM-mode enabled
|
||||
if (_owner->IsGameMaster())
|
||||
return;
|
||||
|
||||
if (HasCompletedObjective(questObjective))
|
||||
return;
|
||||
|
||||
referencePlayer->KillCreditCriteriaTreeObjective(*questObjective);
|
||||
_owner->KillCreditCriteriaTreeObjective(*questObjective);
|
||||
|
||||
TC_LOG_INFO("criteria.quest", "QuestObjectiveCriteriaMgr::CompletedObjective(%u). %s", questObjective->ID, GetOwnerInfo().c_str());
|
||||
|
||||
@@ -282,6 +279,21 @@ bool QuestObjectiveCriteriaMgr::CanUpdateCriteriaTree(Criteria const* criteria,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_owner->GetQuestStatus(objective->QuestID) != QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
TC_LOG_TRACE("criteria.quest", "QuestObjectiveCriteriaMgr::CanUpdateCriteriaTree: (Id: %u Type %s Quest Objective %u) Not on quest",
|
||||
criteria->ID, CriteriaMgr::GetCriteriaTypeString(criteria->Entry->Type), objective->ID);
|
||||
return false;
|
||||
}
|
||||
|
||||
Quest const* quest = ASSERT_NOTNULL(sObjectMgr->GetQuestTemplate(objective->QuestID));
|
||||
if (_owner->GetGroup() && _owner->GetGroup()->isRaidGroup() && !quest->IsAllowedInRaid(referencePlayer->GetMap()->GetDifficultyID()))
|
||||
{
|
||||
TC_LOG_TRACE("criteria.quest", "QuestObjectiveCriteriaMgr::CanUpdateCriteriaTree: (Id: %u Type %s Quest Objective %u) Quest cannot be completed in raid group",
|
||||
criteria->ID, CriteriaMgr::GetCriteriaTypeString(criteria->Entry->Type), objective->ID);
|
||||
return false;
|
||||
}
|
||||
|
||||
return CriteriaHandler::CanUpdateCriteriaTree(criteria, tree, referencePlayer);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user