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"

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)
496{
498 for (uint8 i = 0; i < 2; i++)
499 {
500 CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(stmts[i]);
501 stmt->SetData(0, spellId);
502 CharacterDatabase.Execute(stmt);
503 }
504}
CharacterDatabaseStatements
Definition CharacterDatabase.h:24
@ CHAR_DEL_INVALID_SPELL_TALENTS
Definition CharacterDatabase.h:293
@ CHAR_DEL_INVALID_SPELL_SPELLS
Definition CharacterDatabase.h:292
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 
)
106{
107 if (spellproto->IsPositive())
108 return DIMINISHING_NONE;
109
110 for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
111 {
112 if (spellproto->Effects[i].ApplyAuraName == SPELL_AURA_MOD_TAUNT)
113 return DIMINISHING_TAUNT;
114 }
115
116 // Explicit Diminishing Groups
117 switch (spellproto->SpellFamilyName)
118 {
120 {
121 // Pet charge effects (Infernal Awakening, Demon Charge)
122 if (spellproto->SpellVisual[0] == 2816 && spellproto->SpellIconID == 15)
124 // Gnaw
125 else if (spellproto->Id == 47481)
127 // Screams of the Past
128 else if (spellproto->Id == 7074)
129 return DIMINISHING_NONE;
130 break;
131 }
132 // Event spells
133 case SPELLFAMILY_UNK1:
134 return DIMINISHING_NONE;
135 case SPELLFAMILY_MAGE:
136 {
137 // Frostbite
138 if (spellproto->Id == 12494)
139 return DIMINISHING_ROOT;
140 // Shattered Barrier
141 else if (spellproto->Id == 55080)
142 return DIMINISHING_ROOT;
143 // Deep Freeze
144 else if (spellproto->SpellIconID == 2939 && spellproto->SpellVisual[0] == 9963)
146 // Frost Nova / Freeze (Water Elemental)
147 else if (spellproto->SpellIconID == 193)
149 // Dragon's Breath
150 else if (spellproto->SpellFamilyFlags[0] & 0x800000)
152 break;
153 }
155 {
156 // Hamstring - limit duration to 10s in PvP
157 if (spellproto->SpellFamilyFlags[0] & 0x2)
159 // Improved Hamstring
160 else if (spellproto->Id == 23694)
161 return DIMINISHING_ROOT;
162 // Charge Stun (own diminishing)
163 else if (spellproto->SpellFamilyFlags[0] & 0x01000000)
164 return DIMINISHING_CHARGE;
165 break;
166 }
168 {
169 // Curses/etc
170 if ((spellproto->SpellFamilyFlags[0] & 0x80000000) || (spellproto->SpellFamilyFlags[1] & 0x200))
172 // Seduction
173 else if (spellproto->SpellFamilyFlags[1] & 0x10000000)
174 return DIMINISHING_FEAR;
175 break;
176 }
178 {
179 // Pounce
180 if (spellproto->SpellFamilyFlags[0] & 0x20000)
182 // Cyclone
183 else if (spellproto->SpellFamilyFlags[1] & 0x20)
184 return DIMINISHING_CYCLONE;
185 // Entangling Roots
186 // Nature's Grasp
187 else if (spellproto->SpellFamilyFlags[0] & 0x00000200)
189 // Faerie Fire
190 else if (spellproto->SpellFamilyFlags[0] & 0x400)
192 // Feral Charge Root Effect
193 else if (spellproto->Id == 45334)
194 return DIMINISHING_NONE;
195 break;
196 }
198 {
199 // Gouge
200 if (spellproto->SpellFamilyFlags[0] & 0x8)
202 // Blind
203 else if (spellproto->SpellFamilyFlags[0] & 0x1000000)
204 return DIMINISHING_FEAR;
205 // Cheap Shot
206 else if (spellproto->SpellFamilyFlags[0] & 0x400)
208 // Crippling poison - Limit to 10 seconds in PvP (No SpellFamilyFlags)
209 else if (spellproto->SpellIconID == 163)
211 break;
212 }
214 {
215 // Hunter's Mark
216 if ((spellproto->SpellFamilyFlags[0] & 0x400) && spellproto->SpellIconID == 538)
218 // Scatter Shot (own diminishing)
219 else if ((spellproto->SpellFamilyFlags[0] & 0x40000) && spellproto->SpellIconID == 132)
221 // Entrapment (own diminishing)
222 else if (spellproto->SpellVisual[0] == 7484 && spellproto->SpellIconID == 20)
224 // Wyvern Sting mechanic is MECHANIC_SLEEP but the diminishing is DIMINISHING_DISORIENT
225 else if ((spellproto->SpellFamilyFlags[1] & 0x1000) && spellproto->SpellIconID == 1721)
227 // Freezing Arrow
228 else if (spellproto->SpellFamilyFlags[0] & 0x8)
230 break;
231 }
233 {
234 // Judgement of Justice - limit duration to 10s in PvP
235 if (spellproto->SpellFamilyFlags[0] & 0x100000)
237 // Turn Evil
238 else if ((spellproto->SpellFamilyFlags[1] & 0x804000) && spellproto->SpellIconID == 309)
239 return DIMINISHING_FEAR;
240 break;
241 }
243 {
244 // Storm, Earth and Fire - Earthgrab
245 if (spellproto->SpellFamilyFlags[2] & 0x4000)
247 break;
248 }
250 {
251 // Hungering Cold (no flags)
252 if (spellproto->SpellIconID == 2797)
254 // Mark of Blood
255 else if ((spellproto->SpellFamilyFlags[0] & 0x10000000) && spellproto->SpellIconID == 2285)
257 break;
258 }
259 default:
260 break;
261 }
262
263 // Lastly - Set diminishing depending on mechanic
264 uint64 mechanic = spellproto->GetAllEffectsMechanicMask();
265 if (mechanic & (1ULL << MECHANIC_CHARM))
267 if (mechanic & (1ULL << MECHANIC_SILENCE))
268 return DIMINISHING_SILENCE;
269 if (mechanic & (1ULL << MECHANIC_SLEEP))
270 return DIMINISHING_SLEEP;
271 if (mechanic & ((1ULL << MECHANIC_SAPPED) | (1ULL << MECHANIC_POLYMORPH) | (1ULL << MECHANIC_SHACKLE)))
273 // Mechanic Knockout, except Blast Wave
274 if (mechanic & (1ULL << MECHANIC_KNOCKOUT) && spellproto->SpellIconID != 292)
276 if (mechanic & (1ULL << MECHANIC_DISARM))
277 return DIMINISHING_DISARM;
278 if (mechanic & (1ULL << MECHANIC_FEAR))
279 return DIMINISHING_FEAR;
280 if (mechanic & (1ULL << MECHANIC_STUN))
282 if (mechanic & (1ULL << MECHANIC_BANISH))
283 return DIMINISHING_BANISH;
284 if (mechanic & (1ULL << MECHANIC_ROOT))
286 if (mechanic & (1ULL << MECHANIC_HORROR))
287 return DIMINISHING_HORROR;
288
289 return DIMINISHING_NONE;
290}
#define MAX_SPELL_EFFECTS
Definition DBCStructure.h:1637
std::uint64_t uint64
Definition Define.h:106
@ DIMINISHING_MIND_CONTROL
Definition SharedDefines.h:3505
@ DIMINISHING_HORROR
Definition SharedDefines.h:3504
@ DIMINISHING_DRAGONS_BREATH
Definition SharedDefines.h:3513
@ DIMINISHING_CONTROLLED_STUN
Definition SharedDefines.h:3497
@ DIMINISHING_CYCLONE
Definition SharedDefines.h:3499
@ DIMINISHING_BANISH
Definition SharedDefines.h:3494
@ DIMINISHING_CONTROLLED_ROOT
Definition SharedDefines.h:3498
@ DIMINISHING_NONE
Definition SharedDefines.h:3493
@ DIMINISHING_SLEEP
Definition SharedDefines.h:3510
@ DIMINISHING_STUN
Definition SharedDefines.h:3507
@ DIMINISHING_DISARM
Definition SharedDefines.h:3500
@ DIMINISHING_ENTRAPMENT
Definition SharedDefines.h:3502
@ DIMINISHING_FEAR
Definition SharedDefines.h:3503
@ DIMINISHING_SCATTER_SHOT
Definition SharedDefines.h:3508
@ DIMINISHING_LIMITONLY
Definition SharedDefines.h:3512
@ DIMINISHING_OPENING_STUN
Definition SharedDefines.h:3496
@ DIMINISHING_DISORIENT
Definition SharedDefines.h:3501
@ DIMINISHING_ROOT
Definition SharedDefines.h:3506
@ DIMINISHING_TAUNT
Definition SharedDefines.h:3511
@ DIMINISHING_CHARGE
Definition SharedDefines.h:3495
@ DIMINISHING_SILENCE
Definition SharedDefines.h:3509
@ 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:3791
@ SPELLFAMILY_MAGE
Definition SharedDefines.h:3789
@ SPELLFAMILY_GENERIC
Definition SharedDefines.h:3786
@ SPELLFAMILY_WARRIOR
Definition SharedDefines.h:3790
@ SPELLFAMILY_PALADIN
Definition SharedDefines.h:3796
@ SPELLFAMILY_HUNTER
Definition SharedDefines.h:3795
@ SPELLFAMILY_ROGUE
Definition SharedDefines.h:3794
@ SPELLFAMILY_SHAMAN
Definition SharedDefines.h:3797
@ SPELLFAMILY_DRUID
Definition SharedDefines.h:3793
@ SPELLFAMILY_DEATHKNIGHT
Definition SharedDefines.h:3801
@ SPELLFAMILY_UNK1
Definition SharedDefines.h:3787
@ 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)
293{
294 switch (group)
295 {
298 case DIMINISHING_STUN:
302 return DRTYPE_ALL;
304 case DIMINISHING_NONE:
305 return DRTYPE_NONE;
306 default:
307 return DRTYPE_PLAYER;
308 }
309}
@ DRTYPE_NONE
Definition SharedDefines.h:3485
@ DRTYPE_PLAYER
Definition SharedDefines.h:3486
@ DRTYPE_ALL
Definition SharedDefines.h:3487

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

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)
312{
313 switch (group)
314 {
317 default:
319 }
320}
@ 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
1827{
1828 for (uint16 i = 0; i < TOTAL_AURAS; ++i)
1829 {
1830 isTriggerAura[i] = false;
1831 isAlwaysTriggeredAura[i] = false;
1833 }
1834 isTriggerAura[SPELL_AURA_DUMMY] = true; // Most dummy auras should require scripting
1835 isTriggerAura[SPELL_AURA_MOD_CONFUSE] = true; // "Any direct damaging attack will revive targets"
1836 isTriggerAura[SPELL_AURA_MOD_THREAT] = true; // Only one spell: 28762 part of Mage T3 8p bonus
1837 isTriggerAura[SPELL_AURA_MOD_STUN] = true; // Aura does not have charges but needs to be removed on trigger
1842 isTriggerAura[SPELL_AURA_MOD_FEAR] = true; // Aura does not have charges but needs to be removed on trigger
1866
1876
1883
1884 return true;
1885}
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:1818
static uint32 spellTypeMask[TOTAL_AURAS]
Definition SpellMgr.cpp:1819
static bool isTriggerAura[TOTAL_AURAS]
Definition SpellMgr.cpp:1817
@ 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 
)
49{
50 SkillLineAbilityMapBounds skillBounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellId);
51 for (SkillLineAbilityMap::const_iterator itr = skillBounds.first; itr != skillBounds.second; ++itr)
52 if (itr->second->SkillLine == skillId)
53 return true;
54
55 return false;
56}
#define sSpellMgr
Definition SpellMgr.h:836
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
Definition SpellMgr.h:586

