aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2017_09_01_00_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp29
2 files changed, 32 insertions, 0 deletions
diff --git a/sql/updates/world/master/2017_09_01_00_world.sql b/sql/updates/world/master/2017_09_01_00_world.sql
new file mode 100644
index 00000000000..26b6957b4ed
--- /dev/null
+++ b/sql/updates/world/master/2017_09_01_00_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_warl_chaotic_energies';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(77220,'spell_warl_chaotic_energies');
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();