diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2025-01-14 12:01:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-14 12:01:17 +0100 |
commit | d9a8f0da10422f56661b2e01b31d7bd80b9c4bc8 (patch) | |
tree | 76a63ddbe82a82646ab646a42517265fa861e49b | |
parent | 2e1414d5bc740e48b507c7f9910147372fb3862c (diff) |
Scripts/Spells: Implement evoker talents "Ruby Essence Burst" and "Azure Essence Burst" (#30578)
-rw-r--r-- | sql/updates/world/master/2025_01_14_00_world.sql | 8 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_evoker.cpp | 39 |
2 files changed, 47 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_01_14_00_world.sql b/sql/updates/world/master/2025_01_14_00_world.sql new file mode 100644 index 00000000000..8fa04531fbe --- /dev/null +++ b/sql/updates/world/master/2025_01_14_00_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (359618); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(359618,0x00,224,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x4,0x1,0x0,0x18,0x0,0,0,0,0); -- Essence Burst + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_evo_ruby_essence_burst', 'spell_evo_azure_essence_burst'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(362969, 'spell_evo_azure_essence_burst'), +(361469, 'spell_evo_ruby_essence_burst'); diff --git a/src/server/scripts/Spells/spell_evoker.cpp b/src/server/scripts/Spells/spell_evoker.cpp index 54f62d3624a..6db4eb3c441 100644 --- a/src/server/scripts/Spells/spell_evoker.cpp +++ b/src/server/scripts/Spells/spell_evoker.cpp @@ -36,6 +36,7 @@ enum EvokerSpells { + SPELL_EVOKER_AZURE_ESSENCE_BURST = 375721, SPELL_EVOKER_BLAST_FURNACE = 375510, SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DK = 381732, SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DH = 381741, @@ -51,6 +52,7 @@ enum EvokerSpells SPELL_EVOKER_BLESSING_OF_THE_BRONZE_WARLOCK = 381757, SPELL_EVOKER_BLESSING_OF_THE_BRONZE_WARRIOR = 381758, SPELL_EVOKER_ENERGIZING_FLAME = 400006, + SPELL_EVOKER_ESSENCE_BURST = 359618, SPELL_EVOKER_FIRESTORM_DAMAGE = 369374, SPELL_EVOKER_FIRE_BREATH_DAMAGE = 357209, SPELL_EVOKER_GLIDE_KNOCKBACK = 358736, @@ -61,6 +63,7 @@ enum EvokerSpells SPELL_EVOKER_PERMEATING_CHILL_TALENT = 370897, SPELL_EVOKER_PYRE_DAMAGE = 357212, SPELL_EVOKER_RUBY_EMBERS = 365937, + SPELL_EVOKER_RUBY_ESSENCE_BURST = 376872, SPELL_EVOKER_SCOURING_FLAME = 378438, SPELL_EVOKER_SNAPFIRE = 370818, SPELL_EVOKER_SOAR_RACIAL = 369536, @@ -159,6 +162,40 @@ class spell_evo_charged_blast : public AuraScript } }; +// Called by 362969 - Azure Strike +// Called by 361469 - Living Flame (Red) +class spell_evo_essence_burst_trigger : public SpellScript +{ +public: + explicit spell_evo_essence_burst_trigger(uint32 talentAuraId) : _talentAuraId(talentAuraId) { } + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ _talentAuraId, SPELL_EVOKER_ESSENCE_BURST }); + } + + bool Load() override + { + AuraEffect const* aurEff = GetCaster()->GetAuraEffect(_talentAuraId, EFFECT_0); + return aurEff && roll_chance_i(aurEff->GetAmount()); + } + + void HandleEssenceBurst() const + { + GetCaster()->CastSpell(GetCaster(), SPELL_EVOKER_ESSENCE_BURST, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_evo_essence_burst_trigger::HandleEssenceBurst); + } + + uint32 _talentAuraId; +}; + // 357208 Fire Breath (Red) // 382266 Fire Breath (Red) class spell_evo_fire_breath : public SpellScript @@ -551,6 +588,8 @@ void AddSC_evoker_spell_scripts() RegisterSpellScript(spell_evo_azure_strike); RegisterSpellScript(spell_evo_blessing_of_the_bronze); RegisterSpellScript(spell_evo_charged_blast); + RegisterSpellScriptWithArgs(spell_evo_essence_burst_trigger, "spell_evo_azure_essence_burst", SPELL_EVOKER_AZURE_ESSENCE_BURST); + RegisterSpellScriptWithArgs(spell_evo_essence_burst_trigger, "spell_evo_ruby_essence_burst", SPELL_EVOKER_RUBY_ESSENCE_BURST); RegisterAreaTriggerAI(at_evo_firestorm); RegisterSpellScript(spell_evo_fire_breath); RegisterSpellScript(spell_evo_fire_breath_damage); |