diff options
| author | Jeremy <Golrag@users.noreply.github.com> | 2025-06-05 23:28:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-05 23:28:55 +0200 |
| commit | ec08da5b04ef7447a8453b4950e494a1017660aa (patch) | |
| tree | 6606420bde429980e7b13939330870e5898dea8d /src | |
| parent | 346349a0405ce0fc77dd50b4e993034309a8a001 (diff) | |
Scripts/Spells: Fix warrior charge (#31017)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 356ce7e955a..b4cedfca9d3 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -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 |
