TrinityCore
SpellMgr.h File Reference
#include "Define.h"
#include "DBCEnums.h"
#include "Duration.h"
#include "EnumFlag.h"
#include "Errors.h"
#include "FlagsArray.h"
#include "Hash.h"
#include "IteratorPair.h"
#include "RaceMask.h"
#include "SharedDefines.h"
#include "SpellDefines.h"
#include <bitset>
#include <functional>
#include <map>
#include <set>
#include <vector>
#include <unordered_map>
#include <unordered_set>
+ Include dependency graph for SpellMgr.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  SpellProcEntry
 
struct  SpellEnchantProcEntry
 
struct  std::hash< SpellGroup >
 
struct  SpellThreatEntry
 
struct  SpellTargetPosition
 
class  PetAura
 
struct  SpellArea
 
struct  SpellChainNode
 
struct  SpellLearnSkillNode
 
struct  SpellLearnSpellNode
 
struct  CreatureImmunities
 
struct  PetDefaultSpellsEntry
 
struct  SpellInfoLoadHelper
 
class  SpellMgr
 

Namespaces

namespace  std
 STL namespace.
 

Macros

#define MELEE_BASED_TRIGGER_MASK
 
#define PROC_ATTR_ALL_ALLOWED
 
#define SPELL_GROUP_DB_RANGE_MIN   1000
 
#define MAX_CREATURE_SPELL_DATA_SLOT   4
 
#define sSpellMgr   SpellMgr::instance()
 

Typedefs

typedef std::unordered_map< uint32, SpellEnchantProcEntrySpellEnchantProcEventMap
 
typedef std::unordered_multimap< uint32, SpellGroupSpellSpellGroupMap
 
typedef std::pair< SpellSpellGroupMap::const_iterator, SpellSpellGroupMap::const_iterator > SpellSpellGroupMapBounds
 
typedef std::unordered_multimap< SpellGroup, int32SpellGroupSpellMap
 
typedef std::pair< SpellGroupSpellMap::const_iterator, SpellGroupSpellMap::const_iterator > SpellGroupSpellMapBounds
 
typedef std::unordered_map< SpellGroup, SpellGroupStackRuleSpellGroupStackMap
 
typedef std::unordered_map< SpellGroup, std::unordered_set< uint32 > > SameEffectStackMap
 
typedef std::unordered_map< uint32, SpellThreatEntrySpellThreatMap
 
typedef std::map< std::pair< uint32, SpellEffIndex >, SpellTargetPositionSpellTargetPositionMap
 
typedef std::map< uint32, PetAuraSpellPetAuraMap
 
typedef std::multimap< uint32, SpellAreaSpellAreaMap
 
typedef std::multimap< uint32, SpellArea const * > SpellAreaForQuestMap
 
typedef std::multimap< uint32, SpellArea const * > SpellAreaForAuraMap
 
typedef std::multimap< uint32, SpellArea const * > SpellAreaForAreaMap
 
typedef std::pair< SpellAreaMap::const_iterator, SpellAreaMap::const_iterator > SpellAreaMapBounds
 
typedef std::pair< SpellAreaForQuestMap::const_iterator, SpellAreaForQuestMap::const_iterator > SpellAreaForQuestMapBounds
 
typedef std::pair< SpellAreaForAuraMap::const_iterator, SpellAreaForAuraMap::const_iterator > SpellAreaForAuraMapBounds
 
typedef std::pair< SpellAreaForAreaMap::const_iterator, SpellAreaForAreaMap::const_iterator > SpellAreaForAreaMapBounds
 
typedef std::unordered_map< uint32, SpellChainNodeSpellChainMap
 
typedef std::multimap< uint32, uint32SpellRequiredMap
 
typedef std::pair< SpellRequiredMap::const_iterator, SpellRequiredMap::const_iterator > SpellRequiredMapBounds
 
typedef std::multimap< uint32, uint32SpellsRequiringSpellMap
 
typedef std::pair< SpellsRequiringSpellMap::const_iterator, SpellsRequiringSpellMap::const_iterator > SpellsRequiringSpellMapBounds
 
typedef std::unordered_map< uint32, SpellLearnSkillNodeSpellLearnSkillMap
 
typedef std::multimap< uint32, SpellLearnSpellNodeSpellLearnSpellMap
 
typedef std::pair< SpellLearnSpellMap::const_iterator, SpellLearnSpellMap::const_iterator > SpellLearnSpellMapBounds
 
typedef std::multimap< uint32, SkillLineAbilityEntry const * > SkillLineAbilityMap
 
typedef std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
 
typedef std::set< uint32PetFamilySpellsSet
 
typedef std::map< uint32, PetFamilySpellsSetPetFamilySpellsStore
 
typedef std::multimap< uint32, uint32PetLevelupSpellSet
 
typedef std::map< uint32, PetLevelupSpellSetPetLevelupSpellMap
 
typedef std::map< uint32, uint32SpellDifficultySearcherMap
 
typedef std::map< int32, PetDefaultSpellsEntryPetDefaultSpellsMap
 
typedef std::unordered_map< std::pair< SpellLinkedType, uint32 >, std::vector< int32 > > SpellLinkedMap
 
typedef std::map< std::pair< uint32, uint8 >, uint32SpellTotemModelMap
 

Enumerations

enum  SpellCategories {
  SPELLCATEGORY_HEALTH_MANA_POTIONS = 4 , SPELLCATEGORY_DEVOUR_MAGIC = 12 , SPELLCATEGORY_JUDGEMENT = 1210 , SPELLCATEGORY_FOOD = 11 ,
  SPELLCATEGORY_DRINK = 59
}
 
enum  SpellFamilyFlag {
  SPELLFAMILYFLAG0_ROGUE_VANISH = 0x00000800 , SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT = 0x00000840 , SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP = 0x00000200 , SPELLFAMILYFLAG0_ROGUE_KICK = 0x00000010 ,
  SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB = 0x80100000 , SPELLFAMILYFLAG_WARRIOR_CHARGE = 0x00000001 , SPELLFAMILYFLAG_WARRIOR_SLAM = 0x00200000 , SPELLFAMILYFLAG_WARRIOR_EXECUTE = 0x20000000 ,
  SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW = 0x04000000 , SPELLFAMILYFLAG_WARLOCK_LIFETAP = 0x00040000 , SPELLFAMILYFLAG2_DRUID_STARFALL = 0x00000100 , SPELLFAMILYFLAG1_PALADIN_DIVINESTORM = 0x00020000 ,
  SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK = 0x80000000 , SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM = 0x00002000 , SPELLFAMILYFLAG_SHAMAN_MANA_SPRING = 0x00004000 , SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH = 0x00000004 ,
  SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA = 0x28000000 , SPELLFAMILYFLAG_DK_DEATH_STRIKE = 0x00000010 , SPELLFAMILYFLAG_DK_DEATH_COIL = 0x00002000 , SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000
}
 
enum  SpellLinkedType { SPELL_LINK_CAST = 0 , SPELL_LINK_HIT = 1 , SPELL_LINK_AURA = 2 , SPELL_LINK_REMOVE = 3 }
 
