diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 3b45a48c64d..1abb2da344d 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -4324,6 +4324,35 @@ class spell_gen_charmed_unit_spell_cooldown : public SpellScript } }; +enum CannonBlast +{ + SPELL_CANNON_BLAST = 42578, + SPELL_CANNON_BLAST_DAMAGE = 42576 +}; + +class spell_gen_cannon_blast : public SpellScript +{ + PrepareSpellScript(spell_gen_cannon_blast); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ SPELL_CANNON_BLAST }); + } + void HandleScript(SpellEffIndex effIndex) + { + int32 bp = GetSpellInfo()->Effects[effIndex].CalcValue(); + Unit* target = GetHitUnit(); + CastSpellExtraArgs args(TRIGGERED_FULL_MASK); + args.AddSpellBP0(bp); + target->CastSpell(target, SPELL_CANNON_BLAST_DAMAGE, args); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_cannon_blast::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_generic_spell_scripts() { RegisterAuraScript(spell_gen_absorb0_hitlimit1); @@ -4451,4 +4480,5 @@ void AddSC_generic_spell_scripts() RegisterAuraScript(spell_gen_vehicle_control_link); RegisterSpellScript(spell_freezing_circle); RegisterSpellScript(spell_gen_charmed_unit_spell_cooldown); + RegisterSpellScript(spell_gen_cannon_blast); } |