AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SpellMgr.cpp File Reference
#include "SpellMgr.h"
#include "Log.h"
#include "BattlefieldMgr.h"
#include "BattlegroundIC.h"
#include "Chat.h"
#include "DBCStores.h"
#include "InstanceScript.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "RaceMgr.h"
#include "ScriptMgr.h"
#include "SharedDefines.h"
#include "Spell.h"
#include "SpellAuraDefines.h"
#include "SpellInfo.h"
#include "Tokenize.h"
#include "World.h"
#include <algorithm>

Go to the source code of this file.

Functions

bool IsPrimaryProfessionSkill (uint32 skill)
 
bool IsPartOfSkillLine (uint32 skillId, uint32 spellId)
 
DiminishingGroup GetDiminishingReturnsGroupForSpell (SpellInfo const *spellproto, bool triggered)
 
DiminishingReturnsType GetDiminishingReturnsGroupType (DiminishingGroup group)
 
DiminishingLevels GetDiminishingReturnsMaxLevel (DiminishingGroup group)
 
int32 GetDiminishingReturnsLimitDuration (DiminishingGroup group, SpellInfo const *spellproto)
 
bool IsDiminishingReturnsGroupDurationLimited (DiminishingGroup group)
 
void DeleteSpellFromAllPlayers (uint32 spellId)
 
static bool InitTriggerAuraData ()
 
static bool LoadPetDefaultSpells_helper (CreatureTemplate const *cInfo, PetDefaultSpellsEntry &petDefSpells)
 

Variables

static bool isTriggerAura [TOTAL_AURAS]
 
static bool isAlwaysTriggeredAura [TOTAL_AURAS]
 
static uint32 spellTypeMask [TOTAL_AURAS]
 
static bool procPrepared = InitTriggerAuraData()
 

Function Documentation

◆ DeleteSpellFromAllPlayers()

void DeleteSpellFromAllPlayers ( uint32  spellId)
498{
500 for (uint8 i = 0; i < 2; i++)
501 {
502 CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(stmts[i]);
503 stmt->SetData(0, spellId);
504 CharacterDatabase.Execute(stmt);
505 }
506}
CharacterDatabaseStatements
Definition CharacterDatabase.h:24
@ CHAR_DEL_INVALID_SPELL_TALENTS
Definition CharacterDatabase.h:294
@ CHAR_DEL_INVALID_SPELL_SPELLS
Definition CharacterDatabase.h:293
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::uint8_t uint8
Definition Define.h:109
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157

References CHAR_DEL_INVALID_SPELL_SPELLS, CHAR_DEL_INVALID_SPELL_TALENTS, CharacterDatabase, and PreparedStatementBase::SetData().

Referenced by SpellMgr::CheckSpellValid().

◆ GetDiminishingReturnsGroupForSpell()

