TrinityCore
spell_warrior.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18/*
19 * Scripts for spells with SPELLFAMILY_WARRIOR and SPELLFAMILY_GENERIC spells used by warrior players.
20 * Ordered alphabetically using scriptname.
21 * Scriptnames of files in this file should be prefixed with "spell_warr_".
22 */
23
24#include "ScriptMgr.h"
25#include "Map.h"
26#include "MoveSpline.h"
27#include "PathGenerator.h"
28#include "Player.h"
29#include "Spell.h"
30#include "SpellMgr.h"
31#include "SpellAuraEffects.h"
32#include "SpellHistory.h"
33#include "SpellScript.h"
34
36{
78};
79
81{
83};
84
85// 23881 - Bloodthirst
87{
88 bool Validate(SpellInfo const* /*spellInfo*/) override
89 {
91 }
92
93 void HandleDummy(SpellEffIndex /*effIndex*/)
94 {
96 }
97
98 void Register() override
99 {
101 }
102};
103
104// 384036 - Brutal Vitality
106{
107 bool Validate(SpellInfo const* /*spellInfo*/) override
108 {
110 }
111
112 void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
113 {
114 _damageAmount += CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount());
115 }
116
117 void HandleDummyTick(AuraEffect const* /*aurEff*/)
118 {
119 if (_damageAmount == 0)
120 return;
121
122 if (AuraEffect* ignorePainAura = GetTarget()->GetAuraEffect(SPELL_WARRIOR_IGNORE_PAIN, EFFECT_0))
123 ignorePainAura->ChangeAmount(ignorePainAura->GetAmount() + _damageAmount);
124
125 _damageAmount = 0;
126 }
127
128 void Register() override
129 {
132 }
133
134private:
136};
137
138// 100 - Charge
140{
141 bool Validate(SpellInfo const* /*spellInfo*/) override
142 {
143 return ValidateSpellInfo
144 ({
147 });
148 }
149
150 void HandleDummy(SpellEffIndex /*effIndex*/)
151 {
155
156 GetCaster()->CastSpell(GetHitUnit(), spellId, true);
157 }
158
159 void Register() override
160 {
162 }
163};
164
165// 126661 - Warrior Charge Drop Fire Periodic
167{
168 void DropFireVisual(AuraEffect const* aurEff)
169 {
171 if (GetTarget()->IsSplineEnabled())
172 {
173 for (uint32 i = 0; i < 5; ++i)
174 {
175 int32 timeOffset = 6 * i * aurEff->GetPeriod() / 25;
176 Movement::Location loc = GetTarget()->movespline->ComputePosition(timeOffset);
177 GetTarget()->SendPlaySpellVisual(Position(loc.x, loc.y, loc.z), SPELL_VISUAL_BLAZING_CHARGE, 0, 0, 1.f, true);
178 }
179 }
180 }
181
182 void Register() override
183 {
185 }
186};
187
188// 198337 - Charge Effect (dropping Blazing Trail)
189// 218104 - Charge Effect
191{
192 bool Validate(SpellInfo const* /*spellInfo*/) override
193 {
194 return ValidateSpellInfo
195 ({
199 });
200 }
201
202 void HandleCharge(SpellEffIndex /*effIndex*/)
203 {
204 Unit* caster = GetCaster();
205 Unit* target = GetHitUnit();
207 caster->CastSpell(target, SPELL_WARRIOR_CHARGE_ROOT_EFFECT, true);
208 caster->CastSpell(target, SPELL_WARRIOR_CHARGE_SLOW_EFFECT, true);
209 }
210
211 void Register() override
212 {
214 }
215};
216
217// 167105 - Colossus Smash
218// 262161 - Warbreaker
220{
221 bool Validate(SpellInfo const* /*spellInfo*/) override
222 {
225 }
226
228 {
229 Unit* target = GetHitUnit();
230 Unit* caster = GetCaster();
231
233
235 {
236 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_IN_FOR_THE_KILL, DIFFICULTY_NONE))
237 {
238 if (target->HealthBelowPct(spellInfo->GetEffect(EFFECT_2).CalcValue(caster)))
239 _bonusHaste = true;
240 }
241 }
242 }
243
245 {
246 Unit* caster = GetCaster();
247 SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_IN_FOR_THE_KILL, DIFFICULTY_NONE);
248 if (!spellInfo)
249 return;
250
252 args.AddSpellBP0(spellInfo->GetEffect(EFFECT_0).CalcValue(caster));
253 if (_bonusHaste)
254 args.AddSpellBP0(spellInfo->GetEffect(EFFECT_1).CalcValue(caster));
255 caster->CastSpell(caster, SPELL_WARRIOR_IN_FOR_THE_KILL_HASTE, args);
256 }
257
258 void Register() override
259 {
262 }
263
264private:
265 bool _bonusHaste = false;
266};
267
268// 389306 - Critical Thinking
270{
271 bool Validate(SpellInfo const* /*spellInfo*/) override
272 {
274 }
275
276 void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
277 {
280 .AddSpellBP0(CalculatePct(*rageCost, aurEff->GetAmount())));
281 }
282
283 void Register() override
284 {
286 }
287};
288
289// 236279 - Devastator
291{
292 bool Validate(SpellInfo const* spellInfo) override
293 {
295 }
296
297 void OnProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const
298 {
299 if (GetTarget()->GetSpellHistory()->HasCooldown(SPELL_WARRIOR_SHIELD_SLAM))
300 {
301 if (roll_chance_i(GetEffectInfo(EFFECT_1).CalcValue()))
302 {
305 }
306 }
307 }
308
309 void Register() override
310 {
312 }
313};
314
315// 383103 - Fueled by Violence
317{
318 bool Validate(SpellInfo const* /*spellInfo*/) override
319 {
321 }
322
323 void HandleProc(ProcEventInfo& eventInfo)
324 {
326
328 }
329
330 void HandlePeriodic(AuraEffect const* /*aurEff*/)
331 {
332 if (_nextHealAmount == 0)
333 return;
334
335 Unit* target = GetTarget();
338
340 _nextHealAmount = 0;
341 }
342
343 void Register() override
344 {
347 }
348
349private:
351};
352
353// 6544 - Heroic leap
355{
356 bool Validate(SpellInfo const* /*spellInfo*/) override
357 {
359 }
360
362 {
363 if (WorldLocation const* dest = GetExplTargetDest())
364 {
365 if (GetCaster()->HasUnitMovementFlag(MOVEMENTFLAG_ROOT))
366 return SPELL_FAILED_ROOTED;
367
368 if (GetCaster()->GetMap()->Instanceable())
369 {
370 float range = GetSpellInfo()->GetMaxRange(true, GetCaster()) * 1.5f;
371
372 PathGenerator generatedPath(GetCaster());
373 generatedPath.SetPathLengthLimit(range);
374
375 bool result = generatedPath.CalculatePath(dest->GetPositionX(), dest->GetPositionY(), dest->GetPositionZ(), false);
376 if (generatedPath.GetPathType() & PATHFIND_SHORT)
378 else if (!result || generatedPath.GetPathType() & PATHFIND_NOPATH)
379 return SPELL_FAILED_NOPATH;
380 }
381 else if (dest->GetPositionZ() > GetCaster()->GetPositionZ() + 4.0f)
382 return SPELL_FAILED_NOPATH;
383
384 return SPELL_CAST_OK;
385 }
386
388 }
389
390 void HandleDummy(SpellEffIndex /*effIndex*/)
391 {
392 if (WorldLocation* dest = GetHitDest())
394 }
395
396 void Register() override
397 {
400 }
401};
402
403// Heroic Leap (triggered by Heroic Leap (6544)) - 178368
405{
406 bool Validate(SpellInfo const* /*spellInfo*/) override
407 {
408 return ValidateSpellInfo(
409 {
414 });
415 }
416
417 void AfterJump(SpellEffIndex /*effIndex*/)
418 {
423 }
424
425 void Register() override
426 {
428 }
429};
430
431// 202168 - Impending Victory
433{
434 bool Validate(SpellInfo const* /*spellInfo*/) override
435 {
437 }
438
440 {
441 Unit* caster = GetCaster();
442 caster->CastSpell(caster, SPELL_WARRIOR_IMPENDING_VICTORY_HEAL, true);
444 }
445
446 void Register() override
447 {
449 }
450};
451
452// 5246 - Intimidating Shout
454{
455 void FilterTargets(std::list<WorldObject*>& unitList)
456 {
457 unitList.remove(GetExplTargetWorldObject());
458 }
459
460 void Register() override
461 {
464 }
465};
466
467// 70844 - Item - Warrior T10 Protection 4P Bonus
469{
470 bool Validate(SpellInfo const* spellInfo) override
471 {
473 && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
474 }
475
476 void HandleProc(ProcEventInfo& eventInfo)
477 {
479
480 Unit* target = eventInfo.GetActionTarget();
481 int32 bp0 = CalculatePct(target->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue());
483 args.AddSpellBP0(bp0);
484 target->CastSpell(nullptr, SPELL_WARRIOR_STOICISM, args);
485 }
486
487 void Register() override
488 {
490 }
491};
492
493// 12294 - Mortal Strike 7.1.5
495{
496 bool Validate(SpellInfo const* /*spellInfo*/) override
497 {
499 }
500
501 void HandleDummy(SpellEffIndex /*effIndex*/)
502 {
503 if (Unit* target = GetHitUnit())
505 }
506
507 void Register() override
508 {
510 }
511};
512
513// 97462 - Rallying Cry
515{
516 bool Validate(SpellInfo const* /*spellInfo*/) override
517 {
519 }
520
521 bool Load() override
522 {
523 return GetCaster()->GetTypeId() == TYPEID_PLAYER;
524 }
525
526 void HandleScript(SpellEffIndex /*effIndex*/)
527 {
529 args.AddSpellMod(SPELLVALUE_BASE_POINT0, int32(GetHitUnit()->CountPctFromMaxHealth(GetEffectValue())));
530
532 }
533
534 void Register() override
535 {
537 }
538};
539
540// 2565 - Shield Block
542{
543 bool Validate(SpellInfo const* /*spellInfo*/) override
544 {
546 }
547
549 {
551 }
552
553 void Register() override
554 {
556 }
557};
558
559// 385952 - Shield Charge
561{
562 bool Validate(SpellInfo const* /*spellInfo*/) override
563 {
565 }
566
567 void HandleDummy(SpellEffIndex /*effIndex*/)
568 {
570 }
571
572 void Register() override
573 {
575 }
576};
577
578// 46968 - Shockwave
580{
581 bool Validate(SpellInfo const* spellInfo) override
582 {
584 && ValidateSpellEffect({ { spellInfo->Id, EFFECT_3 } });
585 }
586
587 bool Load() override
588 {
589 return GetCaster()->GetTypeId() == TYPEID_PLAYER;
590 }
591
592 void HandleStun(SpellEffIndex /*effIndex*/)
593 {
595 ++_targetCount;
596 }
597
598 // Cooldown reduced by 20 sec if it strikes at least 3 targets.
600 {
601 if (_targetCount >= uint32(GetEffectInfo(EFFECT_0).CalcValue()))
603 }
604
605 void Register() override
606 {
609 }
610
612};
613
614// 107570 - Storm Bolt
616{
617 bool Validate(SpellInfo const* /*spellInfo*/) override
618 {
619 return ValidateSpellInfo
620 ({
622 });
623 }
624
625 void HandleOnHit(SpellEffIndex /*effIndex*/)
626 {
628 }
629
630 void Register() override
631 {
633 }
634};
635
636// 384041 - Strategist
638{
639 bool Validate(SpellInfo const* /*spellInfo*/) override
640 {
643 }
644
645 static bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& /*procEvent*/)
646 {
647 return roll_chance_i(aurEff->GetAmount());
648 }
649
650 void HandleCooldown(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*procEvent*/) const
651 {
652 Unit* caster = GetTarget();
655 }
656
657 void Register() override
658 {
661 }
662};
663
664// 52437 - Sudden Death
666{
667 bool Validate(SpellInfo const* /*spellInfo*/) override
668 {
670 }
671
672 void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
673 {
674 // Remove cooldown on Colossus Smash
675 if (Player* player = GetTarget()->ToPlayer())
676 player->GetSpellHistory()->ResetCooldown(SPELL_WARRIOR_COLOSSUS_SMASH, true);
677 }
678
679 void Register() override
680 {
682 }
683};
684
685// 12328, 18765, 35429 - Sweeping Strikes
687{
688 bool Validate(SpellInfo const* /*spellInfo*/) override
689 {
691 }
692
693 bool CheckProc(ProcEventInfo& eventInfo)
694 {
695 _procTarget = eventInfo.GetActor()->SelectNearbyTarget(eventInfo.GetProcTarget());
696 return _procTarget != nullptr;
697 }
698
699 void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
700 {
702 if (DamageInfo* damageInfo = eventInfo.GetDamageInfo())
703 {
704 SpellInfo const* spellInfo = damageInfo->GetSpellInfo();
706 {
707 // If triggered by Execute (while target is not under 20% hp) or Bladestorm deals normalized weapon damage
709 }
710 else
711 {
712 CastSpellExtraArgs args(aurEff);
713 args.AddSpellMod(SPELLVALUE_BASE_POINT0, damageInfo->GetDamage());
715 }
716 }
717 }
718
719 void Register() override
720 {
723 }
724
725 Unit* _procTarget = nullptr;
726};
727
728// 215538 - Trauma
730{
731 bool Validate(SpellInfo const* /*spellInfo*/) override
732 {
734 }
735
736 void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
737 {
738 Unit* target = eventInfo.GetActionTarget();
739 //Get 25% of damage from the spell casted (Slam & Whirlwind) plus Remaining Damage from Aura
740 int32 damage = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()) / sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_TRAUMA_EFFECT, GetCastDifficulty())->GetMaxTicks());
744 }
745
746 void Register() override
747 {
749 }
750};
751
752// 28845 - Cheat Death
754{
755 bool CheckProc(ProcEventInfo& eventInfo)
756 {
757 if (eventInfo.GetActionTarget()->HealthBelowPct(20))
758 return true;
759
760 DamageInfo* damageInfo = eventInfo.GetDamageInfo();
761 if (damageInfo && damageInfo->GetDamage())
762 if (GetTarget()->HealthBelowPctDamaged(20, damageInfo->GetDamage()))
763 return true;
764
765 return false;
766 }
767
768 void Register() override
769 {
771 }
772};
773
774// 32215 - Victorious State
776{
777 bool Validate(SpellInfo const* /*spellInfo*/) override
778 {
780 }
781
782 void HandleOnProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
783 {
786
788 }
789
790 void Register() override
791 {
793 }
794};
795
796// 34428 - Victory Rush
798{
799 bool Validate(SpellInfo const* /*spellInfo*/) override
800 {
801 return ValidateSpellInfo
802 ({
805 });
806 }
807
809 {
810 Unit* caster = GetCaster();
811 caster->CastSpell(caster, SPELL_WARRIOR_VICTORY_RUSH_HEAL, true);
813 }
814
815 void Register() override
816 {
818 }
819};
820
822{
850}
@ DIFFICULTY_NONE
Definition: DBCEnums.h:874
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:32
@ TYPEID_PLAYER
Definition: ObjectGuid.h:41
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
@ PATHFIND_NOPATH
Definition: PathGenerator.h:47
@ PATHFIND_SHORT
Definition: PathGenerator.h:49
bool roll_chance_i(int chance)
Definition: Random.h:59
#define RegisterSpellScript(spell_script)
Definition: ScriptMgr.h:1369
SpellEffIndex
Definition: SharedDefines.h:29
@ EFFECT_3
Definition: SharedDefines.h:33
@ EFFECT_1
Definition: SharedDefines.h:31
@ EFFECT_0
Definition: SharedDefines.h:30
@ EFFECT_2
Definition: SharedDefines.h:32
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_EFFECT_DUMMY
@ SPELL_EFFECT_JUMP_DEST
@ SPELL_EFFECT_CHARGE
@ POWER_RAGE
SpellCastResult
@ SPELL_FAILED_ROOTED
@ SPELL_FAILED_OUT_OF_RANGE
@ SPELL_CAST_OK
@ SPELL_FAILED_NO_VALID_TARGETS
@ SPELL_FAILED_NOPATH
@ AURA_STATE_WOUNDED_20_PERCENT
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_DUMMY
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
Definition: SpellDefines.h:266
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
Definition: SpellDefines.h:252
@ SPELLVALUE_BASE_POINT0
Definition: SpellDefines.h:196
#define sSpellMgr
Definition: SpellMgr.h:849
#define AuraProcFn(F)
Definition: SpellScript.h:2150
#define SpellCheckCastFn(F)
Definition: SpellScript.h:830
#define AuraEffectProcFn(F, I, N)
Definition: SpellScript.h:2160
#define SpellEffectFn(F, I, N)
Definition: SpellScript.h:842
#define SpellObjectAreaTargetSelectFn(F, I, N)
Definition: SpellScript.h:864
#define AuraEffectPeriodicFn(F, I, N)
Definition: SpellScript.h:2046
#define AuraCheckEffectProcFn(F, I, N)
Definition: SpellScript.h:2136
#define SpellCastFn(F)
Definition: SpellScript.h:825
#define AuraCheckProcFn(F)
Definition: SpellScript.h:2130
#define SpellHitFn(F)
Definition: SpellScript.h:854
#define AuraEffectRemoveFn(F, I, N, M)
Definition: SpellScript.h:2040
@ MOVEMENTFLAG_ROOT
Definition: UnitDefines.h:368
T CalculatePct(T base, U pct)
Definition: Util.h:72
int32 GetPeriod() const
int32 GetAmount() const
void PreventDefaultAction()
HookList< CheckEffectProcHandler > DoCheckEffectProc
Definition: SpellScript.h:2135
HookList< EffectPeriodicHandler > OnEffectPeriodic
Definition: SpellScript.h:2045
HookList< EffectApplyHandler > AfterEffectApply
Definition: SpellScript.h:2028
HookList< EffectProcHandler > AfterEffectProc
Definition: SpellScript.h:2159
Unit * GetCaster() const
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
Unit * GetTarget() const
Difficulty GetCastDifficulty() const
HookList< CheckProcHandler > DoCheckProc
Definition: SpellScript.h:2129
HookList< EffectProcHandler > OnEffectProc
Definition: SpellScript.h:2155
HookList< AuraProcHandler > OnProc
Definition: SpellScript.h:2145
uint32 GetDamage() const
Definition: Unit.h:446
TypeID GetTypeId() const
Definition: Object.h:173
static Player * ToPlayer(Object *o)
Definition: Object.h:213
PathType GetPathType() const
Definition: PathGenerator.h:84
void SetPathLengthLimit(float distance)
Definition: PathGenerator.h:73
bool CalculatePath(float destX, float destY, float destZ, bool forceDest=false)
ChrSpecialization GetPrimarySpecialization() const
Definition: Player.h:1841
Unit * GetActionTarget() const
Definition: Unit.h:494
Spell const * GetProcSpell() const
Definition: Unit.h:508
DamageInfo * GetDamageInfo() const
Definition: Unit.h:505
Unit * GetProcTarget() const
Definition: Unit.h:495
Unit * GetActor() const
Definition: Unit.h:493
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
Definition: SpellInfo.cpp:495
void ResetCooldown(uint32 spellId, bool update=false)
void ModifyCooldown(uint32 spellId, Duration cooldownMod, bool withoutCategoryCooldown=false)
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
Definition: SpellInfo.cpp:3768
uint32 const Id
Definition: SpellInfo.h:325
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
Definition: SpellInfo.h:577
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Definition: SpellScript.h:162
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
Definition: SpellScript.h:173
HookList< CastHandler > AfterCast
Definition: SpellScript.h:824
WorldLocation * GetHitDest() const
HookList< CheckCastHandler > OnCheckCast
Definition: SpellScript.h:829
Unit * GetCaster() const
HookList< HitHandler > OnHit
Definition: SpellScript.h:850
HookList< EffectHandler > OnEffectHit
Definition: SpellScript.h:839
Unit * GetHitUnit() const
int32 GetEffectValue() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
Definition: SpellScript.h:840
WorldObject * GetExplTargetWorldObject() const
HookList< EffectHandler > OnEffectLaunchTarget
Definition: SpellScript.h:838
WorldLocation const * GetExplTargetDest() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
Definition: SpellScript.h:863
Optional< int32 > GetPowerTypeCostAmount(Powers power) const
Definition: Spell.cpp:7958
Definition: Unit.h:627
Unit * SelectNearbyTarget(Unit *exclude=nullptr, float dist=NOMINAL_MELEE_RANGE) const
Definition: Unit.cpp:10272
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
Definition: Unit.cpp:11674
bool HealthBelowPct(int32 pct) const
Definition: Unit.h:780
uint64 GetMaxHealth() const
Definition: Unit.h:777
bool HasAuraState(AuraStateType flag, SpellInfo const *spellProto=nullptr, Unit const *Caster=nullptr) const
Definition: Unit.cpp:5961
std::unique_ptr< Movement::MoveSpline > movespline
Definition: Unit.h:1766
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Definition: Unit.cpp:4664
SpellHistory * GetSpellHistory()
Definition: Unit.h:1457
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:3831
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2896
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void Register() override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleDummyTick(AuraEffect const *)
void DropFireVisual(AuraEffect const *aurEff)
void HandleCharge(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void Register() override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *spellInfo) override
void Register() override
void OnProc(AuraEffect const *, ProcEventInfo const &) const
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
void HandleProc(ProcEventInfo &eventInfo)
void AfterJump(SpellEffIndex)
bool Validate(SpellInfo const *) override
SpellCastResult CheckElevation()
bool Validate(SpellInfo const *) override
void Register() override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &unitList)
void HandleProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *spellInfo) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
void Register() override
void Register() override
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleStun(SpellEffIndex)
void Register() override
bool Load() override
bool Validate(SpellInfo const *spellInfo) override
void HandleOnHit(SpellEffIndex)
bool Validate(SpellInfo const *) override
void Register() override
bool Validate(SpellInfo const *) override
void Register() override
void HandleCooldown(AuraEffect const *, ProcEventInfo const &) const
static bool CheckProc(AuraEffect const *aurEff, ProcEventInfo const &)
void HandleApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void Register() override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void Register() override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
void HandleOnProc(AuraEffect *, ProcEventInfo &procInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void Register() override
@ SPELL_WARRIOR_IMPROVED_HEROIC_LEAP
@ SPELL_WARRIOR_BLOODTHIRST_HEAL
@ SPELL_WARRIOR_SHIELD_BLOCK_AURA
@ SPELL_WARRIOR_RALLYING_CRY
@ SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL
@ SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1
@ SPELL_WARRIOR_CHARGE_EFFECT
@ SPELL_WARRIOR_GLYPH_OF_HEROIC_LEAP
@ SPELL_WARRIOR_CHARGE_PAUSE_RAGE_DECAY
@ SPELL_WARRIOR_TAUNT
@ SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE
@ SPELL_WARRIOR_SHIELD_SLAM_MARKER
@ SPELL_WARRIOR_SHOCKWAVE_STUN
@ SPELL_WARRIOR_VICTORY_RUSH_HEAL
@ SPELL_WARRIOR_CHARGE
@ SPELL_WARRIOR_SHIELD_SLAM
@ SPELL_WARRIOR_FUELED_BY_VIOLENCE_HEAL
@ SPELL_WARRIOR_SHIELD_CHARGE_EFFECT
@ SPELL_WARRIOR_STOICISM
@ SPELL_WARRIOR_STORM_BOLT_STUN
@ SPELL_WARRIOR_COLOSSUS_SMASH
@ SPELL_WARRIOR_MORTAL_WOUNDS
@ SPELL_WARRIOR_CHARGE_ROOT_EFFECT
@ SPELL_WARRIOR_STRATEGIST
@ SPELL_WARRIOR_IMPENDING_VICTORY
@ SPELL_WARRIOR_IN_FOR_THE_KILL
@ SPELL_WARRIOR_EXECUTE
@ SPELL_WARRIOR_HEROIC_LEAP_JUMP
@ SPELL_WARRIOR_COLOSSUS_SMASH_AURA
@ SPELL_WARRIOR_CHARGE_EFFECT_BLAZING_TRAIL
@ SPELL_WARRIOR_GLYPH_OF_HEROIC_LEAP_BUFF
@ SPELL_WARRIOR_IMPENDING_VICTORY_HEAL
@ SPELL_WARRIOR_BLADESTORM_PERIODIC_WHIRLWIND
@ SPELL_WARRIOR_SHOCKWAVE
@ SPELL_WARRIOR_IGNORE_PAIN
@ SPELL_WARRIOR_TRAUMA_EFFECT
@ SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2
@ SPELL_WARRIOR_VICTORIOUS
@ SPELL_WARRIOR_MORTAL_STRIKE
@ SPELL_WARRIOR_IN_FOR_THE_KILL_HASTE
@ SPELL_WARRIOR_CHARGE_SLOW_EFFECT
void AddSC_warrior_spell_scripts()
WarriorMisc
@ SPELL_VISUAL_BLAZING_CHARGE
CastSpellExtraArgs & AddSpellBP0(int32 val)
Definition: SpellDefines.h:475
CastSpellExtraArgs & AddSpellMod(SpellValueMod mod, int32 val)
Definition: SpellDefines.h:474