From 52ddfe89f8d48779145a157ef06c284490dfe4ba Mon Sep 17 00:00:00 2001 From: Mikhail Redko Date: Fri, 23 Dec 2022 16:08:58 +0200 Subject: Core/Scripts: Implemented Zort's Protective Elixir (#28372) * Core/Scripts: Implemented Zort's Protective Elixir * Rename XXXX_XX_XX_XX_world.sql to 2022_12_23_00_world.sql Co-authored-by: Giacomo Pozzoni (cherry picked from commit dc221604d9971eabb95cdbaececa28765a6dfa9a) --- src/server/scripts/Northrend/zone_dragonblight.cpp | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src') diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 75689833ab1..6c6b1408bc3 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -25,6 +25,7 @@ #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "SpellAuras.h" +#include "SpellAuraEffects.h" #include "SpellInfo.h" #include "SpellScript.h" #include "TemporarySummon.h" @@ -951,6 +952,38 @@ class spell_dragonblight_fill_blood_unholy_frost_gem : public SpellScript } }; +// 47447 - Corrosive Spit +class spell_dragonblight_corrosive_spit : public AuraScript +{ + PrepareAuraScript(spell_dragonblight_corrosive_spit); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (GetTarget()->HasAura(GetEffectInfo(EFFECT_0).CalcValue())) + GetAura()->Remove(); + } + + void PeriodicTick(AuraEffect const* /*aurEff*/) + { + if (GetTarget()->HasAura(GetEffectInfo(EFFECT_0).CalcValue())) + { + PreventDefaultAction(); + GetAura()->Remove(); + } + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_dragonblight_corrosive_spit::AfterApply, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_dragonblight_corrosive_spit::PeriodicTick, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -968,4 +1001,5 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master); RegisterSpellScript(spell_dragonblight_surge_needle_teleporter); RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); + RegisterSpellScript(spell_dragonblight_corrosive_spit); } -- cgit v1.2.3