DiminishingGroup GetDiminishingReturnsGroupForSpell ( SpellInfo const *  spellproto,
bool  triggered 
)
108{
109 if (spellproto->IsPositive())
110 return DIMINISHING_NONE;
111
112 for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
113 {
114 if (spellproto->Effects[i].ApplyAuraName == SPELL_AURA_MOD_TAUNT)
115 return DIMINISHING_TAUNT;
116 }
117
118 // Explicit Diminishing Groups
119 switch (spellproto->SpellFamilyName)
120 {
122 {
123 // Pet charge effects (Infernal Awakening, Demon Charge)
124 if (spellproto->SpellVisual[0] == 2816 && spellproto->SpellIconID == 15)
126 // Gnaw
127 else if (spellproto->Id == 47481)
129 // Screams of the Past
130 else if (spellproto->Id == 7074)
131 return DIMINISHING_NONE;
132 break;
133 }
134 // Event spells
135 case SPELLFAMILY_UNK1:
136 return DIMINISHING_NONE;
137 case SPELLFAMILY_MAGE:
138 {
139 // Frostbite
140 if (spellproto->Id == 12494)
141 return DIMINISHING_ROOT;
142 // Shattered Barrier
143 else if (spellproto->Id == 55080)
144 return DIMINISHING_ROOT;
145 // Deep Freeze
146 else if (spellproto->SpellIconID == 2939 && spellproto->SpellVisual[0] == 9963)
148 // Frost Nova / Freeze (Water Elemental)
149 else if (spellproto->SpellIconID == 193)
151 // Dragon's Breath
152 else if (spellproto->SpellFamilyFlags[0] & 0x800000)
154 break;
155 }
157 {
158 // Hamstring - limit duration to 10s in PvP
159 if (spellproto->SpellFamilyFlags[0] & 0x2)
161 // Improved Hamstring
162 else if (spellproto->Id == 23694)
163 return DIMINISHING_ROOT;
164 // Charge Stun (own diminishing)
165 else if (spellproto->SpellFamilyFlags[0] & 0x01000000)
166 return DIMINISHING_CHARGE;
167 break;
168 }
170 {
171 // Curses/etc
172 if ((spellproto->SpellFamilyFlags[0] & 0x80000000) || (spellproto->SpellFamilyFlags[1] & 0x200))
174 // Seduction
175 else if (spellproto->SpellFamilyFlags[1] & 0x10000000)
176 return DIMINISHING_FEAR;
177 break;
178 }
180 {
181 // Pounce
182 if (spellproto->SpellFamilyFlags[0] & 0x20000)
184 // Cyclone
185 else if (spellproto->SpellFamilyFlags[1] & 0x20)
186 return DIMINISHING_CYCLONE;
187 // Entangling Roots
188 // Nature's Grasp
189 else if (spellproto->SpellFamilyFlags[0] & 0x00000200)
191 // Faerie Fire
192 else if (spellproto->SpellFamilyFlags[0] & 0x400)
194 // Feral Charge Root Effect
195 else if (spellproto->Id == 45334)
196 return DIMINISHING_NONE;
197 break;
198 }
200 {
201 // Gouge
202 if (spellproto->SpellFamilyFlags[0] & 0x8)
204 // Blind
205 else if (spellproto->SpellFamilyFlags[0] & 0x1000000)
206 return DIMINISHING_FEAR;
207 // Cheap Shot
208 else if (spellproto->SpellFamilyFlags[0] & 0x400)
210 // Crippling poison - Limit to 10 seconds in PvP (No SpellFamilyFlags)
211 else if (spellproto->SpellIconID == 163)
213 break;
214 }
216 {
217 // Hunter's Mark
218 if ((spellproto->SpellFamilyFlags[0] & 0x400) && spellproto->SpellIconID == 538)
220 // Scatter Shot (own diminishing)
221 else if ((spellproto->SpellFamilyFlags[0] & 0x40000) && spellproto->SpellIconID == 132)
223 // Entrapment (own diminishing)
224 else if (spellproto->SpellVisual[0] == 7484 && spellproto->SpellIconID == 20)
226 // Wyvern Sting mechanic is MECHANIC_SLEEP but the diminishing is DIMINISHING_DISORIENT
227 else if ((spellproto->SpellFamilyFlags[1] & 0x1000) && spellproto->SpellIconID == 1721)
229 // Freezing Arrow
230 else if (spellproto->SpellFamilyFlags[0] & 0x8)
232 break;
233 }
235 {
236 // Judgement of Justice - limit duration to 10s in PvP
237 if (spellproto->SpellFamilyFlags[0] & 0x100000)
239 // Turn Evil
240 else if ((spellproto->SpellFamilyFlags[1] & 0x804000) && spellproto->SpellIconID == 309)
241 return DIMINISHING_FEAR;
242 break;
243 }
245 {
246 // Storm, Earth and Fire - Earthgrab
247 if (spellproto->SpellFamilyFlags[2] & 0x4000)
249 break;
250 }
252 {
253 // Hungering Cold (no flags)
254 if (spellproto->SpellIconID == 2797)
256 // Mark of Blood
257 else if ((spellproto->SpellFamilyFlags[0] & 0x10000000) && spellproto->SpellIconID == 2285)
259 break;
260 }
261 default:
262 break;
263 }
264
265 // Lastly - Set diminishing depending on mechanic
266 uint64 mechanic = spellproto->GetAllEffectsMechanicMask();
267 if (mechanic & (1ULL << MECHANIC_CHARM))
269 if (mechanic & (1ULL << MECHANIC_SILENCE))
270 return DIMINISHING_SILENCE;
271 if (mechanic & (1ULL << MECHANIC_SLEEP))
272 return DIMINISHING_SLEEP;
273 if (mechanic & ((1ULL << MECHANIC_SAPPED) | (1ULL << MECHANIC_POLYMORPH) | (1ULL << MECHANIC_SHACKLE)))
275 // Mechanic Knockout, except Blast Wave
276 if (mechanic & (1ULL << MECHANIC_KNOCKOUT) && spellproto->SpellIconID != 292)
278 if (mechanic & (1ULL << MECHANIC_DISARM))
279 return DIMINISHING_DISARM;
280 if (mechanic & (1ULL << MECHANIC_FEAR))
281 return DIMINISHING_FEAR;
282 if (mechanic & (1ULL << MECHANIC_STUN))
284 if (mechanic & (1ULL << MECHANIC_BANISH))
285 return DIMINISHING_BANISH;
286 if (mechanic & (1ULL << MECHANIC_ROOT))
288 if (mechanic & (1ULL << MECHANIC_HORROR))
289 return DIMINISHING_HORROR;
290
291 return DIMINISHING_NONE;
292}
#define MAX_SPELL_EFFECTS
Definition DBCStructure.h:1637
std::uint64_t uint64
Definition Define.h:106
@ DIMINISHING_MIND_CONTROL
Definition SharedDefines.h:3503
@ DIMINISHING_HORROR
Definition SharedDefines.h:3502
@ DIMINISHING_DRAGONS_BREATH
Definition SharedDefines.h:3511
@ DIMINISHING_CONTROLLED_STUN
Definition SharedDefines.h:3495
@ DIMINISHING_CYCLONE
Definition SharedDefines.h:3497
@ DIMINISHING_BANISH
Definition SharedDefines.h:3492
@ DIMINISHING_CONTROLLED_ROOT
Definition SharedDefines.h:3496
@ DIMINISHING_NONE
Definition SharedDefines.h:3491
@ DIMINISHING_SLEEP
Definition SharedDefines.h:3508
@ DIMINISHING_STUN
Definition SharedDefines.h:3505
@ DIMINISHING_DISARM
Definition SharedDefines.h:3498
@ DIMINISHING_ENTRAPMENT
Definition SharedDefines.h:3500
@ DIMINISHING_FEAR
Definition SharedDefines.h:3501
@ DIMINISHING_SCATTER_SHOT
Definition SharedDefines.h:3506
@ DIMINISHING_LIMITONLY
Definition SharedDefines.h:3510
@ DIMINISHING_OPENING_STUN
Definition SharedDefines.h:3494
@ DIMINISHING_DISORIENT
Definition SharedDefines.h:3499
@ DIMINISHING_ROOT
Definition SharedDefines.h:3504
@ DIMINISHING_TAUNT
Definition SharedDefines.h:3509
@ DIMINISHING_CHARGE
Definition SharedDefines.h:3493
@ DIMINISHING_SILENCE
Definition SharedDefines.h:3507
@ MECHANIC_DISARM
Definition SharedDefines.h:1316
@ MECHANIC_FEAR
Definition SharedDefines.h:1318
@ MECHANIC_KNOCKOUT
Definition SharedDefines.h:1327
@ MECHANIC_CHARM
Definition SharedDefines.h:1314
@ MECHANIC_STUN
Definition SharedDefines.h:1325
@ MECHANIC_ROOT
Definition SharedDefines.h:1320
@ MECHANIC_SLEEP
Definition SharedDefines.h:1323
@ MECHANIC_POLYMORPH
Definition SharedDefines.h:1330
@ MECHANIC_BANISH
Definition SharedDefines.h:1331
@ MECHANIC_SILENCE
Definition SharedDefines.h:1322
@ MECHANIC_SHACKLE
Definition SharedDefines.h:1333
@ MECHANIC_SAPPED
Definition SharedDefines.h:1343
@ MECHANIC_HORROR
Definition SharedDefines.h:1337
@ SPELLFAMILY_WARLOCK
Definition SharedDefines.h:3789
@ SPELLFAMILY_MAGE
Definition SharedDefines.h:3787
@ SPELLFAMILY_GENERIC
Definition SharedDefines.h:3784
@ SPELLFAMILY_WARRIOR
Definition SharedDefines.h:3788
@ SPELLFAMILY_PALADIN
Definition SharedDefines.h:3794
@ SPELLFAMILY_HUNTER
Definition SharedDefines.h:3793
@ SPELLFAMILY_ROGUE
Definition SharedDefines.h:3792
@ SPELLFAMILY_SHAMAN
Definition SharedDefines.h:3795
@ SPELLFAMILY_DRUID
Definition SharedDefines.h:3791
@ SPELLFAMILY_DEATHKNIGHT
Definition SharedDefines.h:3799
@ SPELLFAMILY_UNK1
Definition SharedDefines.h:3785
@ SPELL_AURA_MOD_TAUNT
Definition SpellAuraDefines.h:74

