From 1e288af8978df2f4b4021f1abbc1a594f335c0bf Mon Sep 17 00:00:00 2001 From: Yehonal Date: Fri, 3 Nov 2017 11:28:06 +0000 Subject: [PATCH] Improved OnCriteriaCheck hook, passing information about criteria_id OnCheck without criteria_id is deprecated but still available --- src/game/Achievements/AchievementMgr.cpp | 2 +- src/game/Scripting/ScriptMgr.cpp | 4 ++-- src/game/Scripting/ScriptMgr.h | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/game/Achievements/AchievementMgr.cpp b/src/game/Achievements/AchievementMgr.cpp index d4d9f2fb5..c4be78f80 100644 --- a/src/game/Achievements/AchievementMgr.cpp +++ b/src/game/Achievements/AchievementMgr.cpp @@ -358,7 +358,7 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Un return false; return target->getGender() == gender.gender; case ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT: - return sScriptMgr->OnCriteriaCheck(ScriptId, const_cast(source), const_cast(target)); + return sScriptMgr->OnCriteriaCheck(ScriptId, const_cast(source), const_cast(target), criteria_id); case ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY: if (source->GetMap()->IsRaid()) if (source->GetMap()->Is25ManRaid() != ((difficulty.difficulty & RAID_DIFFICULTY_MASK_25MAN) != 0)) diff --git a/src/game/Scripting/ScriptMgr.cpp b/src/game/Scripting/ScriptMgr.cpp index 876c63e4c..55d4e6539 100644 --- a/src/game/Scripting/ScriptMgr.cpp +++ b/src/game/Scripting/ScriptMgr.cpp @@ -1148,13 +1148,13 @@ void ScriptMgr::OnShutdown() FOREACH_SCRIPT(WorldScript)->OnShutdown(); } -bool ScriptMgr::OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target) +bool ScriptMgr::OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target, uint32 criteria_id) { ASSERT(source); // target can be NULL. GET_SCRIPT_RET(AchievementCriteriaScript, scriptId, tmpscript, false); - return tmpscript->OnCheck(source, target); + return tmpscript->OnCheck(source, target, criteria_id); } // Player diff --git a/src/game/Scripting/ScriptMgr.h b/src/game/Scripting/ScriptMgr.h index 260d8d666..888fde265 100644 --- a/src/game/Scripting/ScriptMgr.h +++ b/src/game/Scripting/ScriptMgr.h @@ -747,7 +747,11 @@ class AchievementCriteriaScript : public ScriptObject bool IsDatabaseBound() const { return true; } // Called when an additional criteria is checked. - virtual bool OnCheck(Player* source, Unit* target) = 0; + virtual bool OnCheck(Player* source, Unit* target, uint32 /*criteria_id*/) { + return OnCheck(source, target); + } + // deprecated/legacy + virtual bool OnCheck(Player* /*source*/, Unit* /*target*/) { return true; }; }; class PlayerScript : public ScriptObject @@ -1176,7 +1180,7 @@ class ScriptMgr public: /* AchievementCriteriaScript */ - bool OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target); + bool OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target, uint32 criteria_id); public: /* PlayerScript */