TrinityCore
spell_azerite.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#include "ScriptMgr.h"
19#include "AzeritePackets.h"
20#include "Containers.h"
21#include "Player.h"
22#include "Spell.h"
23#include "SpellAuraEffects.h"
24#include "SpellInfo.h"
25#include "SpellMgr.h"
26#include "SpellScript.h"
27
29{
30 bool Validate(SpellInfo const* spellInfo) override
31 {
32 return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_1).TriggerSpell });
33 }
34
35 void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
36 {
37 if (Unit* caster = GetCaster())
38 {
39 amount = 0;
40 canBeRecalculated = false;
41 for (auto const& [_, aurApp] : Trinity::Containers::MapEqualRange(caster->GetAppliedAuras(), GetEffectInfo(EFFECT_1).TriggerSpell))
42 if (aurApp->HasEffect(EFFECT_0))
43 amount += aurApp->GetBase()->GetEffect(EFFECT_0)->GetAmount();
44 }
45 }
46
47 void Register() override
48 {
50 }
51};
52
53// 270658 - Azerite Fortification
55{
56 bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
57 {
58 Spell const* procSpell = eventInfo.GetProcSpell();
59 if (!procSpell)
60 return false;
61
62 return procSpell->GetSpellInfo()->HasAura(SPELL_AURA_MOD_STUN)
66 }
67
68 void Register() override
69 {
71 }
72};
73
75{
78};
79
80// 271548 - Strength in Numbers
82{
83 bool Validate(SpellInfo const* /*spellInfo*/) override
84 {
86 }
87
89 {
90 if (AuraEffect const* trait = GetCaster()->GetAuraEffect(SPELL_STRENGTH_IN_NUMBERS_TRAIT, EFFECT_0, GetCaster()->GetGUID()))
93 .AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount())
95 }
96
97 void Register() override
98 {
100 }
101};
102
104{
107};
108
109// 271843 - Blessed Portents
111{
112 bool Validate(SpellInfo const* /*spellInfo*/) override
113 {
115 }
116
117 void CheckProc(AuraEffect* /*aurEff*/, DamageInfo& dmgInfo, uint32& /*absorbAmount*/)
118 {
119 if (GetTarget()->HealthBelowPctDamaged(50, dmgInfo.GetDamage()))
120 {
121 if (Unit* caster = GetCaster())
122 if (AuraEffect const* trait = caster->GetAuraEffect(SPELL_BLESSED_PORTENTS_TRAIT, EFFECT_0, caster->GetGUID()))
124 .AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount()));
125 }
126 else
128 }
129
130 void Register() override
131 {
133 }
134};
135
137{
139};
140
141// 272260 - Concentrated Mending
143{
144 bool Validate(SpellInfo const* /*spellInfo*/) override
145 {
147 }
148
150 {
151 if (Unit const* caster = GetCaster())
152 if (AuraEffect const* trait = caster->GetAuraEffect(SPELL_CONCENTRATED_MENDING_TRAIT, EFFECT_0, caster->GetGUID()))
153 aurEff->ChangeAmount(trait->GetAmount() * aurEff->GetTickNumber());
154 }
155
156 void Register() override
157 {
159 }
160};
161
163{
168};
169
170// 272276 - Bracing Chill
172{
173 bool Validate(SpellInfo const* /*spellInfo*/) override
174 {
176 }
177
178 bool CheckHealCaster(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
179 {
180 return GetCasterGUID() == eventInfo.GetActor()->GetGUID();
181 }
182
183 void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
184 {
185 Unit* caster = procInfo.GetActor();
186 if (!caster)
187 return;
188
189 if (AuraEffect const* trait = caster->GetAuraEffect(SPELL_BRACING_CHILL_TRAIT, EFFECT_0, caster->GetGUID()))
191 CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount()));
192
193 if (GetStackAmount() > 1)
196
197 Remove();
198 }
199
200 void Register() override
201 {
204 }
205};
206
207// 272436 - Bracing Chill
209{
210 void FilterTarget(std::list<WorldObject*>& targets)
211 {
212 if (targets.empty())
213 return;
214
215 std::list<WorldObject*> copy = targets;
217 {
218 return target->IsUnit() && !target->ToUnit()->HasAura(SPELL_BRACING_CHILL, GetCaster()->GetGUID());
219 }, 1);
220
221 if (!copy.empty())
222 {
223 // found a preferred target, use that
224 targets.swap(copy);
225 return;
226 }
227
229 targets.clear();
230 targets.push_back(target);
231 }
232
233 void MoveAura(SpellEffIndex /*effIndex*/)
234 {
237 }
238
239 void Register() override
240 {
243 }
244};
245
246// 272837 - Trample the Weak
248{
249 bool CheckHealthPct(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
250 {
251 return eventInfo.GetActor()->GetHealthPct() > eventInfo.GetActionTarget()->GetHealthPct();
252 }
253
254 void Register() override
255 {
257 }
258};
259
260// 272892 - Wracking Brilliance
262{
263 enum
264 {
266 };
267
268 bool Validate(SpellInfo const* /*spellInfo*/) override
269 {
271 }
272
273 bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
274 {
275 SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
276 if (!spellInfo)
277 return false;
278
279 if (spellInfo->Id != SPELL_AGONY_SOUL_SHARD_GAIN)
280 return false;
281
282 _canTrigger = !_canTrigger; // every other soul shard gain
283 return _canTrigger;
284 }
285
286 void Register() override
287 {
289 }
290
291 bool _canTrigger = true;
292};
293
295{
298
299// 275514 - Orbital Precision
301{
302 bool Validate(SpellInfo const* /*spellInfo*/) override
303 {
305 }
306
307 bool CheckFrozenOrbActive(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
308 {
309 return eventInfo.GetActor()->GetAreaTrigger(SPELL_MAGE_FROZEN_ORB) != nullptr;
310 }
311
312 void Register() override
313 {
315 }
316};
317
319{
322
323// 277966 - Blur of Talons
325{
326 bool Validate(SpellInfo const* /*spellInfo*/) override
327 {
329 }
330
331 bool CheckCoordinatedAssaultActive(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
332 {
333 return eventInfo.GetActor()->HasAura(SPELL_HUNTER_COORDINATED_ASSAULT, eventInfo.GetActor()->GetGUID());
334 }
335
336 void Register() override
337 {
339 }
340};
341
342// 278519 - Divine Right
344{
345 bool CheckHealthPct(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
346 {
347 return eventInfo.GetProcTarget()->HasAuraState(AURA_STATE_WOUNDED_20_PERCENT, eventInfo.GetSpellInfo(), eventInfo.GetActor());
348 }
349
350 void Register() override
351 {
353 }
354};
355
356// 280409 - Blood Rite
358{
359 void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*procInfo*/)
360 {
362 }
363
364 void Register() override
365 {
367 }
368};
369
370// 281843 - Tradewinds
372{
373 enum
374 {
376 };
377
378 bool Validate(SpellInfo const* /*spellInfo*/) override
379 {
381 }
382
383 void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
384 {
385 if (AuraEffect const* trait = GetTarget()->GetAuraEffect(GetEffectInfo(EFFECT_1).TriggerSpell, EFFECT_1))
387 CastSpellExtraArgs(aurEff).AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount()));
388 }
389
390 void Register() override
391 {
393 }
394};
395
396// 287379 - Bastion of Might
398{
399 enum
400 {
402 };
403
404 bool Validate(SpellInfo const* /*spellInfo*/) override
405 {
407 }
408
410 {
412 }
413
414 void Register() override
415 {
417 }
418};
419
420// 287650 - Echoing Blades
422{
423 void PrepareProc(ProcEventInfo& eventInfo)
424 {
425 if (eventInfo.GetProcSpell())
426 {
427 if (eventInfo.GetProcSpell()->m_castId != _lastFanOfKnives)
429
431 }
432 }
433
434 bool CheckFanOfKnivesCounter(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
435 {
436 return aurEff->GetAmount() > 0;
437 }
438
439 void ReduceCounter(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/)
440 {
441 aurEff->SetAmount(aurEff->GetAmount() - 1);
442 }
443
444 void Register() override
445 {
449 }
450
452};
453
454// 287653 - Echoing Blades
456{
457 enum
458 {
460 };
461
462 bool Validate(SpellInfo const* /*spellInfo*/) override
463 {
465 }
466
467 void CalculateDamage(Unit const* /*victim*/, int32& damage, int32& /*flatMod*/, float& /*pctMod*/) const
468 {
469 if (AuraEffect const* trait = GetCaster()->GetAuraEffect(SPELL_ECHOING_BLADES_TRAIT, EFFECT_2))
470 damage = trait->GetAmount() * 2;
471 }
472
473 void ForceCritical(Unit const* /*victim*/, float& critChance)
474 {
475 critChance = 100.0f;
476 }
477
478 void Register() override
479 {
482 }
483};
484
485// 288882 - Hour of Reaping
487{
488 enum
489 {
490 SPELL_DH_SOUL_BARRIER = 263648
491 };
492
493 bool Validate(SpellInfo const* /*spellInfo*/) override
494 {
496 }
497
498 bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
499 {
501 }
502
503 void TriggerSoulBarrier(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/)
504 {
506 }
507
508 void Register() override
509 {
512 }
513};
514
515// 304086 - Azerite Fortification
517{
518 bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
519 {
520 Spell const* procSpell = eventInfo.GetProcSpell();
521 if (!procSpell)
522 return false;
523
524 return procSpell->GetSpellInfo()->HasAura(SPELL_AURA_MOD_STUN)
526 }
527
528 void Register() override
529 {
531 }
532};
533
534// 305723 - Strife (Azerite Essence)
536{
537 bool CheckProc(ProcEventInfo& eventInfo)
538 {
539 if (eventInfo.GetHitMask() & (PROC_HIT_INTERRUPT | PROC_HIT_DISPEL))
540 return true;
541
542 Spell const* procSpell = eventInfo.GetProcSpell();
543 if (!procSpell)
544 return false;
545
546 bool isCrowdControl = procSpell->GetSpellInfo()->HasAura(SPELL_AURA_MOD_CONFUSE)
554
555 if (!isCrowdControl)
556 return false;
557
558 return eventInfo.GetActionTarget()->HasAura([&](Aura const* aura) { return aura->GetCastId() == procSpell->m_castId; });
559 }
560
561 void Register() override
562 {
564 }
565};
566
567// 277253 - Heart of Azeroth
569{
570 void SetEquippedFlag(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/)
571 {
572 SetState(true);
573 }
574
575 void ClearEquippedFlag(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/)
576 {
577 SetState(false);
578 }
579
580 void SetState(bool equipped) const
581 {
582 if (Player* target = GetTarget()->ToPlayer())
583 {
584 target->ApplyAllAzeriteEmpoweredItemMods(equipped);
585
587 statusChanged.IsHeartEquipped = equipped;
588 target->SendDirectMessage(statusChanged.Write());
589 }
590 }
591
592 void Register() override
593 {
596 }
597};
598
599// 315176 - Grasping Tendrils
601{
602 bool Load() override
603 {
604 return GetUnitOwner()->IsPlayer();
605 }
606
607 void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
608 {
609 Player* player = GetUnitOwner()->ToPlayer();
610 amount = std::clamp(10.0f + player->GetRatingBonusValue(CR_CORRUPTION) - player->GetRatingBonusValue(CR_CORRUPTION_RESISTANCE), 0.0f, 99.0f);
611 canBeRecalculated = false;
612 }
613
614 void Register() override
615 {
617 }
618};
619
621{
642
644
646}
int64_t int64
Definition: Define.h:137
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
#define RegisterSpellScript(spell_script)
Definition: ScriptMgr.h:1369
SpellEffIndex
Definition: SharedDefines.h:29
@ EFFECT_1
Definition: SharedDefines.h:31
@ EFFECT_0
Definition: SharedDefines.h:30
@ EFFECT_2
Definition: SharedDefines.h:32
@ TARGET_UNIT_DEST_AREA_ALLY
@ SPELL_EFFECT_DUMMY
@ SPELL_EFFECT_KNOCK_BACK
@ AURA_STATE_WOUNDED_20_PERCENT
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_FEAR
@ SPELL_AURA_MOD_ROOT_2
@ SPELL_AURA_MOD_RATING
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_DUMMY
@ SPELL_AURA_MOD_STUN_DISABLE_GRAVITY
@ SPELL_AURA_MOD_PACIFY
@ SPELL_AURA_MOD_SILENCE
@ SPELL_AURA_MOD_ROOT
@ SPELL_AURA_MOD_PACIFY_SILENCE
@ SPELL_AURA_MOD_DECREASE_SPEED
@ SPELL_AURA_MOD_CONFUSE
@ SPELL_AURA_MOD_STUN
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
Definition: SpellDefines.h:266
@ SPELLVALUE_AURA_STACK
Definition: SpellDefines.h:231
@ SPELLVALUE_BASE_POINT0
Definition: SpellDefines.h:196
@ PROC_HIT_DISPEL
Definition: SpellMgr.h:288
@ PROC_HIT_INTERRUPT
Definition: SpellMgr.h:286
#define AuraProcFn(F)
Definition: SpellScript.h:2150
#define SpellOnCalcCritChanceFn(F)
Definition: SpellScript.h:859
#define AuraEffectProcFn(F, I, N)
Definition: SpellScript.h:2160
#define SpellEffectFn(F, I, N)
Definition: SpellScript.h:842
#define AuraEffectCalcAmountFn(F, I, N)
Definition: SpellScript.h:2058
#define SpellObjectAreaTargetSelectFn(F, I, N)
Definition: SpellScript.h:864
#define AuraCheckEffectProcFn(F, I, N)
Definition: SpellScript.h:2136
#define AuraEffectUpdatePeriodicFn(F, I, N)
Definition: SpellScript.h:2052
#define SpellCalcDamageFn(F)
Definition: SpellScript.h:879
#define AuraEffectAbsorbFn(F, I)
Definition: SpellScript.h:2090
#define AuraEffectApplyFn(F, I, N, M)
Definition: SpellScript.h:2029
#define AuraCheckProcFn(F)
Definition: SpellScript.h:2130
#define SpellHitFn(F)
Definition: SpellScript.h:854
#define AuraEffectRemoveFn(F, I, N, M)
Definition: SpellScript.h:2040
@ CR_CORRUPTION
Definition: Unit.h:322
@ CR_CORRUPTION_RESISTANCE
Definition: Unit.h:323
uint32 GetTickNumber() const
void ChangeAmount(int32 newAmount, bool mark=true, bool onStackOrReapply=false, AuraEffect const *triggeredBy=nullptr)
void SetAmount(int32 amount)
void RecalculateAmount(AuraEffect const *triggeredBy=nullptr)
int32 GetAmount() const
void PreventDefaultAction()
HookList< EffectApplyHandler > AfterEffectRemove
Definition: SpellScript.h:2039
HookList< CheckEffectProcHandler > DoCheckEffectProc
Definition: SpellScript.h:2135
HookList< EffectProcHandler > AfterEffectProc
Definition: SpellScript.h:2159
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
Definition: SpellScript.h:2057
Unit * GetCaster() const
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
Definition: SpellScript.h:2051
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
Definition: SpellScript.h:2089
Aura * GetAura() const
Unit * GetTarget() const
ObjectGuid GetCasterGUID() const
void RefreshDuration()
HookList< CheckProcHandler > DoCheckProc
Definition: SpellScript.h:2129
HookList< EffectApplyHandler > OnEffectRemove
Definition: SpellScript.h:2035
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Unit * GetUnitOwner() const
HookList< AuraProcHandler > DoPrepareProc
Definition: SpellScript.h:2141
uint8 GetStackAmount() const
HookList< EffectApplyHandler > OnEffectApply
Definition: SpellScript.h:2024
ObjectGuid GetCastId() const
Definition: SpellAuras.h:138
uint32 CalcMaxStackAmount() const
uint32 GetDamage() const
Definition: Unit.h:446
bool IsPlayer() const
Definition: Object.h:212
static Unit * ToUnit(Object *o)
Definition: Object.h:225
bool IsUnit() const
Definition: Object.h:224
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:159
static Player * ToPlayer(Object *o)
Definition: Object.h:213
float GetRatingBonusValue(CombatRating cr) const
Definition: Player.cpp:5286
Unit * GetActionTarget() const
Definition: Unit.h:494
Spell const * GetProcSpell() const
Definition: Unit.h:508
ProcFlagsHit GetHitMask() const
Definition: Unit.h:500
SpellInfo const * GetSpellInfo() const
Definition: Unit.cpp:280
Unit * GetProcTarget() const
Definition: Unit.h:495
Unit * GetActor() const
Definition: Unit.h:493
bool HasEffect(SpellEffectName effect) const
Definition: SpellInfo.cpp:1391
uint32 const Id
Definition: SpellInfo.h:325
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
Definition: SpellInfo.h:577
bool HasAura(AuraType aura) const
Definition: SpellInfo.cpp:1400
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< DamageAndHealingCalcHandler > CalcDamage
Definition: SpellScript.h:878
Unit * GetCaster() const
HookList< HitHandler > AfterHit
Definition: SpellScript.h:852
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const
Unit * GetHitUnit() const
SpellValue const * GetSpellValue() const
HookList< EffectHandler > OnEffectHitTarget
Definition: SpellScript.h:840
Spell * GetSpell() const
Definition: SpellScript.h:987
HookList< OnCalcCritChanceHandler > OnCalcCritChance
Definition: SpellScript.h:858
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
Definition: SpellScript.h:863
Definition: Spell.h:255
SpellInfo const * GetSpellInfo() const
Definition: Spell.h:650
ObjectGuid m_castId
Definition: Spell.h:568
Definition: Unit.h:627
float GetHealthPct() const
Definition: Unit.h:784
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
Definition: Unit.cpp:4464
bool HasAuraState(AuraStateType flag, SpellInfo const *spellProto=nullptr, Unit const *Caster=nullptr) const
Definition: Unit.cpp:5961
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Definition: Unit.cpp:4664
AreaTrigger * GetAreaTrigger(uint32 spellId) const
Definition: Unit.cpp:5329
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2896
void CalculateAmount(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
bool Validate(SpellInfo const *spellInfo) override
bool CheckProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void CheckProc(AuraEffect *, DamageInfo &dmgInfo, uint32 &)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &)
void Register() override
bool Validate(SpellInfo const *) override
bool CheckCoordinatedAssaultActive(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool CheckHealCaster(AuraEffect const *, ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *, ProcEventInfo &procInfo)
void FilterTarget(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void RecalculateHealAmount(AuraEffect *aurEff)
bool CheckProc(ProcEventInfo &eventInfo)
bool CheckProc(AuraEffect const *, ProcEventInfo &eventInfo)
void CalcAmount(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
bool CheckHealthPct(AuraEffect const *, ProcEventInfo &eventInfo)
void Register() override
bool Validate(SpellInfo const *) override
void ForceCritical(Unit const *, float &critChance)
void CalculateDamage(Unit const *, int32 &damage, int32 &, float &) const
void PrepareProc(ProcEventInfo &eventInfo)
bool CheckFanOfKnivesCounter(AuraEffect const *aurEff, ProcEventInfo &)
void ReduceCounter(AuraEffect *aurEff, ProcEventInfo &)
void SetState(bool equipped) const
void SetEquippedFlag(AuraEffect const *, AuraEffectHandleModes)
void ClearEquippedFlag(AuraEffect const *, AuraEffectHandleModes)
bool CheckProc(AuraEffect const *, ProcEventInfo &)
bool Validate(SpellInfo const *) override
void TriggerSoulBarrier(AuraEffect *aurEff, ProcEventInfo &)
bool CheckFrozenOrbActive(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void Register() override
void HandleRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool CheckHealthPct(AuraEffect const *, ProcEventInfo &eventInfo)
bool CheckProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
auto MapEqualRange(M &map, typename M::key_type const &key)
Definition: IteratorPair.h:60
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition: Containers.h:109
void RandomResize(C &container, std::size_t requestedSize)
Definition: Containers.h:67
BracingChill
@ SPELL_BRACING_CHILL
@ SPELL_BRACING_CHILL_SEARCH_JUMP_TARGET
@ SPELL_BRACING_CHILL_TRAIT
@ SPELL_BRACING_CHILL_HEAL
BlessedPortents
@ SPELL_BLESSED_PORTENTS_TRAIT
@ SPELL_BLESSED_PORTENTS_HEAL
ConcentratedMending
@ SPELL_CONCENTRATED_MENDING_TRAIT
void AddSC_azerite_item_spell_scripts()
OrbitalPrecision
@ SPELL_MAGE_FROZEN_ORB
StrengthInNumbers
@ SPELL_STRENGTH_IN_NUMBERS_BUFF
@ SPELL_STRENGTH_IN_NUMBERS_TRAIT
BlurOfTalons
@ SPELL_HUNTER_COORDINATED_ASSAULT
CastSpellExtraArgs & AddSpellMod(SpellValueMod mod, int32 val)
Definition: SpellDefines.h:474