Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
SpellMgr.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SF_SPELLMGR_H
7#define SF_SPELLMGR_H
8
9// For static or at-server-startup loaded spell data
10
11#include "DBCStructure.h"
12#include "Platform/Singleton.h"
13#include "SharedDefines.h"
14#include "UnorderedMap.h"
15#include "Util.h"
16
17#include <map>
18#include <set>
19#include <vector>
20
21class SpellInfo;
22class Player;
23class Unit;
24class ProcEventInfo;
26
27// only used in code
36
37//SpellFamilyFlags
39{
40 // SPELLFAMILYFLAG = SpellFamilyFlags[0]
41 // SPELLFAMILYFLAG1 = SpellFamilyFlags[1]
42 // SPELLFAMILYFLAG2 = SpellFamilyFlags[2]
43
44 // Rogue
46 SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT = 0x00000840, // Vanish, Sprint
47 SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP = 0x00000200, // Shadowstep
48 SPELLFAMILYFLAG0_ROGUE_KICK = 0x00000010, // Kick
49 SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB = 0x80100000, // Dismantle, Smoke Bomb
50
51 // Warrior
56
57 // Warlock
59
60 // Druid
62
63 // Paladin
65
66 // Shaman
72
73 // Deathknight
76
78 SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000 // Seems to be linked to most totems and some totem effects
79};
80
81
82#define SPELL_LINKED_MAX_SPELLS 200000
83
85{
86 SPELL_LINK_CAST = 0, // +: cast; -: remove
87 SPELL_LINK_HIT = 1 * 200000,
88 SPELL_LINK_AURA = 2 * 200000, // +: aura; -: immune
90};
91
92
93// Spell proc event related declarations (accessed using SpellMgr functions)
95{
96 PROC_FLAG_NONE = 0x00000000,
97
98 PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor - not sure about this flag
99 PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward)
100
101 PROC_FLAG_DONE_MELEE_AUTO_ATTACK = 0x00000004, // 02 Done melee auto attack
102 PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK = 0x00000008, // 03 Taken melee auto attack
103
104 PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS = 0x00000010, // 04 Done attack by Spell that has dmg class melee
105 PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS = 0x00000020, // 05 Taken attack by Spell that has dmg class melee
106
107 PROC_FLAG_DONE_RANGED_AUTO_ATTACK = 0x00000040, // 06 Done ranged auto attack
108 PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK = 0x00000080, // 07 Taken ranged auto attack
109
110 PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS = 0x00000100, // 08 Done attack by Spell that has dmg class ranged
111 PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS = 0x00000200, // 09 Taken attack by Spell that has dmg class ranged
112
113 PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS = 0x00000400, // 10 Done positive spell that has dmg class none
114 PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS = 0x00000800, // 11 Taken positive spell that has dmg class none
115
116 PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG = 0x00001000, // 12 Done negative spell that has dmg class none
117 PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG = 0x00002000, // 13 Taken negative spell that has dmg class none
118
119 PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS = 0x00004000, // 14 Done positive spell that has dmg class magic
120 PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS = 0x00008000, // 15 Taken positive spell that has dmg class magic
121
122 PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG = 0x00010000, // 16 Done negative spell that has dmg class magic
123 PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG = 0x00020000, // 17 Taken negative spell that has dmg class magic
124
125 PROC_FLAG_DONE_PERIODIC = 0x00040000, // 18 Successful do periodic (damage / healing)
126 PROC_FLAG_TAKEN_PERIODIC = 0x00080000, // 19 Taken spell periodic (damage / healing)
127
128 PROC_FLAG_TAKEN_DAMAGE = 0x00100000, // 20 Taken any damage
129 PROC_FLAG_DONE_TRAP_ACTIVATION = 0x00200000, // 21 On trap activation (possibly needs name change to ON_GAMEOBJECT_CAST or USE)
130
131 PROC_FLAG_DONE_MAINHAND_ATTACK = 0x00400000, // 22 Done main-hand melee attacks (spell and autoattack)
132 PROC_FLAG_DONE_OFFHAND_ATTACK = 0x00800000, // 23 Done off-hand melee attacks (spell and autoattack)
133
134 PROC_FLAG_DEATH = 0x01000000, // 24 Died in any way
135
136 // flag masks
139
143
146
153
155
157
163
169
171};
172
173#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_DONE_MELEE_AUTO_ATTACK | \
174 PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK | \
175 PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS | \
176 PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS | \
177 PROC_FLAG_DONE_RANGED_AUTO_ATTACK | \
178 PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK | \
179 PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS | \
180 PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS)
181
183{
184 PROC_EX_NONE = 0x0000000, // If none can tigger on Hit/Crit only (passive spells MUST defined by SpellFamily flag)
185 PROC_EX_NORMAL_HIT = 0x0000001, // If set only from normal hit (only damage spells)
187 PROC_EX_MISS = 0x0000004,
188 PROC_EX_RESIST = 0x0000008,
189 PROC_EX_DODGE = 0x0000010,
190 PROC_EX_PARRY = 0x0000020,
191 PROC_EX_BLOCK = 0x0000040,
192 PROC_EX_EVADE = 0x0000080,
193 PROC_EX_IMMUNE = 0x0000100,
194 PROC_EX_DEFLECT = 0x0000200,
195 PROC_EX_ABSORB = 0x0000400,
196 PROC_EX_REFLECT = 0x0000800,
197 PROC_EX_INTERRUPT = 0x0001000, // Melee hit result can be Interrupt (not used)
198 PROC_EX_FULL_BLOCK = 0x0002000, // block al attack damage
199 PROC_EX_RESERVED2 = 0x0004000,
200 PROC_EX_NOT_ACTIVE_SPELL = 0x0008000, // Spell mustn't do damage/heal to proc
201 PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, // If set trigger always no matter of hit result
202 PROC_EX_EX_ONE_TIME_TRIGGER = 0x0020000, // If set trigger always but only one time (not implemented yet)
203 PROC_EX_ONLY_ACTIVE_SPELL = 0x0040000, // Spell has to do damage/heal to proc
204
205 // Flags for internal use - do not use these in db!
211};
212
213#define AURA_SPELL_PROC_EX_MASK \
214 (PROC_EX_NORMAL_HIT | PROC_EX_CRITICAL_HIT | PROC_EX_MISS | \
215 PROC_EX_RESIST | PROC_EX_DODGE | PROC_EX_PARRY | PROC_EX_BLOCK | \
216 PROC_EX_EVADE | PROC_EX_IMMUNE | PROC_EX_DEFLECT | \
217 PROC_EX_ABSORB | PROC_EX_REFLECT | PROC_EX_INTERRUPT)
218
227
236
238{
239 PROC_HIT_NONE = 0x0000000, // no value - PROC_HIT_NORMAL | PROC_HIT_CRITICAL for TAKEN proc type, PROC_HIT_NORMAL | PROC_HIT_CRITICAL | PROC_HIT_ABSORB for DONE
240 PROC_HIT_NORMAL = 0x0000001, // non-critical hits
241 PROC_HIT_CRITICAL = 0x0000002,
242 PROC_HIT_MISS = 0x0000004,
244 PROC_HIT_DODGE = 0x0000010,
245 PROC_HIT_PARRY = 0x0000020,
246 PROC_HIT_BLOCK = 0x0000040, // partial or full block
247 PROC_HIT_EVADE = 0x0000080,
248 PROC_HIT_IMMUNE = 0x0000100,
249 PROC_HIT_DEFLECT = 0x0000200,
250 PROC_HIT_ABSORB = 0x0000400, // partial or full absorb
251 PROC_HIT_REFLECT = 0x0000800,
252 PROC_HIT_INTERRUPT = 0x0001000, // (not used atm)
255};
256
261
263{
264 uint32 schoolMask; // if nonzero - bit mask for matching proc condition based on spell candidate's school: Fire=2, Mask=1<<(2-1)=2
265 uint32 spellFamilyName; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyNamer value
266 flag128 spellFamilyMask; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyFlags (like auras 107 and 108 do)
267 uint32 procFlags; // bitmask for matching proc event
268 uint32 procEx; // proc Extend info (see ProcFlagsEx)
269 float ppmRate; // for melee (ranged?) damage spells - proc rate per minute. if zero, falls back to flat chance from Spell.dbc
270 float customChance; // Owerride chance (in most cases for debug only)
271 uint32 cooldown; // hidden cooldown used for some spell proc events, applied to _triggered_spell_
272};
273
275
277{
278 uint32 schoolMask; // if nonzero - bitmask for matching proc condition based on spell's school
279 uint32 spellFamilyName; // if nonzero - for matching proc condition based on candidate spell's SpellFamilyName
280 flag128 spellFamilyMask; // if nonzero - bitmask for matching proc condition based on candidate spell's SpellFamilyFlags
281 uint32 typeMask; // if nonzero - owerwrite procFlags field for given Spell.dbc entry, bitmask for matching proc condition, see enum ProcFlags
282 uint32 spellTypeMask; // if nonzero - bitmask for matching proc condition based on candidate spell's damage/heal effects, see enum ProcFlagsSpellType
283 uint32 spellPhaseMask; // if nonzero - bitmask for matching phase of a spellcast on which proc occurs, see enum ProcFlagsSpellPhase
284 uint32 hitMask; // if nonzero - bitmask for matching proc condition based on hit result, see enum ProcFlagsHit
285 uint32 attributesMask; // bitmask, see ProcAttributes
286 float ratePerMinute; // if nonzero - chance to proc is equal to value * aura caster's weapon speed / 60
287 float chance; // if nonzero - owerwrite procChance field for given Spell.dbc entry, defines chance of proc to occur, not used if perMinuteRate set
288 uint32 cooldown; // if nonzero - cooldown in secs for aura proc, applied to aura
289 uint32 charges; // if nonzero - owerwrite procCharges field for given Spell.dbc entry, defines how many times proc can occur before aura remove, 0 - infinite
290};
291
293
300
302
310
312
322
323#define SPELL_GROUP_DB_RANGE_MIN 1000
324
325// spell_id, group_id
326typedef std::multimap<uint32, SpellGroup > SpellSpellGroupMap;
327typedef std::pair<SpellSpellGroupMap::const_iterator, SpellSpellGroupMap::const_iterator> SpellSpellGroupMapBounds;
328
329// group_id, spell_id
330typedef std::multimap<SpellGroup, int32> SpellGroupSpellMap;
331typedef std::pair<SpellGroupSpellMap::const_iterator, SpellGroupSpellMap::const_iterator> SpellGroupSpellMapBounds;
332
340
341#define SPELL_GROUP_STACK_RULE_MAX 4
342
343typedef std::map<SpellGroup, SpellGroupStackRule> SpellGroupStackMap;
344
346{
347 int32 flatMod; // flat threat-value for this Spell - default: 0
348 float pctMod; // threat-multiplier for this Spell - default: 1.0f
349 float apPctMod; // Pct of AP that is added as Threat - default: 0.0f
350};
351
352typedef std::map<uint32, SpellThreatEntry> SpellThreatMap;
353
354// coordinates for spells (accessed using SpellMgr functions)
363
364typedef std::map<std::pair<uint32 /*spell_id*/, SpellEffIndex /*effIndex*/>, SpellTargetPosition> SpellTargetPositionMap;
365
366// Enum with EffectRadiusIndex and their actual radius
368{
405 EFFECT_RADIUS_0_5_YARDS = 44, // 0.5 yards
424 EFFECT_RADIUS_3_5_YARDS = 64, // 3.5 yards
426};
427
428// Spell pet auras
430{
431private:
433
434public:
436
437 PetAura(uint32 petEntry, uint32 aura, bool _removeOnChangePet, int _damage) :
438 removeOnChangePet(_removeOnChangePet), damage(_damage)
439 {
440 auras[petEntry] = aura;
441 }
442
443 uint32 GetAura(uint32 petEntry) const
444 {
445 PetAuraMap::const_iterator itr = auras.find(petEntry);
446 if (itr != auras.end())
447 return itr->second;
448 PetAuraMap::const_iterator itr2 = auras.find(0);
449 if (itr2 != auras.end())
450 return itr2->second;
451 return 0;
452 }
453
454 void AddAura(uint32 petEntry, uint32 aura)
455 {
456 auras[petEntry] = aura;
457 }
458
460 {
461 return removeOnChangePet;
462 }
463
465 {
466 return damage;
467 }
468
469private:
473};
474typedef std::map<uint32, PetAura> SpellPetAuraMap;
475
477{
479 uint32 areaId; // zone/subzone/or 0 is not limited to zone
480 uint32 questStart; // quest start (quest must be active or rewarded for spell apply)
481 uint32 questEnd; // quest end (quest must not be rewarded for spell apply)
482 int32 auraSpell; // spell aura must be applied for spell apply)if possitive) and it must not be applied in other case
483 uint32 raceMask; // can be applied only to races
484 Gender gender; // can be applied only to gender
485 uint32 questStartStatus; // QuestStatus that quest_start must have in order to keep the spell
486 uint32 questEndStatus; // QuestStatus that the quest_end must have in order to keep the spell (if the quest_end's status is different than this, the spell will be dropped)
487 bool autocast; // if true then auto applied at area enter, in other case just allowed to cast
488
489 // helpers
490 bool IsFitToRequirements(Player const* player, uint32 newZone, uint32 newArea) const;
491};
492
493typedef std::multimap<uint32, SpellArea> SpellAreaMap;
494typedef std::multimap<uint32, SpellArea const*> SpellAreaForQuestMap;
495typedef std::multimap<uint32, SpellArea const*> SpellAreaForAuraMap;
496typedef std::multimap<uint32, SpellArea const*> SpellAreaForAreaMap;
497typedef std::pair<SpellAreaMap::const_iterator, SpellAreaMap::const_iterator> SpellAreaMapBounds;
498typedef std::pair<SpellAreaForQuestMap::const_iterator, SpellAreaForQuestMap::const_iterator> SpellAreaForQuestMapBounds;
499typedef std::pair<SpellAreaForAuraMap::const_iterator, SpellAreaForAuraMap::const_iterator> SpellAreaForAuraMapBounds;
500typedef std::pair<SpellAreaForAreaMap::const_iterator, SpellAreaForAreaMap::const_iterator> SpellAreaForAreaMapBounds;
501
502// Spell rank chain (accessed using SpellMgr functions)
511
513
514// spell_id req_spell
515typedef std::multimap<uint32, uint32> SpellRequiredMap;
516typedef std::pair<SpellRequiredMap::const_iterator, SpellRequiredMap::const_iterator> SpellRequiredMapBounds;
517
518// req_spell spell_id
519typedef std::multimap<uint32, uint32> SpellsRequiringSpellMap;
520typedef std::pair<SpellsRequiringSpellMap::const_iterator, SpellsRequiringSpellMap::const_iterator> SpellsRequiringSpellMapBounds;
521
522// Spell learning properties (accessed using SpellMgr functions)
524{
527 uint16 value; // 0 - max skill value for player level
528 uint16 maxvalue; // 0 - max skill value for player level
529};
530
531typedef std::map<uint32, SpellLearnSkillNode> SpellLearnSkillMap;
532
534{
536 bool active; // show in spellbook or not
538};
539
540typedef std::multimap<uint32, SpellLearnSpellNode> SpellLearnSpellMap;
541typedef std::pair<SpellLearnSpellMap::const_iterator, SpellLearnSpellMap::const_iterator> SpellLearnSpellMapBounds;
542
543typedef std::multimap<uint32, SkillLineAbilityEntry const*> SkillLineAbilityMap;
544typedef std::pair<SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator> SkillLineAbilityMapBounds;
545
546typedef std::multimap<uint32, uint32> PetLevelupSpellSet;
547typedef std::map<uint32, PetLevelupSpellSet> PetLevelupSpellMap;
548
549typedef std::map<uint32, uint32> SpellDifficultySearcherMap;
550
555
556// < 0 for petspelldata id, > 0 for creature_id
557typedef std::map<int32, PetDefaultSpellsEntry> PetDefaultSpellsMap;
558
559typedef std::vector<uint32> SpellCustomAttribute;
560typedef std::vector<bool> EnchantCustomAttribute;
561
562typedef std::vector<SpellInfo*> SpellInfoMap;
563
564typedef std::map<int32, std::vector<int32> > SpellLinkedMap;
565
567
568bool IsWeaponSkill(uint32 skill);
569
570inline bool IsProfessionSkill(uint32 skill)
571{
572 return IsPrimaryProfessionSkill(skill) || skill == SKILL_ARCHAEOLOGY || skill == SKILL_FISHING || skill == SKILL_COOKING || skill == SKILL_FIRST_AID;
573}
574
576{
577 return IsProfessionSkill(skill) || skill == SKILL_RIDING;
578}
579
580bool IsPartOfSkillLine(uint32 skillId, uint32 spellId);
581
582// spell diminishing returns
583DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellInfo const* spellproto, bool triggered);
588
590{
591 friend class Skyfire::Singleton<SpellMgr, Skyfire::NullMutex>;
592 // Constructors
593private:
594 SpellMgr();
595 ~SpellMgr();
596
597 // Accessors (const or static functions)
598public:
599 // Spell correctness for client using
600 static bool IsSpellValid(SpellInfo const* spellInfo, Player* player = NULL, bool msg = true);
601
602 // Spell difficulty
603 uint32 GetSpellDifficultyId(uint32 spellId) const;
604 void SetSpellDifficultyId(uint32 spellId, uint32 id);
605 uint32 GetSpellIdForDifficulty(uint32 spellId, Unit const* caster) const;
606 SpellInfo const* GetSpellForDifficultyFromSpell(SpellInfo const* spell, Unit const* caster) const;
607
608 // Spell Ranks table
609 SpellChainNode const* GetSpellChainNode(uint32 spell_id) const;
610 uint32 GetFirstSpellInChain(uint32 spell_id) const;
611 uint32 GetLastSpellInChain(uint32 spell_id) const;
612 uint32 GetNextSpellInChain(uint32 spell_id) const;
613 uint32 GetPrevSpellInChain(uint32 spell_id) const;
614 uint8 GetSpellRank(uint32 spell_id) const;
615 // not strict check returns provided spell if rank not avalible
616 uint32 GetSpellWithRank(uint32 spell_id, uint32 rank, bool strict = false) const;
617
618 // Spell Required table
621 bool IsSpellRequiringSpell(uint32 spellid, uint32 req_spellid) const;
622
623 // Spell learning
624 SpellLearnSkillNode const* GetSpellLearnSkill(uint32 spell_id) const;
626 bool IsSpellLearnSpell(uint32 spell_id) const;
627 bool IsSpellLearnToSpell(uint32 spell_id1, uint32 spell_id2) const;
628
629 // Spell target coordinates
630 SpellTargetPosition const* GetSpellTargetPosition(uint32 spell_id, SpellEffIndex effIndex) const;
631
632 // Spell Groups table
634 bool IsSpellMemberOfSpellGroup(uint32 spellid, SpellGroup groupid) const;
635
636 SpellGroupSpellMapBounds GetSpellGroupSpellMapBounds(SpellGroup group_id) const;
637 void GetSetOfSpellsInSpellGroup(SpellGroup group_id, std::set<uint32>& foundSpells) const;
638 void GetSetOfSpellsInSpellGroup(SpellGroup group_id, std::set<uint32>& foundSpells, std::set<SpellGroup>& usedGroups) const;
639
640 // Spell Group Stack Rules table
641 bool AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, int32 amount, std::map<SpellGroup, int32>& groups) const;
642 SpellGroupStackRule CheckSpellGroupStackRules(SpellInfo const* spellInfo1, SpellInfo const* spellInfo2) const;
643
644 // Spell proc event table
645 SpellProcEventEntry const* GetSpellProcEvent(uint32 spellId) const;
646 bool IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellProcEvent, uint32 EventProcFlag, SpellInfo const* procSpell, uint32 procFlags, uint32 procExtra, bool active) const;
647
648 // Spell proc table
649 SpellProcEntry const* GetSpellProcEntry(uint32 spellId) const;
650 bool CanSpellTriggerProcOnEvent(SpellProcEntry const& procEntry, ProcEventInfo& eventInfo) const;
651
652 // Spell bonus data table
653 SpellBonusEntry const* GetSpellBonusData(uint32 spellId) const;
654
655 // Spell threat table
656 SpellThreatEntry const* GetSpellThreatEntry(uint32 spellID) const;
657
659
660 PetAura const* GetPetAura(uint32 spell_id, uint8 eff) const;
661
662 SpellEnchantProcEntry const* GetSpellEnchantProcEvent(uint32 enchId) const;
663 bool IsArenaAllowedEnchancment(uint32 ench_id) const;
664
665 const std::vector<int32>* GetSpellLinked(int32 spell_id) const;
666
667 PetLevelupSpellSet const* GetPetLevelupSpellList(uint32 petFamily) const;
668 PetDefaultSpellsEntry const* GetPetDefaultSpellsEntry(int32 id) const;
669
670 // Spell area
671 SpellAreaMapBounds GetSpellAreaMapBounds(uint32 spell_id) const;
676
677 // SpellInfo object management
678 SpellInfo const* GetSpellInfo(uint32 spellId) const { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : NULL; }
679 uint32 GetSpellInfoStoreSize() const { return mSpellInfoMap.size(); }
680
681private:
682 SpellInfo* _GetSpellInfo(uint32 spellId) { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : NULL; }
683
684 // Modifiers
685public:
686 // Loading data at server startup
689 void LoadSpellRanks();
690 void LoadSpellRequired();
694 void LoadSpellGroups();
696 void LoadSpellProcEvents();
697 void LoadSpellProcs();
698 void LoadSpellBonusess();
699 void LoadSpellThreats();
701 void LoadSpellPetAuras();
704 void LoadSpellLinked();
707 void LoadSpellAreas();
708 void LoadSpellInfoStore();
713
714private:
740 PetDefaultSpellsMap mPetDefaultSpellsMap; // only spells not listed in related mPetLevelupSpellMap entry
742};
743
744#define sSpellMgr Skyfire::Singleton<SpellMgr, Skyfire::NullMutex>::instance()
745
746#endif
#define MAX_CREATURE_SPELL_DATA_SLOT
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::uint16_t uint16
Definition Define.h:78
SpellEffIndex
DiminishingGroup
Gender
DiminishingLevels
DiminishingReturnsType
@ SKILL_ARCHAEOLOGY
@ SKILL_COOKING
@ SKILL_FISHING
@ SKILL_RIDING
@ SKILL_FIRST_AID
std::multimap< uint32, SpellLearnSpellNode > SpellLearnSpellMap
Definition SpellMgr.h:540
bool IsPrimaryProfessionSkill(uint32 skill)
Definition SpellMgr.cpp:23
bool IsPartOfSkillLine(uint32 skillId, uint32 spellId)
Definition SpellMgr.cpp:35
std::multimap< uint32, SpellArea const * > SpellAreaForAuraMap
Definition SpellMgr.h:495
bool IsProfessionOrRidingSkill(uint32 skill)
Definition SpellMgr.h:575
int32 GetDiminishingReturnsLimitDuration(DiminishingGroup group, SpellInfo const *spellproto)
Definition SpellMgr.cpp:235
ProcFlagsHit
Definition SpellMgr.h:238
@ PROC_HIT_BLOCK
Definition SpellMgr.h:246
@ PROC_HIT_FULL_RESIST
Definition SpellMgr.h:243
@ PROC_HIT_FULL_BLOCK
Definition SpellMgr.h:253
@ PROC_HIT_MISS
Definition SpellMgr.h:242
@ PROC_HIT_INTERRUPT
Definition SpellMgr.h:252
@ PROC_HIT_NONE
Definition SpellMgr.h:239
@ PROC_HIT_DEFLECT
Definition SpellMgr.h:249
@ PROC_HIT_EVADE
Definition SpellMgr.h:247
@ PROC_HIT_DODGE
Definition SpellMgr.h:244
@ PROC_HIT_IMMUNE
Definition SpellMgr.h:248
@ PROC_HIT_ABSORB
Definition SpellMgr.h:250
@ PROC_HIT_PARRY
Definition SpellMgr.h:245
@ PROC_HIT_MASK_ALL
Definition SpellMgr.h:254
@ PROC_HIT_CRITICAL
Definition SpellMgr.h:241
@ PROC_HIT_NORMAL
Definition SpellMgr.h:240
@ PROC_HIT_REFLECT
Definition SpellMgr.h:251
DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellInfo const *spellproto, bool triggered)
Definition SpellMgr.cpp:45
std::pair< SpellsRequiringSpellMap::const_iterator, SpellsRequiringSpellMap::const_iterator > SpellsRequiringSpellMapBounds
Definition SpellMgr.h:520
SpellFamilyFlag
Definition SpellMgr.h:39
@ SPELLFAMILYFLAG_SHAMAN_MANA_SPRING
Definition SpellMgr.h:69
@ SPELLFAMILYFLAG_WARLOCK_LIFETAP
Definition SpellMgr.h:58
@ SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW
Definition SpellMgr.h:55
@ SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP
Definition SpellMgr.h:47
@ SPELLFAMILYFLAG_WARRIOR_EXECUTE
Definition SpellMgr.h:54
@ SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH
Definition SpellMgr.h:70
@ SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS
Definition SpellMgr.h:78
@ SPELLFAMILYFLAG_DK_DEATH_COIL
Definition SpellMgr.h:75
@ SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK
Definition SpellMgr.h:67
@ SPELLFAMILYFLAG_WARRIOR_SLAM
Definition SpellMgr.h:53
@ SPELLFAMILYFLAG2_DRUID_STARFALL
Definition SpellMgr.h:61
@ SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT
Definition SpellMgr.h:46
@ SPELLFAMILYFLAG1_PALADIN_DIVINESTORM
Definition SpellMgr.h:64
@ SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB
Definition SpellMgr.h:49
@ SPELLFAMILYFLAG_WARRIOR_CHARGE
Definition SpellMgr.h:52
@ SPELLFAMILYFLAG_DK_DEATH_STRIKE
Definition SpellMgr.h:74
@ SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM
Definition SpellMgr.h:68
@ SPELLFAMILYFLAG0_ROGUE_KICK
Definition SpellMgr.h:48
@ SPELLFAMILYFLAG0_ROGUE_VANISH
Definition SpellMgr.h:45
@ SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA
Definition SpellMgr.h:71
std::map< SpellGroup, SpellGroupStackRule > SpellGroupStackMap
Definition SpellMgr.h:343
std::map< std::pair< uint32, SpellEffIndex >, SpellTargetPosition > SpellTargetPositionMap
Definition SpellMgr.h:364
bool IsDiminishingReturnsGroupDurationLimited(DiminishingGroup group)
Definition SpellMgr.cpp:287
std::pair< SpellSpellGroupMap::const_iterator, SpellSpellGroupMap::const_iterator > SpellSpellGroupMapBounds
Definition SpellMgr.h:327
bool IsProfessionSkill(uint32 skill)
Definition SpellMgr.h:570
bool IsWeaponSkill(uint32 skill)
Definition SpellMgr.cpp:29
std::multimap< uint32, SpellArea > SpellAreaMap
Definition SpellMgr.h:493
std::pair< SpellAreaMap::const_iterator, SpellAreaMap::const_iterator > SpellAreaMapBounds
Definition SpellMgr.h:497
std::map< uint32, uint32 > SpellDifficultySearcherMap
Definition SpellMgr.h:549
std::map< int32, std::vector< int32 > > SpellLinkedMap
Definition SpellMgr.h:564
SpellGroup
Definition SpellMgr.h:314
@ SPELL_GROUP_ELIXIR_SHATTRATH
Definition SpellMgr.h:319
@ SPELL_GROUP_NONE
Definition SpellMgr.h:315
@ SPELL_GROUP_CORE_RANGE_MAX
Definition SpellMgr.h:320
@ SPELL_GROUP_ELIXIR_BATTLE
Definition SpellMgr.h:316
@ SPELL_GROUP_ELIXIR_GUARDIAN
Definition SpellMgr.h:317
@ SPELL_GROUP_ELIXIR_UNSTABLE
Definition SpellMgr.h:318
std::multimap< uint32, SpellGroup > SpellSpellGroupMap
Definition SpellMgr.h:326
UNORDERED_MAP< uint32, SpellEnchantProcEntry > SpellEnchantProcEventMap
Definition SpellMgr.h:301
std::pair< SpellAreaForAreaMap::const_iterator, SpellAreaForAreaMap::const_iterator > SpellAreaForAreaMapBounds
Definition SpellMgr.h:500
UNORDERED_MAP< uint32, SpellProcEntry > SpellProcMap
Definition SpellMgr.h:292
ProcAttributes
Definition SpellMgr.h:258
@ PROC_ATTR_REQ_EXP_OR_HONOR
Definition SpellMgr.h:259
std::multimap< uint32, SpellArea const * > SpellAreaForAreaMap
Definition SpellMgr.h:496
SpellGroupStackRule
Definition SpellMgr.h:334
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE_FROM_SAME_CASTER
Definition SpellMgr.h:337
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE
Definition SpellMgr.h:336
@ SPELL_GROUP_STACK_RULE_DEFAULT
Definition SpellMgr.h:335
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT
Definition SpellMgr.h:338
std::pair< SpellRequiredMap::const_iterator, SpellRequiredMap::const_iterator > SpellRequiredMapBounds
Definition SpellMgr.h:516
std::multimap< uint32, SkillLineAbilityEntry const * > SkillLineAbilityMap
Definition SpellMgr.h:543
std::map< uint32, PetAura > SpellPetAuraMap
Definition SpellMgr.h:474
std::multimap< uint32, SpellArea const * > SpellAreaForQuestMap
Definition SpellMgr.h:494
std::map< int32, PetDefaultSpellsEntry > PetDefaultSpellsMap
Definition SpellMgr.h:557
std::multimap< SpellGroup, int32 > SpellGroupSpellMap
Definition SpellMgr.h:330
UNORDERED_MAP< uint32, SpellBonusEntry > SpellBonusMap
Definition SpellMgr.h:311
std::vector< bool > EnchantCustomAttribute
Definition SpellMgr.h:560
SpellLinkedType
Definition SpellMgr.h:85
@ SPELL_LINK_HIT
Definition SpellMgr.h:87
@ SPELL_LINK_CAST
Definition SpellMgr.h:86
@ SPELL_LINK_AURA
Definition SpellMgr.h:88
@ SPELL_LINK_REMOVE
Definition SpellMgr.h:89
DiminishingReturnsType GetDiminishingReturnsGroupType(DiminishingGroup group)
Definition SpellMgr.cpp:205
SpellCategories
Definition SpellMgr.h:29
@ SPELLCATEGORY_DRINK
Definition SpellMgr.h:34
@ SPELLCATEGORY_DEVOUR_MAGIC
Definition SpellMgr.h:31
@ SPELLCATEGORY_HEALTH_MANA_POTIONS
Definition SpellMgr.h:30
@ SPELLCATEGORY_FOOD
Definition SpellMgr.h:33
@ SPELLCATEGORY_JUDGEMENT
Definition SpellMgr.h:32
std::pair< SpellGroupSpellMap::const_iterator, SpellGroupSpellMap::const_iterator > SpellGroupSpellMapBounds
Definition SpellMgr.h:331
std::vector< uint32 > SpellCustomAttribute
Definition SpellMgr.h:559
std::pair< SpellAreaForAuraMap::const_iterator, SpellAreaForAuraMap::const_iterator > SpellAreaForAuraMapBounds
Definition SpellMgr.h:499
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
Definition SpellMgr.h:544
ProcFlagsExLegacy
Definition SpellMgr.h:183
@ PROC_EX_NONE
Definition SpellMgr.h:184
@ PROC_EX_DODGE
Definition SpellMgr.h:189
@ PROC_EX_DEFLECT
Definition SpellMgr.h:194
@ PROC_EX_BLOCK
Definition SpellMgr.h:191
@ PROC_EX_INTERNAL_CANT_PROC
Definition SpellMgr.h:206
@ PROC_EX_RESERVED2
Definition SpellMgr.h:199
@ PROC_EX_INTERNAL_DOT
Definition SpellMgr.h:207
@ PROC_EX_CRITICAL_HIT
Definition SpellMgr.h:186
@ PROC_EX_NORMAL_HIT
Definition SpellMgr.h:185
@ PROC_EX_IMMUNE
Definition SpellMgr.h:193
@ PROC_EX_MISS
Definition SpellMgr.h:187
@ PROC_EX_INTERNAL_HOT
Definition SpellMgr.h:208
@ PROC_EX_ONLY_ACTIVE_SPELL
Definition SpellMgr.h:203
@ PROC_EX_RESIST
Definition SpellMgr.h:188
@ PROC_EX_REFLECT
Definition SpellMgr.h:196
@ PROC_EX_FULL_BLOCK
Definition SpellMgr.h:198
@ PROC_EX_EX_ONE_TIME_TRIGGER
Definition SpellMgr.h:202
@ PROC_EX_ABSORB
Definition SpellMgr.h:195
@ PROC_EX_INTERRUPT
Definition SpellMgr.h:197
@ PROC_EX_PARRY
Definition SpellMgr.h:190
@ PROC_EX_INTERNAL_TRIGGERED
Definition SpellMgr.h:209
@ PROC_EX_EX_TRIGGER_ALWAYS
Definition SpellMgr.h:201
@ PROC_EX_EVADE
Definition SpellMgr.h:192
@ PROC_EX_NOT_ACTIVE_SPELL
Definition SpellMgr.h:200
@ PROC_EX_INTERNAL_REQ_FAMILY
Definition SpellMgr.h:210
ProcFlagsSpellType
Definition SpellMgr.h:220
@ PROC_SPELL_TYPE_NONE
Definition SpellMgr.h:221
@ PROC_SPELL_TYPE_HEAL
Definition SpellMgr.h:223
@ PROC_SPELL_TYPE_MASK_ALL
Definition SpellMgr.h:225
@ PROC_SPELL_TYPE_DAMAGE
Definition SpellMgr.h:222
@ PROC_SPELL_TYPE_NO_DMG_HEAL
Definition SpellMgr.h:224
std::map< uint32, SpellThreatEntry > SpellThreatMap
Definition SpellMgr.h:352
std::map< uint32, PetLevelupSpellSet > PetLevelupSpellMap
Definition SpellMgr.h:547
DiminishingLevels GetDiminishingReturnsMaxLevel(DiminishingGroup group)
Definition SpellMgr.cpp:224
EffectRadiusIndex
Definition SpellMgr.h:368
@ EFFECT_RADIUS_14_YARDS
Definition SpellMgr.h:421
@ EFFECT_RADIUS_500_YARDS
Definition SpellMgr.h:392
@ EFFECT_RADIUS_13_YARDS
Definition SpellMgr.h:379
@ EFFECT_RADIUS_7_YARDS
Definition SpellMgr.h:398
@ EFFECT_RADIUS_100_YARDS
Definition SpellMgr.h:374
@ EFFECT_RADIUS_45_YARDS_2
Definition SpellMgr.h:418
@ EFFECT_RADIUS_80_YARDS
Definition SpellMgr.h:393
@ EFFECT_RADIUS_20_YARDS
Definition SpellMgr.h:371
@ EFFECT_RADIUS_60_YARDS_2
Definition SpellMgr.h:412
@ EFFECT_RADIUS_8_YARDS
Definition SpellMgr.h:376
@ EFFECT_RADIUS_34_YARDS
Definition SpellMgr.h:400
@ EFFECT_RADIUS_45_YARDS
Definition SpellMgr.h:373
@ EFFECT_RADIUS_2_YARDS
Definition SpellMgr.h:369
@ EFFECT_RADIUS_50000_YARDS_2
Definition SpellMgr.h:415
@ EFFECT_RADIUS_44_YARDS
Definition SpellMgr.h:420
@ EFFECT_RADIUS_5_YARDS_3
Definition SpellMgr.h:413
@ EFFECT_RADIUS_15_YARDS
Definition SpellMgr.h:380
@ EFFECT_RADIUS_23_YARDS
Definition SpellMgr.h:423
@ EFFECT_RADIUS_55_YARDS
Definition SpellMgr.h:396
@ EFFECT_RADIUS_65_YARDS
Definition SpellMgr.h:386
@ EFFECT_RADIUS_32_YARDS
Definition SpellMgr.h:419
@ EFFECT_RADIUS_30_YARDS
Definition SpellMgr.h:372
@ EFFECT_RADIUS_1_YARD
Definition SpellMgr.h:378
@ EFFECT_RADIUS_9_YARDS
Definition SpellMgr.h:401
@ EFFECT_RADIUS_16_YARDS
Definition SpellMgr.h:404
@ EFFECT_RADIUS_60_YARDS
Definition SpellMgr.h:409
@ EFFECT_RADIUS_90_YARDS
Definition SpellMgr.h:410
@ EFFECT_RADIUS_130_YARDS
Definition SpellMgr.h:416
@ EFFECT_RADIUS_4_YARDS
Definition SpellMgr.h:388
@ EFFECT_RADIUS_25_YARDS
Definition SpellMgr.h:382
@ EFFECT_RADIUS_10_YARDS_2
Definition SpellMgr.h:406
@ EFFECT_RADIUS_15_YARDS_2
Definition SpellMgr.h:408
@ EFFECT_RADIUS_5_YARDS
Definition SpellMgr.h:370
@ EFFECT_RADIUS_40_YARDS
Definition SpellMgr.h:385
@ EFFECT_RADIUS_70_YARDS
Definition SpellMgr.h:387
@ EFFECT_RADIUS_5_YARDS_2
Definition SpellMgr.h:407
@ EFFECT_RADIUS_3_YARDS
Definition SpellMgr.h:377
@ EFFECT_RADIUS_38_YARDS
Definition SpellMgr.h:417
@ EFFECT_RADIUS_21_YARDS
Definition SpellMgr.h:399
@ EFFECT_RADIUS_50_YARDS
Definition SpellMgr.h:389
@ EFFECT_RADIUS_50000_YARDS
Definition SpellMgr.h:390
@ EFFECT_RADIUS_60_YARDS_3
Definition SpellMgr.h:414
@ EFFECT_RADIUS_18_YARDS
Definition SpellMgr.h:381
@ EFFECT_RADIUS_200_YARDS
Definition SpellMgr.h:384
@ EFFECT_RADIUS_12_YARDS
Definition SpellMgr.h:394
@ EFFECT_RADIUS_10_YARDS
Definition SpellMgr.h:375
@ EFFECT_RADIUS_0_YARDS
Definition SpellMgr.h:397
@ EFFECT_RADIUS_3_5_YARDS
Definition SpellMgr.h:424
@ EFFECT_RADIUS_150_YARDS
Definition SpellMgr.h:402
@ EFFECT_RADIUS_80_YARDS_2
Definition SpellMgr.h:425
@ EFFECT_RADIUS_35_YARDS
Definition SpellMgr.h:383
@ EFFECT_RADIUS_47_YARDS
Definition SpellMgr.h:422
@ EFFECT_RADIUS_6_YARDS
Definition SpellMgr.h:391
@ EFFECT_RADIUS_11_YARDS
Definition SpellMgr.h:403
@ EFFECT_RADIUS_15_YARDS_3
Definition SpellMgr.h:411
@ EFFECT_RADIUS_0_5_YARDS
Definition SpellMgr.h:405
@ EFFECT_RADIUS_99_YARDS
Definition SpellMgr.h:395
ProcFlagsSpellPhase
Definition SpellMgr.h:229
@ PROC_SPELL_PHASE_FINISH
Definition SpellMgr.h:233
@ PROC_SPELL_PHASE_NONE
Definition SpellMgr.h:230
@ PROC_SPELL_PHASE_CAST
Definition SpellMgr.h:231
@ PROC_SPELL_PHASE_HIT
Definition SpellMgr.h:232
@ PROC_SPELL_PHASE_MASK_ALL
Definition SpellMgr.h:234
ProcFlags
Definition SpellMgr.h:95
@ MELEE_PROC_FLAG_MASK
Definition SpellMgr.h:140
@ PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS
Definition SpellMgr.h:110
@ PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS
Definition SpellMgr.h:119
@ AUTO_ATTACK_PROC_FLAG_MASK
Definition SpellMgr.h:137
@ PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK
Definition SpellMgr.h:108
@ PROC_FLAG_DONE_PERIODIC
Definition SpellMgr.h:125
@ TAKEN_HIT_PROC_FLAG_MASK
Definition SpellMgr.h:164
@ SPELL_CAST_PROC_FLAG_MASK
Definition SpellMgr.h:154
@ PROC_FLAG_DONE_MELEE_AUTO_ATTACK
Definition SpellMgr.h:101
@ PERIODIC_PROC_FLAG_MASK
Definition SpellMgr.h:156
@ PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS
Definition SpellMgr.h:113
@ PROC_FLAG_KILLED
Definition SpellMgr.h:98
@ PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS
Definition SpellMgr.h:104
@ PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG
Definition SpellMgr.h:123
@ PROC_FLAG_DEATH
Definition SpellMgr.h:134
@ PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS
Definition SpellMgr.h:111
@ PROC_FLAG_TAKEN_PERIODIC
Definition SpellMgr.h:126
@ REQ_SPELL_PHASE_PROC_FLAG_MASK
Definition SpellMgr.h:170
@ PROC_FLAG_KILL
Definition SpellMgr.h:99
@ PROC_FLAG_DONE_MAINHAND_ATTACK
Definition SpellMgr.h:131
@ PROC_FLAG_DONE_RANGED_AUTO_ATTACK
Definition SpellMgr.h:107
@ PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG
Definition SpellMgr.h:117
@ PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG
Definition SpellMgr.h:116
@ PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS
Definition SpellMgr.h:120
@ PROC_FLAG_TAKEN_DAMAGE
Definition SpellMgr.h:128
@ PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK
Definition SpellMgr.h:102
@ RANGED_PROC_FLAG_MASK
Definition SpellMgr.h:144
@ PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS
Definition SpellMgr.h:114
@ PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS
Definition SpellMgr.h:105
@ SPELL_PROC_FLAG_MASK
Definition SpellMgr.h:147
@ DONE_HIT_PROC_FLAG_MASK
Definition SpellMgr.h:158
@ PROC_FLAG_DONE_TRAP_ACTIVATION
Definition SpellMgr.h:129
@ PROC_FLAG_DONE_OFFHAND_ATTACK
Definition SpellMgr.h:132
@ PROC_FLAG_NONE
Definition SpellMgr.h:96
@ PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG
Definition SpellMgr.h:122
std::multimap< uint32, uint32 > SpellsRequiringSpellMap
Definition SpellMgr.h:519
std::multimap< uint32, uint32 > SpellRequiredMap
Definition SpellMgr.h:515
std::vector< SpellInfo * > SpellInfoMap
Definition SpellMgr.h:562
std::pair< SpellAreaForQuestMap::const_iterator, SpellAreaForQuestMap::const_iterator > SpellAreaForQuestMapBounds
Definition SpellMgr.h:498
std::pair< SpellLearnSpellMap::const_iterator, SpellLearnSpellMap::const_iterator > SpellLearnSpellMapBounds
Definition SpellMgr.h:541
UNORDERED_MAP< uint32, SpellProcEventEntry > SpellProcEventMap
Definition SpellMgr.h:274
std::map< uint32, SpellLearnSkillNode > SpellLearnSkillMap
Definition SpellMgr.h:531
std::multimap< uint32, uint32 > PetLevelupSpellSet
Definition SpellMgr.h:546
UNORDERED_MAP< uint32, SpellChainNode > SpellChainMap
Definition SpellMgr.h:512
#define UNORDERED_MAP
int32 damage
Definition SpellMgr.h:472
int32 GetDamage() const
Definition SpellMgr.h:464
uint32 GetAura(uint32 petEntry) const
Definition SpellMgr.h:443
PetAura(uint32 petEntry, uint32 aura, bool _removeOnChangePet, int _damage)
Definition SpellMgr.h:437
PetAura()
Definition SpellMgr.h:435
bool removeOnChangePet
Definition SpellMgr.h:471
UNORDERED_MAP< uint32, uint32 > PetAuraMap
Definition SpellMgr.h:432
PetAuraMap auras
Definition SpellMgr.h:470
bool IsRemovedOnChangePet() const
Definition SpellMgr.h:459
void AddAura(uint32 petEntry, uint32 aura)
Definition SpellMgr.h:454
SpellRequiredMap mSpellReq
Definition SpellMgr.h:718
SpellLinkedMap mSpellLinkedMap
Definition SpellMgr.h:730
void LoadSpellLinked()
SkillLineAbilityMap mSkillLineAbilityMap
Definition SpellMgr.h:738
SpellAreaMapBounds GetSpellAreaMapBounds(uint32 spell_id) const
EnchantCustomAttribute mEnchantCustomAttr
Definition SpellMgr.h:732
void SetSpellDifficultyId(uint32 spellId, uint32 id)
Definition SpellMgr.cpp:416
SpellLearnSpellMapBounds GetSpellLearnSpellMapBounds(uint32 spell_id) const
Definition SpellMgr.cpp:573
PetLevelupSpellSet const * GetPetLevelupSpellList(uint32 petFamily) const
void LoadSpellInfoStore()
uint32 GetSpellIdForDifficulty(uint32 spellId, Unit const *caster) const
Definition SpellMgr.cpp:421
SpellAreaForQuestMapBounds GetSpellAreaForQuestEndMapBounds(uint32 quest_id) const
SpellAreaForAuraMap mSpellAreaForAuraMap
Definition SpellMgr.h:736
SpellProcEventEntry const * GetSpellProcEvent(uint32 spellId) const
Definition SpellMgr.cpp:726
SpellChainMap mSpellChains
Definition SpellMgr.h:716
void LoadEnchantCustomAttr()
void UnloadSpellInfoStore()
void LoadSpellAreas()
uint32 GetNextSpellInChain(uint32 spell_id) const
Definition SpellMgr.cpp:505
SpellPetAuraMap mSpellPetAuraMap
Definition SpellMgr.h:729
SpellLearnSkillMap mSpellLearnSkills
Definition SpellMgr.h:719
SpellAreaForQuestMapBounds GetSpellAreaForQuestMapBounds(uint32 quest_id) const
SpellBonusEntry const * GetSpellBonusData(uint32 spellId) const
Definition SpellMgr.cpp:936
void LoadSkillLineAbilityMap()
SkillLineAbilityMapBounds GetSkillLineAbilityMapBounds(uint32 spell_id) const
Definition SpellMgr.cpp:967
SpellProcEventMap mSpellProcEventMap
Definition SpellMgr.h:725
static bool IsSpellValid(SpellInfo const *spellInfo, Player *player=NULL, bool msg=true)
Some checks for spells, to prevent adding deprecated/broken spells for trainers, spell book,...
Definition SpellMgr.cpp:319
SpellAreaForQuestMap mSpellAreaForQuestEndMap
Definition SpellMgr.h:735
SpellGroupSpellMapBounds GetSpellGroupSpellMapBounds(SpellGroup group_id) const
Definition SpellMgr.cpp:617
PetDefaultSpellsMap mPetDefaultSpellsMap
Definition SpellMgr.h:740
uint32 GetSpellWithRank(uint32 spell_id, uint32 rank, bool strict=false) const
Definition SpellMgr.cpp:531
SpellLearnSkillNode const * GetSpellLearnSkill(uint32 spell_id) const
Definition SpellMgr.cpp:564
void LoadSpellInfoCustomAttributes()
const std::vector< int32 > * GetSpellLinked(int32 spell_id) const
Definition SpellMgr.cpp:994
SpellRequiredMapBounds GetSpellsRequiredForSpellBounds(uint32 spell_id) const
Definition SpellMgr.cpp:543
SpellInfo const * GetSpellInfo(uint32 spellId) const
Definition SpellMgr.h:678
uint32 GetPrevSpellInChain(uint32 spell_id) const
Definition SpellMgr.cpp:514
bool IsSpellRequiringSpell(uint32 spellid, uint32 req_spellid) const
Definition SpellMgr.cpp:553
void LoadSpellThreats()
bool IsSpellLearnToSpell(uint32 spell_id1, uint32 spell_id2) const
Definition SpellMgr.cpp:583
SpellAreaForAuraMapBounds GetSpellAreaForAuraMapBounds(uint32 spell_id) const
void LoadSpellRequired()
SpellInfo const * GetSpellForDifficultyFromSpell(SpellInfo const *spell, Unit const *caster) const
Definition SpellMgr.cpp:463
void LoadSpellTargetPositions()
SpellDifficultySearcherMap mSpellDifficultySearcherMap
Definition SpellMgr.h:715
void GetSetOfSpellsInSpellGroup(SpellGroup group_id, std::set< uint32 > &foundSpells) const
Definition SpellMgr.cpp:622
void LoadSpellLearnSkills()
uint32 GetLastSpellInChain(uint32 spell_id) const
Definition SpellMgr.cpp:497
bool AddSameEffectStackRuleSpellGroups(SpellInfo const *spellInfo, int32 amount, std::map< SpellGroup, int32 > &groups) const
Definition SpellMgr.cpp:649
void LoadSpellTalentRanks()
bool IsSpellLearnSpell(uint32 spell_id) const
Definition SpellMgr.cpp:578
void LoadSpellBonusess()
SpellThreatEntry const * GetSpellThreatEntry(uint32 spellID) const
Definition SpellMgr.cpp:952
void LoadSpellGroupStackRules()
SpellGroupStackMap mSpellGroupStack
Definition SpellMgr.h:724
uint32 GetFirstSpellInChain(uint32 spell_id) const
Definition SpellMgr.cpp:489
bool CanSpellTriggerProcOnEvent(SpellProcEntry const &procEntry, ProcEventInfo &eventInfo) const
Definition SpellMgr.cpp:871
SpellEnchantProcEventMap mSpellEnchantProcEventMap
Definition SpellMgr.h:731
void LoadPetDefaultSpells()
PetLevelupSpellMap mPetLevelupSpellMap
Definition SpellMgr.h:739
void LoadSpellLearnSpells()
SpellGroupStackRule CheckSpellGroupStackRules(SpellInfo const *spellInfo1, SpellInfo const *spellInfo2) const
Definition SpellMgr.cpp:681
SpellProcMap mSpellProcMap
Definition SpellMgr.h:726
SpellsRequiringSpellMap mSpellsReqSpell
Definition SpellMgr.h:717
void LoadSpellInfoCorrections()
SpellTargetPositionMap mSpellTargetPositions
Definition SpellMgr.h:721
SpellProcEntry const * GetSpellProcEntry(uint32 spellId) const
Definition SpellMgr.cpp:863
SpellGroupSpellMap mSpellGroupSpell
Definition SpellMgr.h:723
PetDefaultSpellsEntry const * GetPetDefaultSpellsEntry(int32 id) const
SpellTargetPosition const * GetSpellTargetPosition(uint32 spell_id, SpellEffIndex effIndex) const
Definition SpellMgr.cpp:592
SpellEnchantProcEntry const * GetSpellEnchantProcEvent(uint32 enchId) const
Definition SpellMgr.cpp:981
SpellAreaForAreaMap mSpellAreaForAreaMap
Definition SpellMgr.h:737
bool IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const *spellProcEvent, uint32 EventProcFlag, SpellInfo const *procSpell, uint32 procFlags, uint32 procExtra, bool active) const
Definition SpellMgr.cpp:734
uint32 GetSpellDifficultyId(uint32 spellId) const
Definition SpellMgr.cpp:410
void LoadSpellProcEvents()
uint8 GetSpellRank(uint32 spell_id) const
Definition SpellMgr.cpp:523
void LoadSpellPetAuras()
void UnloadSpellInfoImplicitTargetConditionLists()
SpellSpellGroupMapBounds GetSpellSpellGroupMapBounds(uint32 spell_id) const
Definition SpellMgr.cpp:600
SpellAreaMap mSpellAreaMap
Definition SpellMgr.h:733
void LoadSpellEnchantProcData()
uint32 GetSpellInfoStoreSize() const
Definition SpellMgr.h:679
SpellBonusMap mSpellBonusMap
Definition SpellMgr.h:727
SpellChainNode const * GetSpellChainNode(uint32 spell_id) const
Definition SpellMgr.cpp:480
SpellsRequiringSpellMapBounds GetSpellsRequiringSpellBounds(uint32 spell_id) const
Definition SpellMgr.cpp:548
void LoadSpellRanks()
void LoadSpellGroups()
void LoadPetLevelupSpellMap()
SpellLearnSpellMap mSpellLearnSpells
Definition SpellMgr.h:720
SpellSpellGroupMap mSpellSpellGroup
Definition SpellMgr.h:722
PetAura const * GetPetAura(uint32 spell_id, uint8 eff) const
Definition SpellMgr.cpp:972
SpellAreaForAreaMapBounds GetSpellAreaForAreaMapBounds(uint32 area_id) const
bool IsArenaAllowedEnchancment(uint32 ench_id) const
Definition SpellMgr.cpp:989
SpellThreatMap mSpellThreatMap
Definition SpellMgr.h:728
SpellAreaForQuestMap mSpellAreaForQuestMap
Definition SpellMgr.h:734
SpellInfoMap mSpellInfoMap
Definition SpellMgr.h:741
void LoadSpellProcs()
SpellInfo * _GetSpellInfo(uint32 spellId)
Definition SpellMgr.h:682
void UnloadSpellInfoChains()
bool IsSpellMemberOfSpellGroup(uint32 spellid, SpellGroup groupid) const
Definition SpellMgr.cpp:606
Definition Unit.h:1367
Definition SpellMgr.h:552
uint32 spellid[MAX_CREATURE_SPELL_DATA_SLOT]
Definition SpellMgr.h:553
uint32 questEnd
Definition SpellMgr.h:481
bool autocast
Definition SpellMgr.h:487
uint32 raceMask
Definition SpellMgr.h:483
uint32 questStartStatus
Definition SpellMgr.h:485
uint32 spellId
Definition SpellMgr.h:478
uint32 questEndStatus
Definition SpellMgr.h:486
int32 auraSpell
Definition SpellMgr.h:482
bool IsFitToRequirements(Player const *player, uint32 newZone, uint32 newArea) const
Gender gender
Definition SpellMgr.h:484
uint32 areaId
Definition SpellMgr.h:479
uint32 questStart
Definition SpellMgr.h:480
Definition SpellMgr.h:304
float ap_dot_bonus
Definition SpellMgr.h:308
float dot_damage
Definition SpellMgr.h:306
float ap_bonus
Definition SpellMgr.h:307
float direct_damage
Definition SpellMgr.h:305
SpellInfo const * last
Definition SpellMgr.h:508
SpellInfo const * next
Definition SpellMgr.h:506
SpellInfo const * first
Definition SpellMgr.h:507
SpellInfo const * prev
Definition SpellMgr.h:505
Definition SpellMgr.h:295
uint32 procEx
Definition SpellMgr.h:298
uint32 customChance
Definition SpellMgr.h:296
float PPMChance
Definition SpellMgr.h:297
Definition SpellMgr.h:277
uint32 cooldown
Definition SpellMgr.h:288
uint32 spellTypeMask
Definition SpellMgr.h:282
flag128 spellFamilyMask
Definition SpellMgr.h:280
float chance
Definition SpellMgr.h:287
uint32 schoolMask
Definition SpellMgr.h:278
float ratePerMinute
Definition SpellMgr.h:286
uint32 spellFamilyName
Definition SpellMgr.h:279
uint32 hitMask
Definition SpellMgr.h:284
uint32 attributesMask
Definition SpellMgr.h:285
uint32 spellPhaseMask
Definition SpellMgr.h:283
uint32 typeMask
Definition SpellMgr.h:281
uint32 charges
Definition SpellMgr.h:289
Definition SpellMgr.h:263
uint32 cooldown
Definition SpellMgr.h:271
flag128 spellFamilyMask
Definition SpellMgr.h:266
uint32 spellFamilyName
Definition SpellMgr.h:265
uint32 procEx
Definition SpellMgr.h:268
float ppmRate
Definition SpellMgr.h:269
uint32 schoolMask
Definition SpellMgr.h:264
float customChance
Definition SpellMgr.h:270
uint32 procFlags
Definition SpellMgr.h:267
Definition SpellMgr.h:346
int32 flatMod
Definition SpellMgr.h:347
float apPctMod
Definition SpellMgr.h:349
float pctMod
Definition SpellMgr.h:348