References DIMINISHING_BANISH, DIMINISHING_CHARGE, DIMINISHING_CONTROLLED_ROOT, DIMINISHING_CONTROLLED_STUN, DIMINISHING_CYCLONE, DIMINISHING_DISARM, DIMINISHING_DISORIENT, DIMINISHING_DRAGONS_BREATH, DIMINISHING_ENTRAPMENT, DIMINISHING_FEAR, DIMINISHING_HORROR, DIMINISHING_LIMITONLY, DIMINISHING_MIND_CONTROL, DIMINISHING_NONE, DIMINISHING_OPENING_STUN, DIMINISHING_ROOT, DIMINISHING_SCATTER_SHOT, DIMINISHING_SILENCE, DIMINISHING_SLEEP, DIMINISHING_STUN, DIMINISHING_TAUNT, SpellInfo::Effects, SpellInfo::GetAllEffectsMechanicMask(), SpellInfo::Id, SpellInfo::IsPositive(), MAX_SPELL_EFFECTS, MECHANIC_BANISH, MECHANIC_CHARM, MECHANIC_DISARM, MECHANIC_FEAR, MECHANIC_HORROR, MECHANIC_KNOCKOUT, MECHANIC_POLYMORPH, MECHANIC_ROOT, MECHANIC_SAPPED, MECHANIC_SHACKLE, MECHANIC_SILENCE, MECHANIC_SLEEP, MECHANIC_STUN, SPELL_AURA_MOD_TAUNT, SPELLFAMILY_DEATHKNIGHT, SPELLFAMILY_DRUID, SPELLFAMILY_GENERIC, SPELLFAMILY_HUNTER, SPELLFAMILY_MAGE, SPELLFAMILY_PALADIN, SPELLFAMILY_ROGUE, SPELLFAMILY_SHAMAN, SPELLFAMILY_UNK1, SPELLFAMILY_WARLOCK, SPELLFAMILY_WARRIOR, SpellInfo::SpellFamilyFlags, SpellInfo::SpellFamilyName, SpellInfo::SpellIconID, and SpellInfo::SpellVisual.

