Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
SpellAuraEffects.cpp
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#include "Battlefield.h"
7#include "BattlefieldMgr.h"
8#include "Battleground.h"
9#include "CellImpl.h"
10#include "Common.h"
11#include "Formulas.h"
12#include "GridNotifiers.h"
13#include "GridNotifiersImpl.h"
14#include "Log.h"
15#include "ObjectAccessor.h"
16#include "ObjectMgr.h"
17#include "Opcodes.h"
18#include "OutdoorPvPMgr.h"
19#include "Pet.h"
20#include "Player.h"
21#include "ReputationMgr.h"
22#include "ScriptMgr.h"
23#include "Spell.h"
24#include "SpellAuraEffects.h"
25#include "SpellMgr.h"
26#include "SpellValidation.h"
27#include "Unit.h"
28#include "Util.h"
29#include "Vehicle.h"
30#include "WeatherMgr.h"
31#include "WorldPacket.h"
32
33class Aura;
34
35//
36// EFFECT HANDLER NOTES
37//
38// in aura handler there should be check for modes:
39// AURA_EFFECT_HANDLE_REAL set
40// AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK set
41// AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK set - aura is recalculated or is just applied/removed - need to redo all things related to m_amount
42// AURA_EFFECT_HANDLE_CHANGE_AMOUNT_SEND_FOR_CLIENT_MASK - logical or of above conditions
43// AURA_EFFECT_HANDLE_STAT - set when stats are reapplied
44// such checks will speedup skyfire change amount/send for client operations
45// because for change amount operation packets will not be send
46// aura effect handlers shouldn't contain any AuraEffect or Aura object modifications
47
49{
50 &AuraEffect::HandleNULL, // 0 SPELL_AURA_NONE
51 &AuraEffect::HandleBindSight, // 1 SPELL_AURA_BIND_SIGHT
52 &AuraEffect::HandleModPossess, // 2 SPELL_AURA_MOD_POSSESS
53 &AuraEffect::HandleNoImmediateEffect, // 3 SPELL_AURA_PERIODIC_DAMAGE implemented in AuraEffect::PeriodicTick
54 &AuraEffect::HandleAuraDummy, // 4 SPELL_AURA_DUMMY
55 &AuraEffect::HandleModConfuse, // 5 SPELL_AURA_MOD_CONFUSE
56 &AuraEffect::HandleModCharm, // 6 SPELL_AURA_MOD_CHARM
57 &AuraEffect::HandleModFear, // 7 SPELL_AURA_MOD_FEAR
58 &AuraEffect::HandleNoImmediateEffect, // 8 SPELL_AURA_PERIODIC_HEAL implemented in AuraEffect::PeriodicTick
59 &AuraEffect::HandleModAttackSpeed, // 9 SPELL_AURA_MOD_ATTACKSPEED
60 &AuraEffect::HandleModThreat, // 10 SPELL_AURA_MOD_THREAT
61 &AuraEffect::HandleModTaunt, // 11 SPELL_AURA_MOD_TAUNT
62 &AuraEffect::HandleAuraModStun, // 12 SPELL_AURA_MOD_STUN
63 &AuraEffect::HandleModDamageDone, // 13 SPELL_AURA_MOD_DAMAGE_DONE
64 &AuraEffect::HandleNoImmediateEffect, // 14 SPELL_AURA_MOD_DAMAGE_TAKEN implemented in Unit::MeleeDamageBonus and Unit::SpellDamageBonus
65 &AuraEffect::HandleNoImmediateEffect, // 15 SPELL_AURA_DAMAGE_SHIELD implemented in Unit::DoAttackDamage
66 &AuraEffect::HandleModStealth, // 16 SPELL_AURA_MOD_STEALTH
67 &AuraEffect::HandleModStealthDetect, // 17 SPELL_AURA_MOD_DETECT
68 &AuraEffect::HandleModInvisibility, // 18 SPELL_AURA_MOD_INVISIBILITY
69 &AuraEffect::HandleModInvisibilityDetect, // 19 SPELL_AURA_MOD_INVISIBILITY_DETECTION
70 &AuraEffect::HandleNoImmediateEffect, // 20 SPELL_AURA_OBS_MOD_HEALTH implemented in AuraEffect::PeriodicTick
71 &AuraEffect::HandleNoImmediateEffect, // 21 SPELL_AURA_OBS_MOD_POWER implemented in AuraEffect::PeriodicTick
72 &AuraEffect::HandleAuraModResistance, // 22 SPELL_AURA_MOD_RESISTANCE
73 &AuraEffect::HandleNoImmediateEffect, // 23 SPELL_AURA_PERIODIC_TRIGGER_SPELL implemented in AuraEffect::PeriodicTick
74 &AuraEffect::HandleNoImmediateEffect, // 24 SPELL_AURA_PERIODIC_ENERGIZE implemented in AuraEffect::PeriodicTick
75 &AuraEffect::HandleAuraModPacify, // 25 SPELL_AURA_MOD_PACIFY
76 &AuraEffect::HandleAuraModRoot, // 26 SPELL_AURA_MOD_ROOT
77 &AuraEffect::HandleAuraModSilence, // 27 SPELL_AURA_MOD_SILENCE
78 &AuraEffect::HandleNoImmediateEffect, // 28 SPELL_AURA_REFLECT_SPELLS implement in Unit::SpellHitResult
79 &AuraEffect::HandleAuraModStat, // 29 SPELL_AURA_MOD_STAT
80 &AuraEffect::HandleAuraModSkill, // 30 SPELL_AURA_MOD_SKILL
81 &AuraEffect::HandleAuraModIncreaseSpeed, // 31 SPELL_AURA_MOD_INCREASE_SPEED
82 &AuraEffect::HandleAuraModIncreaseMountedSpeed, // 32 SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED
83 &AuraEffect::HandleAuraModDecreaseSpeed, // 33 SPELL_AURA_MOD_DECREASE_SPEED
84 &AuraEffect::HandleAuraModIncreaseHealth, // 34 SPELL_AURA_MOD_INCREASE_HEALTH
85 &AuraEffect::HandleAuraModIncreaseMaxPowerFlat, // 35 SPELL_AURA_MOD_INCREASE_MAX_POWER_FLAT
86 &AuraEffect::HandleAuraModShapeshift, // 36 SPELL_AURA_MOD_SHAPESHIFT
87 &AuraEffect::HandleAuraModEffectImmunity, // 37 SPELL_AURA_EFFECT_IMMUNITY
88 &AuraEffect::HandleAuraModStateImmunity, // 38 SPELL_AURA_STATE_IMMUNITY
89 &AuraEffect::HandleAuraModSchoolImmunity, // 39 SPELL_AURA_SCHOOL_IMMUNITY
90 &AuraEffect::HandleAuraModDmgImmunity, // 40 SPELL_AURA_DAMAGE_IMMUNITY
91 &AuraEffect::HandleAuraModDispelImmunity, // 41 SPELL_AURA_DISPEL_IMMUNITY
92 &AuraEffect::HandleNoImmediateEffect, // 42 SPELL_AURA_PROC_TRIGGER_SPELL implemented in Unit::ProcDamageAndSpellFor and Unit::HandleProcTriggerSpell
93 &AuraEffect::HandleNoImmediateEffect, // 43 SPELL_AURA_PROC_TRIGGER_DAMAGE implemented in Unit::ProcDamageAndSpellFor
94 &AuraEffect::HandleAuraTrackCreatures, // 44 SPELL_AURA_TRACK_CREATURES
95 &AuraEffect::HandleAuraTrackResources, // 45 SPELL_AURA_TRACK_RESOURCES
96 &AuraEffect::HandleNULL, // 46 SPELL_AURA_46 (used in spell 48050 and 69715) (5.4.8)
97 &AuraEffect::HandleAuraModParryPercent, // 47 SPELL_AURA_MOD_PARRY_PERCENT
98 &AuraEffect::HandleNULL, // 48 SPELL_AURA_48 spell Napalm (area damage spell with additional delayed damage effect)
99 &AuraEffect::HandleAuraModDodgePercent, // 49 SPELL_AURA_MOD_DODGE_PERCENT
100 &AuraEffect::HandleNoImmediateEffect, // 50 SPELL_AURA_MOD_CRITICAL_HEALING_AMOUNT implemented in Unit::SpellCriticalHealingBonus
101 &AuraEffect::HandleAuraModBlockPercent, // 51 SPELL_AURA_MOD_BLOCK_PERCENT
102 &AuraEffect::HandleAuraModWeaponCritPercent, // 52 SPELL_AURA_MOD_WEAPON_CRIT_PERCENT
103 &AuraEffect::HandleNoImmediateEffect, // 53 SPELL_AURA_PERIODIC_LEECH implemented in AuraEffect::PeriodicTick
104 &AuraEffect::HandleModHitChance, // 54 SPELL_AURA_MOD_HIT_CHANCE
105 &AuraEffect::HandleModSpellHitChance, // 55 SPELL_AURA_MOD_SPELL_HIT_CHANCE
106 &AuraEffect::HandleAuraTransform, // 56 SPELL_AURA_TRANSFORM
107 &AuraEffect::HandleModSpellCritChance, // 57 SPELL_AURA_MOD_SPELL_CRIT_CHANCE
108 &AuraEffect::HandleAuraModIncreaseSwimSpeed, // 58 SPELL_AURA_MOD_INCREASE_SWIM_SPEED
109 &AuraEffect::HandleNoImmediateEffect, // 59 SPELL_AURA_MOD_DAMAGE_DONE_CREATURE implemented in Unit::MeleeDamageBonus and Unit::SpellDamageBonus
110 &AuraEffect::HandleAuraModPacifyAndSilence, // 60 SPELL_AURA_MOD_PACIFY_SILENCE
111 &AuraEffect::HandleAuraModScale, // 61 SPELL_AURA_MOD_SCALE
112 &AuraEffect::HandleNoImmediateEffect, // 62 SPELL_AURA_PERIODIC_HEALTH_FUNNEL implemented in AuraEffect::PeriodicTick
113 &AuraEffect::HandleUnused, // 63 unused (5.4.8)
114 &AuraEffect::HandleNoImmediateEffect, // 64 SPELL_AURA_PERIODIC_MANA_LEECH implemented in AuraEffect::PeriodicTick
115 &AuraEffect::HandleModCastingSpeed, // 65 SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK
116 &AuraEffect::HandleFeignDeath, // 66 SPELL_AURA_FEIGN_DEATH
117 &AuraEffect::HandleAuraModDisarm, // 67 SPELL_AURA_MOD_DISARM
118 &AuraEffect::HandleAuraModStalked, // 68 SPELL_AURA_MOD_STALKED
119 &AuraEffect::HandleNoImmediateEffect, // 69 SPELL_AURA_SCHOOL_ABSORB implemented in Unit::CalcAbsorbResist
120 &AuraEffect::HandleUnused, // 70 SPELL_AURA_EXTRA_ATTACKS clientside
121 &AuraEffect::HandleUnused, // 71 unused (5.4.8)
122 &AuraEffect::HandleModPowerCostPCT, // 72 SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT
123 &AuraEffect::HandleModPowerCost, // 73 SPELL_AURA_MOD_POWER_COST_SCHOOL
124 &AuraEffect::HandleNoImmediateEffect, // 74 SPELL_AURA_REFLECT_SPELLS_SCHOOL implemented in Unit::SpellHitResult
125 &AuraEffect::HandleNoImmediateEffect, // 75 SPELL_AURA_MOD_LANGUAGE
126 &AuraEffect::HandleNoImmediateEffect, // 76 SPELL_AURA_FAR_SIGHT
127 &AuraEffect::HandleModMechanicImmunity, // 77 SPELL_AURA_MECHANIC_IMMUNITY
128 &AuraEffect::HandleAuraMounted, // 78 SPELL_AURA_MOUNTED
129 &AuraEffect::HandleModDamagePercentDone, // 79 SPELL_AURA_MOD_DAMAGE_PERCENT_DONE
130 &AuraEffect::HandleModPercentStat, // 80 SPELL_AURA_MOD_PERCENT_STAT
131 &AuraEffect::HandleNoImmediateEffect, // 81 SPELL_AURA_SPLIT_DAMAGE_PCT implemented in Unit::CalcAbsorbResist
132 &AuraEffect::HandleWaterBreathing, // 82 SPELL_AURA_WATER_BREATHING
133 &AuraEffect::HandleModBaseResistance, // 83 SPELL_AURA_MOD_BASE_RESISTANCE
134 &AuraEffect::HandleNoImmediateEffect, // 84 SPELL_AURA_MOD_REGEN implemented in Player::RegenerateHealth
135 &AuraEffect::HandleModPowerRegen, // 85 SPELL_AURA_MOD_POWER_REGEN implemented in Player::Regenerate
136 &AuraEffect::HandleChannelDeathItem, // 86 SPELL_AURA_CHANNEL_DEATH_ITEM
137 &AuraEffect::HandleNoImmediateEffect, // 87 SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN implemented in Unit::MeleeDamageBonus and Unit::SpellDamageBonus
138 &AuraEffect::HandleNoImmediateEffect, // 88 SPELL_AURA_MOD_HEALTH_REGEN_PERCENT implemented in Player::RegenerateHealth
139 &AuraEffect::HandleNoImmediateEffect, // 89 SPELL_AURA_PERIODIC_DAMAGE_PERCENT
140 &AuraEffect::HandleUnused, // 90 unused (5.4.8)
141 &AuraEffect::HandleNoImmediateEffect, // 91 SPELL_AURA_MOD_DETECT_RANGE implemented in Creature::GetAttackDistance
142 &AuraEffect::HandlePreventFleeing, // 92 SPELL_AURA_PREVENTS_FLEEING
143 &AuraEffect::HandleModUnattackable, // 93 SPELL_AURA_MOD_UNATTACKABLE
144 &AuraEffect::HandleNoImmediateEffect, // 94 SPELL_AURA_INTERRUPT_REGEN implemented in Player::Regenerate
145 &AuraEffect::HandleAuraGhost, // 95 SPELL_AURA_GHOST
146 &AuraEffect::HandleNoImmediateEffect, // 96 SPELL_AURA_SPELL_MAGNET implemented in Unit::SelectMagnetTarget
147 &AuraEffect::HandleNoImmediateEffect, // 97 SPELL_AURA_MANA_SHIELD implemented in Unit::CalcAbsorbResist
148 &AuraEffect::HandleAuraModSkill, // 98 SPELL_AURA_MOD_SKILL_TALENT
149 &AuraEffect::HandleAuraModAttackPower, // 99 SPELL_AURA_MOD_ATTACK_POWER
150 &AuraEffect::HandleUnused, //100 SPELL_AURA_AURAS_VISIBLE obsolete? all player can see all auras now, but still have spells including GM-spell
151 &AuraEffect::HandleModResistancePercent, //101 SPELL_AURA_MOD_RESISTANCE_PCT
152 &AuraEffect::HandleNoImmediateEffect, //102 SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS implemented in Unit::MeleeDamageBonus
153 &AuraEffect::HandleAuraModTotalThreat, //103 SPELL_AURA_MOD_TOTAL_THREAT
154 &AuraEffect::HandleAuraWaterWalk, //104 SPELL_AURA_WATER_WALK
155 &AuraEffect::HandleAuraFeatherFall, //105 SPELL_AURA_FEATHER_FALL
156 &AuraEffect::HandleAuraHover, //106 SPELL_AURA_HOVER
157 &AuraEffect::HandleNoImmediateEffect, //107 SPELL_AURA_ADD_FLAT_MODIFIER implemented in AuraEffect::CalculateSpellMod()
158 &AuraEffect::HandleNoImmediateEffect, //108 SPELL_AURA_ADD_PCT_MODIFIER implemented in AuraEffect::CalculateSpellMod()
159 &AuraEffect::HandleNoImmediateEffect, //109 SPELL_AURA_ADD_TARGET_TRIGGER
160 &AuraEffect::HandleModPowerRegenPCT, //110 SPELL_AURA_MOD_POWER_REGEN_PERCENT implemented in Player::Regenerate, Creature::Regenerate
161 &AuraEffect::HandleNoImmediateEffect, //111 SPELL_AURA_ADD_CASTER_HIT_TRIGGER implemented in Unit::SelectMagnetTarget
162 &AuraEffect::HandleNoImmediateEffect, //112 SPELL_AURA_OVERRIDE_CLASS_SCRIPTS
163 &AuraEffect::HandleNoImmediateEffect, //113 SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN implemented in Unit::MeleeDamageBonus
164 &AuraEffect::HandleNoImmediateEffect, //114 SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN_PCT implemented in Unit::MeleeDamageBonus
165 &AuraEffect::HandleNoImmediateEffect, //115 SPELL_AURA_MOD_HEALING implemented in Unit::SpellBaseHealingBonusForVictim
166 &AuraEffect::HandleNoImmediateEffect, //116 SPELL_AURA_MOD_REGEN_DURING_COMBAT
167 &AuraEffect::HandleNoImmediateEffect, //117 SPELL_AURA_MOD_MECHANIC_RESISTANCE implemented in Unit::MagicSpellHitResult
168 &AuraEffect::HandleNoImmediateEffect, //118 SPELL_AURA_MOD_HEALING_PCT implemented in Unit::SpellHealingBonus
169 &AuraEffect::HandleUnused, //119 unused (5.4.8)
170 &AuraEffect::HandleAuraUntrackable, //120 SPELL_AURA_UNTRACKABLE
171 &AuraEffect::HandleAuraEmpathy, //121 SPELL_AURA_EMPATHY
172 &AuraEffect::HandleModOffhandDamagePercent, //122 SPELL_AURA_MOD_OFFHAND_DAMAGE_PCT
173 &AuraEffect::HandleModTargetResistance, //123 SPELL_AURA_MOD_TARGET_RESISTANCE
174 &AuraEffect::HandleAuraModRangedAttackPower, //124 SPELL_AURA_MOD_RANGED_ATTACK_POWER
175 &AuraEffect::HandleNoImmediateEffect, //125 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN implemented in Unit::MeleeDamageBonus
176 &AuraEffect::HandleNoImmediateEffect, //126 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT implemented in Unit::MeleeDamageBonus
177 &AuraEffect::HandleNoImmediateEffect, //127 SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS implemented in Unit::MeleeDamageBonus
178 &AuraEffect::HandleModPossessPet, //128 SPELL_AURA_MOD_POSSESS_PET
179 &AuraEffect::HandleAuraModIncreaseSpeed, //129 SPELL_AURA_MOD_SPEED_ALWAYS
180 &AuraEffect::HandleAuraModIncreaseMountedSpeed, //130 SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS
181 &AuraEffect::HandleNoImmediateEffect, //131 SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS implemented in Unit::MeleeDamageBonus
182 &AuraEffect::HandleAuraModIncreaseEnergyPercent, //132 SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT
183 &AuraEffect::HandleAuraModIncreaseHealthPercent, //133 SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT
184 &AuraEffect::HandleAuraModRegenInterrupt, //134 SPELL_AURA_MOD_MANA_REGEN_INTERRUPT
185 &AuraEffect::HandleModHealingDone, //135 SPELL_AURA_MOD_HEALING_DONE
186 &AuraEffect::HandleNoImmediateEffect, //136 SPELL_AURA_MOD_HEALING_DONE_PERCENT implemented in Unit::SpellHealingBonus
187 &AuraEffect::HandleModTotalPercentStat, //137 SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE
188 &AuraEffect::HandleModMeleeSpeedPct, //138 SPELL_AURA_MOD_MELEE_HASTE
189 &AuraEffect::HandleForceReaction, //139 SPELL_AURA_FORCE_REACTION
190 &AuraEffect::HandleAuraModRangedHaste, //140 SPELL_AURA_MOD_RANGED_HASTE
191 &AuraEffect::HandleUnused, //141 unused (5.4.8)
192 &AuraEffect::HandleAuraModBaseResistancePCT, //142 SPELL_AURA_MOD_BASE_RESISTANCE_PCT
193 &AuraEffect::HandleAuraModResistanceExclusive, //143 SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE
194 &AuraEffect::HandleNoImmediateEffect, //144 SPELL_AURA_SAFE_FALL implemented in WorldSession::HandleMovementOpcodes
195 &AuraEffect::HandleAuraModPetTalentsPoints, //145 SPELL_AURA_MOD_PET_TALENT_POINTS
196 &AuraEffect::HandleNoImmediateEffect, //146 SPELL_AURA_ALLOW_TAME_PET_TYPE
197 &AuraEffect::HandleModStateImmunityMask, //147 SPELL_AURA_MECHANIC_IMMUNITY_MASK
198 &AuraEffect::HandleAuraRetainComboPoints, //148 SPELL_AURA_RETAIN_COMBO_POINTS
199 &AuraEffect::HandleNoImmediateEffect, //149 SPELL_AURA_REDUCE_PUSHBACK
200 &AuraEffect::HandleShieldBlockValue, //150 SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT
201 &AuraEffect::HandleAuraTrackStealthed, //151 SPELL_AURA_TRACK_STEALTHED
202 &AuraEffect::HandleNoImmediateEffect, //152 SPELL_AURA_MOD_DETECTED_RANGE implemented in Creature::GetAttackDistance
203 &AuraEffect::HandleUnused, //153 unused (5.4.8)
204 &AuraEffect::HandleModStealthLevel, //154 SPELL_AURA_MOD_STEALTH_LEVEL
205 &AuraEffect::HandleUnused, //155 unused (5.4.8)
206 &AuraEffect::HandleNoImmediateEffect, //156 SPELL_AURA_MOD_REPUTATION_GAIN
207 &AuraEffect::HandleUnused, //157 unused (5.4.8)
208 &AuraEffect::HandleShieldBlockValue, //158 SPELL_AURA_MOD_SHIELD_BLOCKVALUE
209 &AuraEffect::HandleNoImmediateEffect, //159 SPELL_AURA_NO_PVP_CREDIT only for Honorless Target spell
210 &AuraEffect::HandleUnused, //160 unused (5.4.8)
211 &AuraEffect::HandleNoImmediateEffect, //161 SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT
212 &AuraEffect::HandleNoImmediateEffect, //162 SPELL_AURA_POWER_BURN implemented in AuraEffect::PeriodicTick
213 &AuraEffect::HandleNoImmediateEffect, //163 SPELL_AURA_MOD_CRIT_DAMAGE_BONUS
214 &AuraEffect::HandleUnused, //164 unused, blizz uses it for hagaras water bubble in dragon soul (5.4.8)
215 &AuraEffect::HandleNoImmediateEffect, //165 SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS implemented in Unit::MeleeDamageBonus
216 &AuraEffect::HandleAuraModAttackPowerPercent, //166 SPELL_AURA_MOD_ATTACK_POWER_PCT
217 &AuraEffect::HandleAuraModRangedAttackPowerPercent, //167 SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT
218 &AuraEffect::HandleNoImmediateEffect, //168 SPELL_AURA_MOD_DAMAGE_DONE_VERSUS implemented in Unit::SpellDamageBonus, Unit::MeleeDamageBonus
219 &AuraEffect::HandleUnused, //169 unused (5.4.8)
220 &AuraEffect::HandleNULL, //170 SPELL_AURA_DETECT_AMORE various spells that change visual of units for aura target (clientside?)
221 &AuraEffect::HandleAuraModIncreaseSpeed, //171 SPELL_AURA_MOD_SPEED_NOT_STACK
222 &AuraEffect::HandleAuraModIncreaseMountedSpeed, //172 SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK
223 &AuraEffect::HandleUnused, //173 unused (5.4.8)
224 &AuraEffect::HandleModSpellDamagePercentFromStat, //174 SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT implemented in Unit::SpellBaseDamageBonus
225 &AuraEffect::HandleModSpellHealingPercentFromStat, //175 SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT implemented in Unit::SpellBaseHealingBonus
226 &AuraEffect::HandleSpiritOfRedemption, //176 SPELL_AURA_SPIRIT_OF_REDEMPTION only for Spirit of Redemption spell, die at aura end
227 &AuraEffect::HandleCharmConvert, //177 SPELL_AURA_AOE_CHARM
228 &AuraEffect::HandleUnused, //178 unused (5.4.8)
229 &AuraEffect::HandleNoImmediateEffect, //179 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE implemented in Unit::SpellCriticalBonus
230 &AuraEffect::HandleNoImmediateEffect, //180 SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS implemented in Unit::SpellDamageBonus
231 &AuraEffect::HandleUnused, //181 unused (5.4.8)
232 &AuraEffect::HandleUnused, //182 unused (5.4.8)
233 &AuraEffect::HandleNULL, //183 SPELL_AURA_MOD_CRITICAL_THREAT only used in 28746 - miscvalue - spell school
234 &AuraEffect::HandleNoImmediateEffect, //184 SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst
235 &AuraEffect::HandleNoImmediateEffect, //185 SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst
236 &AuraEffect::HandleNoImmediateEffect, //186 SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE implemented in Unit::MagicSpellHitResult
237 &AuraEffect::HandleNoImmediateEffect, //187 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE implemented in Unit::GetUnitCriticalChance
238 &AuraEffect::HandleUnused, //188 unused (5.4.8)
239 &AuraEffect::HandleModRating, //189 SPELL_AURA_MOD_RATING
240 &AuraEffect::HandleNoImmediateEffect, //190 SPELL_AURA_MOD_FACTION_REPUTATION_GAIN implemented in Player::CalculateReputationGain
241 &AuraEffect::HandleAuraModUseNormalSpeed, //191 SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED
242 &AuraEffect::HandleModMeleeRangedSpeedPct, //192 SPELL_AURA_MOD_MELEE_RANGED_HASTE
243 &AuraEffect::HandleModCombatSpeedPct, //193 SPELL_AURA_MELEE_SLOW (in fact combat (any type attack) speed pct)
244 &AuraEffect::HandleNoImmediateEffect, //194 SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL implemented in Unit::CalcAbsorbResist
245 &AuraEffect::HandleNoImmediateEffect, //195 SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL implemented in Unit::CalcAbsorbResist
246 &AuraEffect::HandleNULL, //196 SPELL_AURA_MOD_COOLDOWN - flat mod of spell cooldowns
247 &AuraEffect::HandleNoImmediateEffect, //197 SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE implemented in Unit::SpellCriticalBonus Unit::GetUnitCriticalChance
248 &AuraEffect::HandleUnused, //198 unused (5.4.8)
249 &AuraEffect::HandleUnused, //199 unused (5.4.8)
250 &AuraEffect::HandleNoImmediateEffect, //200 SPELL_AURA_MOD_XP_PCT implemented in Player::RewardPlayerAndGroupAtKill
251 &AuraEffect::HandleAuraAllowFlight, //201 SPELL_AURA_FLY this aura enable flight mode...
252 &AuraEffect::HandleNoImmediateEffect, //202 SPELL_AURA_CANNOT_BE_DODGED implemented in Unit::RollPhysicalOutcomeAgainst
253 &AuraEffect::HandleNoImmediateEffect, //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::CalculateSpellDamage
254 &AuraEffect::HandleNoImmediateEffect, //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::CalculateSpellDamage
255 &AuraEffect::HandleNULL, //205 SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN
256 &AuraEffect::HandleAuraModIncreaseFlightSpeed, //206 SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED
257 &AuraEffect::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED
258 &AuraEffect::HandleAuraModIncreaseFlightSpeed, //208 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED
259 &AuraEffect::HandleAuraModIncreaseFlightSpeed, //209 SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS
260 &AuraEffect::HandleAuraModIncreaseFlightSpeed, //210 SPELL_AURA_MOD_VEHICLE_SPEED_ALWAYS
261 &AuraEffect::HandleAuraModIncreaseFlightSpeed, //211 SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK
262 &AuraEffect::HandleUnused, //212 unused (5.4.8)
263 &AuraEffect::HandleNoImmediateEffect, //213 SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT implemented in Player::RewardRage
264 &AuraEffect::HandleNULL, //214 Tamed Pet Passive
265 &AuraEffect::HandleArenaPreparation, //215 SPELL_AURA_ARENA_PREPARATION
266 &AuraEffect::HandleModCastingSpeed, //216 SPELL_AURA_HASTE_SPELLS
267 &AuraEffect::HandleModMeleeSpeedPct, //217 SPELL_AURA_MOD_MELEE_HASTE_2
268 &AuraEffect::HandleAuraModRangedHaste, //218 SPELL_AURA_HASTE_RANGED
269 &AuraEffect::HandleUnused, //219 unused (5.4.8)
270 &AuraEffect::HandleModRatingFromStat, //220 SPELL_AURA_MOD_RATING_FROM_STAT
271 &AuraEffect::HandleNULL, //221 SPELL_AURA_MOD_DETAUNT
272 &AuraEffect::HandleUnused, //222 unused (5.4.8) prayer of mending jumps
273 &AuraEffect::HandleNoImmediateEffect, //223 SPELL_AURA_RAID_PROC_FROM_CHARGE
274 &AuraEffect::HandleUnused, //224 unused (5.4.8)
275 &AuraEffect::HandleNoImmediateEffect, //225 SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE
276 &AuraEffect::HandleNoImmediateEffect, //226 SPELL_AURA_PERIODIC_DUMMY implemented in AuraEffect::PeriodicTick
277 &AuraEffect::HandleNoImmediateEffect, //227 SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE implemented in AuraEffect::PeriodicTick
278 &AuraEffect::HandleNoImmediateEffect, //228 SPELL_AURA_DETECT_STEALTH stealth detection
279 &AuraEffect::HandleNoImmediateEffect, //229 SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE
280 &AuraEffect::HandleAuraModIncreaseHealth, //230 SPELL_AURA_MOD_INCREASE_HEALTH_2
281 &AuraEffect::HandleNoImmediateEffect, //231 SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE
282 &AuraEffect::HandleNoImmediateEffect, //232 SPELL_AURA_MECHANIC_DURATION_MOD implement in Unit::CalculateSpellDuration
283 &AuraEffect::HandleUnused, //233 set model id to the one of the creature with id GetMiscValue() - clientside
284 &AuraEffect::HandleNoImmediateEffect, //234 SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK implement in Unit::CalculateSpellDuration
285 &AuraEffect::HandleNoImmediateEffect, //235 SPELL_AURA_MOD_DISPEL_RESIST implement in Unit::MagicSpellHitResult
286 &AuraEffect::HandleAuraControlVehicle, //236 SPELL_AURA_CONTROL_VEHICLE
287 &AuraEffect::HandleUnused, //237 unused (5.4.8)
288 &AuraEffect::HandleUnused, //238 unused (5.4.8)
289 &AuraEffect::HandleAuraModScale, //239 SPELL_AURA_MOD_SCALE_2 only in Noggenfogger Elixir (16595) before 2.3.0 aura 61
290 &AuraEffect::HandleAuraModExpertise, //240 SPELL_AURA_MOD_EXPERTISE
291 &AuraEffect::HandleForceMoveForward, //241 SPELL_AURA_FORCE_MOVE_FORWARD Forces the caster to move forward
292 &AuraEffect::HandleUnused, //242 unused (5.4.8)
293 &AuraEffect::HandleAuraModFaction, //243 SPELL_AURA_MOD_FACTION
294 &AuraEffect::HandleComprehendLanguage, //244 SPELL_AURA_COMPREHEND_LANGUAGE
295 &AuraEffect::HandleNoImmediateEffect, //245 SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL
296 &AuraEffect::HandleUnused, //246 unused (5.4.8)
297 &AuraEffect::HandleAuraCloneCaster, //247 SPELL_AURA_CLONE_CASTER
298 &AuraEffect::HandleNoImmediateEffect, //248 SPELL_AURA_MOD_COMBAT_RESULT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst
299 &AuraEffect::HandleAuraConvertRune, //249 SPELL_AURA_CONVERT_RUNE
300 &AuraEffect::HandleAuraModIncreaseHealth, //250 SPELL_AURA_MOD_INCREASE_HEALTH_2
301 &AuraEffect::HandleNoImmediateEffect, //251 SPELL_AURA_MOD_ENEMY_DODGE
302 &AuraEffect::HandleModCombatSpeedPct, //252 SPELL_AURA_252 Is there any difference between this and SPELL_AURA_MELEE_SLOW ? maybe not stacking mod?
303 &AuraEffect::HandleNoImmediateEffect, //253 SPELL_AURA_MOD_BLOCK_CRIT_CHANCE implemented in Unit::isBlockCritical
304 &AuraEffect::HandleAuraModDisarm, //254 SPELL_AURA_MOD_DISARM_OFFHAND
305 &AuraEffect::HandleNoImmediateEffect, //255 SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT implemented in Unit::SpellDamageBonus
306 &AuraEffect::HandleUnused, //256 unused (5.4.8)
307 &AuraEffect::HandleUnused, //257 unused (5.4.8)
308 &AuraEffect::HandleUnused, //258 unused (5.4.8)
309 &AuraEffect::HandleNoImmediateEffect, //259 SPELL_AURA_MOD_HOT_PCT implemented in Unit::SpellHealingBonusTaken
310 &AuraEffect::HandleNoImmediateEffect, //260 SPELL_AURA_SCREEN_EFFECT (miscvalue = id in ScreenEffect.dbc) not required any code
311 &AuraEffect::HandlePhase, //261 SPELL_AURA_PHASE
312 &AuraEffect::HandleNoImmediateEffect, //262 SPELL_AURA_ABILITY_IGNORE_AURASTATE implemented in spell::cancast
313 &AuraEffect::HandleAuraAllowOnlyAbility, //263 SPELL_AURA_ALLOW_ONLY_ABILITY player can use only abilities set in SpellClassMask
314 &AuraEffect::HandleUnused, //264 unused (3.2.0)
315 &AuraEffect::HandleUnused, //265 unused (4.3.4)
316 &AuraEffect::HandleUnused, //266 unused (4.3.4)
317 &AuraEffect::HandleNoImmediateEffect, //267 SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL implemented in Unit::IsImmunedToSpellEffect
318 &AuraEffect::HandleUnused, //268 unused (4.3.4) old SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT.
319 &AuraEffect::HandleNoImmediateEffect, //269 SPELL_AURA_MOD_IGNORE_TARGET_RESIST implemented in Unit::CalcAbsorbResist and CalcArmorReducedDamage
320 &AuraEffect::HandleUnused, //270 unused (4.3.4) old SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST
321 &AuraEffect::HandleNoImmediateEffect, //271 SPELL_AURA_MOD_DAMAGE_FROM_CASTER implemented in Unit::SpellDamageBonus
322 &AuraEffect::HandleNoImmediateEffect, //272 SPELL_AURA_IGNORE_MELEE_RESET
323 &AuraEffect::HandleUnused, //273 clientside
324 &AuraEffect::HandleUnused, //274 unused (4.3.4)
325 &AuraEffect::HandleNoImmediateEffect, //275 SPELL_AURA_MOD_IGNORE_SHAPESHIFT Use SpellClassMask for spell select
326 &AuraEffect::HandleNULL, //276 mod damage % mechanic?
327 &AuraEffect::HandleUnused, //277 unused (4.3.4) old SPELL_AURA_MOD_MAX_AFFECTED_TARGETS
328 &AuraEffect::HandleAuraModDisarm, //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon
329 &AuraEffect::HandleNoImmediateEffect, //279 SPELL_AURA_INITIALIZE_IMAGES
330 &AuraEffect::HandleNoImmediateEffect, //280 SPELL_AURA_MOD_ARMOR_PENETRATION_PCT (used in 5.4.8)
331 &AuraEffect::HandleNoImmediateEffect, //281 SPELL_AURA_MOD_HONOR_GAIN_PCT implemented in Player::RewardHonor
332 &AuraEffect::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT
333 &AuraEffect::HandleNoImmediateEffect, //283 SPELL_AURA_MOD_HEALING_RECEIVED implemented in Unit::SpellHealingBonus
334 &AuraEffect::HandleAuraLinked, //284 SPELL_AURA_LINKED
335 &AuraEffect::HandleUnused, //285 unused (5.4.8) old SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR
336 &AuraEffect::HandleNoImmediateEffect, //286 SPELL_AURA_ABILITY_PERIODIC_CRIT implemented in AuraEffect::PeriodicTick
337 &AuraEffect::HandleNoImmediateEffect, //287 SPELL_AURA_DEFLECT_SPELLS implemented in Unit::MagicSpellHitResult and Unit::MeleeSpellHitResult
338 &AuraEffect::HandleNoImmediateEffect, //288 SPELL_AURA_IGNORE_HIT_DIRECTION implemented in Unit::MagicSpellHitResult and Unit::MeleeSpellHitResult Unit::RollMeleeOutcomeAgainst
339 &AuraEffect::HandleNULL, //289 unused (3.2.0)
340 &AuraEffect::HandleAuraModCritPct, //290 SPELL_AURA_MOD_CRIT_PCT
341 &AuraEffect::HandleNoImmediateEffect, //291 SPELL_AURA_MOD_XP_QUEST_PCT implemented in Player::RewardQuest
342 &AuraEffect::HandleUnused, //292 unused (5.4.8) old SPELL_AURA_OPEN_STABLE
343 &AuraEffect::HandleAuraOverrideSpells, //293 SPELL_AURA_OVERRIDE_SPELLS auras which probably add set of abilities to their target based on it's miscvalue
344 &AuraEffect::HandleNoImmediateEffect, //294 SPELL_AURA_PREVENT_REGENERATE_POWER implemented in Player::Regenerate(Powers power)
345 &AuraEffect::HandleUnused, //295 unused (4.3.4)
346 &AuraEffect::HandleAuraSetVehicle, //296 SPELL_AURA_SET_VEHICLE_ID sets vehicle on target
347 &AuraEffect::HandleNULL, //297 Spirit Burst spells
348 &AuraEffect::HandleNULL, //298 70569 - Strangulating, maybe prevents talk or cast
349 &AuraEffect::HandleUnused, //299 unused (4.3.4)
350 &AuraEffect::HandleNoImmediateEffect, //300 SPELL_AURA_SHARE_DAMAGE_PCT implemented in Unit::DealDamage
351 &AuraEffect::HandleNoImmediateEffect, //301 SPELL_AURA_SCHOOL_HEAL_ABSORB implemented in Unit::CalcHealAbsorb
352 &AuraEffect::HandleUnused, //302 unused (4.3.4)
353 &AuraEffect::HandleNoImmediateEffect, //303 SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE implemented in Unit::SpellDamageBonus, Unit::MeleeDamageBonus
354 &AuraEffect::HandleAuraModFakeInebriation, //304 SPELL_AURA_MOD_DRUNK
355 &AuraEffect::HandleAuraModIncreaseSpeed, //305 SPELL_AURA_MOD_MINIMUM_SPEED
356 &AuraEffect::HandleUnused, //306 unused (4.3.4)
357 &AuraEffect::HandleUnused, //307 unused (4.3.4)
358 &AuraEffect::HandleNULL, //308 new aura for hunter traps
360 &AuraEffect::HandleNoImmediateEffect, //310 SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE implemented in Spell::CalculateDamageDone
363 &AuraEffect::HandleUnused, //313 unused (4.3.4)
364 &AuraEffect::HandlePreventResurrection, //314 SPELL_AURA_PREVENT_RESURRECTION todo
365 &AuraEffect::HandleNoImmediateEffect, //315 SPELL_AURA_UNDERWATER_WALKING todo
366 &AuraEffect::HandleUnused, //316 unused (4.3.4) old SPELL_AURA_PERIODIC_HASTE
367 &AuraEffect::HandleNULL, //317 SPELL_AURA_MOD_SPELL_POWER_PCT
368 &AuraEffect::HandleAuraMastery, //318 SPELL_AURA_MASTERY
369 &AuraEffect::HandleModMeleeSpeedPct, //319 SPELL_AURA_MOD_MELEE_HASTE_3
370 &AuraEffect::HandleAuraModRangedHaste, //320 SPELL_AURA_MOD_RANGED_HASTE_2
371 &AuraEffect::HandleNULL, //321 SPELL_AURA_321
372 &AuraEffect::HandleNULL, //322 SPELL_AURA_INTERFERE_TARGETTING
373 &AuraEffect::HandleUnused, //323 unused (4.3.4)
374 &AuraEffect::HandleNULL, //324 SPELL_AURA_324
375 &AuraEffect::HandleUnused, //325 unused (4.3.4)
376 &AuraEffect::HandlePhaseGroup, //326 SPELL_AURA_PHASE_GROUP
377 &AuraEffect::HandleUnused, //327 unused (4.3.4)
378 &AuraEffect::HandleNoImmediateEffect, //328 SPELL_AURA_PROC_ON_POWER_AMOUNT implemented in Unit::HandleAuraProcOnPowerAmount
379 &AuraEffect::HandleNULL, //329 SPELL_AURA_MOD_RUNE_REGEN_SPEED
380 &AuraEffect::HandleNoImmediateEffect, //330 SPELL_AURA_CAST_WHILE_WALKING
381 &AuraEffect::HandleAuraForceWeather, //331 SPELL_AURA_FORCE_WEATHER
382 &AuraEffect::HandleNoImmediateEffect, //332 SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS implemented in WorldSession::HandleCastSpellOpcode
383 &AuraEffect::HandleNoImmediateEffect, //333 SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_2 implemented in WorldSession::HandleCastSpellOpcode
384 &AuraEffect::HandleNULL, //334 SPELL_AURA_MOD_BLIND
385 &AuraEffect::HandleNULL, //335 SPELL_AURA_335
386 &AuraEffect::HandleNULL, //336 SPELL_AURA_MOD_FLYING_RESTRICTIONS
387 &AuraEffect::HandleNoImmediateEffect, //337 SPELL_AURA_MOD_VENDOR_ITEMS_PRICES
388 &AuraEffect::HandleNoImmediateEffect, //338 SPELL_AURA_MOD_DURABILITY_LOSS
389 &AuraEffect::HandleNULL, //339 SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE
390 &AuraEffect::HandleNULL, //340 SPELL_AURA_MOD_RESURRECTED_HEALTH_BY_GUILD_MEMBER
391 &AuraEffect::HandleNULL, //341 SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN
392 &AuraEffect::HandleModMeleeRangedSpeedPct, //342 SPELL_AURA_MOD_MELEE_RANGED_HASTE_2
393 &AuraEffect::HandleNULL, //343 SPELL_AURA_343
394 &AuraEffect::HandleNULL, //344 SPELL_AURA_MOD_AUTOATTACK_DAMAGE
395 &AuraEffect::HandleNoImmediateEffect, //345 SPELL_AURA_BYPASS_ARMOR_FOR_CASTER
396 &AuraEffect::HandleEnableAltPower, //346 SPELL_AURA_ENABLE_ALT_POWER
397 &AuraEffect::HandleNULL, //347 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE
398 &AuraEffect::HandleNoImmediateEffect, //348 SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT implemented in WorldSession::HandleLootMoneyOpcode
399 &AuraEffect::HandleNoImmediateEffect, //349 SPELL_AURA_MOD_CURRENCY_GAIN implemented in Player::ModifyCurrency
400 &AuraEffect::HandleNULL, //350 SPELL_AURA_MOD_GATHERING_ITEMS_GAINED_PERCENT
401 &AuraEffect::HandleNULL, //351 SPELL_AURA_351
402 &AuraEffect::HandleNoImmediateEffect, //352 SPELL_AURA_ENABLE_WORGER_ALTERED_FORM
403 &AuraEffect::HandleNULL, //353 SPELL_AURA_MOD_CAMOUFLAGE
404 &AuraEffect::HandleNULL, //354 SPELL_AURA_354
405 &AuraEffect::HandleUnused, //355 unused (4.3.4)
406 &AuraEffect::HandleNULL, //356 SPELL_AURA_356
407 &AuraEffect::HandleNULL, //357 SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME
408 &AuraEffect::HandleNULL, //358 SPELL_AURA_358
409 &AuraEffect::HandleNULL, //359 SPELL_AURA_359
410 &AuraEffect::HandleNULL, //360 SPELL_AURA_PROC_TRIGGER_SPELL_COPY
411 &AuraEffect::HandleNULL, //361 SPELL_AURA_PROC_TRIGGER_SPELL_2 implemented in Unit::ProcDamageAndSpellFor
412 &AuraEffect::HandleUnused, //362 unused (4.3.4)
413 &AuraEffect::HandleNULL, //363 SPELL_AURA_MOD_NEXT_SPELL
414 &AuraEffect::HandleUnused, //364 unused (4.3.4)
415 &AuraEffect::HandleNULL, //365 SPELL_AURA_MAX_FAR_CLIP_PLANE
416 &AuraEffect::HandleOverrideSpellPowerByAttackPower, //366 SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT
417 &AuraEffect::HandleAuraOverrideAutoattackWithSpell, //367 SPELL_AURA_OVERRIDE_AUTOATTACK_WITH_SPELL
418 &AuraEffect::HandleUnused, //368 unused (4.3.4)
419 &AuraEffect::HandleNULL, //369 SPELL_AURA_ENABLE_POWER_BAR_TIMER
420 &AuraEffect::HandleNULL, //370 SPELL_AURA_SET_FAIR_FAR_CLIP
421
422 // Auras < 371 Need Recheck.
423 &AuraEffect::HandleNULL, //371 SPELL_AURA_371
424 &AuraEffect::HandleNULL, //372 SPELL_AURA_372 (used in spell 130041) (5.4.2)
425 &AuraEffect::HandleNULL, //373 SPELL_AURA_373
426 &AuraEffect::HandleNULL, //374 SPELL_AURA_374
427 &AuraEffect::HandleUnused, //375 unused (5.4.2)
428 &AuraEffect::HandleNULL, //376 SPELL_AURA_376
429 &AuraEffect::HandleNULL, //377 SPELL_AURA_377
430 &AuraEffect::HandleUnused, //378 unused (5.4.2)
431 &AuraEffect::HandleNULL, //379 SPELL_AURA_379
432 &AuraEffect::HandleUnused, //380 unused (5.4.2)
433 &AuraEffect::HandleNULL, //381 SPELL_AURA_381 (used in spell 21741) (5.4.2)
434 &AuraEffect::HandleNULL, //382 SPELL_AURA_382
435 &AuraEffect::HandleNULL, //383 SPELL_AURA_383
436 &AuraEffect::HandleUnused, //384 unused (5.4.2)
437 &AuraEffect::HandleNULL, //385 SPELL_AURA_385
438 &AuraEffect::HandleNULL, //386 SPELL_AURA_386 (used in spell 117915) (5.4.2)
439 &AuraEffect::HandleNULL, //387 SPELL_AURA_387 (used in spell 117923) (5.4.2)
440 &AuraEffect::HandleNULL, //388 SPELL_AURA_388 (used in spell 117983) (5.4.2)
441 &AuraEffect::HandleUnused, //389 unused (5.4.2)
442 &AuraEffect::HandleUnused, //390 unused (5.4.2)
443 &AuraEffect::HandleUnused, //391 unused (5.4.2)
444 &AuraEffect::HandleUnused, //392 unused (5.4.2)
445 &AuraEffect::HandleNULL, //393 SPELL_AURA_393
446 &AuraEffect::HandleNULL, //394 SPELL_AURA_394
447 &AuraEffect::HandleNULL, //395 SPELL_AURA_395
448 &AuraEffect::HandleNULL, //396 SPELL_AURA_396
449 &AuraEffect::HandleNULL, //397 SPELL_AURA_397
450 &AuraEffect::HandleNULL, //398 SPELL_AURA_398
451 &AuraEffect::HandleUnused, //399 unused (5.4.2)
452 &AuraEffect::HandleAuraModSkill, //400 SPELL_AURA_MOD_SKILL_2
453 &AuraEffect::HandleNULL, //401 SPELL_AURA_401 (used in spell 125695) (5.4.2)
454 &AuraEffect::HandleNULL, //402 SPELL_AURA_402
455 &AuraEffect::HandleNULL, //403 SPELL_AURA_403
456 &AuraEffect::HandleOverrideAttackPowerBySpellPower, //404 SPELL_AURA_OVERRIDE_AP_BY_SPELL_POWER_PCT (used in spell 115070) (5.4.2)
457 &AuraEffect::HandleNULL, //405 SPELL_AURA_405
458 &AuraEffect::HandleNULL, //406 SPELL_AURA_406
459 &AuraEffect::HandleModFear, //407 SPELL_MOD_FEAR_2
460 &AuraEffect::HandleNULL, //408 SPELL_AURA_408
461 &AuraEffect::HandleNULL, //409 SPELL_AURA_409
462 &AuraEffect::HandleNULL, //410 SPELL_AURA_410 (used in spell 57902) (5.4.2)
463 &AuraEffect::HandleNULL, //411 SPELL_AURA_411
464 &AuraEffect::HandleNULL, //412 SPELL_AURA_412 (used in spell 111546 & 117957) (5.4.2)
465 &AuraEffect::HandleNULL, //413 SPELL_AURA_413
466 &AuraEffect::HandleNULL, //414 SPELL_AURA_414
467 &AuraEffect::HandleNULL, //415 SPELL_AURA_415 (used in spell 123316) (5.4.2)
468 &AuraEffect::HandleNULL, //416 SPELL_AURA_416
469 &AuraEffect::HandleNULL, //417 SPELL_AURA_417 (used in spell 25956) (5.4.2)
470 &AuraEffect::HandleNULL, //418 SPELL_AURA_418
471 &AuraEffect::HandleNULL, //419 SPELL_AURA_419
472 &AuraEffect::HandleNULL, //420 SPELL_AURA_MOD_PET_XP_PCT / NYI
473 &AuraEffect::HandleNULL, //421 SPELL_AURA_421
474 &AuraEffect::HandleNULL, //422 SPELL_AURA_422 (used in spell 136577) (5.4.2)
475 &AuraEffect::HandleNULL, //423 SPELL_AURA_423 (used in spell 108294) (5.4.2)
476 &AuraEffect::HandleNULL, //424 SPELL_AURA_424
477 &AuraEffect::HandleUnused, //425 unused (5.4.2)
478 &AuraEffect::HandleNULL, //426 SPELL_AURA_426 (used in spell 132633) (5.4.2)
479 &AuraEffect::HandleNULL, //427 SPELL_AURA_427 (used in spell 91318) (5.4.2)
480 &AuraEffect::HandleNULL, //428 SPELL_AURA_428
481 &AuraEffect::HandleNULL, //429 SPELL_AURA_429
482 &AuraEffect::HandlePlayScene, //430 SPELL_AURA_PLAY_SCENE
483 &AuraEffect::HandleNULL, //431 SPELL_AURA_431 (used in spell 142869) (5.4.2)
484 &AuraEffect::HandleNULL, //432 SPELL_AURA_432 (used in spell 91318) (5.4.2)
485 &AuraEffect::HandleUnused, //433 unused (5.4.2)
486 &AuraEffect::HandleNULL, //434 SPELL_AURA_434
487 &AuraEffect::HandleUnused, //435 unused (5.4.2)
488 &AuraEffect::HandleNULL, //436 SPELL_AURA_436 (used in spell 49977) (5.4.2)
489 &AuraEffect::HandleNULL, //437 SPELL_AURA_437
490};
491
492namespace
493{
494 void LogAuraEffectDispatch(AuraEffect const* aurEff, Skyfire::Spells::SpellDispatchHandlerKind kind, uint8 mode, bool apply)
495 {
497 SF_LOG_DEBUG("spells", "Aura effect dispatch: spell %u effect index %u aura %u status: %s (mode %u, apply %u)",
498 aurEff->GetId(), aurEff->GetEffIndex(), uint32(aurEff->GetAuraType()),
500 }
501}
502
503void AuraEffect::HandleNULL(AuraApplication const* /*aurApp*/, uint8 mode, bool apply) const
504{
505 LogAuraEffectDispatch(this, Skyfire::Spells::SPELL_DISPATCH_HANDLER_NULL, mode, apply);
506}
507
508void AuraEffect::HandleUnused(AuraApplication const* /*aurApp*/, uint8 mode, bool apply) const
509{
510 LogAuraEffectDispatch(this, Skyfire::Spells::SPELL_DISPATCH_HANDLER_UNUSED, mode, apply);
511}
512
513void AuraEffect::HandleNoImmediateEffect(AuraApplication const* /*aurApp*/, uint8 mode, bool apply) const
514{
515 LogAuraEffectDispatch(this, Skyfire::Spells::SPELL_DISPATCH_HANDLER_NO_IMMEDIATE_EFFECT, mode, apply);
516}
517
518AuraEffect::AuraEffect(Aura* base, uint8 effIndex, int32* baseAmount, Unit* caster) :
519 m_base(base), m_spellInfo(base->GetSpellInfo()),
520 m_baseAmount(baseAmount ? *baseAmount : m_spellInfo->Effects[effIndex].BasePoints),
521 m_spellmod(NULL), m_periodicTimer(0), m_tickNumber(0), m_effIndex(effIndex),
523{
524 CalculatePeriodic(caster, true, false);
525
526 m_amount = CalculateAmount(caster);
527
529}
530
532{
533 delete m_spellmod;
534}
535
536void AuraEffect::GetTargetList(std::list<Unit*>& targetList) const
537{
538 Aura::ApplicationMap const& targetMap = GetBase()->GetApplicationMap();
539 // remove all targets which were not added to new list - they no longer deserve area aura
540 for (Aura::ApplicationMap::const_iterator appIter = targetMap.begin(); appIter != targetMap.end(); ++appIter)
541 {
542 if (appIter->second->HasEffect(GetEffIndex()))
543 targetList.push_back(appIter->second->GetTarget());
544 }
545}
546
547void AuraEffect::GetApplicationList(std::list<AuraApplication*>& applicationList) const
548{
549 Aura::ApplicationMap const& targetMap = GetBase()->GetApplicationMap();
550 for (Aura::ApplicationMap::const_iterator appIter = targetMap.begin(); appIter != targetMap.end(); ++appIter)
551 {
552 if (appIter->second->HasEffect(GetEffIndex()))
553 applicationList.push_back(appIter->second);
554 }
555}
556
558{
559 // default amount calculation
560 int32 amount = 0;
561 float m_BonusMultiplier = GetSpellInfo()->Effects[GetEffIndex()].CalcBonusMultiplier(caster);
562
563 if (!(m_spellInfo->AttributesEx8 & SPELL_ATTR8_MASTERY_SPECIALIZATION) || G3D::fuzzyEq(m_BonusMultiplier, 0.0f))
564 amount = m_spellInfo->Effects[m_effIndex].CalcValue(caster, &m_baseAmount, GetBase()->GetOwner()->ToUnit());
565 else if (caster && caster->GetTypeId() == TypeID::TYPEID_PLAYER)
566 amount = int32(caster->GetFloatValue(PLAYER_FIELD_MASTERY) * m_BonusMultiplier);
567
568 // check item enchant aura cast
569 if (!amount && caster)
570 if (uint64 itemGUID = GetBase()->GetCastItemGUID())
571 if (Player* playerCaster = caster->ToPlayer())
572 if (Item* castItem = playerCaster->GetItemByGuid(itemGUID))
573 if (castItem->GetItemSuffixFactor())
574 {
575 ItemRandomSuffixEntry const* item_rand_suffix = sItemRandomSuffixStore.LookupEntry(abs(castItem->GetItemRandomPropertyId()));
576 if (item_rand_suffix)
577 {
578 for (int k = 0; k < MAX_ITEM_ENCHANTMENT_EFFECTS; k++)
579 {
580 SpellItemEnchantmentEntry const* pEnchant = sSpellItemEnchantmentStore.LookupEntry(item_rand_suffix->enchant_id[k]);
581 if (pEnchant)
582 {
583 for (int t = 0; t < MAX_ITEM_ENCHANTMENT_EFFECTS; t++)
584 if (pEnchant->spellid[t] == m_spellInfo->Id)
585 {
586 amount = uint32((item_rand_suffix->prefix[k] * castItem->GetItemSuffixFactor()) / 10000);
587 break;
588 }
589 }
590
591 if (amount)
592 break;
593 }
594 }
595 }
596
597 // custom amount calculations go here
598 switch (GetAuraType())
599 {
600 // crowd control auras
607 m_canBeRecalculated = false;
608 if (!m_spellInfo->ProcFlags)
609 break;
610 amount = int32(GetBase()->GetUnitOwner()->CountPctFromMaxHealth(10));
613 m_canBeRecalculated = false;
614 break;
616 if (MountCapabilityEntry const* mountCapability = GetBase()->GetUnitOwner()->GetMountCapability(uint32(GetMiscValueB())))
617 {
618 amount = mountCapability->Id;
619 m_canBeRecalculated = false;
620 }
621 break;
622 default:
623 break;
624 }
625
627 amount *= GetBase()->GetStackAmount();
628 return amount;
629}
630
631void AuraEffect::CalculatePeriodic(Unit* caster, bool resetPeriodicTimer /*= true*/, bool load /*= false*/)
632{
633 m_amplitude = m_spellInfo->Effects[m_effIndex].ApplyAuraTickCount;
634
635 // prepare periodics
636 switch (GetAuraType())
637 {
639 // 3 spells have no amplitude set
640 if (!m_amplitude)
654 m_isPeriodic = true;
655 break;
656 default:
657 break;
658 }
659
661
662 if (!m_isPeriodic)
663 return;
664
665 Player* modOwner = caster ? caster->GetSpellModOwner() : NULL;
666
667 // Apply casting time mods
668 if (m_amplitude)
669 {
670 // Apply periodic time mod
671 if (modOwner)
673
674 if (caster)
675 {
676 // Haste modifies periodic time of channeled spells
677 if (m_spellInfo->IsChanneled())
678 {
681 }
682 else if (m_spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION)
684 }
685 }
686
687 if (load) // aura loaded from db
688 {
692 ++m_tickNumber;
693 }
694 else // aura just created or reapplied
695 {
696 m_tickNumber = 0;
697 // reset periodic timer on aura create or on reapply when aura isn't dot
698 // possibly we should not reset periodic timers only when aura is triggered by proc
699 // or maybe there's a spell attribute somewhere
700 if (resetPeriodicTimer)
701 {
702 m_periodicTimer = 0;
703 // Start periodic on next tick or at aura apply
706 }
707 }
708}
709
711{
712 switch (GetAuraType())
713 {
716 if (!m_spellmod)
717 {
720
721 m_spellmod->type = SpellModType(uint32(GetAuraType())); // SpellModType value == spell aura types
722 m_spellmod->spellId = GetId();
724 m_spellmod->charges = GetBase()->GetCharges();
725 }
726 m_spellmod->value = (float)GetAmount();
727 break;
728 default:
729 break;
730 }
732}
733
734void AuraEffect::ChangeAmount(int32 newAmount, bool mark, bool onStackOrReapply)
735{
736 // Reapply if amount change
737 uint8 handleMask = 0;
738 if (newAmount != GetAmount())
740 if (onStackOrReapply)
741 handleMask |= AURA_EFFECT_HANDLE_REAPPLY;
742
743 if (!handleMask)
744 return;
745
746 std::list<AuraApplication*> effectApplications;
747 GetApplicationList(effectApplications);
748
749 for (std::list<AuraApplication*>::const_iterator apptItr = effectApplications.begin(); apptItr != effectApplications.end(); ++apptItr)
750 if ((*apptItr)->HasEffect(GetEffIndex()))
751 HandleEffect(*apptItr, handleMask, false);
752
753 if (handleMask & AURA_EFFECT_HANDLE_CHANGE_AMOUNT)
754 {
755 if (!mark)
756 m_amount = newAmount;
757 else
758 SetAmount(newAmount);
760 }
761
762 for (std::list<AuraApplication*>::const_iterator apptItr = effectApplications.begin(); apptItr != effectApplications.end(); ++apptItr)
763 if ((*apptItr)->HasEffect(GetEffIndex()))
764 HandleEffect(*apptItr, handleMask, true);
765}
766
767void AuraEffect::HandleEffect(AuraApplication* aurApp, uint8 mode, bool apply)
768{
769 // check if call is correct, we really don't want using bitmasks here (with 1 exception)
773 || mode == AURA_EFFECT_HANDLE_STAT
774 || mode == AURA_EFFECT_HANDLE_SKILL
777
778 // register/unregister effect in lists in case of real AuraEffect apply/remove
779 // registration/unregistration is done always before real effect handling (some effect handlers code is depending on this)
780 if (mode & AURA_EFFECT_HANDLE_REAL)
781 aurApp->GetTarget()->_RegisterAuraEffect(this, apply);
782
783 // real aura apply/remove, handle modifier
785 ApplySpellMod(aurApp->GetTarget(), apply);
786
787 // call scripts helping/replacing effect handlers
788 bool prevented = false;
789 if (apply)
790 prevented = GetBase()->CallScriptEffectApplyHandlers(this, aurApp, (AuraEffectHandleModes)mode);
791 else
792 prevented = GetBase()->CallScriptEffectRemoveHandlers(this, aurApp, (AuraEffectHandleModes)mode);
793
794 // check if script events have removed the aura or if default effect prevention was requested
795 if ((apply && aurApp->GetRemoveMode()) || prevented)
796 return;
797
798 (*this.*AuraEffectHandler[GetAuraType()])(aurApp, mode, apply);
799
800 // check if script events have removed the aura or if default effect prevention was requested
801 if (apply && aurApp->GetRemoveMode())
802 return;
803
804 // call scripts triggering additional events after apply/remove
805 if (apply)
807 else
809}
810
811void AuraEffect::HandleEffect(Unit* target, uint8 mode, bool apply)
812{
814 ASSERT(aurApp);
815 HandleEffect(aurApp, mode, apply);
816}
817
818void AuraEffect::ApplySpellMod(Unit* target, bool apply)
819{
820 if (!m_spellmod || target->GetTypeId() != TypeID::TYPEID_PLAYER)
821 return;
822
823 target->ToPlayer()->AddSpellMod(m_spellmod, apply);
824
825 // Auras with charges do not mod amount of passive auras
826 if (GetBase()->IsUsingCharges())
827 return;
828 // reapply some passive spells after add/remove related spellmods
829 // Warning: it is a dead loop if 2 auras each other amount-shouldn't happen
830 switch (GetMiscValue())
831 {
833 case SPELLMOD_EFFECT1:
834 case SPELLMOD_EFFECT2:
835 case SPELLMOD_EFFECT3:
836 case SPELLMOD_EFFECT4:
837 case SPELLMOD_EFFECT5:
838 {
839 uint64 guid = target->GetGUID();
840 Unit::AuraApplicationMap& auras = target->GetAppliedAuras();
841 for (Unit::AuraApplicationMap::iterator iter = auras.begin(); iter != auras.end(); ++iter)
842 {
843 Aura* aura = iter->second->GetBase();
844 // only passive and permament auras-active auras should have amount set on spellcast and not be affected
845 // if aura is casted by others, it will not be affected
846 if ((aura->IsPassive() || aura->IsPermanent()) && aura->GetCasterGUID() == guid && aura->GetSpellInfo()->IsAffectedBySpellMod(m_spellmod))
847 {
849 {
850 for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
851 {
852 if (AuraEffect* aurEff = aura->GetEffect(i))
853 aurEff->RecalculateAmount();
854 }
855 }
856 else if (GetMiscValue() == SPELLMOD_EFFECT1)
857 {
858 if (AuraEffect* aurEff = aura->GetEffect(0))
859 aurEff->RecalculateAmount();
860 }
861 else if (GetMiscValue() == SPELLMOD_EFFECT2)
862 {
863 if (AuraEffect* aurEff = aura->GetEffect(1))
864 aurEff->RecalculateAmount();
865 }
866 else if (GetMiscValue() == SPELLMOD_EFFECT3)
867 {
868 if (AuraEffect* aurEff = aura->GetEffect(2))
869 aurEff->RecalculateAmount();
870 }
871 else if (GetMiscValue() == SPELLMOD_EFFECT4)
872 {
873 if (AuraEffect* aurEff = aura->GetEffect(3))
874 aurEff->RecalculateAmount();
875 }
876 else if (GetMiscValue() == SPELLMOD_EFFECT5)
877 {
878 if (AuraEffect* aurEff = aura->GetEffect(4))
879 aurEff->RecalculateAmount();
880 }
881 }
882 }
883 }
884 default:
885 break;
886 }
887}
888
889void AuraEffect::Update(uint32 diff, Unit* caster)
890{
891 if (m_isPeriodic && (GetBase()->GetDuration() >= 0 || GetBase()->IsPassive() || GetBase()->IsPermanent()))
892 {
893 if (m_periodicTimer > int32(diff))
894 m_periodicTimer -= diff;
895 else // tick also at m_periodicTimer == 0 to prevent lost last tick in case max m_duration == (max m_periodicTimer)*N
896 {
897 ++m_tickNumber;
898
899 // update before tick (aura can be removed in TriggerSpell or PeriodicTick calls)
901 UpdatePeriodic(caster);
902
903 std::list<AuraApplication*> effectApplications;
904 GetApplicationList(effectApplications);
905 // tick on targets of effects
906 for (std::list<AuraApplication*>::const_iterator apptItr = effectApplications.begin(); apptItr != effectApplications.end(); ++apptItr)
907 if ((*apptItr)->HasEffect(GetEffIndex()))
908 PeriodicTick(*apptItr, caster);
909 }
910 }
911}
912
914{
915 switch (GetAuraType())
916 {
918 switch (GetSpellInfo()->SpellFamilyName)
919 {
921 switch (GetId())
922 {
923 // Drink
924 case 430:
925 case 431:
926 case 432:
927 case 1133:
928 case 1135:
929 case 1137:
930 case 10250:
931 case 22734:
932 case 27089:
933 case 34291:
934 case 43182:
935 case 43183:
936 case 46755:
937 case 49472: // Drink Coffee
938 case 57073:
939 case 61830:
940 case 69176:
941 case 72623:
942 case 80166:
943 case 80167:
944 case 87958:
945 case 87959:
946 case 92736:
947 case 92797:
948 case 92800:
949 case 92803:
950 case 104262:
951 case 104269:
952 case 104270:
953 case 105230:
954 case 105232:
955 case 118358:
956 case 130335:
957 case 130336:
958 case 130337:
959 case 130338:
960 case 130339:
961 case 130340:
962 case 130341:
963 case 148922:
964 case 148961: // Drink Pandaren Brew
965 case 148995: // Drink Bitter Brew
966 case 148996: // Drink Stormstout Brew
967 case 148997: // Drink Unga Brew
968 case 149000: // Drink Funky Monkey Brew
969 case 149006: // Drink Boomer Brew
970 case 149009: // Drink Greenstone Brew
971 case 149024: // Drink Blazing Brew
972 if (!caster || caster->GetTypeId() != TypeID::TYPEID_PLAYER)
973 return;
974 // Get SPELL_AURA_MOD_POWER_REGEN aura from spell
975 if (AuraEffect* aurEff = GetBase()->GetEffect(0))
976 {
978 {
979 m_isPeriodic = false;
980 SF_LOG_ERROR("spells", "Aura %d structure has been changed - first aura is no longer SPELL_AURA_MOD_POWER_REGEN", GetId());
981 }
982 else
983 {
984 // default case - not in arena
985 if (!caster->ToPlayer()->InArena())
986 {
987 aurEff->ChangeAmount(GetAmount());
988 m_isPeriodic = false;
989 }
990 else
991 {
992 // **********************************************
993 // This feature uses only in arenas
994 // **********************************************
995 // Here need increase mana regen per tick (6 second rule)
996 // on 0 tick - 0 (handled in 2 second)
997 // on 1 tick - 166% (handled in 4 second)
998 // on 2 tick - 133% (handled in 6 second)
999
1000 // Apply bonus for 1 - 4 tick
1001 switch (m_tickNumber)
1002 {
1003 case 1: // 0%
1004 aurEff->ChangeAmount(0);
1005 break;
1006 case 2: // 166%
1007 aurEff->ChangeAmount(GetAmount() * 5 / 3);
1008 break;
1009 case 3: // 133%
1010 aurEff->ChangeAmount(GetAmount() * 4 / 3);
1011 break;
1012 default: // 100% - normal regen
1013 aurEff->ChangeAmount(GetAmount());
1014 // No need to update after 4th tick
1015 m_isPeriodic = false;
1016 break;
1017 }
1018 }
1019 }
1020 }
1021 break;
1022 case 58549: // Tenacity
1023 case 59911: // Tenacity (vehicle)
1025 break;
1026 case 66823: // Paralytic Toxin
1027 // Get 0 effect aura
1028 if (AuraEffect* slow = GetBase()->GetEffect(0))
1029 {
1030 int32 newAmount = slow->GetAmount() - 10;
1031 if (newAmount < -100)
1032 newAmount = -100;
1033 slow->ChangeAmount(newAmount);
1034 }
1035 break;
1036 default:
1037 break;
1038 }
1039 break;
1040 case SPELLFAMILY_MAGE:
1041 if (GetId() == 55342)// Mirror Image
1042 m_isPeriodic = false;
1043 break;
1045 // Chains of Ice
1046 if (GetSpellInfo()->SpellFamilyFlags[1] & 0x00004000)
1047 {
1048 // Get 0 effect aura
1049 if (AuraEffect* slow = GetBase()->GetEffect(0))
1050 {
1051 int32 newAmount = slow->GetAmount() + GetAmount();
1052 if (newAmount > 0)
1053 newAmount = 0;
1054 slow->ChangeAmount(newAmount);
1055 }
1056 return;
1057 }
1058 break;
1059 default:
1060 break;
1061 }
1062 default:
1063 break;
1064 }
1066}
1067
1068bool AuraEffect::IsPeriodicTickCrit(Unit* target, Unit const* caster) const
1069{
1070 ASSERT(caster);
1071 return caster->isSpellCrit(target, m_spellInfo, m_spellInfo->GetSchoolMask());
1072}
1073
1075{
1076 if (!spell)
1077 return false;
1078 // Check family name
1079 if (spell->SpellFamilyName != m_spellInfo->SpellFamilyName)
1080 return false;
1081
1082 // Check EffectClassMask
1083 if (m_spellInfo->Effects[m_effIndex].SpellClassMask & spell->SpellFamilyFlags)
1084 return true;
1085 return false;
1086}
1087
1088void AuraEffect::SendTickImmune(Unit* target, Unit* caster) const
1089{
1090 if (caster)
1091 caster->SendSpellDamageImmune(target, m_spellInfo->Id);
1092}
1093
1095{
1096 bool prevented = GetBase()->CallScriptEffectPeriodicHandlers(this, aurApp);
1097 if (prevented)
1098 return;
1099
1100 Unit* target = aurApp->GetTarget();
1101
1102 switch (GetAuraType())
1103 {
1105 HandlePeriodicDummyAuraTick(target, caster);
1106 break;
1108 HandlePeriodicTriggerSpellAuraTick(target, caster);
1109 break;
1112 break;
1115 HandlePeriodicDamageAurasTick(target, caster);
1116 break;
1118 HandlePeriodicHealthLeechAuraTick(target, caster);
1119 break;
1121 HandlePeriodicHealthFunnelAuraTick(target, caster);
1122 break;
1125 HandlePeriodicHealAurasTick(target, caster);
1126 break;
1128 HandlePeriodicManaLeechAuraTick(target, caster);
1129 break;
1131 HandleObsModPowerAuraTick(target, caster);
1132 break;
1134 HandlePeriodicEnergizeAuraTick(target, caster);
1135 break;
1137 HandlePeriodicPowerBurnAuraTick(target, caster);
1138 break;
1139 default:
1140 break;
1141 }
1142}
1143
1145{
1146 bool prevented = GetBase()->CallScriptEffectProcHandlers(this, aurApp, eventInfo);
1147 if (prevented)
1148 return;
1149
1150 switch (GetAuraType())
1151 {
1153 HandleProcTriggerSpellAuraProc(aurApp, eventInfo);
1154 break;
1156 HandleProcTriggerSpellWithValueAuraProc(aurApp, eventInfo);
1157 break;
1159 HandleProcTriggerDamageAuraProc(aurApp, eventInfo);
1160 break;
1162 HandleRaidProcFromChargeAuraProc(aurApp, eventInfo);
1163 break;
1166 break;
1167 default:
1168 break;
1169 }
1170
1171 GetBase()->CallScriptAfterEffectProcHandlers(this, aurApp, eventInfo);
1172}
1173
1175{
1176 uint32 tSpellId = m_spellInfo->Effects[GetEffIndex()].TriggerSpell;
1177 if (!tSpellId)
1178 return;
1179
1180 SpellInfo const* tProto = sSpellMgr->GetSpellInfo(tSpellId);
1181 if (!tProto)
1182 return;
1183
1184 if (tProto->GetDuration() != -1)
1185 return;
1186
1187 // needed for spell 43680, maybe others
1189 if (m_spellInfo->Effects[GetEffIndex()].ApplyAuraName == SPELL_AURA_PERIODIC_TRIGGER_SPELL &&
1190 uint32(m_spellInfo->GetDuration()) == m_spellInfo->Effects[GetEffIndex()].ApplyAuraTickCount)
1191 return;
1192
1193 target->RemoveAurasDueToSpell(tSpellId, GetCasterGUID());
1194}
@ IN_MILLISECONDS
Definition Common.h:125
DBCStorage< SpellItemEnchantmentEntry > sSpellItemEnchantmentStore(SpellItemEnchantmentfmt)
DBCStorage< ItemRandomSuffixEntry > sItemRandomSuffixStore(ItemRandomSuffixfmt)
#define MAX_SPELL_EFFECTS
#define MAX_ITEM_ENCHANTMENT_EFFECTS
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
#define ASSERT
Definition Errors.h:29
#define SF_LOG_DEBUG(filterType__,...)
Definition Log.h:134
#define SF_LOG_ERROR(filterType__,...)
Definition Log.h:143
@ TYPEID_PLAYER
Definition Object.h:55
SpellModType
Definition Player.h:65
@ SPELLFAMILY_MAGE
@ SPELLFAMILY_GENERIC
@ SPELLFAMILY_DEATHKNIGHT
@ SPELL_ATTR5_START_PERIODIC_AT_APPLY
@ SPELL_ATTR5_HASTE_AFFECT_DURATION
@ SPELL_ATTR8_MASTERY_SPECIALIZATION
@ SPELL_AURA_MANA_SHIELD
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE
@ SPELL_AURA_OBS_MOD_HEALTH
@ SPELL_AURA_PERIODIC_HEALTH_FUNNEL
@ SPELL_AURA_ADD_PCT_MODIFIER
@ TOTAL_AURAS
@ SPELL_AURA_PERIODIC_MANA_LEECH
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_FEAR
@ SPELL_AURA_MOD_POWER_REGEN
@ SPELL_AURA_OBS_MOD_POWER
@ SPELL_AURA_ADD_FLAT_MODIFIER
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE
@ SPELL_AURA_PERIODIC_DAMAGE_PERCENT
@ SPELL_AURA_MOD_FEAR_2
@ SPELL_AURA_MOD_ROOT
@ SPELL_AURA_MOUNTED
@ SPELL_AURA_RAID_PROC_FROM_CHARGE
@ SPELL_AURA_TRANSFORM
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_ENERGIZE
@ SPELL_AURA_PERIODIC_LEECH
@ SPELL_AURA_PROC_TRIGGER_DAMAGE
@ SPELL_AURA_POWER_BURN
@ SPELL_AURA_MOD_CONFUSE
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ SPELL_AURA_MOD_STUN
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_STAT
@ AURA_EFFECT_HANDLE_CHANGE_AMOUNT
@ AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK
@ AURA_EFFECT_HANDLE_REAPPLY
@ AURA_EFFECT_HANDLE_REAL
@ AURA_EFFECT_HANDLE_SKILL
@ AURA_EFFECT_HANDLE_SEND_FOR_CLIENT
pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]
void(AuraEffect::* pAuraEffectHandler)(AuraApplication const *aurApp, uint8 mode, bool apply) const
#define sSpellMgr
Definition SpellMgr.h:744
SpellModOp
Definition Unit.h:72
@ SPELLMOD_EFFECT2
Definition Unit.h:85
@ SPELLMOD_EFFECT5
Definition Unit.h:106
@ SPELLMOD_ALL_EFFECTS
Definition Unit.h:81
@ SPELLMOD_EFFECT3
Definition Unit.h:96
@ SPELLMOD_EFFECT4
Definition Unit.h:105
@ SPELLMOD_ACTIVATION_TIME
Definition Unit.h:92
@ SPELLMOD_EFFECT1
Definition Unit.h:76
@ UNIT_FIELD_MOD_CASTING_SPEED
@ PLAYER_FIELD_MASTERY
Unit * GetTarget() const
Definition SpellAuras.h:54
AuraRemoveMode GetRemoveMode() const
Definition SpellAuras.h:66
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
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
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
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
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
int32 CalculateAmount(Unit *caster)
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
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
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 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 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 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
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 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
void HandleAuraLinked(AuraApplication const *aurApp, uint8 mode, bool apply) const
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
const AuraApplication * GetApplicationOfTarget(uint64 guid) const
Definition SpellAuras.h:176
ApplicationMap const & GetApplicationMap()
Definition SpellAuras.h:174
void CallScriptEffectCalcSpellModHandlers(AuraEffect const *aurEff, SpellModifier *&spellMod)
bool CallScriptEffectRemoveHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp, AuraEffectHandleModes mode)
void CallScriptEffectCalcAmountHandlers(AuraEffect const *aurEff, int32 &amount, bool &canBeRecalculated)
bool CallScriptEffectPeriodicHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp)
std::map< uint64, AuraApplication * > ApplicationMap
Definition SpellAuras.h:77
int32 GetDuration() const
Definition SpellAuras.h:119
AuraEffect * GetEffect(uint8 effIndex) const
Definition SpellAuras.h:168
void CallScriptAfterEffectApplyHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp, AuraEffectHandleModes mode)
bool CallScriptEffectApplyHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp, AuraEffectHandleModes mode)
void CallScriptAfterEffectRemoveHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp, AuraEffectHandleModes mode)
bool CallScriptEffectProcHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp, ProcEventInfo &eventInfo)
void CallScriptAfterEffectProcHandlers(AuraEffect const *aurEff, AuraApplication const *aurApp, ProcEventInfo &eventInfo)
void RefreshDuration()
uint8 GetStackAmount() const
Definition SpellAuras.h:133
uint8 GetCharges() const
Definition SpellAuras.h:126
SpellInfo const * GetSpellInfo() const
Definition SpellAuras.h:87
void CallScriptEffectCalcPeriodicHandlers(AuraEffect const *aurEff, bool &isPeriodic, int32 &amplitude)
void CallScriptEffectUpdatePeriodicHandlers(AuraEffect *aurEff)
bool IsPassive() const
bool IsPermanent() const
Definition SpellAuras.h:124
Definition Item.h:202
uint64 GetGUID() const
Definition Object.h:119
Player * ToPlayer()
Definition Object.h:204
TypeID GetTypeId() const
Definition Object.h:131
float GetFloatValue(uint16 index) const
Definition Object.cpp:337
T ApplySpellMod(uint32 spellId, SpellModOp op, T &basevalue, Spell *spell=NULL)
Definition Player.h:3623
bool InArena() const
Definition Player.cpp:19310
void AddSpellMod(SpellModifier *mod, bool apply)
Definition Player.cpp:16254
flag128 SpellClassMask
Definition SpellInfo.h:109
float CalcBonusMultiplier(Unit *caster, Spell *spell=NULL) const
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
Definition SpellInfo.h:255
bool IsAffectedBySpellMod(SpellModifier const *mod) const
flag128 SpellFamilyFlags
Definition SpellInfo.h:227
int32 GetDuration() const
uint32 SpellFamilyName
Definition SpellInfo.h:226
Definition Unit.h:1367
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Player * GetSpellModOwner() const
Definition Unit.cpp:5818
std::multimap< uint32, AuraApplication * > AuraApplicationMap
Definition Unit.h:1376
bool isSpellCrit(Unit *victim, SpellInfo const *spellProto, SpellSchoolMask schoolMask, WeaponAttackType attackType=WeaponAttackType::BASE_ATTACK) const
Definition Unit.cpp:3111
void SendSpellDamageImmune(Unit *target, uint32 spellId)
Definition Unit.cpp:1956
void _RegisterAuraEffect(AuraEffect *aurEff, bool apply)
AuraApplicationMap & GetAppliedAuras()
Definition Unit.h:2204
void ModSpellCastTime(SpellInfo const *spellProto, int32 &castTime, Spell *spell=NULL)
Definition Unit.cpp:4821
char const * GetSpellDispatchValidationStatusName(SpellDispatchValidationStatus status)
@ SPELL_DISPATCH_HANDLER_NO_IMMEDIATE_EFFECT
SpellDispatchValidationStatus ClassifySpellDispatchHandler(SpellDispatchHandlerKind kind)
uint32 enchant_id[5]
uint32 prefix[5]
uint32 spellid[MAX_ITEM_ENCHANTMENT_EFFECTS]