diff options
author | Meji <alvaromegias_46@hotmail.com> | 2022-02-08 23:23:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-08 23:23:05 +0100 |
commit | 27cba3f52309dad5be964fec11d80cd8cad128cf (patch) | |
tree | 8ce682a72a850b37dba9cc4756e4b91fe532b142 /src/server/game/Scripting/ScriptMgr.cpp | |
parent | 8e2d1e328ebec60c76d65651b268ec3ad2ce26fc (diff) |
Core/Scripts: Added script hook to execute actions after completing an achievement (#27718)
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 0943147095d..a439949cd26 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -16,6 +16,7 @@ */ #include "ScriptMgr.h" +#include "AchievementMgr.h" #include "AreaTrigger.h" #include "AreaTriggerAI.h" #include "Chat.h" @@ -109,6 +110,10 @@ struct is_script_database_bound<TransportScript> : std::true_type { }; template<> +struct is_script_database_bound<AchievementScript> + : std::true_type { }; + +template<> struct is_script_database_bound<AchievementCriteriaScript> : std::true_type { }; @@ -1938,6 +1943,16 @@ void ScriptMgr::OnShutdown() FOREACH_SCRIPT(WorldScript)->OnShutdown(); } +// Achievement +void ScriptMgr::OnAchievementCompleted(Player* player, AchievementEntry const* achievement) +{ + ASSERT(player); + ASSERT(achievement); + + GET_SCRIPT(AchievementScript, sAchievementMgr->GetAchievementScriptId(achievement->ID), tmpscript); + tmpscript->OnCompleted(player, achievement); +} + bool ScriptMgr::OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target) { ASSERT(source); @@ -2511,6 +2526,12 @@ TransportScript::TransportScript(char const* name) ScriptRegistry<TransportScript>::Instance()->AddScript(this); } +AchievementScript::AchievementScript(char const* name) + : ScriptObject(name) +{ + ScriptRegistry<AchievementScript>::Instance()->AddScript(this); +} + AchievementCriteriaScript::AchievementCriteriaScript(char const* name) : ScriptObject(name) { @@ -2587,6 +2608,7 @@ template class TC_GAME_API ScriptRegistry<ConditionScript>; template class TC_GAME_API ScriptRegistry<VehicleScript>; template class TC_GAME_API ScriptRegistry<DynamicObjectScript>; template class TC_GAME_API ScriptRegistry<TransportScript>; +template class TC_GAME_API ScriptRegistry<AchievementScript>; template class TC_GAME_API ScriptRegistry<AchievementCriteriaScript>; template class TC_GAME_API ScriptRegistry<PlayerScript>; template class TC_GAME_API ScriptRegistry<GuildScript>; |