diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Events/GameEventMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 4 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 0d59f6731af..b7175ff577b 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -28,6 +28,7 @@ #include "BattlegroundMgr.h" #include "UnitAI.h" #include "GameObjectAI.h" +#include "ScriptMgr.h" GameEventMgr* GameEventMgr::instance() { @@ -1641,8 +1642,13 @@ public: void Visit(std::unordered_map<ObjectGuid, GameObject*>& gameObjectMap) { for (auto const& p : gameObjectMap) + { if (p.second->IsInWorld()) + { p.second->AI()->OnGameEvent(_activate, _eventId); + sScriptMgr->OnGameEvent(_activate, _eventId); + } + } } template<class T> diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index f04f288a828..fb4d78bf300 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1776,6 +1776,11 @@ void ScriptMgr::OnGameObjectUpdate(GameObject* go, uint32 diff) tmpscript->OnUpdate(go, diff); } +void ScriptMgr::OnGameEvent(bool start, uint16 eventId) +{ + FOREACH_SCRIPT(GameObjectScript)->OnGameEvent(start, eventId); +} + bool ScriptMgr::OnDummyEffect(Unit* caster, uint32 spellId, SpellEffIndex effIndex, GameObject* target) { ASSERT(caster); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index c47c75f3a9a..477ff84d490 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -485,6 +485,9 @@ class TC_GAME_API GameObjectScript : public ScriptObject, public UpdatableScript // Called when a GameObjectAI object is needed for the gameobject. virtual GameObjectAI* GetAI(GameObject* /*go*/) const { return NULL; } + + // Called when specific game event starts. + virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) { } }; class TC_GAME_API AreaTriggerScript : public ScriptObject @@ -985,6 +988,7 @@ class TC_GAME_API ScriptMgr void OnGameObjectStateChanged(GameObject* go, uint32 state); void OnGameObjectUpdate(GameObject* go, uint32 diff); GameObjectAI* GetGameObjectAI(GameObject* go); + void OnGameEvent(bool start, uint16 eventId); public: /* AreaTriggerScript */ |