From b9def15aa77c31ed3f0d2cdd69b26f8e0b1b3545 Mon Sep 17 00:00:00 2001 From: Keader Date: Thu, 26 Dec 2019 13:22:04 -0300 Subject: Scritps/ICC: Fixed resistance calculation for Mutated Transformation (Professor Putricide) (#23858) More Info in: #23837 (cherry picked from commit 9f7b464a6aa5b64bf5ec5c0f586853fbc71029c6) --- src/server/game/Spells/SpellMgr.cpp | 7 +++++++ .../IcecrownCitadel/boss_professor_putricide.cpp | 24 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) (limited to 'src') diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index fa2f12c437c..5ede1c15af9 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4250,6 +4250,13 @@ void SpellMgr::LoadSpellInfoCorrections() }); }); + // Mutated Transformation (Professor Putricide) + ApplySpellFix({ 70402 }, [](SpellInfo* spellInfo) + { + // Resistance is calculated inside of SpellScript + spellInfo->AttributesEx4 |= SPELL_ATTR4_IGNORE_RESISTANCES; + }); + // Empowered Flare (Blood Prince Council) ApplySpellFix({ 71708 }, [](SpellInfo* spellInfo) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 37c84759489..2a8416c7de4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -1654,6 +1654,29 @@ class spell_stinky_precious_decimate : public SpellScriptLoader } }; +// 70402, 72511, 72512, 72513 - Mutated Transformation +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*/) + { + 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); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_abomination_mutated_transformation::HandleResistance, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_boss_professor_putricide() { new boss_professor_putricide(); @@ -1677,4 +1700,5 @@ void AddSC_boss_professor_putricide() new spell_putricide_regurgitated_ooze(); new spell_putricide_clear_aura_effect_value(); new spell_stinky_precious_decimate(); + RegisterSpellScript(spell_abomination_mutated_transformation); } -- cgit v1.2.3