aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-09-01 23:41:55 +0200
committerShauren <shauren.trinity@gmail.com>2017-09-01 23:41:55 +0200
commit32f18d05ae8c49d9879adcaa91f9a6fbce4b7ec0 (patch)
tree120d1d120d26fbf80e4e0751dce029eadccabcd5 /src
parentf487ae12bdac7d6b245a07b9a2b1ab75227ca6c0 (diff)
Core/Spells: Immortal specialization series part 3 - fixed Warlock Mastery: Chaotic Energies damage taken portion
Closes #20195
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp
index 9054fc984b2..6cfb059acb7 100644
--- a/src/server/scripts/Spells/spell_warlock.cpp
+++ b/src/server/scripts/Spells/spell_warlock.cpp
@@ -162,6 +162,34 @@ class spell_warl_conflagrate : public SpellScriptLoader
}
};
+// 77220 - Mastery: Chaotic Energies
+class spell_warl_chaotic_energies : public AuraScript
+{
+ PrepareAuraScript(spell_warl_chaotic_energies);
+
+ void HandleAbsorb(AuraEffect* /*aurEff*/, DamageInfo& dmgInfo, uint32& absorbAmount)
+ {
+ AuraEffect const* effect1 = GetEffect(EFFECT_1);
+ if (!effect1 || !GetTargetApplication()->HasEffect(EFFECT_1))
+ {
+ PreventDefaultAction();
+ return;
+ }
+
+ // You take ${$s2/3}% reduced damage
+ float damageReductionPct = float(effect1->GetAmount()) / 3;
+ // plus a random amount of up to ${$s2/3}% additional reduced damage
+ damageReductionPct += frand(0.0f, damageReductionPct);
+
+ absorbAmount = CalculatePct(dmgInfo.GetDamage(), damageReductionPct);
+ }
+
+ void Register() override
+ {
+ OnEffectAbsorb += AuraEffectAbsorbFn(spell_warl_chaotic_energies::HandleAbsorb, EFFECT_2);
+ }
+};
+
// 6201 - Create Healthstone
class spell_warl_create_healthstone : public SpellScriptLoader
{
@@ -1454,6 +1482,7 @@ void AddSC_warlock_spell_scripts()
{
new spell_warl_bane_of_doom();
new spell_warl_banish();
+ RegisterAuraScript(spell_warl_chaotic_energies);
new spell_warl_conflagrate();
new spell_warl_create_healthstone();
new spell_warl_demonic_circle_summon();