diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2025-09-19 14:49:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-19 14:49:21 +0200 |
commit | e9d963760c1f4be95e655ecd50f1c6aceecdc1dd (patch) | |
tree | b34531a91388977ece20740e69a24a8b07cbe89c | |
parent | 2536890beb2b25c257c5120852818d788ee9e73f (diff) |
Scripts/Spells: Implement mage talent "Pyrotechnics" (#31254)
-rw-r--r-- | sql/updates/world/master/2025_09_19_00_world.sql | 2 | ||||
-rw-r--r-- | sql/updates/world/master/2025_09_19_01_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_mage.cpp | 25 |
3 files changed, 33 insertions, 1 deletions
diff --git a/sql/updates/world/master/2025_09_19_00_world.sql b/sql/updates/world/master/2025_09_19_00_world.sql index bbd96bbd1f4..761d1f93686 100644 --- a/sql/updates/world/master/2025_09_19_00_world.sql +++ b/sql/updates/world/master/2025_09_19_00_world.sql @@ -6,5 +6,5 @@ INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES DELETE FROM `spell_proc` WHERE `SpellId` IN (44448,48108); INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES -(44448,0x04,3,0x00C00013,0x00100000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x2,0x0,0x0,0,0,0,0), -- Pyroblast Clearcasting Driver +(44448,0x04,3,0x00C00013,0x00100000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0,0,0,0), -- Pyroblast Clearcasting Driver (48108,0x00,3,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x4,0x0,0x0,0x0,0x8,0x0,0,0,0,1); -- Hot Streak! diff --git a/sql/updates/world/master/2025_09_19_01_world.sql b/sql/updates/world/master/2025_09_19_01_world.sql new file mode 100644 index 00000000000..1076d300f02 --- /dev/null +++ b/sql/updates/world/master/2025_09_19_01_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (157642); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(157642,0x0,3,0x00000001,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0,0,0,0); -- Pyrotechnics + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_mage_pyrotechnics'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(157642, 'spell_mage_pyrotechnics'); diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 72255517390..2d71970fff1 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -94,6 +94,7 @@ enum MageSpells SPELL_MAGE_PHOENIX_FLAMES = 257541, SPELL_MAGE_PHOENIX_FLAMES_DAMAGE = 257542, SPELL_MAGE_PYROBLAST = 11366, + SPELL_MAGE_PYROTECHNICS = 157644, SPELL_MAGE_RADIANT_SPARK_PROC_BLOCKER = 376105, SPELL_MAGE_RAY_OF_FROST_BONUS = 208141, SPELL_MAGE_RAY_OF_FROST_FINGERS_OF_FROST = 269748, @@ -1591,6 +1592,29 @@ class spell_mage_prismatic_barrier : public AuraScript } }; +// 157642 - Pyrotechnics +class spell_mage_pyrotechnics : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_MAGE_PYROTECHNICS }); + } + + void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& procInfo) + { + if (procInfo.GetHitMask() & PROC_HIT_CRITICAL) + { + PreventDefaultAction(); + procInfo.GetActor()->RemoveAurasDueToSpell(SPELL_MAGE_PYROTECHNICS); + } + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_mage_pyrotechnics::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + // 376103 - Radiant Spark class spell_mage_radiant_spark : public AuraScript { @@ -2054,6 +2078,7 @@ void AddSC_mage_spell_scripts() RegisterSpellScript(spell_mage_molten_fury); RegisterSpellScript(spell_mage_polymorph_visual); RegisterSpellScript(spell_mage_prismatic_barrier); + RegisterSpellScript(spell_mage_pyrotechnics); RegisterSpellScript(spell_mage_radiant_spark); RegisterSpellAndAuraScriptPair(spell_mage_ray_of_frost, spell_mage_ray_of_frost_aura); RegisterSpellScript(spell_mage_ring_of_frost); |