diff options
| author | Keader <keader.android@gmail.com> | 2020-06-03 22:05:08 -0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-01-06 19:59:50 +0100 |
| commit | 4110a06e8193329c31cb9d59d346294835fd51a5 (patch) | |
| tree | 2b36682f594ced2aaa0dc32c2deadaa2b5252a3b /src/server/game/Spells/Spell.cpp | |
| parent | 9286734b553aecfb9c9e794fac5faee412bda700 (diff) | |
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)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
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 { |
