diff options
-rw-r--r-- | sql/updates/world/master/2024_09_07_00_world.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 38 |
2 files changed, 40 insertions, 1 deletions
diff --git a/sql/updates/world/master/2024_09_07_00_world.sql b/sql/updates/world/master/2024_09_07_00_world.sql new file mode 100644 index 00000000000..026c315dbe1 --- /dev/null +++ b/sql/updates/world/master/2024_09_07_00_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_warl_volatile_agony'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(980, 'spell_warl_volatile_agony'); diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index c844001eda5..5fe05f47b70 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -79,7 +79,9 @@ enum WarlockSpells SPELL_WARLOCK_STRENGTHEN_PACT_INCUBUS = 366325, SPELL_WARLOCK_SUCCUBUS_PACT = 365360, SPELL_WARLOCK_INCUBUS_PACT = 365355, - SPELL_WARLOCK_VILE_TAINT_DAMAGE = 386931 + SPELL_WARLOCK_VILE_TAINT_DAMAGE = 386931, + SPELL_WARLOCK_VOLATILE_AGONY_TALENT = 453034, + SPELL_WARLOCK_VOLATILE_AGONY_DAMAGE = 453035 }; enum MiscSpells @@ -1188,6 +1190,39 @@ class spell_warl_vile_taint : public SpellScript } }; +// Called by 980 - Agony +// 453034 - Volatile Agony +class spell_warl_volatile_agony : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARLOCK_VOLATILE_AGONY_TALENT, SPELL_WARLOCK_VOLATILE_AGONY_DAMAGE }); + } + + void TriggerExplosion() const + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + + if (AuraEffect const* volatileAgony = caster->GetAuraEffect(SPELL_WARLOCK_VOLATILE_AGONY_TALENT, EFFECT_0)) + { + if (Aura const* agonyAura = target->GetAura(GetSpellInfo()->Id, caster->GetGUID())) + { + Milliseconds maxAgonyDuration = Seconds(volatileAgony->GetAmount()); + if (Milliseconds(agonyAura->GetDuration()) <= maxAgonyDuration) + caster->CastSpell(target, SPELL_WARLOCK_VOLATILE_AGONY_DAMAGE, CastSpellExtraArgs() + .SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR) + .SetTriggeringSpell(GetSpell())); + } + } + } + + void Register() override + { + OnHit += SpellHitFn(spell_warl_volatile_agony::TriggerExplosion); + } +}; + void AddSC_warlock_spell_scripts() { RegisterSpellScript(spell_warl_banish); @@ -1227,4 +1262,5 @@ void AddSC_warlock_spell_scripts() RegisterSpellScriptWithArgs(spell_warl_t4_2p_bonus<SPELL_WARLOCK_SHADOWFLAME>, "spell_warl_t4_2p_bonus_fire"); RegisterSpellScript(spell_warl_unstable_affliction); RegisterSpellScript(spell_warl_vile_taint); + RegisterSpellScript(spell_warl_volatile_agony); } |