From e962d021e3c3c8f19b0a1ead3f6ddf551bc7bcaf Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Sun, 1 Feb 2026 21:54:35 +0200 Subject: [PATCH] Scripts/Spells: Use form-dependent bleed spells for druid spell Thrash (#31513) --- .../world/master/2026_02_01_05_world.sql | 6 +++ src/server/scripts/Spells/spell_druid.cpp | 45 ++++++++++++------- 2 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 sql/updates/world/master/2026_02_01_05_world.sql diff --git a/sql/updates/world/master/2026_02_01_05_world.sql b/sql/updates/world/master/2026_02_01_05_world.sql new file mode 100644 index 0000000000..d04a08c4ab --- /dev/null +++ b/sql/updates/world/master/2026_02_01_05_world.sql @@ -0,0 +1,6 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_thrash'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(77758, 'spell_dru_thrash'), +(106830, 'spell_dru_thrash'); + +UPDATE `spell_script_names` SET `ScriptName` = 'spell_dru_thrash_bear_bleed' WHERE `spell_id` = 192090 AND `ScriptName` = 'spell_dru_thrash_aura'; diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index da10721e17..d7bb622a34 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -139,8 +139,9 @@ enum DruidSpells SPELL_DRUID_TRAVEL_FORM = 783, SPELL_DRUID_TREE_OF_LIFE = 33891, SPELL_DRUID_THRASH_BEAR = 77758, - SPELL_DRUID_THRASH_BEAR_AURA = 192090, + SPELL_DRUID_THRASH_BEAR_BLEED = 192090, SPELL_DRUID_THRASH_CAT = 106830, + SPELL_DRUID_THRASH_CAT_BLEED = 405233, SPELL_DRUID_UMBRAL_EMBRACE = 393763, SPELL_DRUID_UMBRAL_INSPIRATION_TALENT = 450418, SPELL_DRUID_UMBRAL_INSPIRATION_AURA = 450419, @@ -2154,22 +2155,27 @@ class spell_dru_thorns_of_iron_damage : public SpellScript } }; -// 77758 - Thrash +// 77758 - Thrash (Bear Form) +// 106830 - Thrash (Cat Form) class spell_dru_thrash : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_DRUID_THRASH_BEAR_AURA }); + return ValidateSpellInfo + ({ + SPELL_DRUID_THRASH_BEAR_BLEED, + SPELL_DRUID_THRASH_CAT_BLEED + }); } void HandleOnHitTarget(SpellEffIndex /*effIndex*/) { - if (Unit* hitUnit = GetHitUnit()) - { - Unit* caster = GetCaster(); + uint32 bleedSpell = (GetSpellInfo()->Id == SPELL_DRUID_THRASH_CAT) ? SPELL_DRUID_THRASH_CAT_BLEED : SPELL_DRUID_THRASH_BEAR_BLEED; - caster->CastSpell(hitUnit, SPELL_DRUID_THRASH_BEAR_AURA, TRIGGERED_FULL_MASK); - } + GetCaster()->CastSpell(GetHitUnit(), bleedSpell, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); } void Register() override @@ -2178,24 +2184,31 @@ class spell_dru_thrash : public SpellScript } }; -// 192090 - Thrash (Aura) - SPELL_DRUID_THRASH_BEAR_AURA -class spell_dru_thrash_aura : public AuraScript +// 192090 - Thrash (Bear Bleed) +class spell_dru_thrash_bear_bleed : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_DRUID_BLOOD_FRENZY_AURA, SPELL_DRUID_BLOOD_FRENZY_RAGE_GAIN }); + return ValidateSpellInfo + ({ + SPELL_DRUID_BLOOD_FRENZY_AURA, + SPELL_DRUID_BLOOD_FRENZY_RAGE_GAIN + }); } void HandlePeriodic(AuraEffect const* /*aurEff*/) { - if (Unit* caster = GetCaster()) - if (caster->HasAura(SPELL_DRUID_BLOOD_FRENZY_AURA)) - caster->CastSpell(caster, SPELL_DRUID_BLOOD_FRENZY_RAGE_GAIN, true); + Unit* caster = GetCaster(); + if (!caster) + return; + + if (caster->HasAura(SPELL_DRUID_BLOOD_FRENZY_AURA)) + caster->CastSpell(caster, SPELL_DRUID_BLOOD_FRENZY_RAGE_GAIN, true); } void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_dru_thrash_aura::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_dru_thrash_bear_bleed::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); } }; @@ -2643,7 +2656,7 @@ void AddSC_druid_spell_scripts() RegisterSpellScript(spell_dru_t10_restoration_4p_bonus_dummy); RegisterSpellScript(spell_dru_thorns_of_iron_damage); RegisterSpellScript(spell_dru_thrash); - RegisterSpellScript(spell_dru_thrash_aura); + RegisterSpellScript(spell_dru_thrash_bear_bleed); RegisterSpellScript(spell_dru_travel_form); RegisterSpellAndAuraScriptPair(spell_dru_travel_form_dummy, spell_dru_travel_form_dummy_aura); RegisterSpellAndAuraScriptPair(spell_dru_tiger_dash, spell_dru_tiger_dash_aura);