Referenced by Spell::DoSpellHitOnUnit().

◆ GetDiminishingReturnsGroupType()

DiminishingReturnsType GetDiminishingReturnsGroupType ( DiminishingGroup  group)
295{
296 switch (group)
297 {
300 case DIMINISHING_STUN:
304 return DRTYPE_ALL;
306 case DIMINISHING_NONE:
307 return DRTYPE_NONE;
308 default:
309 return DRTYPE_PLAYER;
310 }
311}
@ DRTYPE_NONE
Definition SharedDefines.h:3483
@ DRTYPE_PLAYER
Definition SharedDefines.h:3484
@ DRTYPE_ALL
Definition SharedDefines.h:3485

References DIMINISHING_CHARGE, DIMINISHING_CONTROLLED_STUN, DIMINISHING_CYCLONE, DIMINISHING_LIMITONLY, DIMINISHING_NONE, DIMINISHING_OPENING_STUN, DIMINISHING_STUN, DIMINISHING_TAUNT, DRTYPE_ALL, DRTYPE_NONE, and DRTYPE_PLAYER.

Referenced by Unit::ApplyDiminishingToDuration(), and Spell::DoSpellHitOnUnit().

◆ GetDiminishingReturnsLimitDuration()

int32 GetDiminishingReturnsLimitDuration ( DiminishingGroup  group,
SpellInfo const *  spellproto 
)
325{
327 return 0;
328
329 // Explicit diminishing duration
330 switch (spellproto->SpellFamilyName)
331 {
333 {
334 // Faerie Fire - limit to 40 seconds in PvP (3.1)
335 if (spellproto->SpellFamilyFlags[0] & 0x400)
336 return 40 * IN_MILLISECONDS;
337 break;
338 }
340 {
341 // Wyvern Sting
342 if (spellproto->SpellFamilyFlags[1] & 0x1000)
343 return 6 * IN_MILLISECONDS;
344 // Hunter's Mark
345 if (spellproto->SpellFamilyFlags[0] & 0x400)
346 return 120 * IN_MILLISECONDS;
347 break;
348 }
350 {
351 // Repentance - limit to 6 seconds in PvP
352 if (spellproto->SpellFamilyFlags[0] & 0x4)
353 return 6 * IN_MILLISECONDS;
354 break;
355 }
357 {
358 // Banish - limit to 6 seconds in PvP
359 if (spellproto->SpellFamilyFlags[1] & 0x8000000)
360 return 6 * IN_MILLISECONDS;
361 // Curse of Tongues - limit to 12 seconds in PvP
362 else if (spellproto->SpellFamilyFlags[2] & 0x800)
363 return 12 * IN_MILLISECONDS;
364 // Curse of Elements - limit to 120 seconds in PvP
365 else if (spellproto->SpellFamilyFlags[1] & 0x200)
366 return 120 * IN_MILLISECONDS;
367 // Curse of Exhaustion
368 else if (spellproto->SpellFamilyFlags[0] & 0x400000)
369 return 12 * IN_MILLISECONDS;
370 break;
371 }
372 default:
373 break;
374 }
375
376 return 10 * IN_MILLISECONDS;
377}
constexpr auto IN_MILLISECONDS
Definition Common.h:53
bool IsDiminishingReturnsGroupDurationLimited(DiminishingGroup group)
Definition SpellMgr.cpp:379

