Scripts/Spells: Fix warrior charge (#31017)

This commit is contained in:
Jeremy
2025-06-05 23:28:55 +02:00
committed by GitHub
parent 346349a040
commit ec08da5b04
2 changed files with 23 additions and 24 deletions

View File

@@ -37,11 +37,9 @@ enum WarriorSpells
SPELL_WARRIOR_BLADESTORM_PERIODIC_WHIRLWIND = 50622,
SPELL_WARRIOR_BLOODTHIRST_HEAL = 117313,
SPELL_WARRIOR_CHARGE = 34846,
SPELL_WARRIOR_CHARGE_EFFECT = 218104,
SPELL_WARRIOR_CHARGE_EFFECT_BLAZING_TRAIL = 198337,
SPELL_WARRIOR_CHARGE_PAUSE_RAGE_DECAY = 109128,
SPELL_WARRIOR_CHARGE_DROP_FIRE_PERIODIC = 126661,
SPELL_WARRIOR_CHARGE_EFFECT = 198337,
SPELL_WARRIOR_CHARGE_ROOT_EFFECT = 105771,
SPELL_WARRIOR_CHARGE_SLOW_EFFECT = 236027,
SPELL_WARRIOR_COLOSSUS_SMASH = 167105,
SPELL_WARRIOR_COLOSSUS_SMASH_AURA = 208086,
SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE = 392776,
@@ -156,20 +154,15 @@ class spell_warr_charge : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo
({
SPELL_WARRIOR_CHARGE_EFFECT,
SPELL_WARRIOR_CHARGE_EFFECT_BLAZING_TRAIL
});
return ValidateSpellInfo({ SPELL_WARRIOR_CHARGE_EFFECT });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
void HandleDummy(SpellEffIndex /*effIndex*/) const
{
uint32 spellId = SPELL_WARRIOR_CHARGE_EFFECT;
if (GetCaster()->HasAura(SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL))
spellId = SPELL_WARRIOR_CHARGE_EFFECT_BLAZING_TRAIL;
GetCaster()->CastSpell(GetHitUnit(), spellId, true);
GetCaster()->CastSpell(GetHitUnit(), SPELL_WARRIOR_CHARGE_EFFECT, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.TriggeringSpell = GetSpell()
});
}
void Register() override
@@ -197,31 +190,36 @@ class spell_warr_charge_drop_fire_periodic : public AuraScript
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_warr_charge_drop_fire_periodic::DropFireVisual, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_warr_charge_drop_fire_periodic::DropFireVisual, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
// 198337 - Charge Effect (dropping Blazing Trail)
// 218104 - Charge Effect
// 198337 - Charge Effect
class spell_warr_charge_effect : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo
({
SPELL_WARRIOR_CHARGE_PAUSE_RAGE_DECAY,
SPELL_WARRIOR_CHARGE_ROOT_EFFECT,
SPELL_WARRIOR_CHARGE_SLOW_EFFECT
SPELL_WARRIOR_CHARGE_DROP_FIRE_PERIODIC
});
}
void HandleCharge(SpellEffIndex /*effIndex*/)
void HandleCharge(SpellEffIndex /*effIndex*/) const
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
caster->CastSpell(caster, SPELL_WARRIOR_CHARGE_PAUSE_RAGE_DECAY, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_BASE_POINT0, 0));
caster->CastSpell(target, SPELL_WARRIOR_CHARGE_ROOT_EFFECT, true);
caster->CastSpell(target, SPELL_WARRIOR_CHARGE_SLOW_EFFECT, true);
CastSpellExtraArgs const args = CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_FULL_MASK & ~TRIGGERED_CAST_DIRECTLY,
.TriggeringSpell = GetSpell()
};
if (caster->HasAura(SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL))
caster->CastSpell(target, SPELL_WARRIOR_CHARGE_DROP_FIRE_PERIODIC, args);
caster->CastSpell(target, SPELL_WARRIOR_CHARGE_ROOT_EFFECT, args);
}
void Register() override