diff options
author | Shauren <shauren.trinity@gmail.com> | 2017-09-01 23:41:55 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-09-01 23:41:55 +0200 |
commit | 32f18d05ae8c49d9879adcaa91f9a6fbce4b7ec0 (patch) | |
tree | 120d1d120d26fbf80e4e0751dce029eadccabcd5 /src | |
parent | f487ae12bdac7d6b245a07b9a2b1ab75227ca6c0 (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.cpp | 29 |
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(); |