References IN_MILLISECONDS, IsDiminishingReturnsGroupDurationLimited(), SPELLFAMILY_DRUID, SPELLFAMILY_HUNTER, SPELLFAMILY_PALADIN, SPELLFAMILY_WARLOCK, SpellInfo::SpellFamilyFlags, and SpellInfo::SpellFamilyName.

Referenced by Spell::DoSpellHitOnUnit().

◆ GetDiminishingReturnsMaxLevel()

DiminishingLevels GetDiminishingReturnsMaxLevel ( DiminishingGroup  group)
314{
315 switch (group)
316 {
319 default:
321 }
322}
@ DIMINISHING_LEVEL_IMMUNE
Definition Unit.h:272
@ DIMINISHING_LEVEL_TAUNT_IMMUNE
Definition Unit.h:274

References DIMINISHING_LEVEL_IMMUNE, DIMINISHING_LEVEL_TAUNT_IMMUNE, and DIMINISHING_TAUNT.

Referenced by Unit::IncrDiminishing().

◆ InitTriggerAuraData()

bool InitTriggerAuraData ( )
static
1946{
1947 for (uint16 i = 0; i < TOTAL_AURAS; ++i)
1948 {
1949 isTriggerAura[i] = false;
1950 isAlwaysTriggeredAura[i] = false;
1952 }
1953 isTriggerAura[SPELL_AURA_DUMMY] = true; // Most dummy auras should require scripting
1954 isTriggerAura[SPELL_AURA_MOD_CONFUSE] = true; // "Any direct damaging attack will revive targets"
1955 isTriggerAura[SPELL_AURA_MOD_THREAT] = true; // Only one spell: 28762 part of Mage T3 8p bonus
1956 isTriggerAura[SPELL_AURA_MOD_STUN] = true; // Aura does not have charges but needs to be removed on trigger
1961 isTriggerAura[SPELL_AURA_MOD_FEAR] = true; // Aura does not have charges but needs to be removed on trigger
1985
1995
2002
2003 return true;
2004}
std::uint16_t uint16
Definition Define.h:108
@ SPELL_AURA_MOD_ATTACK_POWER
Definition SpellAuraDefines.h:162
@ SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE
Definition SpellAuraDefines.h:247
@ SPELL_AURA_ABILITY_IGNORE_AURASTATE
Definition SpellAuraDefines.h:325
@ SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE
Definition SpellAuraDefines.h:288
@ SPELL_AURA_MOD_THREAT
Definition SpellAuraDefines.h:73
@ SPELL_AURA_ADD_PCT_MODIFIER
Definition SpellAuraDefines.h:171
@ TOTAL_AURAS
Definition SpellAuraDefines.h:380
@ SPELL_AURA_MOD_RESISTANCE
Definition SpellAuraDefines.h:85
@ SPELL_AURA_PROC_TRIGGER_SPELL
Definition SpellAuraDefines.h:105
@ SPELL_AURA_MOD_FEAR
Definition SpellAuraDefines.h:70
@ SPELL_AURA_ADD_CASTER_HIT_TRIGGER
Definition SpellAuraDefines.h:174
@ SPELL_AURA_ADD_FLAT_MODIFIER
Definition SpellAuraDefines.h:170
@ SPELL_AURA_REFLECT_SPELLS
Definition SpellAuraDefines.h:91
@ SPELL_AURA_MOD_MELEE_HASTE
Definition SpellAuraDefines.h:201
@ SPELL_AURA_MOD_SPELL_CRIT_CHANCE
Definition SpellAuraDefines.h:120
@ SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE
Definition SpellAuraDefines.h:294
@ SPELL_AURA_DUMMY
Definition SpellAuraDefines.h:67
@ SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN
Definition SpellAuraDefines.h:150
@ SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT
Definition SpellAuraDefines.h:135
@ SPELL_AURA_MOD_ROOT
Definition SpellAuraDefines.h:89
@ SPELL_AURA_MOD_POWER_COST_SCHOOL
Definition SpellAuraDefines.h:136
@ SPELL_AURA_RAID_PROC_FROM_CHARGE
Definition SpellAuraDefines.h:286
@ SPELL_AURA_MOD_DAMAGE_TAKEN
Definition SpellAuraDefines.h:77
@ SPELL_AURA_TRANSFORM
Definition SpellAuraDefines.h:119
@ SPELL_AURA_SCHOOL_ABSORB
Definition SpellAuraDefines.h:132
@ SPELL_AURA_SPELL_MAGNET
Definition SpellAuraDefines.h:159
@ SPELL_AURA_PROC_TRIGGER_DAMAGE
Definition SpellAuraDefines.h:106
@ SPELL_AURA_DAMAGE_IMMUNITY
Definition SpellAuraDefines.h:103
@ SPELL_AURA_MOD_DAMAGE_DONE
Definition SpellAuraDefines.h:76
@ SPELL_AURA_MOD_CONFUSE
Definition SpellAuraDefines.h:68
@ SPELL_AURA_REFLECT_SPELLS_SCHOOL
Definition SpellAuraDefines.h:137
@ SPELL_AURA_MOD_STEALTH
Definition SpellAuraDefines.h:79
@ SPELL_AURA_OVERRIDE_CLASS_SCRIPTS
Definition SpellAuraDefines.h:175
@ SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK
Definition SpellAuraDefines.h:128
@ SPELL_AURA_MOD_STUN
Definition SpellAuraDefines.h:75
static bool isAlwaysTriggeredAura[TOTAL_AURAS]
Definition SpellMgr.cpp:1937
static uint32 spellTypeMask[TOTAL_AURAS]
Definition SpellMgr.cpp:1938
static bool isTriggerAura[TOTAL_AURAS]
Definition SpellMgr.cpp:1936
@ PROC_SPELL_TYPE_MASK_ALL
Definition SpellMgr.h:242
@ PROC_SPELL_TYPE_DAMAGE
Definition SpellMgr.h:239
@ PROC_SPELL_TYPE_NO_DMG_HEAL
Definition SpellMgr.h:241

