diff --git a/src/server/game/Scripting/ScriptDefines/AccountScript.h b/src/server/game/Scripting/ScriptDefines/AccountScript.h index 705eac676..3a06a1e98 100644 --- a/src/server/game/Scripting/ScriptDefines/AccountScript.h +++ b/src/server/game/Scripting/ScriptDefines/AccountScript.h @@ -19,6 +19,7 @@ #define SCRIPT_OBJECT_ACCOUNT_SCRIPT_H_ #include "ScriptObject.h" +#include enum AccountHook { diff --git a/src/server/game/Scripting/ScriptDefines/ArenaScript.h b/src/server/game/Scripting/ScriptDefines/ArenaScript.h index ff0121335..bbc18e2b2 100644 --- a/src/server/game/Scripting/ScriptDefines/ArenaScript.h +++ b/src/server/game/Scripting/ScriptDefines/ArenaScript.h @@ -20,6 +20,7 @@ #include "ObjectGuid.h" #include "ScriptObject.h" +#include enum ArenaHook { diff --git a/src/server/game/Scripting/ScriptDefines/ArenaTeamScript.h b/src/server/game/Scripting/ScriptDefines/ArenaTeamScript.h index 319576b40..0e80dee80 100644 --- a/src/server/game/Scripting/ScriptDefines/ArenaTeamScript.h +++ b/src/server/game/Scripting/ScriptDefines/ArenaTeamScript.h @@ -20,6 +20,7 @@ #include "Battleground.h" #include "ScriptObject.h" +#include enum ArenaTeamHook { diff --git a/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h b/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h index 1134e028a..e2d014b97 100644 --- a/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h +++ b/src/server/game/Scripting/ScriptDefines/AuctionHouseScript.h @@ -19,6 +19,7 @@ #define SCRIPT_OBJECT_AUCTION_HOUSE_SCRIPT_H_ #include "ScriptObject.h" +#include enum AuctionHouseHook { diff --git a/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h b/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h index 0893cc207..82f80af6c 100644 --- a/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h +++ b/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h @@ -20,6 +20,7 @@ #include "Object.h" #include "ScriptObject.h" +#include enum MovementHook { diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index c42a3ce14..d27ff9849 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -77,6 +77,12 @@ void ScriptMgr::Initialize() _script_loader_callback(); _modules_loader_callback(); + + ScriptRegistry::InitEnabledHooksIfNeeded(PLAYERHOOK_END); + ScriptRegistry::InitEnabledHooksIfNeeded(AUCTIONHOUSEHOOK_END); + ScriptRegistry::InitEnabledHooksIfNeeded(ARENATEAMHOOK_END); + ScriptRegistry::InitEnabledHooksIfNeeded(ARENAHOOK_END); + ScriptRegistry::InitEnabledHooksIfNeeded(MOVEMENTHOOK_END); } void ScriptMgr::Unload() diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index f01ccadd5..522d127c2 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -725,6 +725,11 @@ public: // With this approach, we wouldn't call all available hooks in case if we override just one hook. static EnabledHooksVector EnabledHooks; + static void InitEnabledHooksIfNeeded(uint16 totalAvailableHooks) + { + EnabledHooks.resize(totalAvailableHooks); + } + static void AddScript(TScript* const script, std::vector enabledHooks = {}) { ASSERT(script); @@ -733,7 +738,7 @@ public: return; if (EnabledHooks.empty()) - EnabledHooks.resize(script->GetTotalAvailableHooks()); + InitEnabledHooksIfNeeded(script->GetTotalAvailableHooks()); if (script->isAfterLoadScript()) {