aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy <Golrag@users.noreply.github.com>2025-06-09 21:24:47 +0200
committerGitHub <noreply@github.com>2025-06-09 21:24:47 +0200
commit0ba78eb4c4314bf4f339d1d0d42d06e495bac06e (patch)
tree95e20273691b876a6c991033594330b5cdbcc6d2 /src
parent10e9386ab97f792f72bbe156362eb6bd23c0bcea (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.cpp6
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp38
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);