enum  ProcFlags : uint32 {
  PROC_FLAG_NONE = 0x00000000 , PROC_FLAG_HEARTBEAT = 0x00000001 , PROC_FLAG_KILL = 0x00000002 , PROC_FLAG_DEAL_MELEE_SWING = 0x00000004 ,
  PROC_FLAG_TAKE_MELEE_SWING = 0x00000008 , PROC_FLAG_DEAL_MELEE_ABILITY = 0x00000010 , PROC_FLAG_TAKE_MELEE_ABILITY = 0x00000020 , PROC_FLAG_DEAL_RANGED_ATTACK = 0x00000040 ,
  PROC_FLAG_TAKE_RANGED_ATTACK = 0x00000080 , PROC_FLAG_DEAL_RANGED_ABILITY = 0x00000100 , PROC_FLAG_TAKE_RANGED_ABILITY = 0x00000200 , PROC_FLAG_DEAL_HELPFUL_ABILITY = 0x00000400 ,
  PROC_FLAG_TAKE_HELPFUL_ABILITY = 0x00000800 , PROC_FLAG_DEAL_HARMFUL_ABILITY = 0x00001000 , PROC_FLAG_TAKE_HARMFUL_ABILITY = 0x00002000 , PROC_FLAG_DEAL_HELPFUL_SPELL = 0x00004000 ,
  PROC_FLAG_TAKE_HELPFUL_SPELL = 0x00008000 , PROC_FLAG_DEAL_HARMFUL_SPELL = 0x00010000 , PROC_FLAG_TAKE_HARMFUL_SPELL = 0x00020000 , PROC_FLAG_DEAL_HARMFUL_PERIODIC = 0x00040000 ,
  PROC_FLAG_TAKE_HARMFUL_PERIODIC = 0x00080000 , PROC_FLAG_TAKE_ANY_DAMAGE = 0x00100000 , PROC_FLAG_DEAL_HELPFUL_PERIODIC = 0x00200000 , PROC_FLAG_MAIN_HAND_WEAPON_SWING = 0x00400000 ,
  PROC_FLAG_OFF_HAND_WEAPON_SWING = 0x00800000 , PROC_FLAG_DEATH = 0x01000000 , PROC_FLAG_JUMP = 0x02000000 , PROC_FLAG_PROC_CLONE_SPELL = 0x04000000 ,
  PROC_FLAG_ENTER_COMBAT = 0x08000000 , PROC_FLAG_ENCOUNTER_START = 0x10000000 , PROC_FLAG_CAST_ENDED = 0x20000000 , PROC_FLAG_LOOTED = 0x40000000 ,
  PROC_FLAG_TAKE_HELPFUL_PERIODIC = 0x80000000 , AUTO_ATTACK_PROC_FLAG_MASK , MELEE_PROC_FLAG_MASK , RANGED_PROC_FLAG_MASK ,
  SPELL_PROC_FLAG_MASK , DONE_HIT_PROC_FLAG_MASK , TAKEN_HIT_PROC_FLAG_MASK , REQ_SPELL_PHASE_PROC_FLAG_MASK = SPELL_PROC_FLAG_MASK & DONE_HIT_PROC_FLAG_MASK
}
 
enum  ProcFlags2 : int32 { PROC_FLAG_2_NONE = 0x00000000 , PROC_FLAG_2_TARGET_DIES = 0x00000001 , PROC_FLAG_2_KNOCKBACK = 0x00000002 , PROC_FLAG_2_CAST_SUCCESSFUL = 0x00000004 }
 
enum  ProcFlagsSpellType : uint32 {
  PROC_SPELL_TYPE_NONE = 0x0000000 , PROC_SPELL_TYPE_DAMAGE = 0x0000001 , PROC_SPELL_TYPE_HEAL = 0x0000002 , PROC_SPELL_TYPE_NO_DMG_HEAL = 0x0000004 ,
  PROC_SPELL_TYPE_MASK_ALL = PROC_SPELL_TYPE_DAMAGE | PROC_SPELL_TYPE_HEAL | PROC_SPELL_TYPE_NO_DMG_HEAL
}
 
enum  ProcFlagsSpellPhase : uint32 {
  PROC_SPELL_PHASE_NONE = 0x0000000 , PROC_SPELL_PHASE_CAST = 0x0000001 , PROC_SPELL_PHASE_HIT = 0x0000002 , PROC_SPELL_PHASE_FINISH = 0x0000004 ,
  PROC_SPELL_PHASE_MASK_ALL = PROC_SPELL_PHASE_CAST | PROC_SPELL_PHASE_HIT | PROC_SPELL_PHASE_FINISH
}
 
enum  ProcFlagsHit : uint32 {
  PROC_HIT_NONE = 0x0000000 , PROC_HIT_NORMAL = 0x0000001 , PROC_HIT_CRITICAL = 0x0000002 , PROC_HIT_MISS = 0x0000004 ,
  PROC_HIT_FULL_RESIST = 0x0000008 , PROC_HIT_DODGE = 0x0000010 , PROC_HIT_PARRY = 0x0000020 , PROC_HIT_BLOCK = 0x0000040 ,
  PROC_HIT_EVADE = 0x0000080 , PROC_HIT_IMMUNE = 0x0000100 , PROC_HIT_DEFLECT = 0x0000200 , PROC_HIT_ABSORB = 0x0000400 ,
  PROC_HIT_REFLECT = 0x0000800 , PROC_HIT_INTERRUPT = 0x0001000 , PROC_HIT_FULL_BLOCK = 0x0002000 , PROC_HIT_DISPEL = 0x0004000 ,
  PROC_HIT_MASK_ALL = 0x0007FFF
}
 
enum  ProcAttributes : uint32 {
  PROC_ATTR_NONE = 0x0000000 , PROC_ATTR_REQ_EXP_OR_HONOR = 0x0000001 , PROC_ATTR_TRIGGERED_CAN_PROC = 0x0000002 , PROC_ATTR_REQ_POWER_COST = 0x0000004 ,
  PROC_ATTR_REQ_SPELLMOD = 0x0000008 , PROC_ATTR_USE_STACKS_FOR_CHARGES = 0x0000010 , PROC_ATTR_REDUCE_PROC_60 = 0x0000080 , PROC_ATTR_CANT_PROC_FROM_ITEM_CAST = 0x0000100
}
 
enum  EnchantProcAttributes { ENCHANT_PROC_ATTR_WHITE_HIT = 0x0000001 , ENCHANT_PROC_ATTR_LIMIT_60 = 0x0000002 }
 
enum  SpellGroup {
  SPELL_GROUP_NONE = 0 , SPELL_GROUP_ELIXIR_BATTLE = 1 , SPELL_GROUP_ELIXIR_GUARDIAN = 2 , SPELL_GROUP_ELIXIR_UNSTABLE = 3 ,
  SPELL_GROUP_ELIXIR_SHATTRATH = 4 , SPELL_GROUP_CORE_RANGE_MAX = 5
}
 
enum  SpellGroupStackRule {
  SPELL_GROUP_STACK_RULE_DEFAULT , SPELL_GROUP_STACK_RULE_EXCLUSIVE , SPELL_GROUP_STACK_RULE_EXCLUSIVE_FROM_SAME_CASTER , SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT ,
  SPELL_GROUP_STACK_RULE_EXCLUSIVE_HIGHEST , SPELL_GROUP_STACK_RULE_MAX
}
 
enum  EffectRadiusIndex {
  EFFECT_RADIUS_2_YARDS = 7 , EFFECT_RADIUS_5_YARDS = 8 , EFFECT_RADIUS_20_YARDS = 9 , EFFECT_RADIUS_30_YARDS = 10 ,
  EFFECT_RADIUS_45_YARDS = 11 , EFFECT_RADIUS_100_YARDS = 12 , EFFECT_RADIUS_10_YARDS = 13 , EFFECT_RADIUS_8_YARDS = 14 ,
  EFFECT_RADIUS_3_YARDS = 15 , EFFECT_RADIUS_1_YARD = 16 , EFFECT_RADIUS_13_YARDS = 17 , EFFECT_RADIUS_15_YARDS = 18 ,
  EFFECT_RADIUS_18_YARDS = 19 , EFFECT_RADIUS_25_YARDS = 20 , EFFECT_RADIUS_35_YARDS = 21 , EFFECT_RADIUS_200_YARDS = 22 ,
  EFFECT_RADIUS_40_YARDS = 23 , EFFECT_RADIUS_65_YARDS = 24 , EFFECT_RADIUS_70_YARDS = 25 , EFFECT_RADIUS_4_YARDS = 26 ,
  EFFECT_RADIUS_50_YARDS = 27 , EFFECT_RADIUS_50000_YARDS = 28 , EFFECT_RADIUS_6_YARDS = 29 , EFFECT_RADIUS_500_YARDS = 30 ,
  EFFECT_RADIUS_80_YARDS = 31 , EFFECT_RADIUS_12_YARDS = 32 , EFFECT_RADIUS_99_YARDS = 33 , EFFECT_RADIUS_55_YARDS = 35 ,
  EFFECT_RADIUS_0_YARDS = 36 , EFFECT_RADIUS_7_YARDS = 37 , EFFECT_RADIUS_21_YARDS = 38 , EFFECT_RADIUS_34_YARDS = 39 ,
  EFFECT_RADIUS_9_YARDS = 40 , EFFECT_RADIUS_150_YARDS = 41 , EFFECT_RADIUS_11_YARDS = 42 , EFFECT_RADIUS_16_YARDS = 43 ,
  EFFECT_RADIUS_0_5_YARDS = 44 , EFFECT_RADIUS_10_YARDS_2 = 45 , EFFECT_RADIUS_5_YARDS_2 = 46 , EFFECT_RADIUS_15_YARDS_2 = 47 ,
  EFFECT_RADIUS_60_YARDS = 48 , EFFECT_RADIUS_90_YARDS = 49 , EFFECT_RADIUS_15_YARDS_3 = 50 , EFFECT_RADIUS_60_YARDS_2 = 51 ,
  EFFECT_RADIUS_5_YARDS_3 = 52 , EFFECT_RADIUS_60_YARDS_3 = 53 , EFFECT_RADIUS_50000_YARDS_2 = 54 , EFFECT_RADIUS_130_YARDS = 55 ,
  EFFECT_RADIUS_38_YARDS = 56 , EFFECT_RADIUS_45_YARDS_2 = 57 , EFFECT_RADIUS_32_YARDS = 59 , EFFECT_RADIUS_44_YARDS = 60 ,
  EFFECT_RADIUS_14_YARDS = 61 , EFFECT_RADIUS_47_YARDS = 62 , EFFECT_RADIUS_23_YARDS = 63 , EFFECT_RADIUS_3_5_YARDS = 64 ,
  EFFECT_RADIUS_80_YARDS_2 = 65
}
 
