TrinityCore
Loading...
Searching...
No Matches
SpellAuraEffects.h
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#ifndef TRINITY_SPELLAURAEFFECTS_H
19#define TRINITY_SPELLAURAEFFECTS_H
20
21#include "SpellAuras.h"
22
23class AuraEffect;
24class Unit;
25
26typedef void(AuraEffect::*pAuraEffectHandler)(AuraApplication const* aurApp, uint8 mode, bool apply) const;
27
29{
30 friend void Aura::_InitEffects(uint8 effMask, Unit* caster, int32 const* baseAmount);
31 friend Aura::~Aura();
32 friend class Unit;
33
34 private:
36 explicit AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster);
37
38 public:
39 Unit* GetCaster() const { return GetBase()->GetCaster(); }
40 ObjectGuid GetCasterGUID() const { return GetBase()->GetCasterGUID(); }
41 Aura* GetBase() const { return m_base; }
42
43 template <typename Container>
44 void GetTargetList(Container& targetContainer) const;
45
46 template <typename Container>
47 void GetApplicationList(Container& applicationContainer) const;
48
49 SpellInfo const* GetSpellInfo() const { return m_spellInfo; }
50 uint32 GetId() const { return m_spellInfo->Id; }
51 SpellEffIndex GetEffIndex() const { return m_effectInfo.EffectIndex; }
52 int32 GetBaseAmount() const { return m_baseAmount; }
53 int32 GetPeriod() const { return _period; }
54
55 int32 GetMiscValueB() const { return GetSpellEffectInfo().MiscValueB; }
56 int32 GetMiscValue() const { return GetSpellEffectInfo().MiscValue; }
57 AuraType GetAuraType() const { return GetSpellEffectInfo().ApplyAuraName; }
58 int32 GetAmount() const { return _amount; }
59 void SetAmount(int32 amount) { _amount = amount; m_canBeRecalculated = false; }
60
61 int32 GetPeriodicTimer() const { return _periodicTimer; }
62 void SetPeriodicTimer(int32 periodicTimer) { _periodicTimer = periodicTimer; }
63
64 int32 CalculateAmount(Unit* caster);
65 void CalculatePeriodic(Unit* caster, bool resetPeriodicTimer = true, bool load = false);
66 void CalculateSpellMod();
67 void ChangeAmount(int32 newAmount, bool mark = true, bool onStackOrReapply = false);
68 void RecalculateAmount() { if (!CanBeRecalculated()) return; ChangeAmount(CalculateAmount(GetCaster()), false); }
69 void RecalculateAmount(Unit* caster) { if (!CanBeRecalculated()) return; ChangeAmount(CalculateAmount(caster), false); }
70 bool CanBeRecalculated() const { return m_canBeRecalculated; }
71 void SetCanBeRecalculated(bool val) { m_canBeRecalculated = val; }
72 void HandleEffect(AuraApplication * aurApp, uint8 mode, bool apply);
73 void HandleEffect(Unit* target, uint8 mode, bool apply);
74 void ApplySpellMod(Unit* target, bool apply);
75
76 void Update(uint32 diff, Unit* caster);
77
78 uint32 GetTickNumber() const { return _ticksDone; }
79 uint32 GetRemainingTicks() const { return GetTotalTicks() - _ticksDone; }
80 uint32 GetTotalTicks() const;
81 void ResetPeriodic(bool resetPeriodicTimer = false);
82 void ResetTicks() { _ticksDone = 0; }
83
84 bool IsPeriodic() const { return m_isPeriodic; }
85 void SetPeriodic(bool isPeriodic) { m_isPeriodic = isPeriodic; }
86 bool IsAffectingSpell(SpellInfo const* spell) const;
87 bool HasSpellClassMask() const { return GetSpellEffectInfo().SpellClassMask; }
88
89 void SendTickImmune(Unit* target, Unit* caster) const;
90 void PeriodicTick(AuraApplication* aurApp, Unit* caster) const;
91
92 bool CheckEffectProc(AuraApplication* aurApp, ProcEventInfo& eventInfo) const;
93 void HandleProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
94
95 void CleanupTriggeredSpells(Unit* target);
96
97 // add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras
98 void HandleShapeshiftBoosts(Unit* target, bool apply) const;
99
100 SpellEffectInfo const& GetSpellEffectInfo() const { return m_effectInfo; }
101
102 private:
103 Aura* const m_base;
104
105 SpellInfo const* const m_spellInfo;
107
109
112
113 // periodic stuff
115 int32 _period; // time between consecutive ticks
116 uint32 _ticksDone; // ticks counter
117
120
121 float GetCritChanceFor(Unit const* caster, Unit const* target) const;
122
123 public:
124 // aura effect apply/remove handlers
125 void HandleNULL(AuraApplication const* /*aurApp*/, uint8 /*mode*/, bool /*apply*/) const
126 {
127 // not implemented
128 }
129 void HandleUnused(AuraApplication const* /*aurApp*/, uint8 /*mode*/, bool /*apply*/) const
130 {
131 // useless
132 }
133 void HandleNoImmediateEffect(AuraApplication const* /*aurApp*/, uint8 /*mode*/, bool /*apply*/) const
134 {
135 // aura type not have immediate effect at add/remove and handled by ID in other code place
136 }
137 // visibility & phases
138 void HandleModInvisibilityDetect(AuraApplication const* aurApp, uint8 mode, bool apply) const;
139 void HandleModInvisibility(AuraApplication const* aurApp, uint8 mode, bool apply) const;
140 void HandleModStealth(AuraApplication const* aurApp, uint8 mode, bool apply) const;
141 void HandleModStealthLevel(AuraApplication const* aurApp, uint8 mode, bool apply) const;
142 void HandleModStealthDetect(AuraApplication const* aurApp, uint8 mode, bool apply) const;
143 void HandleDetectAmore(AuraApplication const* aurApp, uint8 mode, bool apply) const;
144 void HandleSpiritOfRedemption(AuraApplication const* aurApp, uint8 mode, bool apply) const;
145 void HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool apply) const;
146 void HandlePhase(AuraApplication const* aurApp, uint8 mode, bool apply) const;
147 // unit model
148 void HandleAuraModShapeshift(AuraApplication const* aurApp, uint8 mode, bool apply) const;
149 void HandleAuraTransform(AuraApplication const* aurApp, uint8 mode, bool apply) const;
150 void HandleAuraModScale(AuraApplication const* aurApp, uint8 mode, bool apply) const;
151 void HandleAuraCloneCaster(AuraApplication const* aurApp, uint8 mode, bool apply) const;
152 // fight
153 void HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, bool apply) const;
154 void HandleModUnattackable(AuraApplication const* aurApp, uint8 mode, bool apply) const;
155 void HandleAuraModDisarm(AuraApplication const* aurApp, uint8 mode, bool apply) const;
156 void HandleAuraModSilence(AuraApplication const* aurApp, uint8 mode, bool apply) const;
157 void HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode, bool apply) const;
158 void HandleAuraModPacifyAndSilence(AuraApplication const* aurApp, uint8 mode, bool apply) const;
159 void HandleAuraAllowOnlyAbility(AuraApplication const* aurApp, uint8 mode, bool apply) const;
160 // tracking
161 void HandleAuraTrackResources(AuraApplication const* aurApp, uint8 mode, bool apply) const;
162 void HandleAuraTrackCreatures(AuraApplication const* aurApp, uint8 mode, bool apply) const;
163 void HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
164 void HandleAuraModStalked(AuraApplication const* aurApp, uint8 mode, bool apply) const;
165 void HandleAuraUntrackable(AuraApplication const* aurApp, uint8 mode, bool apply) const;
166 // skills & talents
167 void HandleAuraModPetTalentsPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const;
168 void HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, bool apply) const;
169 // movement
170 void HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const;
171 void HandleAuraAllowFlight(AuraApplication const* aurApp, uint8 mode, bool apply) const;
172 void HandleAuraWaterWalk(AuraApplication const* aurApp, uint8 mode, bool apply) const;
173 void HandleAuraFeatherFall(AuraApplication const* aurApp, uint8 mode, bool apply) const;
174 void HandleAuraHover(AuraApplication const* aurApp, uint8 mode, bool apply) const;
175 void HandleWaterBreathing(AuraApplication const* aurApp, uint8 mode, bool apply) const;
176 void HandleForceMoveForward(AuraApplication const* aurApp, uint8 mode, bool apply) const;
177 // threat
178 void HandleModThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
179 void HandleAuraModTotalThreat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
180 void HandleModTaunt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
181 void HandleModDetaunt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
182 // control
183 void HandleModConfuse(AuraApplication const* aurApp, uint8 mode, bool apply) const;
184 void HandleModFear(AuraApplication const* aurApp, uint8 mode, bool apply) const;
185 void HandleAuraModStun(AuraApplication const* aurApp, uint8 mode, bool apply) const;
186 void HandleAuraModRoot(AuraApplication const* aurApp, uint8 mode, bool apply) const;
187 void HandlePreventFleeing(AuraApplication const* aurApp, uint8 mode, bool apply) const;
188 // charm
189 void HandleModPossess(AuraApplication const* aurApp, uint8 mode, bool apply) const;
190 void HandleModPossessPet(AuraApplication const* aurApp, uint8 mode, bool apply) const;
191 void HandleModCharm(AuraApplication const* aurApp, uint8 mode, bool apply) const;
192 void HandleCharmConvert(AuraApplication const* aurApp, uint8 mode, bool apply) const;
193 void HandleAuraControlVehicle(AuraApplication const* aurApp, uint8 mode, bool apply) const;
194 // modify speed
195 void HandleAuraModIncreaseSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
196 void HandleAuraModIncreaseMountedSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
197 void HandleAuraModIncreaseFlightSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
198 void HandleAuraModIncreaseSwimSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
199 void HandleAuraModDecreaseSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
200 void HandleAuraModUseNormalSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
201 // immunity
202 void HandleModMechanicImmunityMask(AuraApplication const* aurApp, uint8 mode, bool apply) const;
203 void HandleModMechanicImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
204 void HandleAuraModEffectImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
205 void HandleAuraModStateImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
206 void HandleAuraModSchoolImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
207 void HandleAuraModDmgImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
208 void HandleAuraModDispelImmunity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
209 // modify stats
210 // resistance
211 void HandleAuraModResistanceExclusive(AuraApplication const* aurApp, uint8 mode, bool apply) const;
212 void HandleAuraModResistance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
213 void HandleAuraModBaseResistancePCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
214 void HandleModResistancePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
215 void HandleModBaseResistance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
216 void HandleModTargetResistance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
217 // stat
218 void HandleAuraModStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
219 void HandleModPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
220 void HandleModSpellDamagePercentFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
221 void HandleModSpellHealingPercentFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
222 void HandleModSpellDamagePercentFromAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
223 void HandleModSpellHealingPercentFromAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
224 void HandleModHealingDone(AuraApplication const* aurApp, uint8 mode, bool apply) const;
225 void HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
226 void HandleAuraModResistenceOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
227 void HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool apply) const;
228 // heal and energize
229 void HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
230 void HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
231 void HandleModManaRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
232 void HandleAuraModIncreaseHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const;
233 void HandleAuraModIncreaseMaxHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const;
234 void HandleAuraModIncreaseEnergy(AuraApplication const* aurApp, uint8 mode, bool apply) const;
235 void HandleAuraModIncreaseEnergyPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
236 void HandleAuraModIncreaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
237 void HandleAuraIncreaseBaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
238 // fight
239 void HandleAuraModParryPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
240 void HandleAuraModDodgePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
241 void HandleAuraModBlockPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
242 void HandleAuraModRegenInterrupt(AuraApplication const* aurApp, uint8 mode, bool apply) const;
243 void HandleAuraModWeaponCritPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
244 void HandleModSpellHitChance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
245 void HandleModSpellCritChance(AuraApplication const* aurApp, uint8 mode, bool apply) const;
246 void HandleModSpellCritChanceShool(AuraApplication const* aurApp, uint8 mode, bool apply) const;
247 void HandleAuraModCritPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
248 // attack speed
249 void HandleModCastingSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
250 void HandleModMeleeRangedSpeedPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
251 void HandleModCombatSpeedPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
252 void HandleModAttackSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const;
253 void HandleModMeleeSpeedPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
254 void HandleAuraModRangedHaste(AuraApplication const* aurApp, uint8 mode, bool apply) const;
255 void HandleRangedAmmoHaste(AuraApplication const* aurApp, uint8 mode, bool apply) const;
256 // combat rating
257 void HandleModRating(AuraApplication const* aurApp, uint8 mode, bool apply) const;
258 void HandleModRatingFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
259 // attack power
260 void HandleAuraModAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
261 void HandleAuraModRangedAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
262 void HandleAuraModAttackPowerPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
263 void HandleAuraModRangedAttackPowerPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
264 void HandleAuraModRangedAttackPowerOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
265 void HandleAuraModAttackPowerOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
266 // damage bonus
267 void HandleModDamageDone(AuraApplication const* aurApp, uint8 mode, bool apply) const;
268 void HandleModDamagePercentDone(AuraApplication const* aurApp, uint8 mode, bool apply) const;
269 void HandleModOffhandDamagePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
270 void HandleShieldBlockValue(AuraApplication const* aurApp, uint8 mode, bool apply) const;
271 void HandleShieldBlockValuePercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
272 // power cost
273 void HandleModPowerCostPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
274 void HandleModPowerCost(AuraApplication const* aurApp, uint8 mode, bool apply) const;
275 void HandleArenaPreparation(AuraApplication const* aurApp, uint8 mode, bool apply) const;
276 void HandleNoReagentUseAura(AuraApplication const* aurApp, uint8 mode, bool apply) const;
277 void HandleAuraRetainComboPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const;
278 // others
279 void HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool apply) const;
280 void HandleChannelDeathItem(AuraApplication const* aurApp, uint8 mode, bool apply) const;
281 void HandleBindSight(AuraApplication const* aurApp, uint8 mode, bool apply) const;
282 void HandleForceReaction(AuraApplication const* aurApp, uint8 mode, bool apply) const;
283 void HandleAuraEmpathy(AuraApplication const* aurApp, uint8 mode, bool apply) const;
284 void HandleAuraModFaction(AuraApplication const* aurApp, uint8 mode, bool apply) const;
285 void HandleComprehendLanguage(AuraApplication const* aurApp, uint8 mode, bool apply) const;
286 void HandleAuraConvertRune(AuraApplication const* aurApp, uint8 mode, bool apply) const;
287 void HandleAuraLinked(AuraApplication const* aurApp, uint8 mode, bool apply) const;
288 void HandleAuraOpenStable(AuraApplication const* aurApp, uint8 mode, bool apply) const;
289 void HandleAuraModFakeInebriation(AuraApplication const* aurApp, uint8 mode, bool apply) const;
290 void HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 mode, bool apply) const;
291 void HandleAuraPreventRegeneratePower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
292 void HandleAuraSetVehicle(AuraApplication const* aurApp, uint8 mode, bool apply) const;
293 void HandlePreventResurrection(AuraApplication const* aurApp, uint8 mode, bool apply) const;
294
295 // aura effect periodic tick handlers
296 void HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster) const;
297 void HandlePeriodicTriggerSpellWithValueAuraTick(Unit* target, Unit* caster) const;
298 void HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const;
299 void HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) const;
300 void HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster) const;
301 void HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const;
302 void HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) const;
303 void HandleObsModPowerAuraTick(Unit* target, Unit* caster) const;
304 void HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) const;
305 void HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) const;
306 void HandleModAttackPowerOfArmorAuraTick(Unit* target, Unit* caster) const;
307
308 // aura effect proc handlers
309 void HandleBreakableCCAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
310 void HandleProcTriggerSpellAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
311 void HandleProcTriggerSpellWithValueAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
312 void HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
313 void HandleRaidProcFromChargeAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
314 void HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo);
315};
316
317namespace Trinity
318{
319 // Binary predicate for sorting the priority of absorption aura effects
321 {
322 public:
324 bool operator() (AuraEffect* aurEffA, AuraEffect* aurEffB) const
325 {
326 SpellInfo const* spellProtoA = aurEffA->GetSpellInfo();
327 SpellInfo const* spellProtoB = aurEffB->GetSpellInfo();
328
329 // Wards
330 if ((spellProtoA->SpellFamilyName == SPELLFAMILY_MAGE) ||
331 (spellProtoA->SpellFamilyName == SPELLFAMILY_WARLOCK))
332 if (spellProtoA->GetCategory() == 56)
333 return true;
334 if ((spellProtoB->SpellFamilyName == SPELLFAMILY_MAGE) ||
335 (spellProtoB->SpellFamilyName == SPELLFAMILY_WARLOCK))
336 if (spellProtoB->GetCategory() == 56)
337 return false;
338
339 // Sacred Shield
340 if (spellProtoA->Id == 58597)
341 return true;
342 if (spellProtoB->Id == 58597)
343 return false;
344
345 // Fel Blossom
346 if (spellProtoA->Id == 28527)
347 return true;
348 if (spellProtoB->Id == 28527)
349 return false;
350
351 // Divine Aegis
352 if (spellProtoA->Id == 47753)
353 return true;
354 if (spellProtoB->Id == 47753)
355 return false;
356
357 // Ice Barrier
358 if (spellProtoA->GetCategory() == 471)
359 return true;
360 if (spellProtoB->GetCategory() == 471)
361 return false;
362
363 // Sacrifice
364 if ((spellProtoA->SpellFamilyName == SPELLFAMILY_WARLOCK) &&
365 (spellProtoA->SpellIconID == 693))
366 return true;
367 if ((spellProtoB->SpellFamilyName == SPELLFAMILY_WARLOCK) &&
368 (spellProtoB->SpellIconID == 693))
369 return false;
370
371 return false;
372 }
373 };
374}
375#endif
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
SpellEffIndex
@ SPELLFAMILY_WARLOCK
@ SPELLFAMILY_MAGE
void(AuraEffect::* pAuraEffectHandler)(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint32 GetTickNumber() const
SpellInfo const * GetSpellInfo() const
AuraType GetAuraType() const
SpellEffIndex GetEffIndex() const
void HandleNULL(AuraApplication const *, uint8, bool) const
bool CanBeRecalculated() const
SpellModifier * m_spellmod
SpellEffectInfo const & GetSpellEffectInfo() const
void HandleUnused(AuraApplication const *, uint8, bool) const
void HandleNoImmediateEffect(AuraApplication const *, uint8, bool) const
void RecalculateAmount(Unit *caster)
uint32 GetRemainingTicks() const
uint32 GetId() const
int32 GetPeriodicTimer() const
int32 GetPeriod() const
bool IsPeriodic() const
int32 GetMiscValueB() const
void SetPeriodic(bool isPeriodic)
void SetAmount(int32 amount)
Unit * GetCaster() const
int32 GetMiscValue() const
SpellEffectInfo const & m_effectInfo
Aura * GetBase() const
int32 const m_baseAmount
void SetPeriodicTimer(int32 periodicTimer)
bool HasSpellClassMask() const
SpellInfo const *const m_spellInfo
int32 GetBaseAmount() const
ObjectGuid GetCasterGUID() const
void RecalculateAmount()
void SetCanBeRecalculated(bool val)
int32 GetAmount() const
Aura *const m_base
void _InitEffects(uint8 effMask, Unit *caster, int32 const *baseAmount)
virtual ~Aura()
uint32 GetCategory() const
uint32 Id
Definition SpellInfo.h:289
uint32 SpellIconID
Definition SpellInfo.h:349
uint32 SpellFamilyName
Definition SpellInfo.h:356
bool operator()(AuraEffect *aurEffA, AuraEffect *aurEffB) const
Definition Unit.h:769