Scripts/Spells: Use form-dependent bleed spells for druid spell Thrash (#31513)

This commit is contained in:
Cristian Vintila
2026-02-01 21:54:35 +02:00
committed by GitHub
parent b115db8235
commit e962d021e3
2 changed files with 35 additions and 16 deletions

View File

@@ -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';

View File

@@ -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);