diff --git a/src/server/game/Scripting/ScriptDefines/AccountScript.h b/src/server/game/Scripting/ScriptDefines/AccountScript.h index 705eac6764..3a06a1e989 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 ff01213351..bbc18e2b21 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 319576b405..0e80dee804 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 1134e028a9..e2d014b976 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 0893cc2077..82f80af6c6 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 c42a3ce148..d27ff98495 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 f01ccadd55..522d127c25 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()) {