enum  SpellAreaFlag { SPELL_AREA_FLAG_AUTOCAST = 0x1 , SPELL_AREA_FLAG_AUTOREMOVE = 0x2 , SPELL_AREA_FLAG_IGNORE_AUTOCAST_ON_QUEST_STATUS_CHANGE = 0x4 }
 
enum class  SpellOtherImmunity : uint8 { None = 0x0 , AoETarget = 0x1 , ChainTarget = 0x2 }
 

Functions

 DEFINE_ENUM_FLAG (ProcFlags)
 
 DEFINE_ENUM_FLAG (ProcFlags2)
 
 DEFINE_ENUM_FLAG (ProcFlagsSpellType)
 
 DEFINE_ENUM_FLAG (ProcFlagsSpellPhase)
 
 DEFINE_ENUM_FLAG (ProcFlagsHit)
 
 DEFINE_ENUM_FLAG (ProcAttributes)
 
bool IsPrimaryProfessionSkill (uint32 skill)
 
bool IsWeaponSkill (uint32 skill)
 
bool IsProfessionSkill (uint32 skill)
 
bool IsProfessionOrRidingSkill (uint32 skill)
 
bool IsPartOfSkillLine (uint32 skillId, uint32 spellId)
 

Variables

TC_GAME_API PetFamilySpellsStore sPetFamilySpellsStore
 

Macro Definition Documentation

◆ MAX_CREATURE_SPELL_DATA_SLOT

#define MAX_CREATURE_SPELL_DATA_SLOT   4

Definition at line 631 of file SpellMgr.h.

◆ MELEE_BASED_TRIGGER_MASK

#define MELEE_BASED_TRIGGER_MASK
Value:
PROC_FLAG_TAKE_MELEE_SWING | \
PROC_FLAG_DEAL_MELEE_ABILITY | \
PROC_FLAG_TAKE_MELEE_ABILITY | \
PROC_FLAG_DEAL_RANGED_ATTACK | \
PROC_FLAG_TAKE_RANGED_ATTACK | \
PROC_FLAG_DEAL_RANGED_ABILITY | \
PROC_FLAG_TAKE_RANGED_ABILITY)
@ PROC_FLAG_DEAL_MELEE_SWING
Definition: SpellMgr.h:140

Definition at line 240 of file SpellMgr.h.

◆ PROC_ATTR_ALL_ALLOWED

#define PROC_ATTR_ALL_ALLOWED
Value:
PROC_ATTR_TRIGGERED_CAN_PROC | \
PROC_ATTR_REQ_POWER_COST | \
PROC_ATTR_REQ_SPELLMOD | \
PROC_ATTR_USE_STACKS_FOR_CHARGES | \
PROC_ATTR_REDUCE_PROC_60)
@ PROC_ATTR_REQ_EXP_OR_HONOR
Definition: SpellMgr.h:297

Definition at line 309 of file SpellMgr.h.

◆ SPELL_GROUP_DB_RANGE_MIN

#define SPELL_GROUP_DB_RANGE_MIN   1000

Definition at line 371 of file SpellMgr.h.

◆ sSpellMgr

#define sSpellMgr   SpellMgr::instance()

Definition at line 849 of file SpellMgr.h.

Typedef Documentation

◆ PetDefaultSpellsMap

Definition at line 639 of file SpellMgr.h.

◆ PetFamilySpellsSet

typedef std::set<uint32> PetFamilySpellsSet

Definition at line 623 of file SpellMgr.h.

◆ PetFamilySpellsStore

Definition at line 624 of file SpellMgr.h.

◆ PetLevelupSpellMap

Definition at line 627 of file SpellMgr.h.

◆ PetLevelupSpellSet

typedef std::multimap<uint32, uint32> PetLevelupSpellSet

Definition at line 626 of file SpellMgr.h.

◆ SameEffectStackMap

typedef std::unordered_map<SpellGroup, std::unordered_set<uint32 > > SameEffectStackMap

Definition at line 393 of file SpellMgr.h.

◆ SkillLineAbilityMap

typedef std::multimap<uint32, SkillLineAbilityEntry const*> SkillLineAbilityMap

Definition at line 620 of file SpellMgr.h.

◆ SkillLineAbilityMapBounds

typedef std::pair<SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator> SkillLineAbilityMapBounds

Definition at line 621 of file SpellMgr.h.

◆ SpellAreaForAreaMap

typedef std::multimap<uint32, SpellArea const*> SpellAreaForAreaMap

Definition at line 553 of file SpellMgr.h.

◆ SpellAreaForAreaMapBounds

typedef std::pair<SpellAreaForAreaMap::const_iterator, SpellAreaForAreaMap::const_iterator> SpellAreaForAreaMapBounds

Definition at line 557 of file SpellMgr.h.

◆ SpellAreaForAuraMap

typedef std::multimap<uint32, SpellArea const*> SpellAreaForAuraMap

Definition at line 552 of file SpellMgr.h.

◆ SpellAreaForAuraMapBounds

typedef std::pair<SpellAreaForAuraMap::const_iterator, SpellAreaForAuraMap::const_iterator> SpellAreaForAuraMapBounds

Definition at line 556 of file SpellMgr.h.

◆ SpellAreaForQuestMap

typedef std::multimap<uint32, SpellArea const*> SpellAreaForQuestMap

Definition at line 551 of file SpellMgr.h.

◆ SpellAreaForQuestMapBounds

typedef std::pair<SpellAreaForQuestMap::const_iterator, SpellAreaForQuestMap::const_iterator> SpellAreaForQuestMapBounds

Definition at line 555 of file SpellMgr.h.

◆ SpellAreaMap

typedef std::multimap<uint32, SpellArea> SpellAreaMap

Definition at line 550 of file SpellMgr.h.

◆ SpellAreaMapBounds

typedef std::pair<SpellAreaMap::const_iterator, SpellAreaMap::const_iterator> SpellAreaMapBounds

Definition at line 554 of file SpellMgr.h.

◆ SpellChainMap

typedef std::unordered_map<uint32, SpellChainNode> SpellChainMap

Definition at line 569 of file SpellMgr.h.

◆ SpellDifficultySearcherMap

Definition at line 629 of file SpellMgr.h.

◆ SpellEnchantProcEventMap

Definition at line 347 of file SpellMgr.h.

◆ SpellGroupSpellMap

typedef std::unordered_multimap<SpellGroup, int32> SpellGroupSpellMap

Definition at line 378 of file SpellMgr.h.

◆ SpellGroupSpellMapBounds

typedef std::pair<SpellGroupSpellMap::const_iterator, SpellGroupSpellMap::const_iterator> SpellGroupSpellMapBounds

Definition at line 379 of file SpellMgr.h.

◆ SpellGroupStackMap

typedef std::unordered_map<SpellGroup, SpellGroupStackRule> SpellGroupStackMap

Definition at line 391 of file SpellMgr.h.

◆ SpellLearnSkillMap

typedef std::unordered_map<uint32, SpellLearnSkillNode> SpellLearnSkillMap

Definition at line 588 of file SpellMgr.h.

◆ SpellLearnSpellMap

Definition at line 617 of file SpellMgr.h.

◆ SpellLearnSpellMapBounds

typedef std::pair<SpellLearnSpellMap::const_iterator, SpellLearnSpellMap::const_iterator> SpellLearnSpellMapBounds

Definition at line 618 of file SpellMgr.h.

◆ SpellLinkedMap

