From 4110a06e8193329c31cb9d59d346294835fd51a5 Mon Sep 17 00:00:00 2001 From: Keader Date: Wed, 3 Jun 2020 22:05:08 -0300 Subject: Core/Misc: Fixed resistance calculate for Mutated Transformation and Twilight Bloodbolt (#24717) Ref: 9f7b464a6aa5b64bf5ec5c0f586853fbc71029c6 - Implemented a new SpellScript hook that allow control Resistance/Absorb amount of a damage spell. (cherry picked from commit d81a9e5bc3b3e13b47332b3e7817bd0a0b228cbc) --- src/server/game/Spells/Spell.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (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 af14b186ce2..4690176be01 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2609,7 +2609,7 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell) else { // Add bonuses and fill damageInfo struct - caster->CalculateSpellDamageTaken(&damageInfo, spell->m_damage, spell->m_spellInfo, spell->m_attackType, IsCrit); + caster->CalculateSpellDamageTaken(&damageInfo, spell->m_damage, spell->m_spellInfo, spell->m_attackType, IsCrit, spell); Unit::DealDamageMods(damageInfo.attacker, damageInfo.target, damageInfo.damage, &damageInfo.absorb); hitMask |= createProcHitMask(&damageInfo, MissCondition); @@ -8387,6 +8387,19 @@ std::string Spell::GetDebugInfo() const return sstr.str(); } +void Spell::CallScriptOnResistAbsorbCalculateHandlers(DamageInfo const& damageInfo, uint32& resistAmount, int32& absorbAmount) +{ + for (auto scritr = m_loadedScripts.begin(); scritr != m_loadedScripts.end(); ++scritr) + { + (*scritr)->_PrepareScriptCall(SPELL_SCRIPT_HOOK_ON_RESIST_ABSORB_CALCULATION); + auto hookItrEnd = (*scritr)->OnCalculateResistAbsorb.end(), hookItr = (*scritr)->OnCalculateResistAbsorb.begin(); + for (; hookItr != hookItrEnd; ++hookItr) + hookItr->Call(*scritr, damageInfo, resistAmount, absorbAmount); + + (*scritr)->_FinishScriptCall(); + } +} + namespace Trinity { -- cgit v1.2.3