aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2025-09-19 14:49:21 +0200
committerGitHub <noreply@github.com>2025-09-19 14:49:21 +0200
commite9d963760c1f4be95e655ecd50f1c6aceecdc1dd (patch)
treeb34531a91388977ece20740e69a24a8b07cbe89c
parent2536890beb2b25c257c5120852818d788ee9e73f (diff)
Scripts/Spells: Implement mage talent "Pyrotechnics" (#31254)
-rw-r--r--sql/updates/world/master/2025_09_19_00_world.sql2
-rw-r--r--sql/updates/world/master/2025_09_19_01_world.sql7
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp25
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);