typedef std::unordered_map<std::pair<SpellLinkedType, uint32>, std::vector<int32> > SpellLinkedMap

Definition at line 641 of file SpellMgr.h.

◆ SpellPetAuraMap

typedef std::map<uint32, PetAura> SpellPetAuraMap

Definition at line 524 of file SpellMgr.h.

◆ SpellRequiredMap

typedef std::multimap<uint32, uint32> SpellRequiredMap

Definition at line 572 of file SpellMgr.h.

◆ SpellRequiredMapBounds

typedef std::pair<SpellRequiredMap::const_iterator, SpellRequiredMap::const_iterator> SpellRequiredMapBounds

Definition at line 573 of file SpellMgr.h.

◆ SpellSpellGroupMap

typedef std::unordered_multimap<uint32, SpellGroup> SpellSpellGroupMap

Definition at line 374 of file SpellMgr.h.

◆ SpellSpellGroupMapBounds

typedef std::pair<SpellSpellGroupMap::const_iterator, SpellSpellGroupMap::const_iterator> SpellSpellGroupMapBounds

Definition at line 375 of file SpellMgr.h.

◆ SpellsRequiringSpellMap

typedef std::multimap<uint32, uint32> SpellsRequiringSpellMap

Definition at line 576 of file SpellMgr.h.

◆ SpellsRequiringSpellMapBounds

typedef std::pair<SpellsRequiringSpellMap::const_iterator, SpellsRequiringSpellMap::const_iterator> SpellsRequiringSpellMapBounds

Definition at line 577 of file SpellMgr.h.

◆ SpellTargetPositionMap

Definition at line 414 of file SpellMgr.h.

◆ SpellThreatMap

typedef std::unordered_map<uint32, SpellThreatEntry> SpellThreatMap

Definition at line 402 of file SpellMgr.h.

◆ SpellTotemModelMap

typedef std::map<std::pair<uint32 , uint8 >, uint32 > SpellTotemModelMap

Definition at line 685 of file SpellMgr.h.

Enumeration Type Documentation

◆ EffectRadiusIndex

Enumerator
EFFECT_RADIUS_2_YARDS 
EFFECT_RADIUS_5_YARDS 
EFFECT_RADIUS_20_YARDS 
EFFECT_RADIUS_30_YARDS 
EFFECT_RADIUS_45_YARDS 
EFFECT_RADIUS_100_YARDS 
EFFECT_RADIUS_10_YARDS 
EFFECT_RADIUS_8_YARDS 
EFFECT_RADIUS_3_YARDS 
EFFECT_RADIUS_1_YARD 
EFFECT_RADIUS_13_YARDS 
EFFECT_RADIUS_15_YARDS 
EFFECT_RADIUS_18_YARDS 
EFFECT_RADIUS_25_YARDS 
EFFECT_RADIUS_35_YARDS 
EFFECT_RADIUS_200_YARDS 
EFFECT_RADIUS_40_YARDS 
EFFECT_RADIUS_65_YARDS 
EFFECT_RADIUS_70_YARDS 
EFFECT_RADIUS_4_YARDS 
EFFECT_RADIUS_50_YARDS 
EFFECT_RADIUS_50000_YARDS 
EFFECT_RADIUS_6_YARDS 
EFFECT_RADIUS_500_YARDS 
EFFECT_RADIUS_80_YARDS 
EFFECT_RADIUS_12_YARDS 
EFFECT_RADIUS_99_YARDS 
EFFECT_RADIUS_55_YARDS 
EFFECT_RADIUS_0_YARDS 
EFFECT_RADIUS_7_YARDS 
EFFECT_RADIUS_21_YARDS 
EFFECT_RADIUS_34_YARDS 
EFFECT_RADIUS_9_YARDS 
EFFECT_RADIUS_150_YARDS 
EFFECT_RADIUS_11_YARDS 
EFFECT_RADIUS_16_YARDS 
EFFECT_RADIUS_0_5_YARDS 
EFFECT_RADIUS_10_YARDS_2 
EFFECT_RADIUS_5_YARDS_2 
EFFECT_RADIUS_15_YARDS_2 
EFFECT_RADIUS_60_YARDS 
EFFECT_RADIUS_90_YARDS 
EFFECT_RADIUS_15_YARDS_3 
EFFECT_RADIUS_60_YARDS_2 
EFFECT_RADIUS_5_YARDS_3 
EFFECT_RADIUS_60_YARDS_3 
EFFECT_RADIUS_50000_YARDS_2 
EFFECT_RADIUS_130_YARDS 
EFFECT_RADIUS_38_YARDS 
EFFECT_RADIUS_45_YARDS_2 
EFFECT_RADIUS_32_YARDS 
EFFECT_RADIUS_44_YARDS 
EFFECT_RADIUS_14_YARDS 
EFFECT_RADIUS_47_YARDS 
EFFECT_RADIUS_23_YARDS 
EFFECT_RADIUS_3_5_YARDS 
EFFECT_RADIUS_80_YARDS_2 

Definition at line 417 of file SpellMgr.h.

418{
455 EFFECT_RADIUS_0_5_YARDS = 44, // 0.5 yards
474 EFFECT_RADIUS_3_5_YARDS = 64, // 3.5 yards
476};
@ EFFECT_RADIUS_14_YARDS
Definition: SpellMgr.h:471
@ EFFECT_RADIUS_500_YARDS
Definition: SpellMgr.h:442
@ EFFECT_RADIUS_13_YARDS
Definition: SpellMgr.h:429
@ EFFECT_RADIUS_7_YARDS
Definition: SpellMgr.h:448
@ EFFECT_RADIUS_100_YARDS
Definition: SpellMgr.h:424
@ EFFECT_RADIUS_45_YARDS_2
Definition: SpellMgr.h:468
@ EFFECT_RADIUS_80_YARDS
Definition: SpellMgr.h:443
@ EFFECT_RADIUS_20_YARDS
Definition: SpellMgr.h:421
@ EFFECT_RADIUS_60_YARDS_2
Definition: SpellMgr.h:462
@ EFFECT_RADIUS_8_YARDS
Definition: SpellMgr.h:426
@ EFFECT_RADIUS_34_YARDS
Definition: SpellMgr.h:450
@ EFFECT_RADIUS_45_YARDS
Definition: SpellMgr.h:423
@ EFFECT_RADIUS_2_YARDS
Definition: SpellMgr.h:419
@ EFFECT_RADIUS_50000_YARDS_2
Definition: SpellMgr.h:465
@ EFFECT_RADIUS_44_YARDS
Definition: SpellMgr.h:470
@ EFFECT_RADIUS_5_YARDS_3
Definition: SpellMgr.h:463
@ EFFECT_RADIUS_15_YARDS
Definition: SpellMgr.h:430
@ EFFECT_RADIUS_23_YARDS
Definition: SpellMgr.h:473
@ EFFECT_RADIUS_55_YARDS
Definition: SpellMgr.h:446
@ EFFECT_RADIUS_65_YARDS
Definition: SpellMgr.h:436
@ EFFECT_RADIUS_32_YARDS
Definition: SpellMgr.h:469
@ EFFECT_RADIUS_30_YARDS
Definition: SpellMgr.h:422
@ EFFECT_RADIUS_1_YARD
Definition: SpellMgr.h:428
@ EFFECT_RADIUS_9_YARDS
Definition: SpellMgr.h:451
@ EFFECT_RADIUS_16_YARDS
Definition: SpellMgr.h:454
@ EFFECT_RADIUS_60_YARDS
Definition: SpellMgr.h:459
@ EFFECT_RADIUS_90_YARDS
Definition: SpellMgr.h:460
@ EFFECT_RADIUS_130_YARDS
Definition: SpellMgr.h:466
@ EFFECT_RADIUS_4_YARDS
Definition: SpellMgr.h:438
@ EFFECT_RADIUS_25_YARDS
Definition: SpellMgr.h:432
@ EFFECT_RADIUS_10_YARDS_2
Definition: SpellMgr.h:456
@ EFFECT_RADIUS_15_YARDS_2
Definition: SpellMgr.h:458
@ EFFECT_RADIUS_5_YARDS
Definition: SpellMgr.h:420
@ EFFECT_RADIUS_40_YARDS
Definition: SpellMgr.h:435
@ EFFECT_RADIUS_70_YARDS
Definition: SpellMgr.h:437
@ EFFECT_RADIUS_5_YARDS_2
Definition: SpellMgr.h:457
@ EFFECT_RADIUS_3_YARDS
Definition: SpellMgr.h:427
@ EFFECT_RADIUS_38_YARDS
Definition: SpellMgr.h:467
@ EFFECT_RADIUS_21_YARDS
Definition: SpellMgr.h:449
@ EFFECT_RADIUS_50_YARDS
Definition: SpellMgr.h:439
@ EFFECT_RADIUS_50000_YARDS
Definition: SpellMgr.h:440
@ EFFECT_RADIUS_60_YARDS_3
Definition: SpellMgr.h:464
@ EFFECT_RADIUS_18_YARDS
Definition: SpellMgr.h:431
@ EFFECT_RADIUS_200_YARDS
Definition: SpellMgr.h:434
@ EFFECT_RADIUS_12_YARDS
Definition: SpellMgr.h:444
@ EFFECT_RADIUS_10_YARDS
Definition: SpellMgr.h:425
@ EFFECT_RADIUS_0_YARDS
Definition: SpellMgr.h:447
@ EFFECT_RADIUS_3_5_YARDS
Definition: SpellMgr.h:474
@ EFFECT_RADIUS_150_YARDS
Definition: SpellMgr.h:452
@ EFFECT_RADIUS_80_YARDS_2
Definition: SpellMgr.h:475
@ EFFECT_RADIUS_35_YARDS
Definition: SpellMgr.h:433
@ EFFECT_RADIUS_47_YARDS
Definition: SpellMgr.h:472
@ EFFECT_RADIUS_6_YARDS
Definition: SpellMgr.h:441
@ EFFECT_RADIUS_11_YARDS
Definition: SpellMgr.h:453
@ EFFECT_RADIUS_15_YARDS_3
Definition: SpellMgr.h:461
@ EFFECT_RADIUS_0_5_YARDS
Definition: SpellMgr.h:455
@ EFFECT_RADIUS_99_YARDS
Definition: SpellMgr.h:445

