From 12d00e2e5f7e2cc7efe1ea8d126f9408055c05f8 Mon Sep 17 00:00:00 2001 From: Seyden Date: Tue, 18 Jan 2022 21:06:10 +0100 Subject: Scripts/Spells: Implement OnPrecast scripting hook for spell scripts (#27632) * Fires before cast bar starts --- src/server/game/Spells/Spell.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/server/game/Spells/Spell.cpp') 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) -- cgit v1.2.3