diff options
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 10 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 8 | 
3 files changed, 24 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c34768c9851..1241d9d2deb 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -568,6 +568,9 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam      if (IsAIEnabled)          GetAI()->DamageDealt(victim, damage, damagetype); +    // Hook for OnDamage Event +    sScriptMgr->OnDamage(this, victim, damage); +      if (victim->GetTypeId() == TYPEID_PLAYER && this != victim)      {          // Signal to pets that their owner was attacked @@ -9588,6 +9591,9 @@ int32 Unit::DealHeal(Unit* victim, uint32 addhealth)      if (addhealth)          gain = victim->ModifyHealth(int32(addhealth)); +    // Hook for OnHeal Event +    sScriptMgr->OnHeal(this, victim, gain); +      Unit* unit = this;      if (GetTypeId() == TYPEID_UNIT && ToCreature()->IsTotem()) diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 966b3edfcb9..6ac25ba015f 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1363,6 +1363,16 @@ void ScriptMgr::OnGroupDisband(Group* group)  }  // Unit +void ScriptMgr::OnHeal(Unit* healer, Unit* reciever, uint32 gain) +{ +    FOREACH_SCRIPT(UnitScript)->OnHeal(healer, reciever, uint32 gain); +} + +void ScriptMgr::OnDamage(Unit* attacker, Unit* victim, uint32 damage) +{ +    FOREACH_SCRIPT(UnitScript)->OnDamage(attacker, victim, uint32 damage); +} +  void ScriptMgr::ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage)  {      FOREACH_SCRIPT(UnitScript)->ModifyPeriodicDamageAurasTick(target, attacker, damage); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index e7946501616..a3eff880bb9 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -396,6 +396,12 @@ class UnitScript : public ScriptObject          UnitScript(const char* name, bool addToScripts = true);      public: +        // Called when a unit deals damage to another unit +        virtual void OnHeal(Unit* /*healer*/, Unit* /*reciever*/, uint32 /*gain*/) { } + +        // Called when a unit deals damage to another unit +        virtual void OnDamage(Unit* /*attacker*/, Unit* /*victim*/, uint32 /*damage*/) { } +          // Called when DoT's Tick Damage is being Dealt          virtual void ModifyPeriodicDamageAurasTick(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { } @@ -1054,6 +1060,8 @@ class ScriptMgr      public: /* UnitScript */ +        void OnHeal(Unit* healer, Unit* reciever, uint32 gain); +        void OnDamage(Unit* attacker, Unit* victim, uint32 damage);          void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage);          void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage);          void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage);  | 