◆ EnchantProcAttributes

Enumerator
ENCHANT_PROC_ATTR_WHITE_HIT 
ENCHANT_PROC_ATTR_LIMIT_60 

Definition at line 333 of file SpellMgr.h.

334{
335 ENCHANT_PROC_ATTR_WHITE_HIT = 0x0000001, // enchant shall only proc off white hits (not abilities)
336 ENCHANT_PROC_ATTR_LIMIT_60 = 0x0000002 // enchant effects shall be reduced past lvl 60
337};
@ ENCHANT_PROC_ATTR_LIMIT_60
Definition: SpellMgr.h:336
@ ENCHANT_PROC_ATTR_WHITE_HIT
Definition: SpellMgr.h:335

◆ ProcAttributes

Enumerator
PROC_ATTR_NONE 
PROC_ATTR_REQ_EXP_OR_HONOR 
PROC_ATTR_TRIGGERED_CAN_PROC 
PROC_ATTR_REQ_POWER_COST 
PROC_ATTR_REQ_SPELLMOD 
PROC_ATTR_USE_STACKS_FOR_CHARGES 
PROC_ATTR_REDUCE_PROC_60 
PROC_ATTR_CANT_PROC_FROM_ITEM_CAST 

Definition at line 294 of file SpellMgr.h.

295{
296 PROC_ATTR_NONE = 0x0000000,
297 PROC_ATTR_REQ_EXP_OR_HONOR = 0x0000001, // requires proc target to give exp or honor for aura proc
298 PROC_ATTR_TRIGGERED_CAN_PROC = 0x0000002, // aura can proc even with triggered spells
299 PROC_ATTR_REQ_POWER_COST = 0x0000004, // requires triggering spell to have a power cost for aura proc
300 PROC_ATTR_REQ_SPELLMOD = 0x0000008, // requires triggering spell to be affected by proccing aura to drop charges
301 PROC_ATTR_USE_STACKS_FOR_CHARGES = 0x0000010, // consuming proc drops a stack from proccing aura instead of charge
302
303 PROC_ATTR_REDUCE_PROC_60 = 0x0000080, // aura should have a reduced chance to proc if level of proc Actor > 60
304 PROC_ATTR_CANT_PROC_FROM_ITEM_CAST = 0x0000100, // do not allow aura proc if proc is caused by a spell casted by item
305};
@ PROC_ATTR_NONE
Definition: SpellMgr.h:296
@ PROC_ATTR_CANT_PROC_FROM_ITEM_CAST
Definition: SpellMgr.h:304
@ PROC_ATTR_USE_STACKS_FOR_CHARGES
Definition: SpellMgr.h:301
@ PROC_ATTR_REDUCE_PROC_60
Definition: SpellMgr.h:303
@ PROC_ATTR_TRIGGERED_CAN_PROC
Definition: SpellMgr.h:298
@ PROC_ATTR_REQ_SPELLMOD
Definition: SpellMgr.h:300
@ PROC_ATTR_REQ_POWER_COST
Definition: SpellMgr.h:299

◆ ProcFlags

enum ProcFlags : uint32
Enumerator
PROC_FLAG_NONE 
PROC_FLAG_HEARTBEAT 
PROC_FLAG_KILL 
PROC_FLAG_DEAL_MELEE_SWING 
PROC_FLAG_TAKE_MELEE_SWING 
PROC_FLAG_DEAL_MELEE_ABILITY 
PROC_FLAG_TAKE_MELEE_ABILITY 
PROC_FLAG_DEAL_RANGED_ATTACK 
PROC_FLAG_TAKE_RANGED_ATTACK 
PROC_FLAG_DEAL_RANGED_ABILITY 
PROC_FLAG_TAKE_RANGED_ABILITY 
PROC_FLAG_DEAL_HELPFUL_ABILITY 
PROC_FLAG_TAKE_HELPFUL_ABILITY 
PROC_FLAG_DEAL_HARMFUL_ABILITY 
PROC_FLAG_TAKE_HARMFUL_ABILITY 
PROC_FLAG_DEAL_HELPFUL_SPELL 
PROC_FLAG_TAKE_HELPFUL_SPELL 
PROC_FLAG_DEAL_HARMFUL_SPELL 
PROC_FLAG_TAKE_HARMFUL_SPELL 
PROC_FLAG_DEAL_HARMFUL_PERIODIC 
PROC_FLAG_TAKE_HARMFUL_PERIODIC 
PROC_FLAG_TAKE_ANY_DAMAGE 
PROC_FLAG_DEAL_HELPFUL_PERIODIC 
PROC_FLAG_MAIN_HAND_WEAPON_SWING 
PROC_FLAG_OFF_HAND_WEAPON_SWING 
PROC_FLAG_DEATH 
PROC_FLAG_JUMP 
PROC_FLAG_PROC_CLONE_SPELL 
PROC_FLAG_ENTER_COMBAT 
PROC_FLAG_ENCOUNTER_START 
PROC_FLAG_CAST_ENDED 
PROC_FLAG_LOOTED 
PROC_FLAG_TAKE_HELPFUL_PERIODIC 
AUTO_ATTACK_PROC_FLAG_MASK 
MELEE_PROC_FLAG_MASK 
RANGED_PROC_FLAG_MASK 
SPELL_PROC_FLAG_MASK 
DONE_HIT_PROC_FLAG_MASK 
TAKEN_HIT_PROC_FLAG_MASK 
REQ_SPELL_PHASE_PROC_FLAG_MASK 

Definition at line 133 of file SpellMgr.h.

