diff options
author | Carlos Vargas <cvmagic@gmail.com> | 2012-12-17 01:26:56 +0000 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-12-17 01:26:56 +0000 |
commit | 6c6586fa43164fd857cbb747bccfca8ab53b3ca2 (patch) | |
tree | 552a81838117b7ff0e95f151f49d30de3f59ac6e /src/server/game/Scripting/ScriptMgr.cpp | |
parent | ae4c4c1822fcf9ef8f431f28cac8b319bfb292b2 (diff) |
Core/Scripts: Adding script hooks to allow for third party scripts to modify damage dealt.
Originally from the VAS Autobalance script, slightly modified.
Only addresses Spells, Dots, and Melee Damage. I'll have look at the current modules on ways of doing this but, Environmental Damage(fire/lava/drowning), Fall Damage, and Potentially AoE aren't covered by these.
Closes #7867
Signed-off-by: Nay <dnpd.dd@gmail.com>
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 216eee949f6..c7eebb0919e 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -217,6 +217,7 @@ void ScriptMgr::Unload() SCR_CLEAR(PlayerScript); SCR_CLEAR(GuildScript); SCR_CLEAR(GroupScript); + SCR_CLEAR(UnitScript); #undef SCR_CLEAR } @@ -1338,6 +1339,22 @@ void ScriptMgr::OnGroupDisband(Group* group) FOREACH_SCRIPT(GroupScript)->OnDisband(group); } +// Unit +void ScriptMgr::ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage) +{ + FOREACH_SCRIPT(UnitScript)->ModifyPeriodicDamageAurasTick(target, attacker, damage); +} + +void ScriptMgr::ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage) +{ + FOREACH_SCRIPT(UnitScript)->ModifyMeleeDamage(target, attacker, damage); +} + +void ScriptMgr::ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage) +{ + FOREACH_SCRIPT(UnitScript)->ModifySpellDamageTaken(target, attacker, damage); +} + SpellScriptLoader::SpellScriptLoader(const char* name) : ScriptObject(name) { @@ -1362,6 +1379,12 @@ FormulaScript::FormulaScript(const char* name) ScriptRegistry<FormulaScript>::AddScript(this); } +UnitScript::UnitScript(const char* name) + : ScriptObject(name) +{ + ScriptRegistry<UnitScript>::AddScript(this); +} + WorldMapScript::WorldMapScript(const char* name, uint32 mapId) : ScriptObject(name), MapScript<Map>(mapId) { @@ -1396,7 +1419,7 @@ ItemScript::ItemScript(const char* name) } CreatureScript::CreatureScript(const char* name) - : ScriptObject(name) + : UnitScript(name) { ScriptRegistry<CreatureScript>::AddScript(this); } @@ -1450,7 +1473,7 @@ ConditionScript::ConditionScript(const char* name) } VehicleScript::VehicleScript(const char* name) - : ScriptObject(name) + : UnitScript(name) { ScriptRegistry<VehicleScript>::AddScript(this); } @@ -1474,7 +1497,7 @@ AchievementCriteriaScript::AchievementCriteriaScript(const char* name) } PlayerScript::PlayerScript(const char* name) - : ScriptObject(name) + : UnitScript(name) { ScriptRegistry<PlayerScript>::AddScript(this); } @@ -1520,6 +1543,7 @@ template class ScriptRegistry<AchievementCriteriaScript>; template class ScriptRegistry<PlayerScript>; template class ScriptRegistry<GuildScript>; template class ScriptRegistry<GroupScript>; +template class ScriptRegistry<UnitScript>; // Undefine utility macros. #undef GET_SCRIPT_RET |