References isAlwaysTriggeredAura, isTriggerAura, PROC_SPELL_TYPE_DAMAGE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_TYPE_NO_DMG_HEAL, SPELL_AURA_ABILITY_IGNORE_AURASTATE, SPELL_AURA_ADD_CASTER_HIT_TRIGGER, SPELL_AURA_ADD_FLAT_MODIFIER, SPELL_AURA_ADD_PCT_MODIFIER, SPELL_AURA_DAMAGE_IMMUNITY, SPELL_AURA_DUMMY, SPELL_AURA_MOD_ATTACK_POWER, SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE, SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK, SPELL_AURA_MOD_CONFUSE, SPELL_AURA_MOD_DAMAGE_DONE, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, SPELL_AURA_MOD_DAMAGE_TAKEN, SPELL_AURA_MOD_FEAR, SPELL_AURA_MOD_MELEE_HASTE, SPELL_AURA_MOD_POWER_COST_SCHOOL, SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT, SPELL_AURA_MOD_RESISTANCE, SPELL_AURA_MOD_ROOT, SPELL_AURA_MOD_SPELL_CRIT_CHANCE, SPELL_AURA_MOD_STEALTH, SPELL_AURA_MOD_STUN, SPELL_AURA_MOD_THREAT, SPELL_AURA_OVERRIDE_CLASS_SCRIPTS, SPELL_AURA_PROC_TRIGGER_DAMAGE, SPELL_AURA_PROC_TRIGGER_SPELL, SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE, SPELL_AURA_RAID_PROC_FROM_CHARGE, SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE, SPELL_AURA_REFLECT_SPELLS, SPELL_AURA_REFLECT_SPELLS_SCHOOL, SPELL_AURA_SCHOOL_ABSORB, SPELL_AURA_SPELL_MAGNET, SPELL_AURA_TRANSFORM, spellTypeMask, and TOTAL_AURAS.

