aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Events/GameEventMgr.cpp6
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp5
-rw-r--r--src/server/game/Scripting/ScriptMgr.h4
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 */