From 9fda9d0d490cef07291961e03710d09cbd8aea1f Mon Sep 17 00:00:00 2001 From: Meji Date: Sat, 3 Feb 2024 22:03:55 +0100 Subject: Core/Achievements: Fixed updating EarnAchievement criteria type for guilds and quest objectives (#29648) --- src/server/game/Achievements/AchievementMgr.cpp | 4 ++-- src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp | 5 +++++ src/server/game/Quests/QuestObjectiveCriteriaMgr.h | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 306d57ebe28..64dd27d18e0 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -495,8 +495,8 @@ void PlayerAchievementMgr::CompletedAchievement(AchievementEntry const* achievem if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG)) _achievementPoints += achievement->Points; - UpdateCriteria(CriteriaType::EarnAchievement, achievement->ID, 0, 0, nullptr, referencePlayer); - UpdateCriteria(CriteriaType::EarnAchievementPoints, achievement->Points, 0, 0, nullptr, referencePlayer); + referencePlayer->UpdateCriteria(CriteriaType::EarnAchievement, achievement->ID, 0, 0, nullptr); + referencePlayer->UpdateCriteria(CriteriaType::EarnAchievementPoints, achievement->Points, 0, 0, nullptr); sScriptMgr->OnAchievementCompleted(referencePlayer, achievement); diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp index 798e90e6b26..42040cd0b09 100644 --- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp +++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp @@ -310,3 +310,8 @@ CriteriaList const& QuestObjectiveCriteriaMgr::GetCriteriaByType(CriteriaType ty { return sCriteriaMgr->GetQuestObjectiveCriteriaByType(type); } + +bool QuestObjectiveCriteriaMgr::RequiredAchievementSatisfied(uint32 achievementId) const +{ + return _owner->HasAchieved(achievementId); +} diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.h b/src/server/game/Quests/QuestObjectiveCriteriaMgr.h index a263e153316..f3ba31c2ac1 100644 --- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.h +++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.h @@ -56,6 +56,8 @@ protected: std::string GetOwnerInfo() const override; CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override; + bool RequiredAchievementSatisfied(uint32 achievementId) const override; + private: Player* _owner; std::unordered_set _completedObjectives; -- cgit v1.2.3