134{
135 PROC_FLAG_NONE = 0x00000000,
136
137 PROC_FLAG_HEARTBEAT = 0x00000001, // 00 Killed by agressor - not sure about this flag
138 PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward)
139
140 PROC_FLAG_DEAL_MELEE_SWING = 0x00000004, // 02 Done melee auto attack
141 PROC_FLAG_TAKE_MELEE_SWING = 0x00000008, // 03 Taken melee auto attack
142
143 PROC_FLAG_DEAL_MELEE_ABILITY = 0x00000010, // 04 Done attack by Spell that has dmg class melee
144 PROC_FLAG_TAKE_MELEE_ABILITY = 0x00000020, // 05 Taken attack by Spell that has dmg class melee
145
146 PROC_FLAG_DEAL_RANGED_ATTACK = 0x00000040, // 06 Done ranged auto attack
147 PROC_FLAG_TAKE_RANGED_ATTACK = 0x00000080, // 07 Taken ranged auto attack
148
149 PROC_FLAG_DEAL_RANGED_ABILITY = 0x00000100, // 08 Done attack by Spell that has dmg class ranged
150 PROC_FLAG_TAKE_RANGED_ABILITY = 0x00000200, // 09 Taken attack by Spell that has dmg class ranged
151
152 PROC_FLAG_DEAL_HELPFUL_ABILITY = 0x00000400, // 10 Done positive spell that has dmg class none
153 PROC_FLAG_TAKE_HELPFUL_ABILITY = 0x00000800, // 11 Taken positive spell that has dmg class none
154
155 PROC_FLAG_DEAL_HARMFUL_ABILITY = 0x00001000, // 12 Done negative spell that has dmg class none
156 PROC_FLAG_TAKE_HARMFUL_ABILITY = 0x00002000, // 13 Taken negative spell that has dmg class none
157
158 PROC_FLAG_DEAL_HELPFUL_SPELL = 0x00004000, // 14 Done positive spell that has dmg class magic
159 PROC_FLAG_TAKE_HELPFUL_SPELL = 0x00008000, // 15 Taken positive spell that has dmg class magic
160
161 PROC_FLAG_DEAL_HARMFUL_SPELL = 0x00010000, // 16 Done negative spell that has dmg class magic
162 PROC_FLAG_TAKE_HARMFUL_SPELL = 0x00020000, // 17 Taken negative spell that has dmg class magic
163
164 PROC_FLAG_DEAL_HARMFUL_PERIODIC = 0x00040000, // 18 Successful do periodic (damage)
165 PROC_FLAG_TAKE_HARMFUL_PERIODIC = 0x00080000, // 19 Taken spell periodic (damage)
166
167 PROC_FLAG_TAKE_ANY_DAMAGE = 0x00100000, // 20 Taken any damage
168
169 PROC_FLAG_DEAL_HELPFUL_PERIODIC = 0x00200000, // 21 On trap activation (possibly needs name change to ON_GAMEOBJECT_CAST or USE)
170
171 PROC_FLAG_MAIN_HAND_WEAPON_SWING = 0x00400000, // 22 Done main-hand melee attacks (spell and autoattack)
172 PROC_FLAG_OFF_HAND_WEAPON_SWING = 0x00800000, // 23 Done off-hand melee attacks (spell and autoattack)
173
174 PROC_FLAG_DEATH = 0x01000000, // 24 Died in any way
175
176 PROC_FLAG_JUMP = 0x02000000, // 25 Jumped
177
178 PROC_FLAG_PROC_CLONE_SPELL = 0x04000000, // 26 Proc Clone Spell
179
180 PROC_FLAG_ENTER_COMBAT = 0x08000000, // 27 Entered combat
181
182 PROC_FLAG_ENCOUNTER_START = 0x10000000, // 28 Encounter started
183
184 PROC_FLAG_CAST_ENDED = 0x20000000, // 29 Cast Ended
185
186 PROC_FLAG_LOOTED = 0x40000000, // 30 Looted (took from loot, not opened loot window)
187
188 PROC_FLAG_TAKE_HELPFUL_PERIODIC = 0x80000000, // 31 Take Helpful Periodic
189
190 // flag masks
193
197
200
210
217
224
226};
@ PROC_FLAG_PROC_CLONE_SPELL
Definition: SpellMgr.h:178
@ PROC_FLAG_DEAL_MELEE_ABILITY
Definition: SpellMgr.h:143
@ PROC_FLAG_TAKE_HARMFUL_PERIODIC
Definition: SpellMgr.h:165
@ PROC_FLAG_MAIN_HAND_WEAPON_SWING
Definition: SpellMgr.h:171
@ PROC_FLAG_TAKE_MELEE_SWING
Definition: SpellMgr.h:141
@ MELEE_PROC_FLAG_MASK
Definition: SpellMgr.h:194
@ PROC_FLAG_TAKE_ANY_DAMAGE
Definition: SpellMgr.h:167
@ PROC_FLAG_LOOTED
Definition: SpellMgr.h:186
@ PROC_FLAG_CAST_ENDED
Definition: SpellMgr.h:184
@ AUTO_ATTACK_PROC_FLAG_MASK
Definition: SpellMgr.h:191
@ PROC_FLAG_TAKE_HELPFUL_ABILITY
Definition: SpellMgr.h:153
@ PROC_FLAG_DEAL_RANGED_ABILITY
Definition: SpellMgr.h:149
@ PROC_FLAG_ENCOUNTER_START
Definition: SpellMgr.h:182
@ TAKEN_HIT_PROC_FLAG_MASK
Definition: SpellMgr.h:218
@ PROC_FLAG_TAKE_HELPFUL_SPELL
Definition: SpellMgr.h:159
@ PROC_FLAG_JUMP
Definition: SpellMgr.h:176
@ PROC_FLAG_DEAL_HELPFUL_ABILITY
Definition: SpellMgr.h:152
@ PROC_FLAG_HEARTBEAT
Definition: SpellMgr.h:137
@ PROC_FLAG_DEAL_RANGED_ATTACK
Definition: SpellMgr.h:146
@ PROC_FLAG_TAKE_HARMFUL_SPELL
Definition: SpellMgr.h:162
@ PROC_FLAG_TAKE_MELEE_ABILITY
Definition: SpellMgr.h:144
@ PROC_FLAG_DEATH
Definition: SpellMgr.h:174
@ PROC_FLAG_DEAL_HARMFUL_ABILITY
Definition: SpellMgr.h:155
@ PROC_FLAG_DEAL_HARMFUL_PERIODIC
Definition: SpellMgr.h:164
@ REQ_SPELL_PHASE_PROC_FLAG_MASK
Definition: SpellMgr.h:225
@ PROC_FLAG_OFF_HAND_WEAPON_SWING
Definition: SpellMgr.h:172
@ PROC_FLAG_ENTER_COMBAT
Definition: SpellMgr.h:180
@ PROC_FLAG_KILL
Definition: SpellMgr.h:138
@ PROC_FLAG_DEAL_HELPFUL_SPELL
Definition: SpellMgr.h:158
@ RANGED_PROC_FLAG_MASK
Definition: SpellMgr.h:198
@ PROC_FLAG_DEAL_HELPFUL_PERIODIC
Definition: SpellMgr.h:169
@ PROC_FLAG_DEAL_HARMFUL_SPELL
Definition: SpellMgr.h:161
@ SPELL_PROC_FLAG_MASK
Definition: SpellMgr.h:201
@ PROC_FLAG_TAKE_RANGED_ABILITY
Definition: SpellMgr.h:150
@ DONE_HIT_PROC_FLAG_MASK
Definition: SpellMgr.h:211
@ PROC_FLAG_TAKE_HELPFUL_PERIODIC
Definition: SpellMgr.h:188
@ PROC_FLAG_TAKE_RANGED_ATTACK
Definition: SpellMgr.h:147
@ PROC_FLAG_NONE
Definition: SpellMgr.h:135
@ PROC_FLAG_TAKE_HARMFUL_ABILITY
Definition: SpellMgr.h:156

◆ ProcFlags2

enum ProcFlags2 : int32
Enumerator
PROC_FLAG_2_NONE 
PROC_FLAG_2_TARGET_DIES 
PROC_FLAG_2_KNOCKBACK 
PROC_FLAG_2_CAST_SUCCESSFUL 

Definition at line 230 of file SpellMgr.h.

231{
232 PROC_FLAG_2_NONE = 0x00000000,
233 PROC_FLAG_2_TARGET_DIES = 0x00000001,
234 PROC_FLAG_2_KNOCKBACK = 0x00000002,
235 PROC_FLAG_2_CAST_SUCCESSFUL = 0x00000004
236};
@ PROC_FLAG_2_TARGET_DIES
Definition: SpellMgr.h:233
@ PROC_FLAG_2_NONE
Definition: SpellMgr.h:232
@ PROC_FLAG_2_KNOCKBACK
Definition: SpellMgr.h:234
@ PROC_FLAG_2_CAST_SUCCESSFUL
Definition: SpellMgr.h:235

◆ ProcFlagsHit

Enumerator
PROC_HIT_NONE 
PROC_HIT_NORMAL 
PROC_HIT_CRITICAL 
PROC_HIT_MISS 
PROC_HIT_FULL_RESIST 
PROC_HIT_DODGE 
PROC_HIT_PARRY 
PROC_HIT_BLOCK 
PROC_HIT_EVADE 
PROC_HIT_IMMUNE 
PROC_HIT_DEFLECT 
PROC_HIT_ABSORB 
PROC_HIT_REFLECT 
PROC_HIT_INTERRUPT 
PROC_HIT_FULL_BLOCK 
PROC_HIT_DISPEL 
PROC_HIT_MASK_ALL 

