diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2024-11-29 22:05:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-29 22:05:20 +0100 |
commit | 0a44d3b50844e634ffb8b39d93cf34b53c24e692 (patch) | |
tree | e2c4b3dc6e0c237f088be75654ae5f01b8f43ad8 | |
parent | 5f854be4eb532ed89df9cc81e5d4fa9040196e8f (diff) |
Scripts/Spells: Fix evoker talent Verdant Embrace (#30439)
-rw-r--r-- | sql/updates/world/master/2024_11_29_01_world.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_evoker.cpp | 66 |
2 files changed, 69 insertions, 1 deletions
diff --git a/sql/updates/world/master/2024_11_29_01_world.sql b/sql/updates/world/master/2024_11_29_01_world.sql new file mode 100644 index 00000000000..3d6ccd34dce --- /dev/null +++ b/sql/updates/world/master/2024_11_29_01_world.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_evo_verdant_embrace', 'spell_evo_verdant_embrace_trigger_heal'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(360995, 'spell_evo_verdant_embrace'), +(396557, 'spell_evo_verdant_embrace_trigger_heal'); diff --git a/src/server/scripts/Spells/spell_evoker.cpp b/src/server/scripts/Spells/spell_evoker.cpp index 485c082a1ee..d48ca4f8f16 100644 --- a/src/server/scripts/Spells/spell_evoker.cpp +++ b/src/server/scripts/Spells/spell_evoker.cpp @@ -22,6 +22,7 @@ */ #include "Containers.h" +#include "DB2Stores.h" #include "Player.h" #include "ScriptMgr.h" #include "Spell.h" @@ -56,7 +57,9 @@ enum EvokerSpells SPELL_EVOKER_PERMEATING_CHILL_TALENT = 370897, SPELL_EVOKER_PYRE_DAMAGE = 357212, SPELL_EVOKER_SCOURING_FLAME = 378438, - SPELL_EVOKER_SOAR_RACIAL = 369536 + SPELL_EVOKER_SOAR_RACIAL = 369536, + SPELL_EVOKER_VERDANT_EMBRACE_HEAL = 361195, + SPELL_EVOKER_VERDANT_EMBRACE_JUMP = 373514 }; enum EvokerSpellLabels @@ -64,6 +67,11 @@ enum EvokerSpellLabels SPELL_LABEL_EVOKER_BLUE = 1465, }; +enum EvokerSpellVisuals +{ + SPELL_VISUAL_KIT_EVOKER_VERDANT_EMBRACE_JUMP = 152557, +}; + // 362969 - Azure Strike (blue) class spell_evo_azure_strike : public SpellScript { @@ -363,6 +371,60 @@ class spell_evo_scouring_flame : public SpellScript } }; +// 360995 - Verdant Embrace (Green) +class spell_evo_verdant_embrace : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_EVOKER_VERDANT_EMBRACE_HEAL, SPELL_EVOKER_VERDANT_EMBRACE_JUMP }) + && sSpellVisualKitStore.HasRecord(SPELL_VISUAL_KIT_EVOKER_VERDANT_EMBRACE_JUMP); + } + + void HandleLaunchTarget(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + CastSpellExtraArgs args; + args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + args.SetTriggeringSpell(GetSpell()); + + if (target != caster) + { + caster->CastSpell(target, SPELL_EVOKER_VERDANT_EMBRACE_JUMP, args); + caster->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_EVOKER_VERDANT_EMBRACE_JUMP, 0, 0); + } + else + caster->CastSpell(caster, SPELL_EVOKER_VERDANT_EMBRACE_HEAL, args); + } + + void Register() override + { + OnEffectLaunchTarget += SpellEffectFn(spell_evo_verdant_embrace::HandleLaunchTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 396557 - Verdant Embrace +class spell_evo_verdant_embrace_trigger_heal : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_EVOKER_VERDANT_EMBRACE_HEAL }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + GetHitUnit()->CastSpell(GetExplTargetUnit(), SPELL_EVOKER_VERDANT_EMBRACE_HEAL, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_evo_verdant_embrace_trigger_heal::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_evoker_spell_scripts() { RegisterSpellScript(spell_evo_azure_strike); @@ -375,4 +437,6 @@ void AddSC_evoker_spell_scripts() RegisterSpellScript(spell_evo_permeating_chill); RegisterSpellScript(spell_evo_pyre); RegisterSpellScript(spell_evo_scouring_flame); + RegisterSpellScript(spell_evo_verdant_embrace); + RegisterSpellScript(spell_evo_verdant_embrace_trigger_heal); } |