diff --git a/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp b/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp index def8e1a04..4cce6e9dc 100644 --- a/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp @@ -153,3 +153,11 @@ bool ScriptMgr::OnSpellHealingBonusTakenNegativeModifiers(Unit const* target, Un return false; } + +void ScriptMgr::OnLoadSpellCustomAttr(SpellInfo* spell) +{ + ExecuteScript([&](GlobalScript* script) + { + script->OnLoadSpellCustomAttr(spell); + }); +} diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 5125d19df..282361ec1 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -1531,6 +1531,9 @@ public: // Called when checking for spell negative healing modifiers virtual bool OnSpellHealingBonusTakenNegativeModifiers(Unit const* /*target*/, Unit const* /*caster*/, SpellInfo const* /*spellInfo*/, float& /*val*/) { return false; }; + + // Called after loading spell dbc corrections + virtual void OnLoadSpellCustomAttr(SpellInfo* /*spell*/) { } }; class BGScript : public ScriptObject @@ -2350,6 +2353,7 @@ public: /* GlobalScript */ void OnBeforeWorldObjectSetPhaseMask(WorldObject const* worldObject, uint32& oldPhaseMask, uint32& newPhaseMask, bool& useCombinedPhases, bool& update); bool OnIsAffectedBySpellModCheck(SpellInfo const* affectSpell, SpellInfo const* checkSpell, SpellModifier const* mod); bool OnSpellHealingBonusTakenNegativeModifiers(Unit const* target, Unit const* caster, SpellInfo const* spellInfo, float& val); + void OnLoadSpellCustomAttr(SpellInfo* spell); public: /* Scheduled scripts */ uint32 IncreaseScheduledScriptsCount() { return ++_scheduledScripts; } diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 269ca31a2..bb41cccc2 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -31,6 +31,7 @@ #include "SpellAuraDefines.h" #include "SpellAuras.h" #include "SpellInfo.h" +#include "ScriptMgr.h" #include "World.h" bool IsPrimaryProfessionSkill(uint32 skill) @@ -3403,6 +3404,8 @@ void SpellMgr::LoadSpellCustomAttr() } } spellInfo->_InitializeExplicitTargetMask(); + + sScriptMgr->OnLoadSpellCustomAttr(spellInfo); } // Xinef: addition for binary spells, ommit spells triggering other spells