From 61e5cd7ac37e8bbf8d16416ed92cf542476ee897 Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Thu, 19 Feb 2026 12:37:00 -0600 Subject: [PATCH] fix(Core/Spells): Combustion non-crit hits now add crit stacks (#24752) Co-authored-by: blinkysc --- .../pending_db_world/rev_1771505399132109970.sql | 4 ++++ src/server/scripts/Spells/spell_mage.cpp | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1771505399132109970.sql diff --git a/data/sql/updates/pending_db_world/rev_1771505399132109970.sql b/data/sql/updates/pending_db_world/rev_1771505399132109970.sql new file mode 100644 index 000000000..6e6ca210b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1771505399132109970.sql @@ -0,0 +1,4 @@ +-- Enable charge tracking for Combustion (11129) +-- Charges were 0 (disabled), should be 3 to match DBC ProcCharges +-- Combustion should be removed after 3 critical strikes with Fire spells +UPDATE `spell_proc` SET `Charges` = 3 WHERE `SpellId` = 11129; diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index f8d5db149..3c6c7e42d 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -37,6 +37,7 @@ enum MageSpells SPELL_MAGE_BURNOUT_TRIGGER = 44450, SPELL_MAGE_IMPROVED_BLIZZARD_CHILLED = 12486, SPELL_MAGE_COMBUSTION = 11129, + SPELL_MAGE_COMBUSTION_PROC = 28682, SPELL_MAGE_COLD_SNAP = 11958, SPELL_MAGE_FOCUS_MAGIC_PROC = 54648, SPELL_MAGE_FROST_WARDING_R1 = 11189, @@ -997,10 +998,21 @@ class spell_mage_combustion : public AuraScript { PrepareAuraScript(spell_mage_combustion); + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_MAGE_COMBUSTION_PROC }); + } + bool CheckProc(ProcEventInfo& eventInfo) { - // Prevent charge consumption on non-crits - return eventInfo.GetHitMask() & PROC_EX_CRITICAL_HIT; + // Do not take charges, add a stack of crit buff + if (!(eventInfo.GetHitMask() & PROC_HIT_CRITICAL)) + { + eventInfo.GetActor()->CastSpell(static_cast(nullptr), SPELL_MAGE_COMBUSTION_PROC, true); + return false; + } + + return true; } void Register() override