Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
SpellAuraEffects.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_SPELLAURAEFFECTS_H
7#define SKYFIRE_SPELLAURAEFFECTS_H
8
9class Unit;
10class AuraEffect;
11class Aura;
12
13#include "SpellAuras.h"
14
15typedef void(AuraEffect::* pAuraEffectHandler)(AuraApplication const* aurApp, uint8 mode, bool apply) const;
16
18{
19 friend void Aura::_InitEffects(uint32 effMask, Unit* caster, int32* baseAmount);
20 friend Aura* Unit::_TryStackingOrRefreshingExistingAura(SpellInfo const* newAura, uint32 effMask, Unit* caster, int32* baseAmount, Item* castItem, uint64 casterGUID);
21 friend Aura::~Aura();
22private:
24 explicit AuraEffect(Aura* base, uint8 effIndex, int32* baseAmount, Unit* caster);
25public:
26 Unit* GetCaster() const { return GetBase()->GetCaster(); }
27 uint64 GetCasterGUID() const { return GetBase()->GetCasterGUID(); }
28 Aura* GetBase() const { return m_base; }
29 void GetTargetList(std::list<Unit*>& targetList) const;
30 void GetApplicationList(std::list<AuraApplication*>& applicationList) const;
32
33 SpellInfo const* GetSpellInfo() const { return m_spellInfo; }
34 uint32 GetId() const { return m_spellInfo->Id; }
35 uint32 GetEffIndex() const { return m_effIndex; }
36 int32 GetBaseAmount() const { return m_baseAmount; }
37 int32 GetAmplitude() const { return m_amplitude; }
38
39 int32 GetMiscValueB() const { return m_spellInfo->Effects[m_effIndex].MiscValueB; }
40 int32 GetMiscValue() const { return m_spellInfo->Effects[m_effIndex].MiscValue; }
41 AuraType GetAuraType() const { return (AuraType)m_spellInfo->Effects[m_effIndex].ApplyAuraName; }
42 int32 GetAmount() const { return m_amount; }
43 void SetAmount(int32 amount) { m_amount = amount; m_canBeRecalculated = false; }
44
46 void SetPeriodicTimer(int32 periodicTimer) { m_periodicTimer = periodicTimer; }
47
48 int32 CalculateAmount(Unit* caster);
49 void CalculatePeriodic(Unit* caster, bool resetPeriodicTimer = true, bool load = false);
50 void CalculateSpellMod();
51 void ChangeAmount(int32 newAmount, bool mark = true, bool onStackOrReapply = false);
53 void RecalculateAmount(Unit* caster) { if (!CanBeRecalculated()) return; ChangeAmount(CalculateAmount(caster), false); }
54 bool CanBeRecalculated() const { return m_canBeRecalculated; }
55 void SetCanBeRecalculated(bool val) { m_canBeRecalculated = val; }
56 void HandleEffect(AuraApplication* aurApp, uint8 mode, bool apply);
57 void HandleEffect(Unit* target, uint8 mode, bool apply);
58 void ApplySpellMod(Unit* target, bool apply);
59
60 void Update(uint32 diff, Unit* caster);
61 void UpdatePeriodic(Unit* caster);
62
63 uint32 GetTickNumber() const { return m_tickNumber; }
65 void ResetPeriodic(bool resetPeriodicTimer = false) { if (resetPeriodicTimer) m_periodicTimer = m_amplitude; m_tickNumber = 0; }
66
67 bool IsPeriodic() const { return m_isPeriodic; }
68 void SetPeriodic(bool isPeriodic) { m_isPeriodic = isPeriodic; }
69 bool IsAffectingSpell(SpellInfo const* spell) const;
70 bool HasSpellClassMask() const { return m_spellInfo->Effects[m_effIndex].SpellClassMask; }
71
72 void SendTickImmune(Unit* target, Unit* caster) const;
73 void PeriodicTick(AuraApplication* aurApp, Unit* caster) const;
74
75 void HandleProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
76
77 void CleanupTriggeredSpells(Unit* target);
78
79 // add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras
80 void HandleShapeshiftBoosts(Unit* target, bool apply) const;
81private:
82 Aura* const m_base;
83 SpellInfo const* const m_spellInfo;
85
87
89
93
97private:
98 bool IsPeriodicTickCrit(Unit* target, Unit const* caster) const;
99
100public:
101 // aura effect apply/remove handlers
102 void HandleNULL(AuraApplication const* aurApp, uint8 mode, bool apply) const;
103 void HandleUnused(AuraApplication const* aurApp, uint8 mode, bool apply) const;
104 void HandleNoImmediateEffect(AuraApplication const* aurApp, uint8 mode, bool apply) const;
105 // visibility & phases
106 void HandleModInvisibilityDetect(AuraApplication const* aurApp, uint8 mode, bool apply) const;
107 void HandleModInvisibility(AuraApplication const* aurApp, uint8 mode, bool apply) const;
108 void HandleModStealth(AuraApplication const* aurApp, uint8 mode, bool apply) const;
109 void HandleModStealthLevel(AuraApplication const* aurApp, uint8 mode, bool apply) const;
110 void HandleModStealthDetect(AuraApplication const* aurApp, uint8 mode, bool apply) const;
111 void HandleSpiritOfRedemption(AuraApplication const* aurApp, uint8 mode, bool apply) const;
112 void HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool apply) const;
113 void HandlePhase(AuraApplication const* aurApp, uint8 mode, bool apply) const;
114 void HandlePhaseGroup(AuraApplication const* aurApp, uint8 mode, bool apply) const;
115 // unit model
116 void HandleAuraModShapeshift(AuraApplication const* aurApp, uint8 mode, bool apply) const;
117 void HandleAuraTransform(AuraApplication const* aurApp, uint8 mode, bool apply) const;
118 void HandleAuraModScale(AuraApplication const* aurApp, uint8 mode, bool apply) const;
119 void HandleAuraCloneCaster(AuraApplication const* aurApp, uint8 mode, bool apply) const;
120 // fight
121 void HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, bool apply) const;
122 void HandleModUnattackable(AuraApplication const* aurApp, uint8 mode, bool apply) const;
123 void HandleAuraModDisarm(AuraApplication const* aurApp, uint8 mode, bool apply) const;
124 void HandleAuraModSilence(AuraApplication const* aurApp, uint8 mode, bool apply) const;
125 void HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode, bool apply) const;
126 void HandleAuraModPacifyAndSilence(AuraApplication const* aurApp, uint8 mode, bool apply) const;
127 void HandleAuraAllowOnlyAbility(AuraApplication const* aurApp, uint8 mode, bool apply) const;
128 // tracking
129 void HandleAuraTrackResources(AuraApplication const* aurApp, uint8 mode, bool apply) const;
130 void HandleAuraTrackCreatures(AuraApplication const* aurApp, uint8 mode, bool apply) const;
131 void HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
132 void HandleAuraModStalked(AuraApplication const* aurApp, uint8 mode, bool apply) const;
133 void HandleAuraUntrackable(AuraApplication const* aurApp, uint8 mode, bool apply) const;
134 // skills & talents
135 void HandleAuraModPetTalentsPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const;
136 void HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, bool apply) const;
137 // movement
138 void HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const;
139 void HandleAuraAllowFlight(AuraApplication const* aurApp, uint8 mode, bool apply) const;
140 void HandleAuraWaterWalk(AuraApplication const* aurApp, uint8 mode, bool apply) const;
141 void HandleAuraFeatherFall(AuraApplication const* aurApp, uint8 mode, bool apply) const;
142 void HandleAuraHover(AuraApplication const* aurApp, uint8 mode, bool apply) const;
143 void HandleWaterBreathing(AuraApplication const* aurApp, uint8 mode, bool apply) const;
144 void HandleForceMoveForward(AuraApplication const* aurApp, uint8 mode, bool apply) const;
145 // threat
146 void HandleModThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
147 void HandleAuraModTotalThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
148 void HandleModTaunt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
149 // control
150 void HandleModConfuse(AuraApplication const* aurApp, uint8 mode, bool apply) const;
151 void HandleModFear(AuraApplication const* aurApp, uint8 mode, bool apply) const;
152 void HandleAuraModStun(AuraApplication const* aurApp, uint8 mode, bool apply) const;
153 void HandleAuraModRoot(AuraApplication const* aurApp, uint8 mode, bool apply) const;
154 void HandlePreventFleeing(AuraApplication const* aurApp, uint8 mode, bool apply) const;
155 // charm
156 void HandleModPossess(AuraApplication const* aurApp, uint8 mode, bool apply) const;
157 void HandleModPossessPet(AuraApplication const* aurApp, uint8 mode, bool apply) const;
158 void HandleModCharm(AuraApplication const* aurApp, uint8 mode, bool apply) const;
159 void HandleCharmConvert(AuraApplication const* aurApp, uint8 mode, bool apply) const;
160 void HandleAuraControlVehicle(AuraApplication const* aurApp, uint8 mode, bool apply) const;
161 // modify speed
162 void HandleAuraModIncreaseSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
163 void HandleAuraModIncreaseMountedSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
164 void HandleAuraModIncreaseFlightSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
165 void HandleAuraModIncreaseSwimSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
166 void HandleAuraModDecreaseSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
167 void HandleAuraModUseNormalSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
168 // immunity
169 void HandleModStateImmunityMask(AuraApplication const* aurApp, uint8 mode, bool apply) const;
170 void HandleModMechanicImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
171 void HandleAuraModEffectImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
172 void HandleAuraModStateImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
173 void HandleAuraModSchoolImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
174 void HandleAuraModDmgImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
175 void HandleAuraModDispelImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
176 // modify stats
177 // resistance
178 void HandleAuraModResistanceExclusive(AuraApplication const* aurApp, uint8 mode, bool apply) const;
179 void HandleAuraModResistance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
180 void HandleAuraModBaseResistancePCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
181 void HandleModResistancePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
182 void HandleModBaseResistance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
183 void HandleModTargetResistance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
184 // stat
185 void HandleAuraModStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
186 void HandleModPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
187 void HandleModSpellDamagePercentFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
188 void HandleModSpellHealingPercentFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
189
190 void HandleModHealingDone(AuraApplication const* aurApp, uint8 mode, bool apply) const;
191 void HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
192 void HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool apply) const;
193 // heal and energize
194 void HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
195 void HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
196
197 void HandleAuraModIncreaseHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const;
198 void HandleAuraModIncreaseMaxHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const;
199 void HandleAuraModIncreaseMaxPowerFlat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
200 void HandleAuraModIncreaseEnergyPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
201 void HandleAuraModIncreaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
202 void HandleAuraIncreaseBaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
203 // fight
204 void HandleAuraMastery(AuraApplication const* aurApp, uint8 mode, bool apply) const;
205 void HandleAuraModParryPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
206 void HandleAuraModDodgePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
207 void HandleAuraModBlockPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
208 void HandleAuraModRegenInterrupt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
209 void HandleAuraModWeaponCritPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
210 void HandleModHitChance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
211 void HandleModSpellHitChance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
212 void HandleModSpellCritChance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
213
214 void HandleAuraModCritPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
215 // attack speed
216 void HandleModCastingSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
217 void HandleModMeleeRangedSpeedPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
218 void HandleModCombatSpeedPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
219 void HandleModAttackSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
220 void HandleModMeleeSpeedPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
221 void HandleAuraModRangedHaste(AuraApplication const* aurApp, uint8 mode, bool apply) const;
222 // combat rating
223 void HandleModRating(AuraApplication const* aurApp, uint8 mode, bool apply) const;
224 void HandleModRatingFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
225 // attack power
226 void HandleAuraModAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
227 void HandleAuraModRangedAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
228 void HandleAuraModAttackPowerPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
229 void HandleAuraModRangedAttackPowerPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
230
231 // damage bonus
232 void HandleModDamageDone(AuraApplication const* aurApp, uint8 mode, bool apply) const;
233 void HandleModDamagePercentDone(AuraApplication const* aurApp, uint8 mode, bool apply) const;
234 void HandleModOffhandDamagePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
235 void HandleShieldBlockValue(AuraApplication const* aurApp, uint8 mode, bool apply) const;
236 // power cost
237 void HandleModPowerCostPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
238 void HandleModPowerCost(AuraApplication const* aurApp, uint8 mode, bool apply) const;
239 void HandleArenaPreparation(AuraApplication const* aurApp, uint8 mode, bool apply) const;
240
241 void HandleAuraRetainComboPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const;
242 // others
243 void HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool apply) const;
244 void HandleChannelDeathItem(AuraApplication const* aurApp, uint8 mode, bool apply) const;
245 void HandleBindSight(AuraApplication const* aurApp, uint8 mode, bool apply) const;
246 void HandleForceReaction(AuraApplication const* aurApp, uint8 mode, bool apply) const;
247 void HandleAuraEmpathy(AuraApplication const* aurApp, uint8 mode, bool apply) const;
248 void HandleAuraModFaction(AuraApplication const* aurApp, uint8 mode, bool apply) const;
249 void HandleComprehendLanguage(AuraApplication const* aurApp, uint8 mode, bool apply) const;
250 void HandleAuraConvertRune(AuraApplication const* aurApp, uint8 mode, bool apply) const;
251 void HandleAuraLinked(AuraApplication const* aurApp, uint8 mode, bool apply) const;
252
253 void HandleAuraModFakeInebriation(AuraApplication const* aurApp, uint8 mode, bool apply) const;
254 void HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 mode, bool apply) const;
255 void HandleAuraSetVehicle(AuraApplication const* aurApp, uint8 mode, bool apply) const;
256 void HandlePreventResurrection(AuraApplication const* aurApp, uint8 mode, bool apply) const;
257 void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const;
258 void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
259 void HandleOverrideSpellPowerByAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
260 void HandleAuraOverrideAutoattackWithSpell(AuraApplication const* aurApp, uint8 mode, bool apply) const;
261 void HandleOverrideAttackPowerBySpellPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
262
263 // aura effect periodic tick handlers
264 void HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const;
265 void HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster) const;
266 void HandlePeriodicTriggerSpellWithValueAuraTick(Unit* target, Unit* caster) const;
267 void HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const;
268 void HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) const;
269 void HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster) const;
270 void HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const;
271 void HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) const;
272 void HandleObsModPowerAuraTick(Unit* target, Unit* caster) const;
273 void HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) const;
274 void HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) const;
275
276 // aura effect proc handlers
282
283
284 void HandlePlayScene(AuraApplication const* aurApp, uint8 mode, bool apply) const;
285};
286
287namespace Skyfire
288{
289 // Binary predicate for sorting the priority of absorption aura effects
291 {
292 public:
294 bool operator() (AuraEffect* aurEffA, AuraEffect* aurEffB) const
295 {
296 SpellInfo const* spellProtoA = aurEffA->GetSpellInfo();
297 SpellInfo const* spellProtoB = aurEffB->GetSpellInfo();
298
299 // Wards
300 if ((spellProtoA->SpellFamilyName == SPELLFAMILY_MAGE) ||
301 (spellProtoA->SpellFamilyName == SPELLFAMILY_WARLOCK))
302 if (spellProtoA->GetCategory() == 56)
303 return true;
304 if ((spellProtoB->SpellFamilyName == SPELLFAMILY_MAGE) ||
305 (spellProtoB->SpellFamilyName == SPELLFAMILY_WARLOCK))
306 if (spellProtoB->GetCategory() == 56)
307 return false;
308
309 // Sacred Shield
310 if (spellProtoA->Id == 58597)
311 return true;
312 if (spellProtoB->Id == 58597)
313 return false;
314
315 // Fel Blossom
316 if (spellProtoA->Id == 28527)
317 return true;
318 if (spellProtoB->Id == 28527)
319 return false;
320
321 // Divine Aegis
322 if (spellProtoA->Id == 47753)
323 return true;
324 if (spellProtoB->Id == 47753)
325 return false;
326
327 // Ice Barrier
328 if (spellProtoA->GetCategory() == 471)
329 return true;
330 if (spellProtoB->GetCategory() == 471)
331 return false;
332
333 // Sacrifice
334 if ((spellProtoA->SpellFamilyName == SPELLFAMILY_WARLOCK) &&
335 (spellProtoA->SpellIconID == 693))
336 return true;
337 if ((spellProtoB->SpellFamilyName == SPELLFAMILY_WARLOCK) &&
338 (spellProtoB->SpellIconID == 693))
339 return false;
340
341 return false;
342 }
343 };
344}
345#endif
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
@ SPELLFAMILY_WARLOCK
@ SPELLFAMILY_MAGE
void(AuraEffect::* pAuraEffectHandler)(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDecreaseSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModBlockPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePreventFleeing(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleNoImmediateEffect(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModShapeshift(AuraApplication const *aurApp, uint8 mode, bool apply) const
void GetTargetList(std::list< Unit * > &targetList) const
void ChangeAmount(int32 newAmount, bool mark=true, bool onStackOrReapply=false)
void HandleEnableAltPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModStun(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModHealingDone(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraRetainComboPoints(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModRatingFromStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDispelImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint32 GetTickNumber() const
void HandlePeriodicPowerBurnAuraTick(Unit *target, Unit *caster) const
SpellInfo const * GetSpellInfo() const
AuraType GetAuraType() const
void HandleAuraTrackResources(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModDamagePercentDone(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModEffectImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModThreat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleNULL(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerCostPCT(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraEmpathy(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraCloneCaster(AuraApplication const *aurApp, uint8 mode, bool apply) const
void Update(uint32 diff, Unit *caster)
void HandleAuraFeatherFall(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleOverrideAttackPowerBySpellPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicManaLeechAuraTick(Unit *target, Unit *caster) const
bool CanBeRecalculated() const
void HandleModCombatSpeedPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
SpellModifier * m_spellmod
void HandleModFear(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModFaction(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRangedAttackPowerPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void ApplySpellMod(Unit *target, bool apply)
void HandleObsModPowerAuraTick(Unit *target, Unit *caster) const
void HandleAuraSetVehicle(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 m_periodicTimer
void HandleAuraModIncreaseHealthPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
bool m_canBeRecalculated
void HandleAuraModResistanceExclusive(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint8 const m_effIndex
void HandlePeriodicHealthFunnelAuraTick(Unit *target, Unit *caster) const
void HandleAuraModRangedAttackPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPossessPet(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleForceReaction(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDodgePercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicHealAurasTick(Unit *target, Unit *caster) const
void HandleAuraModDmgImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModPetTalentsPoints(AuraApplication const *aurApp, uint8 mode, bool apply) const
void GetApplicationList(std::list< AuraApplication * > &applicationList) const
void HandleModDamageDone(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModAttackPowerPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleSpiritOfRedemption(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModTaunt(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseMountedSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseHealth(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetAmplitude() const
void HandleArenaPreparation(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModSchoolImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModMeleeSpeedPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicEnergizeAuraTick(Unit *target, Unit *caster) const
void HandleModPowerRegen(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModInvisibilityDetect(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicTriggerSpellAuraTick(Unit *target, Unit *caster) const
void HandleAuraModWeaponCritPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModTotalThreat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModRating(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraIncreaseBaseHealthPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void RecalculateAmount(Unit *caster)
bool IsPeriodicTickCrit(Unit *target, Unit const *caster) const
void HandleAuraMounted(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicDummyAuraTick(Unit *target, Unit *caster) const
uint32 GetId() const
void HandleAuraModRangedHaste(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraControlVehicle(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModBaseResistance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleShapeshiftBoosts(Unit *target, bool apply) const
int32 CalculateAmount(Unit *caster)
int32 GetTotalTicks() const
void HandlePreventResurrection(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraAllowFlight(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerCost(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModSkill(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModFakeInebriation(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePlayScene(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetPeriodicTimer() const
void HandleAuraMastery(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleRaidProcFromChargeAuraProc(AuraApplication *aurApp, ProcEventInfo &eventInfo)
void HandlePeriodicHealthLeechAuraTick(Unit *target, Unit *caster) const
void HandleEffect(AuraApplication *aurApp, uint8 mode, bool apply)
AuraEffect(Aura *base, uint8 effIndex, int32 *baseAmount, Unit *caster)
bool IsAffectingSpell(SpellInfo const *spell) const
bool IsPeriodic() const
void HandleModStateImmunityMask(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraGhost(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraAllowOnlyAbility(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPercentStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleProcTriggerSpellWithValueAuraProc(AuraApplication *aurApp, ProcEventInfo &eventInfo)
void CalculatePeriodic(Unit *caster, bool resetPeriodicTimer=true, bool load=false)
void HandleAuraModStateImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetMiscValueB() const
void HandleAuraModExpertise(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraTransform(AuraApplication const *aurApp, uint8 mode, bool apply) const
void SetPeriodic(bool isPeriodic)
void HandleAuraModDisarm(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModOffhandDamagePercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicDamageAurasTick(Unit *target, Unit *caster) const
void HandleAuraTrackStealthed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModUnattackable(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModMeleeRangedSpeedPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
void SendTickImmune(Unit *target, Unit *caster) const
void HandleComprehendLanguage(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleOverrideSpellPowerByAttackPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void SetAmount(int32 amount)
void HandleCharmConvert(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseSwimSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModCastingSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseMaxHealth(AuraApplication const *aurApp, uint8 mode, bool apply) const
Unit * GetCaster() const
void HandleModStealthLevel(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModTargetResistance(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetMiscValue() const
void HandleModConfuse(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModTotalPercentStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModStealthDetect(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellCritChance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModScale(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraConvertRune(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleChannelDeathItem(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraOverrideAutoattackWithSpell(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRoot(AuraApplication const *aurApp, uint8 mode, bool apply) const
Aura * GetBase() const
void HandleAuraModStalked(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraDummy(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleFeignDeath(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint32 GetEffIndex() const
uint32 m_tickNumber
int32 const m_baseAmount
void SetPeriodicTimer(int32 periodicTimer)
void HandleAuraModParryPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseMaxPowerFlat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleProcTriggerDamageAuraProc(AuraApplication *aurApp, ProcEventInfo &eventInfo)
void HandleModSpellDamagePercentFromStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void CleanupTriggeredSpells(Unit *target)
void HandleShieldBlockValue(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModCharm(AuraApplication const *aurApp, uint8 mode, bool apply) const
bool HasSpellClassMask() const
void HandleRaidProcFromChargeWithValueAuraProc(AuraApplication *aurApp, ProcEventInfo &eventInfo)
SpellInfo const *const m_spellInfo
void HandleAuraModAttackPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleUnused(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModSilence(AuraApplication const *aurApp, uint8 mode, bool apply) const
void ResetPeriodic(bool resetPeriodicTimer=false)
int32 GetBaseAmount() const
void HandleAuraModBaseResistancePCT(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellHealingPercentFromStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellHitChance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleProc(AuraApplication *aurApp, ProcEventInfo &eventInfo)
void HandleAuraModStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleForceMoveForward(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRegenInterrupt(AuraApplication const *aurApp, uint8 mode, bool apply) const
void RecalculateAmount()
void HandleAuraUntrackable(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModResistance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleWaterBreathing(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModUseNormalSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModResistancePercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModPacifyAndSilence(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePhase(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModMechanicImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModStealth(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraForceWeather(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraHover(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint64 GetCasterGUID() const
void HandleBindSight(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseFlightSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerRegenPCT(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModAttackSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModPacify(AuraApplication const *aurApp, uint8 mode, bool apply) const
void PeriodicTick(AuraApplication *aurApp, Unit *caster) const
void HandleAuraOverrideSpells(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraWaterWalk(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraTrackCreatures(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePeriodicTriggerSpellWithValueAuraTick(Unit *target, Unit *caster) const
void HandleAuraModCritPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
SpellModifier * GetSpellModifier() const
void HandleAuraLinked(AuraApplication const *aurApp, uint8 mode, bool apply) const
void SetCanBeRecalculated(bool val)
void HandleProcTriggerSpellAuraProc(AuraApplication *aurApp, ProcEventInfo &eventInfo)
void HandleModHitChance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseEnergyPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetAmount() const
void HandlePhaseGroup(AuraApplication const *aurApp, uint8 mode, bool apply) const
void UpdatePeriodic(Unit *caster)
void HandleModInvisibility(AuraApplication const *aurApp, uint8 mode, bool apply) const
Aura *const m_base
void HandleModPossess(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint64 GetCasterGUID() const
Definition SpellAuras.h:91
int32 GetMaxDuration() const
Definition SpellAuras.h:115
Unit * GetCaster() const
void _InitEffects(uint32 effMask, Unit *caster, int32 *baseAmount)
virtual ~Aura()
Definition Item.h:202
bool operator()(AuraEffect *aurEffA, AuraEffect *aurEffB) const
uint32 GetCategory() const
uint32 Id
Definition SpellInfo.h:160
uint32 SpellIconID
Definition SpellInfo.h:220
uint32 SpellFamilyName
Definition SpellInfo.h:226
Definition Unit.h:1367
Aura * _TryStackingOrRefreshingExistingAura(SpellInfo const *newAura, uint32 effMask, Unit *caster, int32 *baseAmount=NULL, Item *castItem=NULL, uint64 casterGUID=0)