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/scripts | |
| 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/scripts')
| -rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp | 22 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp | 18 |
2 files changed, 30 insertions, 10 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 758c45b13b5..f4f01d78fff 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -860,6 +860,27 @@ class spell_blood_queen_pact_of_the_darkfallen_dmg_target : public SpellScriptLo } }; +// 71446, 71478, 71479, 71480 - Twilight Bloodbolt +class spell_blood_queen_twilight_bloodbolt : public SpellScript +{ + PrepareSpellScript(spell_blood_queen_twilight_bloodbolt); + + void HandleResistance(DamageInfo const& damageInfo, uint32& resistAmount, int32& /*absorbAmount*/) + { + Unit* caster = damageInfo.GetAttacker();; + Unit* target = damageInfo.GetVictim(); + uint32 damage = damageInfo.GetDamage(); + uint32 resistedDamage = Unit::CalcSpellResistedDamage(caster, target, damage, SPELL_SCHOOL_MASK_SHADOW, nullptr); + resistedDamage += Unit::CalcSpellResistedDamage(caster, target, damage, SPELL_SCHOOL_MASK_ARCANE, nullptr); + resistAmount = resistedDamage; + } + + void Register() override + { + OnCalculateResistAbsorb += SpellOnResistAbsorbCalculateFn(spell_blood_queen_twilight_bloodbolt::HandleResistance); + } +}; + class achievement_once_bitten_twice_shy_n : public AchievementCriteriaScript { public: @@ -902,6 +923,7 @@ void AddSC_boss_blood_queen_lana_thel() new spell_blood_queen_pact_of_the_darkfallen(); new spell_blood_queen_pact_of_the_darkfallen_dmg(); new spell_blood_queen_pact_of_the_darkfallen_dmg_target(); + RegisterSpellScript(spell_blood_queen_twilight_bloodbolt); new achievement_once_bitten_twice_shy_n(); new achievement_once_bitten_twice_shy_v(); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 0a3939e8046..94717c7dbd2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -1665,21 +1665,19 @@ class spell_abomination_mutated_transformation : public SpellScript { PrepareSpellScript(spell_abomination_mutated_transformation); - /* Resist system always pick the min resist value for spells with multiple schools. - But following some combat logs of retail, this spell is a exception and need get the sum of both schools. */ - void HandleResistance(SpellEffIndex /*effIndex*/) + void HandleResistance(DamageInfo const& damageInfo, uint32& resistAmount, int32& /*absorbAmount*/) { - Unit* caster = GetCaster(); - uint32 damage = GetHitDamage(); - Unit* target = GetHitUnit(); - damage -= Unit::CalcSpellResistedDamage(caster, target, GetHitDamage(), SPELL_SCHOOL_MASK_SHADOW, nullptr); - damage -= Unit::CalcSpellResistedDamage(caster, target, GetHitDamage(), SPELL_SCHOOL_MASK_NATURE, nullptr); - SetHitDamage(damage); + Unit* caster = damageInfo.GetAttacker();; + Unit* target = damageInfo.GetVictim(); + uint32 damage = damageInfo.GetDamage(); + uint32 resistedDamage = Unit::CalcSpellResistedDamage(caster, target, damage, SPELL_SCHOOL_MASK_SHADOW, nullptr); + resistedDamage += Unit::CalcSpellResistedDamage(caster, target, damage, SPELL_SCHOOL_MASK_NATURE, nullptr); + resistAmount = resistedDamage; } void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_abomination_mutated_transformation::HandleResistance, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + OnCalculateResistAbsorb += SpellOnResistAbsorbCalculateFn(spell_abomination_mutated_transformation::HandleResistance); } }; |