Definition at line 271 of file SpellMgr.h.

272{
273 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
274 PROC_HIT_NORMAL = 0x0000001, // non-critical hits
275 PROC_HIT_CRITICAL = 0x0000002,
276 PROC_HIT_MISS = 0x0000004,
277 PROC_HIT_FULL_RESIST = 0x0000008,
278 PROC_HIT_DODGE = 0x0000010,
279 PROC_HIT_PARRY = 0x0000020,
280 PROC_HIT_BLOCK = 0x0000040, // partial or full block
281 PROC_HIT_EVADE = 0x0000080,
282 PROC_HIT_IMMUNE = 0x0000100,
283 PROC_HIT_DEFLECT = 0x0000200,
284 PROC_HIT_ABSORB = 0x0000400, // partial or full absorb
285 PROC_HIT_REFLECT = 0x0000800,
286 PROC_HIT_INTERRUPT = 0x0001000,
287 PROC_HIT_FULL_BLOCK = 0x0002000,
288 PROC_HIT_DISPEL = 0x0004000,
289 PROC_HIT_MASK_ALL = 0x0007FFF
290};
@ PROC_HIT_BLOCK
Definition: SpellMgr.h:280
@ PROC_HIT_FULL_RESIST
Definition: SpellMgr.h:277
@ PROC_HIT_FULL_BLOCK
Definition: SpellMgr.h:287
@ PROC_HIT_MISS
Definition: SpellMgr.h:276
@ PROC_HIT_DISPEL
Definition: SpellMgr.h:288
@ PROC_HIT_INTERRUPT
Definition: SpellMgr.h:286
@ PROC_HIT_NONE
Definition: SpellMgr.h:273
@ PROC_HIT_DEFLECT
Definition: SpellMgr.h:283
@ PROC_HIT_EVADE
Definition: SpellMgr.h:281
@ PROC_HIT_DODGE
Definition: SpellMgr.h:278
@ PROC_HIT_IMMUNE
Definition: SpellMgr.h:282
@ PROC_HIT_ABSORB
Definition: SpellMgr.h:284
@ PROC_HIT_PARRY
Definition: SpellMgr.h:279
@ PROC_HIT_MASK_ALL
Definition: SpellMgr.h:289
@ PROC_HIT_CRITICAL
Definition: SpellMgr.h:275
@ PROC_HIT_NORMAL
Definition: SpellMgr.h:274
@ PROC_HIT_REFLECT
Definition: SpellMgr.h:285

◆ ProcFlagsSpellPhase

Enumerator
PROC_SPELL_PHASE_NONE 
PROC_SPELL_PHASE_CAST 
PROC_SPELL_PHASE_HIT 
PROC_SPELL_PHASE_FINISH 
PROC_SPELL_PHASE_MASK_ALL 

Definition at line 260 of file SpellMgr.h.

261{
262 PROC_SPELL_PHASE_NONE = 0x0000000,
263 PROC_SPELL_PHASE_CAST = 0x0000001,
264 PROC_SPELL_PHASE_HIT = 0x0000002,
265 PROC_SPELL_PHASE_FINISH = 0x0000004,
267};
@ PROC_SPELL_PHASE_FINISH
Definition: SpellMgr.h:265
@ PROC_SPELL_PHASE_NONE
Definition: SpellMgr.h:262
@ PROC_SPELL_PHASE_CAST
Definition: SpellMgr.h:263
@ PROC_SPELL_PHASE_HIT
Definition: SpellMgr.h:264
@ PROC_SPELL_PHASE_MASK_ALL
Definition: SpellMgr.h:266

◆ ProcFlagsSpellType

Enumerator
PROC_SPELL_TYPE_NONE 
PROC_SPELL_TYPE_DAMAGE 
PROC_SPELL_TYPE_HEAL 
PROC_SPELL_TYPE_NO_DMG_HEAL 
PROC_SPELL_TYPE_MASK_ALL 

Definition at line 249 of file SpellMgr.h.

250{
251 PROC_SPELL_TYPE_NONE = 0x0000000,
252 PROC_SPELL_TYPE_DAMAGE = 0x0000001, // damage type of spell
253 PROC_SPELL_TYPE_HEAL = 0x0000002, // heal type of spell
254 PROC_SPELL_TYPE_NO_DMG_HEAL = 0x0000004, // other spells
256};
@ PROC_SPELL_TYPE_NONE
Definition: SpellMgr.h:251
@ PROC_SPELL_TYPE_HEAL
Definition: SpellMgr.h:253
@ PROC_SPELL_TYPE_MASK_ALL
Definition: SpellMgr.h:255
@ PROC_SPELL_TYPE_DAMAGE
Definition: SpellMgr.h:252
@ PROC_SPELL_TYPE_NO_DMG_HEAL
Definition: SpellMgr.h:254

◆ SpellAreaFlag

Enumerator
SPELL_AREA_FLAG_AUTOCAST 
SPELL_AREA_FLAG_AUTOREMOVE 
SPELL_AREA_FLAG_IGNORE_AUTOCAST_ON_QUEST_STATUS_CHANGE 

Definition at line 526 of file SpellMgr.h.

527{
528 SPELL_AREA_FLAG_AUTOCAST = 0x1, // if has autocast, spell is applied on enter
529 SPELL_AREA_FLAG_AUTOREMOVE = 0x2, // if has autoremove, spell is remove automatically inside zone/area (always removed on leaving area or zone)
530 SPELL_AREA_FLAG_IGNORE_AUTOCAST_ON_QUEST_STATUS_CHANGE = 0x4, // if this flag is set then spell will not be applied automatically on quest status change
531};
@ SPELL_AREA_FLAG_AUTOREMOVE
Definition: SpellMgr.h:529
@ SPELL_AREA_FLAG_IGNORE_AUTOCAST_ON_QUEST_STATUS_CHANGE
Definition: SpellMgr.h:530
@ SPELL_AREA_FLAG_AUTOCAST
Definition: SpellMgr.h:528

◆ SpellCategories

Enumerator
SPELLCATEGORY_HEALTH_MANA_POTIONS 
SPELLCATEGORY_DEVOUR_MAGIC 
SPELLCATEGORY_JUDGEMENT 
SPELLCATEGORY_FOOD 
SPELLCATEGORY_DRINK 

Definition at line 71 of file SpellMgr.h.

72{
75 SPELLCATEGORY_JUDGEMENT = 1210, // Judgement (seal trigger)
78};
@ SPELLCATEGORY_DRINK
Definition: SpellMgr.h:77
@ SPELLCATEGORY_DEVOUR_MAGIC
Definition: SpellMgr.h:74
@ SPELLCATEGORY_HEALTH_MANA_POTIONS
Definition: SpellMgr.h:73
@ SPELLCATEGORY_FOOD
Definition: SpellMgr.h:76
@ SPELLCATEGORY_JUDGEMENT
Definition: SpellMgr.h:75

◆ SpellFamilyFlag

Enumerator
SPELLFAMILYFLAG0_ROGUE_VANISH 
SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT 
SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP 
SPELLFAMILYFLAG0_ROGUE_KICK 
SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB 
SPELLFAMILYFLAG_WARRIOR_CHARGE 
SPELLFAMILYFLAG_WARRIOR_SLAM 
SPELLFAMILYFLAG_WARRIOR_EXECUTE 
SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW 
SPELLFAMILYFLAG_WARLOCK_LIFETAP 
SPELLFAMILYFLAG2_DRUID_STARFALL 
SPELLFAMILYFLAG1_PALADIN_DIVINESTORM 
SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK 
SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM 
SPELLFAMILYFLAG_SHAMAN_MANA_SPRING 
SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH 
SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA 
SPELLFAMILYFLAG_DK_DEATH_STRIKE 
SPELLFAMILYFLAG_DK_DEATH_COIL 
SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS 
Todo:
Figure out a more accurate name for the following familyflag(s)

Definition at line 81 of file SpellMgr.h.

