aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorSeyden <saiifii@live.de>2022-01-18 21:06:10 +0100
committerGitHub <noreply@github.com>2022-01-18 21:06:10 +0100
commit12d00e2e5f7e2cc7efe1ea8d126f9408055c05f8 (patch)
treefbc657e293e61a4f9edff3fd0186c79caedc2d81 /src/server/game/Spells/Spell.cpp
parentf383c0ea214cc4da2d02b81e26297d77ff59c7ed (diff)
Scripts/Spells: Implement OnPrecast scripting hook for spell scripts (#27632)
* Fires before cast bar starts
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 7afa210808f..fa5f19f1ff5 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3228,6 +3228,8 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const
// set timer base at cast time
ReSetTimer();
+ CallScriptOnPrecastHandler();
+
TC_LOG_DEBUG("spells", "Spell::prepare: spell id %u source %u caster %d customCastFlags %u mask %u", m_spellInfo->Id, m_caster->GetEntry(), m_originalCaster ? m_originalCaster->GetEntry() : -1, _triggeredCastFlags, m_targets.GetTargetMask());
if (m_spellInfo->HasAttribute(SPELL_ATTR12_START_COOLDOWN_ON_CAST_START))
@@ -8012,6 +8014,16 @@ void Spell::LoadScripts()
}
}
+void Spell::CallScriptOnPrecastHandler()
+{
+ for (auto scritr = m_loadedScripts.begin(); scritr != m_loadedScripts.end(); ++scritr)
+ {
+ (*scritr)->_PrepareScriptCall(SPELL_SCRIPT_HOOK_ON_PRECAST);
+ (*scritr)->OnPrecast();
+ (*scritr)->_FinishScriptCall();
+ }
+}
+
void Spell::CallScriptBeforeCastHandlers()
{
for (auto scritr = m_loadedScripts.begin(); scritr != m_loadedScripts.end(); ++scritr)