diff options
author | Traesh <Traesh@users.noreply.github.com> | 2017-01-29 00:00:43 +0100 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-01-29 00:00:43 +0100 |
commit | 6ab3877c91c9440b81cf1c7c66a1275ee04ea26a (patch) | |
tree | 9930d19512eef247d1c0a23284caa446ceef21c8 /src/server/game/Scripting/ScriptMgr.h | |
parent | 5818dd364ca6a8b0cb068710291adf26b571aa23 (diff) |
Core/Entities: Basic AreaTrigger System (#18035)
* Implemented AreaTrigger Templates
* Implemented AreaTrigger Splines
* Implemented SPELL_AURA_AREA_TRIGGER
* and many more
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.h')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 6c0b660fb0b..76a5f663f82 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -28,6 +28,7 @@ #include "Weather.h" class AccountMgr; +class AreaTrigger; class AuctionHouseObject; class Aura; class AuraScript; @@ -836,6 +837,38 @@ class TC_GAME_API GroupScript : public ScriptObject virtual void OnDisband(Group* /*group*/) { } }; +class TC_GAME_API AreaTriggerEntityScript : public ScriptObject +{ + protected: + + AreaTriggerEntityScript(const char* name); + + public: + // Called when the AreaTrigger has just been initialized, just before added to map + virtual void OnInitialize(AreaTrigger* /*areaTrigger*/) { } + + // Called when the AreaTrigger has just been created + virtual void OnCreate(AreaTrigger* /*areaTrigger*/) { } + + // Called on each AreaTrigger update + virtual void OnUpdate(AreaTrigger* /*areaTrigger*/, uint32 /*diff*/) { } + + // Called when the AreaTrigger reach splineIndex + virtual void OnSplineIndexReached(AreaTrigger* /*areaTrigger*/, int /*splineIndex*/) { } + + // Called when the AreaTrigger reach its destination + virtual void OnDestinationReached(AreaTrigger* /*areaTrigger*/) { } + + // Called when an unit enter the AreaTrigger + virtual void OnUnitEnter(AreaTrigger* /*areaTrigger*/, Unit* /*unit*/) { } + + // Called when an unit exit the AreaTrigger, or when the AreaTrigger is removed + virtual void OnUnitExit(AreaTrigger* /*areaTrigger*/, Unit* /*unit*/) { } + + // Called when the AreaTrigger is removed + virtual void OnRemove(AreaTrigger* /*areaTrigger*/) { } +}; + class TC_GAME_API SceneScript : public ScriptObject { protected: @@ -1133,6 +1166,17 @@ class TC_GAME_API ScriptMgr void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage); void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage); + public: /* AreaTriggerEntityScript */ + + void OnAreaTriggerEntityInitialize(AreaTrigger* areaTrigger); + void OnAreaTriggerEntityCreate(AreaTrigger* areaTrigger); + void OnAreaTriggerEntityUpdate(AreaTrigger* areaTrigger, uint32 diff); + void OnAreaTriggerEntitySplineIndexReached(AreaTrigger* areaTrigger, int splineIndex); + void OnAreaTriggerEntityDestinationReached(AreaTrigger* areaTrigger); + void OnAreaTriggerEntityUnitEnter(AreaTrigger* areaTrigger, Unit* unit); + void OnAreaTriggerEntityUnitExit(AreaTrigger* areaTrigger, Unit* unit); + void OnAreaTriggerEntityRemove(AreaTrigger* areaTrigger); + public: /* SceneScript */ void OnSceneStart(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate); void OnSceneTrigger(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate, std::string const& triggerName); |