◆ IsDiminishingReturnsGroupDurationLimited()

◆ IsPartOfSkillLine()

bool IsPartOfSkillLine ( uint32  skillId,
uint32  spellId 
)
51{
52 SkillLineAbilityMapBounds skillBounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellId);
53 for (SkillLineAbilityMap::const_iterator itr = skillBounds.first; itr != skillBounds.second; ++itr)
54 if (itr->second->SkillLine == skillId)
55 return true;
56
57 return false;
58}
#define sSpellMgr
Definition SpellMgr.h:847
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
Definition SpellMgr.h:593

References sSpellMgr.

Referenced by SpellMgr::LoadSpellInfoCustomAttributes().

◆ IsPrimaryProfessionSkill()

bool IsPrimaryProfessionSkill ( uint32  skill)
39{
40 SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(skill);
41 if (!pSkill)
42 return false;
43
45 return false;
46
47 return true;
48}
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
@ SKILL_CATEGORY_PROFESSION
Definition SharedDefines.h:3311
Definition DBCStructure.h:1583
int32 categoryId
Definition DBCStructure.h:1585

References SkillLineEntry::categoryId, SKILL_CATEGORY_PROFESSION, and sSkillLineStore.

Referenced by WorldSession::HandleUnlearnSkillOpcode(), SpellInfo::IsPrimaryProfession(), and IsProfessionSkill().

◆ LoadPetDefaultSpells_helper()

static bool LoadPetDefaultSpells_helper ( CreatureTemplate const *  cInfo,
PetDefaultSpellsEntry petDefSpells 
)
static
2684{
2685 // skip empty list;
2686 bool have_spell = false;
2687 for (uint8 j = 0; j < MAX_CREATURE_SPELL_DATA_SLOT; ++j)
2688 {
2689 if (petDefSpells.spellid[j])
2690 {
2691 have_spell = true;
2692 break;
2693 }
2694 }
2695 if (!have_spell)
2696 return false;
2697
2698 // remove duplicates with levelupSpells if any
2699 if (PetLevelupSpellSet const* levelupSpells = cInfo->family ? sSpellMgr->GetPetLevelupSpellList(cInfo->family) : nullptr)
2700 {
2701 for (uint8 j = 0; j < MAX_CREATURE_SPELL_DATA_SLOT; ++j)
2702 {
2703 if (!petDefSpells.spellid[j])
2704 continue;
2705
2706 for (PetLevelupSpellSet::const_iterator itr = levelupSpells->begin(); itr != levelupSpells->end(); ++itr)
2707 {
2708 if (itr->second == petDefSpells.spellid[j])
2709 {
2710 petDefSpells.spellid[j] = 0;
2711 break;
2712 }
2713 }
2714 }
2715 }
2716
2717 // skip empty list;
2718 have_spell = false;
2719 for (uint8 j = 0; j < MAX_CREATURE_SPELL_DATA_SLOT; ++j)
2720 {
2721 if (petDefSpells.spellid[j])
2722 {
2723 have_spell = true;
2724 break;
2725 }
2726 }
2727
2728 return have_spell;
2729}
#define MAX_CREATURE_SPELL_DATA_SLOT
Definition DBCStructure.h:807
std::multimap< uint32, uint32 > PetLevelupSpellSet
Definition SpellMgr.h:595
uint32 spellid[MAX_CREATURE_SPELL_DATA_SLOT]
Definition SpellMgr.h:602

References CreatureTemplate::family, MAX_CREATURE_SPELL_DATA_SLOT, PetDefaultSpellsEntry::spellid, and sSpellMgr.

Referenced by SpellMgr::LoadPetDefaultSpells().

Variable Documentation

◆ isAlwaysTriggeredAura

bool isAlwaysTriggeredAura[TOTAL_AURAS]
static

◆ isTriggerAura

bool isTriggerAura[TOTAL_AURAS]
static

◆ procPrepared

bool procPrepared = InitTriggerAuraData()
static

◆ spellTypeMask