aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastian Valle <s.v.h21@hotmail.com>2013-10-04 22:31:53 -0500
committerSebastian Valle <s.v.h21@hotmail.com>2013-10-04 22:31:53 -0500
commita84ed0af67c1fff5cb5b0cd0b05f76b747d96c36 (patch)
treeb2ec9249f79e266f2f384839acd86c9ba3633df5 /src
parenta27237dedd1b770ab4e66570e7a236a44d2c9e00 (diff)
parentd897b55e9bad8ed1655b0538c6b032ba07cc1c55 (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp10
-rw-r--r--src/server/game/Scripting/ScriptMgr.h8
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 cbb6eecde16..132f3158219 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -567,6 +567,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
@@ -9587,6 +9590,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..fb96c327b05 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, gain);
+}
+
+void ScriptMgr::OnDamage(Unit* attacker, Unit* victim, uint32 damage)
+{
+ FOREACH_SCRIPT(UnitScript)->OnDamage(attacker, victim, 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);