Core/Entities: Basic AreaTrigger System (#18035)

* Implemented AreaTrigger Templates
* Implemented AreaTrigger Splines
* Implemented SPELL_AURA_AREA_TRIGGER
* and many more
This commit is contained in:
Traesh
2017-01-29 00:00:43 +01:00
committed by joschiwald
parent 5818dd364c
commit 6ab3877c91
41 changed files with 2083 additions and 174 deletions

View File

@@ -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);