aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2025-01-14 12:01:17 +0100
committerGitHub <noreply@github.com>2025-01-14 12:01:17 +0100
commitd9a8f0da10422f56661b2e01b31d7bd80b9c4bc8 (patch)
tree76a63ddbe82a82646ab646a42517265fa861e49b
parent2e1414d5bc740e48b507c7f9910147372fb3862c (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.sql8
-rw-r--r--src/server/scripts/Spells/spell_evoker.cpp39
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);