3535
3636enum WarriorSpells
3737{
38+ SPELL_WARRIOR_ALWAYS_ANGRY = 280270 ,
3839 SPELL_WARRIOR_AVATAR = 107574 ,
3940 SPELL_WARRIOR_BLADESTORM = 227847 ,
4041 SPELL_WARRIOR_BLADESTORM_PERIODIC_WHIRLWIND = 50622 ,
@@ -100,6 +101,8 @@ enum WarriorSpells
100101 SPELL_WARRIOR_STRATEGIST = 384041 ,
101102 SPELL_WARRIOR_SUDDEN_DEATH = 280721 ,
102103 SPELL_WARRIOR_SUDDEN_DEATH_BUFF = 280776 ,
104+ SPELL_WARRIOR_SURGE_OF_ADRENALINE_TALENT = 1265359 ,
105+ SPELL_WARRIOR_SURGE_OF_ADRENALINE_PROC = 1265560 ,
103106 SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1 = 12723 ,
104107 SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2 = 26654 ,
105108 SPELL_WARRIOR_TAUNT = 355 ,
@@ -1148,20 +1151,23 @@ class spell_warr_raging_blow_cooldown_reset : public SpellScript
11481151{
11491152 bool Validate (SpellInfo const * /* spellInfo*/ ) override
11501153 {
1151- return ValidateSpellInfo ({ SPELL_WARRIOR_IMPROVED_RAGING_BLOW })
1154+ return ValidateSpellInfo ({ SPELL_WARRIOR_IMPROVED_RAGING_BLOW , SPELL_WARRIOR_SURGE_OF_ADRENALINE_TALENT , SPELL_WARRIOR_ALWAYS_ANGRY })
11521155 && ValidateSpellEffect ({{ SPELL_WARRIOR_WRATH_AND_FURY , EFFECT_0 }});
11531156 }
11541157
11551158 bool Load () override
11561159 {
11571160 Unit const * caster = GetCaster ();
1158- return caster->HasAura (SPELL_WARRIOR_IMPROVED_RAGING_BLOW ) || caster->HasAuraEffect (SPELL_WARRIOR_WRATH_AND_FURY , EFFECT_0 );
1161+ return caster->HasAura (SPELL_WARRIOR_IMPROVED_RAGING_BLOW )
1162+ || caster->HasAuraEffect (SPELL_WARRIOR_WRATH_AND_FURY , EFFECT_0 )
1163+ || caster->HasAura (SPELL_WARRIOR_SURGE_OF_ADRENALINE_TALENT );
11591164 }
11601165
1161- void HandleResetCooldown (SpellEffIndex /* effIndex*/ ) const
1166+ void CheckResetCooldown (SpellEffIndex /* effIndex*/ )
11621167 {
1168+ _resetCooldown = false ;
11631169 // it is currently impossible to have Wrath and Fury without having Improved Raging Blow, but we will check it anyway
1164- Unit* caster = GetCaster ();
1170+ Unit const * caster = GetCaster ();
11651171 int32 value = 0 ;
11661172 if (caster->HasAura (SPELL_WARRIOR_IMPROVED_RAGING_BLOW ))
11671173 value = GetEffectValue ();
@@ -1170,13 +1176,30 @@ class spell_warr_raging_blow_cooldown_reset : public SpellScript
11701176 value += auraEffect->GetAmount ();
11711177
11721178 if (roll_chance_i (value))
1173- caster->GetSpellHistory ()->RestoreCharge (GetSpellInfo ()->ChargeCategoryId );
1179+ _resetCooldown = true ;
1180+ }
1181+
1182+ void HandleResetCooldown () const
1183+ {
1184+ if (!_resetCooldown)
1185+ return ;
1186+
1187+ Unit* caster = GetCaster ();
1188+
1189+ caster->CastSpell (nullptr , SPELL_WARRIOR_ALWAYS_ANGRY , CastSpellExtraArgsInit{
1190+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR ,
1191+ .TriggeringSpell = GetSpell ()
1192+ });
1193+ caster->GetSpellHistory ()->RestoreCharge (GetSpellInfo ()->ChargeCategoryId );
11741194 }
11751195
11761196 void Register () override
11771197 {
1178- OnEffectHitTarget += SpellEffectFn (spell_warr_raging_blow_cooldown_reset::HandleResetCooldown, EFFECT_0 , SPELL_EFFECT_DUMMY );
1198+ OnEffectHitTarget += SpellEffectFn (spell_warr_raging_blow_cooldown_reset::CheckResetCooldown, EFFECT_0 , SPELL_EFFECT_DUMMY );
1199+ AfterCast += SpellCastFn (spell_warr_raging_blow_cooldown_reset::HandleResetCooldown);
11791200 }
1201+
1202+ bool _resetCooldown = false ;
11801203};
11811204
11821205// 97462 - Rallying Cry
@@ -1411,6 +1434,33 @@ class spell_warr_sudden_death_proc : public AuraScript
14111434 }
14121435};
14131436
1437+ // 1265359 - Surge of Adrenaline (talent) - attached to 280270 (Always Angry)
1438+ class spell_warr_surge_of_adrenaline : public AuraScript
1439+ {
1440+ bool Validate (SpellInfo const * /* spellInfo*/ ) override
1441+ {
1442+ return ValidateSpellInfo ({ SPELL_WARRIOR_SURGE_OF_ADRENALINE_PROC , SPELL_WARRIOR_SURGE_OF_ADRENALINE_TALENT });
1443+ }
1444+
1445+ void OnApply (AuraEffect const * aurEff, AuraEffectHandleModes /* mode*/ ) const
1446+ {
1447+ Unit* target = GetTarget ();
1448+
1449+ if (!target->HasAura (SPELL_WARRIOR_SURGE_OF_ADRENALINE_TALENT ))
1450+ return ;
1451+
1452+ target->CastSpell (nullptr , SPELL_WARRIOR_SURGE_OF_ADRENALINE_PROC , CastSpellExtraArgsInit{
1453+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR ,
1454+ .TriggeringAura = aurEff
1455+ });
1456+ }
1457+
1458+ void Register () override
1459+ {
1460+ OnEffectApply += AuraEffectApplyFn (spell_warr_surge_of_adrenaline::OnApply, EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK );
1461+ }
1462+ };
1463+
14141464// 12328, 18765, 35429 - Sweeping Strikes
14151465class spell_warr_sweeping_strikes : public AuraScript
14161466{
@@ -1766,6 +1816,7 @@ void AddSC_warrior_spell_scripts()
17661816 RegisterSpellScript (spell_warr_strategist);
17671817 RegisterSpellScript (spell_warr_sudden_death);
17681818 RegisterSpellScript (spell_warr_sudden_death_proc);
1819+ RegisterSpellScript (spell_warr_surge_of_adrenaline);
17691820 RegisterSpellScript (spell_warr_sweeping_strikes);
17701821 RegisterSpellScript (spell_warr_tenderize);
17711822 RegisterSpellScript (spell_warr_thunder_clap);
0 commit comments