diff options
author | Jeremy <Golrag@users.noreply.github.com> | 2025-06-09 21:24:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-09 21:24:47 +0200 |
commit | 0ba78eb4c4314bf4f339d1d0d42d06e495bac06e (patch) | |
tree | 95e20273691b876a6c991033594330b5cdbcc6d2 /src | |
parent | 10e9386ab97f792f72bbe156362eb6bd23c0bcea (diff) |
Scripts/Spells: Fix Odyn's Fury target cap & Titanic Rage talent (#31043)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 38 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 0a4a5768d7a..40e4f4a9e1b 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5368,6 +5368,12 @@ void SpellMgr::LoadSpellInfoTargetCaps() spellInfo->_LoadSqrtTargetLimit(5, 0, {}, EFFECT_4, {}, {}); }); + // Odyn's Fury + ApplySpellFix({ 385060, 385061, 385062 }, [](SpellInfo* spellInfo) + { + spellInfo->_LoadSqrtTargetLimit(5, 0, 385059, EFFECT_5, {}, {}); + }); + TC_LOG_INFO("server.loading", ">> Loaded SpellInfo target caps in {} ms", GetMSTimeDiffToNow(oldMSTime)); } diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 7f87f53d3ad..2f82cb3fb93 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -78,9 +78,11 @@ enum WarriorSpells SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1 = 12723, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2 = 26654, SPELL_WARRIOR_TAUNT = 355, + SPELL_WARRIOR_TITANIC_RAGE = 394329, SPELL_WARRIOR_TRAUMA_EFFECT = 215537, SPELL_WARRIOR_VICTORIOUS = 32216, SPELL_WARRIOR_VICTORY_RUSH_HEAL = 118779, + SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA = 85739, SPELL_WARRIOR_WRATH_AND_FURY = 392936 }; @@ -953,6 +955,41 @@ class spell_warr_sweeping_strikes : public AuraScript Unit* _procTarget = nullptr; }; +// 394329 - Titanic Rage +class spell_warr_titanic_rage : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA }); + } + + void HandleProc(ProcEventInfo const& eventInfo) const + { + Player* target = GetTarget()->ToPlayer(); + if (!target) + return; + + target->CastSpell(nullptr, SPELL_WARRIOR_ENRAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = eventInfo.GetProcSpell() + }); + + SpellInfo const* whirlwindCleaveAuraInfo = sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA, GetCastDifficulty()); + int32 stackAmount = static_cast<int32>(whirlwindCleaveAuraInfo->StackAmount); + target->ApplySpellMod(whirlwindCleaveAuraInfo, SpellModOp::MaxAuraStacks, stackAmount); + + target->CastSpell(nullptr, SPELL_WARRIOR_WHIRLWIND_CLEAVE_AURA, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, stackAmount } } + }); + } + + void Register() override + { + OnProc += AuraProcFn(spell_warr_titanic_rage::HandleProc); + } +}; + // 215538 - Trauma class spell_warr_trauma : public AuraScript { @@ -1079,6 +1116,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_storm_bolts); RegisterSpellScript(spell_warr_strategist); RegisterSpellScript(spell_warr_sweeping_strikes); + RegisterSpellScript(spell_warr_titanic_rage); RegisterSpellScript(spell_warr_trauma); RegisterSpellScript(spell_warr_t3_prot_8p_bonus); RegisterSpellScript(spell_warr_victorious_state); |