aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorKeader <keader.android@gmail.com>2020-06-03 22:05:08 -0300
committerShauren <shauren.trinity@gmail.com>2022-01-06 19:59:50 +0100
commit4110a06e8193329c31cb9d59d346294835fd51a5 (patch)
tree2b36682f594ced2aaa0dc32c2deadaa2b5252a3b /src/server/scripts
parent9286734b553aecfb9c9e794fac5faee412bda700 (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.cpp22
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp18
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);
}
};