References sSpellMgr.

Referenced by SpellMgr::LoadSpellInfoCustomAttributes().

◆ IsPrimaryProfessionSkill()

bool IsPrimaryProfessionSkill ( uint32  skill)
37{
38 SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(skill);
39 if (!pSkill)
40 return false;
41
43 return false;
44
45 return true;
46}
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
@ SKILL_CATEGORY_PROFESSION
Definition SharedDefines.h:3313
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
2565{
2566 // skip empty list;
2567 bool have_spell = false;
2568 for (uint8 j = 0; j < MAX_CREATURE_SPELL_DATA_SLOT; ++j)
2569 {
2570 if (petDefSpells.spellid[j])
2571 {
2572 have_spell = true;
2573 break;
2574 }
2575 }
2576 if (!have_spell)
2577 return false;
2578
2579 // remove duplicates with levelupSpells if any
2580 if (PetLevelupSpellSet const* levelupSpells = cInfo->family ? sSpellMgr->GetPetLevelupSpellList(cInfo->family) : nullptr)
2581 {
2582 for (uint8 j = 0; j < MAX_CREATURE_SPELL_DATA_SLOT; ++j)
2583 {
2584 if (!petDefSpells.spellid[j])
2585 continue;
2586
2587 for (PetLevelupSpellSet::const_iterator itr = levelupSpells->begin(); itr != levelupSpells->end(); ++itr)
2588 {
2589 if (itr->second == petDefSpells.spellid[j])
2590 {
2591 petDefSpells.spellid[j] = 0;
2592 break;
2593 }
2594 }
2595 }
2596 }
2597
2598 // skip empty list;
2599 have_spell = false;
2600 for (uint8 j = 0; j < MAX_CREATURE_SPELL_DATA_SLOT; ++j)
2601 {
2602 if (petDefSpells.spellid[j])
2603 {
2604 have_spell = true;
2605 break;
2606 }
2607 }
2608
2609 return have_spell;
2610}
#define MAX_CREATURE_SPELL_DATA_SLOT
Definition DBCStructure.h:807
std::multimap< uint32, uint32 > PetLevelupSpellSet
Definition SpellMgr.h:588
uint32 spellid[MAX_CREATURE_SPELL_DATA_SLOT]
Definition SpellMgr.h:595

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