82{
83 // SPELLFAMILYFLAG = SpellFamilyFlags[0]
84 // SPELLFAMILYFLAG1 = SpellFamilyFlags[1]
85 // SPELLFAMILYFLAG2 = SpellFamilyFlags[2]
86
87 // Rogue
89 SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT = 0x00000840, // Vanish, Sprint
90 SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP = 0x00000200, // Shadowstep
91 SPELLFAMILYFLAG0_ROGUE_KICK = 0x00000010, // Kick
92 SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB = 0x80100000, // Dismantle, Smoke Bomb
93
94 // Warrior
99
100 // Warlock
102
103 // Druid
105
106 // Paladin
108
109 // Shaman
115
116 // Deathknight
119
121 SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000 // Seems to be linked to most totems and some totem effects
122};
@ SPELLFAMILYFLAG_SHAMAN_MANA_SPRING
Definition: SpellMgr.h:112
@ SPELLFAMILYFLAG_WARLOCK_LIFETAP
Definition: SpellMgr.h:101
@ SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW
Definition: SpellMgr.h:98
@ SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP
Definition: SpellMgr.h:90
@ SPELLFAMILYFLAG_WARRIOR_EXECUTE
Definition: SpellMgr.h:97
@ SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH
Definition: SpellMgr.h:113
@ SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS
Definition: SpellMgr.h:121
@ SPELLFAMILYFLAG_DK_DEATH_COIL
Definition: SpellMgr.h:118
@ SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK
Definition: SpellMgr.h:110
@ SPELLFAMILYFLAG_WARRIOR_SLAM
Definition: SpellMgr.h:96
@ SPELLFAMILYFLAG2_DRUID_STARFALL
Definition: SpellMgr.h:104
@ SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT
Definition: SpellMgr.h:89
@ SPELLFAMILYFLAG1_PALADIN_DIVINESTORM
Definition: SpellMgr.h:107
@ SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB
Definition: SpellMgr.h:92
@ SPELLFAMILYFLAG_WARRIOR_CHARGE
Definition: SpellMgr.h:95
@ SPELLFAMILYFLAG_DK_DEATH_STRIKE
Definition: SpellMgr.h:117
@ SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM
Definition: SpellMgr.h:111
@ SPELLFAMILYFLAG0_ROGUE_KICK
Definition: SpellMgr.h:91
@ SPELLFAMILYFLAG0_ROGUE_VANISH
Definition: SpellMgr.h:88
@ SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA
Definition: SpellMgr.h:114

◆ SpellGroup

enum SpellGroup
Enumerator
SPELL_GROUP_NONE 
SPELL_GROUP_ELIXIR_BATTLE 
SPELL_GROUP_ELIXIR_GUARDIAN 
SPELL_GROUP_ELIXIR_UNSTABLE 
SPELL_GROUP_ELIXIR_SHATTRATH 
SPELL_GROUP_CORE_RANGE_MAX 

Definition at line 349 of file SpellMgr.h.

350{
357};
@ SPELL_GROUP_ELIXIR_SHATTRATH
Definition: SpellMgr.h:355
@ SPELL_GROUP_NONE
Definition: SpellMgr.h:351
@ SPELL_GROUP_CORE_RANGE_MAX
Definition: SpellMgr.h:356
@ SPELL_GROUP_ELIXIR_BATTLE
Definition: SpellMgr.h:352
@ SPELL_GROUP_ELIXIR_GUARDIAN
Definition: SpellMgr.h:353
@ SPELL_GROUP_ELIXIR_UNSTABLE
Definition: SpellMgr.h:354

◆ SpellGroupStackRule

Enumerator
SPELL_GROUP_STACK_RULE_DEFAULT 
SPELL_GROUP_STACK_RULE_EXCLUSIVE 
SPELL_GROUP_STACK_RULE_EXCLUSIVE_FROM_SAME_CASTER 
SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT 
SPELL_GROUP_STACK_RULE_EXCLUSIVE_HIGHEST 
SPELL_GROUP_STACK_RULE_MAX 

Definition at line 381 of file SpellMgr.h.

382{
389};
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE_FROM_SAME_CASTER
Definition: SpellMgr.h:385
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE
Definition: SpellMgr.h:384
@ SPELL_GROUP_STACK_RULE_DEFAULT
Definition: SpellMgr.h:383
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE_SAME_EFFECT
Definition: SpellMgr.h:386
@ SPELL_GROUP_STACK_RULE_EXCLUSIVE_HIGHEST
Definition: SpellMgr.h:387
@ SPELL_GROUP_STACK_RULE_MAX
Definition: SpellMgr.h:388

◆ SpellLinkedType

Enumerator
SPELL_LINK_CAST 
SPELL_LINK_HIT 
SPELL_LINK_AURA 
SPELL_LINK_REMOVE 

Definition at line 124 of file SpellMgr.h.

125{
126 SPELL_LINK_CAST = 0, // +: cast; -: remove
127 SPELL_LINK_HIT = 1,
128 SPELL_LINK_AURA = 2, // +: aura; -: immune
130};
@ SPELL_LINK_HIT
Definition: SpellMgr.h:127
@ SPELL_LINK_CAST
Definition: SpellMgr.h:126
@ SPELL_LINK_AURA
Definition: SpellMgr.h:128
@ SPELL_LINK_REMOVE
Definition: SpellMgr.h:129

◆ SpellOtherImmunity

enum class SpellOtherImmunity : uint8
strong
Enumerator
None 
AoETarget 
ChainTarget 

Definition at line 598 of file SpellMgr.h.

599{
600 None = 0x0,
601 AoETarget = 0x1,
602 ChainTarget = 0x2
603};

Function Documentation

◆ DEFINE_ENUM_FLAG() [1/6]

DEFINE_ENUM_FLAG ( ProcAttributes  )

◆ DEFINE_ENUM_FLAG() [2/6]

DEFINE_ENUM_FLAG ( ProcFlags  )

◆ DEFINE_ENUM_FLAG() [3/6]

DEFINE_ENUM_FLAG ( ProcFlags2  )

◆ DEFINE_ENUM_FLAG() [4/6]

DEFINE_ENUM_FLAG ( ProcFlagsHit  )

◆ DEFINE_ENUM_FLAG() [5/6]

DEFINE_ENUM_FLAG ( ProcFlagsSpellPhase  )

◆ DEFINE_ENUM_FLAG() [6/6]

DEFINE_ENUM_FLAG ( ProcFlagsSpellType  )

◆ IsPartOfSkillLine()

bool IsPartOfSkillLine ( uint32  skillId,
uint32  spellId 
)

Definition at line 118 of file SpellMgr.cpp.

119{
120 SkillLineAbilityMapBounds skillBounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellId);
121 for (SkillLineAbilityMap::const_iterator itr = skillBounds.first; itr != skillBounds.second; ++itr)
122 if (itr->second->SkillLine == int32(skillId))
123 return true;
124
125 return false;
126}
int32_t int32
Definition: Define.h:139
#define sSpellMgr
Definition: SpellMgr.h:849
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
Definition: SpellMgr.h:621
+ Here is the caller graph for this function:

◆ IsPrimaryProfessionSkill()

bool IsPrimaryProfessionSkill ( uint32  skill)

Definition at line 106 of file SpellMgr.cpp.

107{
108 SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(skill);
109 return pSkill && pSkill->CategoryID == SKILL_CATEGORY_PROFESSION && !pSkill->ParentSkillLineID;
110}
DB2Storage< SkillLineEntry > sSkillLineStore("SkillLine.db2", &SkillLineLoadInfo::Instance)
@ SKILL_CATEGORY_PROFESSION
uint32 ParentSkillLineID
+ Here is the caller graph for this function:

◆ IsProfessionOrRidingSkill()

bool IsProfessionOrRidingSkill ( uint32  skill)
inline

Definition at line 652 of file SpellMgr.h.

653{
654 return IsProfessionSkill(skill) || skill == SKILL_RIDING;
655}
@ SKILL_RIDING
bool IsProfessionSkill(uint32 skill)
Definition: SpellMgr.h:647
+ Here is the call graph for this function:

◆ IsProfessionSkill()

bool IsProfessionSkill ( uint32  skill)
inline

Definition at line 647 of file SpellMgr.h.

648{
649 return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING;
650}
@ SKILL_COOKING
@ SKILL_FISHING
bool IsPrimaryProfessionSkill(uint32 skill)
Definition: SpellMgr.cpp:106
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsWeaponSkill()

bool IsWeaponSkill ( uint32  skill)

Definition at line 112 of file SpellMgr.cpp.

113{
114 SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(skill);
115 return pSkill && pSkill->CategoryID == SKILL_CATEGORY_WEAPON;
116}
@ SKILL_CATEGORY_WEAPON

Variable Documentation

◆ sPetFamilySpellsStore

TC_GAME_API PetFamilySpellsStore sPetFamilySpellsStore
extern

Definition at line 104 of file SpellMgr.cpp.