TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
SpellMgr.h File Reference
#include "Define.h"
#include "DBCStructure.h"
#include "SharedDefines.h"
#include "Util.h"
#include <map>
#include <set>
#include <vector>
#include <unordered_map>
+ 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  SpellProcEventEntry
 
struct  SpellProcEntry
 
struct  SpellEnchantProcEntry
 
struct  SpellThreatEntry
 
struct  SpellTargetPosition
 
class  PetAura
 
struct  SpellArea
 
struct  SpellChainNode
 
struct  SpellLearnSkillNode
 
struct  SpellLearnSpellNode
 
struct  PetDefaultSpellsEntry
 
class  SpellMgr
 

Macros

#define SPELL_LINKED_MAX_SPELLS   200000
 
#define MELEE_BASED_TRIGGER_MASK
 
#define AURA_SPELL_PROC_EX_MASK
 
#define SPELL_GROUP_DB_RANGE_MIN   1000
 
#define MAX_CREATURE_SPELL_DATA_SLOT   4
 
#define sSpellMgr   SpellMgr::instance()
 

Typedefs

typedef std::unordered_map
< uint32, SpellProcEventEntry
SpellProcEventMap
 
typedef std::unordered_map
< uint32, SpellProcEntry
SpellProcMap
 
typedef std::unordered_map
< uint32,
SpellEnchantProcEntry
SpellEnchantProcEventMap
 
typedef std::multimap< uint32,
SpellGroup
SpellSpellGroupMap
 
typedef std::pair
< SpellSpellGroupMap::const_iterator,
SpellSpellGroupMap::const_iterator > 
SpellSpellGroupMapBounds
 
typedef std::multimap
< SpellGroup, int32
SpellGroupSpellMap
 
typedef std::pair
< SpellGroupSpellMap::const_iterator,
SpellGroupSpellMap::const_iterator > 
SpellGroupSpellMapBounds
 
typedef std::map< SpellGroup,
SpellGroupStackRule
SpellGroupStackMap
 
typedef std::map< uint32,
SpellThreatEntry
SpellThreatMap
 
typedef std::map< std::pair
< uint32, SpellEffIndex >
, SpellTargetPosition
SpellTargetPositionMap
 
typedef std::map< uint32, PetAuraSpellPetAuraMap
 
typedef std::multimap< uint32,
SpellArea
SpellAreaMap
 
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, SpellChainNode
SpellChainMap
 
typedef std::multimap< uint32,
uint32
SpellRequiredMap
 
typedef std::pair
< SpellRequiredMap::const_iterator,
SpellRequiredMap::const_iterator > 
SpellRequiredMapBounds
 
typedef std::multimap< uint32,
uint32
SpellsRequiringSpellMap
 
typedef std::pair
< SpellsRequiringSpellMap::const_iterator,
SpellsRequiringSpellMap::const_iterator > 
SpellsRequiringSpellMapBounds
 
typedef std::map< uint32,
SpellLearnSkillNode
SpellLearnSkillMap
 
typedef std::multimap< uint32,
SpellLearnSpellNode
SpellLearnSpellMap
 
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,
PetFamilySpellsSet
PetFamilySpellsStore
 
typedef std::multimap< uint32,
uint32
PetLevelupSpellSet
 
typedef std::map< uint32,
PetLevelupSpellSet
PetLevelupSpellMap
 
typedef std::map< uint32, uint32SpellDifficultySearcherMap
 
typedef std::map< int32,
PetDefaultSpellsEntry
PetDefaultSpellsMap
 
typedef std::vector< uint32SpellCustomAttribute
 
typedef std::vector< boolEnchantCustomAttribute
 
typedef std::vector< SpellInfo * > SpellInfoMap
 
typedef std::map< int32,
std::vector< int32 > > 
SpellLinkedMap
 

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 * 200000, SPELL_LINK_AURA = 2 * 200000, SPELL_LINK_REMOVE = 0 }
 
enum  ProcFlags {
  PROC_FLAG_NONE = 0x00000000, PROC_FLAG_KILLED = 0x00000001, PROC_FLAG_KILL = 0x00000002, PROC_FLAG_DONE_MELEE_AUTO_ATTACK = 0x00000004,
  PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK = 0x00000008, PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS = 0x00000010, PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS = 0x00000020, PROC_FLAG_DONE_RANGED_AUTO_ATTACK = 0x00000040,
  PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK = 0x00000080, PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS = 0x00000100, PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS = 0x00000200, PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS = 0x00000400,
  PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS = 0x00000800, PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG = 0x00001000, PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG = 0x00002000, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS = 0x00004000,
  PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS = 0x00008000, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG = 0x00010000, PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG = 0x00020000, PROC_FLAG_DONE_PERIODIC = 0x00040000,
  PROC_FLAG_TAKEN_PERIODIC = 0x00080000, PROC_FLAG_TAKEN_DAMAGE = 0x00100000, PROC_FLAG_DONE_TRAP_ACTIVATION = 0x00200000, PROC_FLAG_DONE_MAINHAND_ATTACK = 0x00400000,
  PROC_FLAG_DONE_OFFHAND_ATTACK = 0x00800000, PROC_FLAG_DEATH = 0x01000000, PROC_FLAG_JUMP = 0x02000000, AUTO_ATTACK_PROC_FLAG_MASK,
  MELEE_PROC_FLAG_MASK, RANGED_PROC_FLAG_MASK, SPELL_PROC_FLAG_MASK, SPELL_CAST_PROC_FLAG_MASK = SPELL_PROC_FLAG_MASK | PROC_FLAG_DONE_TRAP_ACTIVATION | RANGED_PROC_FLAG_MASK,
  PERIODIC_PROC_FLAG_MASK = PROC_FLAG_DONE_PERIODIC | PROC_FLAG_TAKEN_PERIODIC, 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  ProcFlagsExLegacy {
  PROC_EX_NONE = 0x0000000, PROC_EX_NORMAL_HIT = 0x0000001, PROC_EX_CRITICAL_HIT = 0x0000002, PROC_EX_MISS = 0x0000004,
  PROC_EX_RESIST = 0x0000008, PROC_EX_DODGE = 0x0000010, PROC_EX_PARRY = 0x0000020, PROC_EX_BLOCK = 0x0000040,
  PROC_EX_EVADE = 0x0000080, PROC_EX_IMMUNE = 0x0000100, PROC_EX_DEFLECT = 0x0000200, PROC_EX_ABSORB = 0x0000400,
  PROC_EX_REFLECT = 0x0000800, PROC_EX_INTERRUPT = 0x0001000, PROC_EX_FULL_BLOCK = 0x0002000, PROC_EX_RESERVED2 = 0x0004000,
  PROC_EX_NOT_ACTIVE_SPELL = 0x0008000, PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, PROC_EX_EX_ONE_TIME_TRIGGER = 0x0020000, PROC_EX_ONLY_ACTIVE_SPELL = 0x0040000,
  PROC_EX_INTERNAL_CANT_PROC = 0x0800000, PROC_EX_INTERNAL_DOT = 0x1000000, PROC_EX_INTERNAL_HOT = 0x2000000, PROC_EX_INTERNAL_TRIGGERED = 0x4000000,
  PROC_EX_INTERNAL_REQ_FAMILY = 0x8000000
}
 
enum  ProcFlagsSpellType {
  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 {
  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 {
  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_MASK_ALL = 0x2FFF
}
 
enum  ProcAttributes { PROC_ATTR_REQ_EXP_OR_HONOR = 0x0000010 }
 
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
}
 

Functions

bool IsPrimaryProfessionSkill (uint32 skill)
 
bool IsWeaponSkill (uint32 skill)
 
bool IsProfessionSkill (uint32 skill)
 
bool IsProfessionOrRidingSkill (uint32 skill)
 
bool IsPartOfSkillLine (uint32 skillId, uint32 spellId)
 
TC_GAME_API DiminishingGroup GetDiminishingReturnsGroupForSpell (SpellInfo const *spellproto)
 
TC_GAME_API DiminishingReturnsType GetDiminishingReturnsGroupType (DiminishingGroup group)
 
TC_GAME_API DiminishingLevels GetDiminishingReturnsMaxLevel (DiminishingGroup group)
 
TC_GAME_API int32 GetDiminishingReturnsLimitDuration (SpellInfo const *spellproto)
 

Variables

TC_GAME_API PetFamilySpellsStore sPetFamilySpellsStore
 

Macro Definition Documentation

#define AURA_SPELL_PROC_EX_MASK
Value:
Definition: SpellMgr.h:200
Definition: SpellMgr.h:205
Definition: SpellMgr.h:204
Definition: SpellMgr.h:211
Definition: SpellMgr.h:209
Definition: SpellMgr.h:202
Definition: SpellMgr.h:207
Definition: SpellMgr.h:203
Definition: SpellMgr.h:210
Definition: SpellMgr.h:208
Definition: SpellMgr.h:199
Definition: SpellMgr.h:201
Definition: SpellMgr.h:206
#define MAX_CREATURE_SPELL_DATA_SLOT   4
#define SPELL_GROUP_DB_RANGE_MIN   1000
#define SPELL_LINKED_MAX_SPELLS   200000
#define sSpellMgr   SpellMgr::instance()

Typedef Documentation

typedef std::vector<bool> EnchantCustomAttribute
typedef std::set<uint32> PetFamilySpellsSet
typedef std::multimap<uint32, uint32> PetLevelupSpellSet
typedef std::pair<SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator> SkillLineAbilityMapBounds
typedef std::multimap<uint32, SpellArea const*> SpellAreaForAreaMap
typedef std::pair<SpellAreaForAreaMap::const_iterator, SpellAreaForAreaMap::const_iterator> SpellAreaForAreaMapBounds
typedef std::multimap<uint32, SpellArea const*> SpellAreaForAuraMap
typedef std::pair<SpellAreaForAuraMap::const_iterator, SpellAreaForAuraMap::const_iterator> SpellAreaForAuraMapBounds
typedef std::multimap<uint32, SpellArea const*> SpellAreaForQuestMap
typedef std::pair<SpellAreaForQuestMap::const_iterator, SpellAreaForQuestMap::const_iterator> SpellAreaForQuestMapBounds
typedef std::multimap<uint32, SpellArea> SpellAreaMap
typedef std::pair<SpellAreaMap::const_iterator, SpellAreaMap::const_iterator> SpellAreaMapBounds
typedef std::unordered_map<uint32, SpellChainNode> SpellChainMap
typedef std::vector<uint32> SpellCustomAttribute
typedef std::multimap<SpellGroup, int32> SpellGroupSpellMap
typedef std::pair<SpellGroupSpellMap::const_iterator, SpellGroupSpellMap::const_iterator> SpellGroupSpellMapBounds
typedef std::vector<SpellInfo*> SpellInfoMap
typedef std::pair<SpellLearnSpellMap::const_iterator, SpellLearnSpellMap::const_iterator> SpellLearnSpellMapBounds
typedef std::map<int32, std::vector<int32> > SpellLinkedMap
typedef std::map<uint32, PetAura> SpellPetAuraMap
typedef std::unordered_map<uint32, SpellProcEventEntry> SpellProcEventMap
typedef std::unordered_map<uint32, SpellProcEntry> SpellProcMap
typedef std::multimap<uint32, uint32> SpellRequiredMap
typedef std::pair<SpellRequiredMap::const_iterator, SpellRequiredMap::const_iterator> SpellRequiredMapBounds
typedef std::multimap<uint32, SpellGroup > SpellSpellGroupMap
typedef std::pair<SpellSpellGroupMap::const_iterator, SpellSpellGroupMap::const_iterator> SpellSpellGroupMapBounds
typedef std::multimap<uint32, uint32> SpellsRequiringSpellMap
typedef std::pair<SpellsRequiringSpellMap::const_iterator, SpellsRequiringSpellMap::const_iterator> SpellsRequiringSpellMapBounds

Enumeration Type Documentation

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 
372 {
409  EFFECT_RADIUS_0_5_YARDS = 44, // 0.5 yards
428  EFFECT_RADIUS_3_5_YARDS = 64, // 3.5 yards
430 };
Definition: SpellMgr.h:406
Definition: SpellMgr.h:393
Definition: SpellMgr.h:407
Definition: SpellMgr.h:403
Definition: SpellMgr.h:386
Definition: SpellMgr.h:397
Definition: SpellMgr.h:410
Definition: SpellMgr.h:391
Definition: SpellMgr.h:424
Definition: SpellMgr.h:409
Definition: SpellMgr.h:374
Definition: SpellMgr.h:405
Definition: SpellMgr.h:429
Definition: SpellMgr.h:421
Definition: SpellMgr.h:425
Definition: SpellMgr.h:400
Definition: SpellMgr.h:420
Definition: SpellMgr.h:413
Definition: SpellMgr.h:380
Definition: SpellMgr.h:383
Definition: SpellMgr.h:394
Definition: SpellMgr.h:418
Definition: SpellMgr.h:419
Definition: SpellMgr.h:416
Definition: SpellMgr.h:381
Definition: SpellMgr.h:385
Definition: SpellMgr.h:379
Definition: SpellMgr.h:426
Definition: SpellMgr.h:404
Definition: SpellMgr.h:401
Definition: SpellMgr.h:427
Definition: SpellMgr.h:388
Definition: SpellMgr.h:378
Definition: SpellMgr.h:412
Definition: SpellMgr.h:373
Definition: SpellMgr.h:375
Definition: SpellMgr.h:392
Definition: SpellMgr.h:396
Definition: SpellMgr.h:382
Definition: SpellMgr.h:422
Definition: SpellMgr.h:390
Definition: SpellMgr.h:387
Definition: SpellMgr.h:377
Definition: SpellMgr.h:417
Definition: SpellMgr.h:428
Definition: SpellMgr.h:399
Definition: SpellMgr.h:395
Definition: SpellMgr.h:389
Definition: SpellMgr.h:398
Definition: SpellMgr.h:423
Definition: SpellMgr.h:415
Definition: SpellMgr.h:414
Definition: SpellMgr.h:411
Definition: SpellMgr.h:376
Definition: SpellMgr.h:402
Definition: SpellMgr.h:408
Definition: SpellMgr.h:384
Enumerator
PROC_ATTR_REQ_EXP_OR_HONOR 
272 {
273  PROC_ATTR_REQ_EXP_OR_HONOR = 0x0000010
274 };
Definition: SpellMgr.h:273
enum ProcFlags
Enumerator
PROC_FLAG_NONE 
PROC_FLAG_KILLED 
PROC_FLAG_KILL 
PROC_FLAG_DONE_MELEE_AUTO_ATTACK 
PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK 
PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS 
PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS 
PROC_FLAG_DONE_RANGED_AUTO_ATTACK 
PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK 
PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS 
PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS 
PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS 
PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS 
PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG 
PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG 
PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS 
PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS 
PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG 
PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG 
PROC_FLAG_DONE_PERIODIC 
PROC_FLAG_TAKEN_PERIODIC 
PROC_FLAG_TAKEN_DAMAGE 
PROC_FLAG_DONE_TRAP_ACTIVATION 
PROC_FLAG_DONE_MAINHAND_ATTACK 
PROC_FLAG_DONE_OFFHAND_ATTACK 
PROC_FLAG_DEATH 
PROC_FLAG_JUMP 
AUTO_ATTACK_PROC_FLAG_MASK 
MELEE_PROC_FLAG_MASK 
RANGED_PROC_FLAG_MASK 
SPELL_PROC_FLAG_MASK 
SPELL_CAST_PROC_FLAG_MASK 
PERIODIC_PROC_FLAG_MASK 
DONE_HIT_PROC_FLAG_MASK 
TAKEN_HIT_PROC_FLAG_MASK 
REQ_SPELL_PHASE_PROC_FLAG_MASK 
108 {
109  PROC_FLAG_NONE = 0x00000000,
110 
111  PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor - not sure about this flag
112  PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward)
113 
114  PROC_FLAG_DONE_MELEE_AUTO_ATTACK = 0x00000004, // 02 Done melee auto attack
115  PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK = 0x00000008, // 03 Taken melee auto attack
116 
117  PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS = 0x00000010, // 04 Done attack by Spell that has dmg class melee
118  PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS = 0x00000020, // 05 Taken attack by Spell that has dmg class melee
119 
120  PROC_FLAG_DONE_RANGED_AUTO_ATTACK = 0x00000040, // 06 Done ranged auto attack
121  PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK = 0x00000080, // 07 Taken ranged auto attack
122 
123  PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS = 0x00000100, // 08 Done attack by Spell that has dmg class ranged
124  PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS = 0x00000200, // 09 Taken attack by Spell that has dmg class ranged
125 
126  PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS = 0x00000400, // 10 Done positive spell that has dmg class none
127  PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS = 0x00000800, // 11 Taken positive spell that has dmg class none
128 
129  PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG = 0x00001000, // 12 Done negative spell that has dmg class none
130  PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG = 0x00002000, // 13 Taken negative spell that has dmg class none
131 
132  PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS = 0x00004000, // 14 Done positive spell that has dmg class magic
133  PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS = 0x00008000, // 15 Taken positive spell that has dmg class magic
134 
135  PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG = 0x00010000, // 16 Done negative spell that has dmg class magic
136  PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG = 0x00020000, // 17 Taken negative spell that has dmg class magic
137 
138  PROC_FLAG_DONE_PERIODIC = 0x00040000, // 18 Successful do periodic (damage / healing)
139  PROC_FLAG_TAKEN_PERIODIC = 0x00080000, // 19 Taken spell periodic (damage / healing)
140 
141  PROC_FLAG_TAKEN_DAMAGE = 0x00100000, // 20 Taken any damage
142  PROC_FLAG_DONE_TRAP_ACTIVATION = 0x00200000, // 21 On trap activation (possibly needs name change to ON_GAMEOBJECT_CAST or USE)
143 
144  PROC_FLAG_DONE_MAINHAND_ATTACK = 0x00400000, // 22 Done main-hand melee attacks (spell and autoattack)
145  PROC_FLAG_DONE_OFFHAND_ATTACK = 0x00800000, // 23 Done off-hand melee attacks (spell and autoattack)
146 
147  PROC_FLAG_DEATH = 0x01000000, // 24 Died in any way
148  PROC_FLAG_JUMP = 0x02000000, // 25 Jumped
149 
150  // flag masks
153 
157 
160 
167 
169 
171 
177 
183 
184  REQ_SPELL_PHASE_PROC_FLAG_MASK = SPELL_PROC_FLAG_MASK & DONE_HIT_PROC_FLAG_MASK
185 };
Definition: SpellMgr.h:124
Definition: SpellMgr.h:112
Definition: SpellMgr.h:129
Definition: SpellMgr.h:172
Definition: SpellMgr.h:168
Definition: SpellMgr.h:151
Definition: SpellMgr.h:114
Definition: SpellMgr.h:117
Definition: SpellMgr.h:121
Definition: SpellMgr.h:109
Definition: SpellMgr.h:138
Definition: SpellMgr.h:139
Definition: SpellMgr.h:120
Definition: SpellMgr.h:126
Definition: SpellMgr.h:184
Definition: SpellMgr.h:141
Definition: SpellMgr.h:161
Definition: SpellMgr.h:142
Definition: SpellMgr.h:144
Definition: SpellMgr.h:115
Definition: SpellMgr.h:148
Definition: SpellMgr.h:111
Definition: SpellMgr.h:170
Definition: SpellMgr.h:123
Definition: SpellMgr.h:147
Definition: SpellMgr.h:118
Definition: SpellMgr.h:178
Definition: SpellMgr.h:154
Definition: SpellMgr.h:145
Definition: SpellMgr.h:158
Enumerator
PROC_EX_NONE 
PROC_EX_NORMAL_HIT 
PROC_EX_CRITICAL_HIT 
PROC_EX_MISS 
PROC_EX_RESIST 
PROC_EX_DODGE 
PROC_EX_PARRY 
PROC_EX_BLOCK 
PROC_EX_EVADE 
PROC_EX_IMMUNE 
PROC_EX_DEFLECT 
PROC_EX_ABSORB 
PROC_EX_REFLECT 
PROC_EX_INTERRUPT 
PROC_EX_FULL_BLOCK 
PROC_EX_RESERVED2 
PROC_EX_NOT_ACTIVE_SPELL 
PROC_EX_EX_TRIGGER_ALWAYS 
PROC_EX_EX_ONE_TIME_TRIGGER 
PROC_EX_ONLY_ACTIVE_SPELL 
PROC_EX_INTERNAL_CANT_PROC 
PROC_EX_INTERNAL_DOT 
PROC_EX_INTERNAL_HOT 
PROC_EX_INTERNAL_TRIGGERED 
PROC_EX_INTERNAL_REQ_FAMILY 
197 {
198  PROC_EX_NONE = 0x0000000, // If none can tigger on Hit/Crit only (passive spells MUST defined by SpellFamily flag)
199  PROC_EX_NORMAL_HIT = 0x0000001, // If set only from normal hit (only damage spells)
200  PROC_EX_CRITICAL_HIT = 0x0000002,
201  PROC_EX_MISS = 0x0000004,
202  PROC_EX_RESIST = 0x0000008,
203  PROC_EX_DODGE = 0x0000010,
204  PROC_EX_PARRY = 0x0000020,
205  PROC_EX_BLOCK = 0x0000040,
206  PROC_EX_EVADE = 0x0000080,
207  PROC_EX_IMMUNE = 0x0000100,
208  PROC_EX_DEFLECT = 0x0000200,
209  PROC_EX_ABSORB = 0x0000400,
210  PROC_EX_REFLECT = 0x0000800,
211  PROC_EX_INTERRUPT = 0x0001000, // Melee hit result can be Interrupt (not used)
212  PROC_EX_FULL_BLOCK = 0x0002000, // block al attack damage
213  PROC_EX_RESERVED2 = 0x0004000,
214  PROC_EX_NOT_ACTIVE_SPELL = 0x0008000, // Spell mustn't do damage/heal to proc
215  PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, // If set trigger always no matter of hit result
216  PROC_EX_EX_ONE_TIME_TRIGGER = 0x0020000, // If set trigger always but only one time (not implemented yet)
217  PROC_EX_ONLY_ACTIVE_SPELL = 0x0040000, // Spell has to do damage/heal to proc
218 
219  // Flags for internal use - do not use these in db!
220  PROC_EX_INTERNAL_CANT_PROC = 0x0800000,
221  PROC_EX_INTERNAL_DOT = 0x1000000,
222  PROC_EX_INTERNAL_HOT = 0x2000000,
223  PROC_EX_INTERNAL_TRIGGERED = 0x4000000,
224  PROC_EX_INTERNAL_REQ_FAMILY = 0x8000000
225 };
Definition: SpellMgr.h:200
Definition: SpellMgr.h:198
Definition: SpellMgr.h:205
Definition: SpellMgr.h:204
Definition: SpellMgr.h:221
Definition: SpellMgr.h:211
Definition: SpellMgr.h:222
Definition: SpellMgr.h:214
Definition: SpellMgr.h:209
Definition: SpellMgr.h:202
Definition: SpellMgr.h:220
Definition: SpellMgr.h:215
Definition: SpellMgr.h:212
Definition: SpellMgr.h:207
Definition: SpellMgr.h:213
Definition: SpellMgr.h:203
Definition: SpellMgr.h:223
Definition: SpellMgr.h:210
Definition: SpellMgr.h:208
Definition: SpellMgr.h:199
Definition: SpellMgr.h:217
Definition: SpellMgr.h:224
Definition: SpellMgr.h:216
Definition: SpellMgr.h:201
Definition: SpellMgr.h:206
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_MASK_ALL 
252 {
253  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
254  PROC_HIT_NORMAL = 0x0000001, // non-critical hits
255  PROC_HIT_CRITICAL = 0x0000002,
256  PROC_HIT_MISS = 0x0000004,
257  PROC_HIT_FULL_RESIST = 0x0000008,
258  PROC_HIT_DODGE = 0x0000010,
259  PROC_HIT_PARRY = 0x0000020,
260  PROC_HIT_BLOCK = 0x0000040, // partial or full block
261  PROC_HIT_EVADE = 0x0000080,
262  PROC_HIT_IMMUNE = 0x0000100,
263  PROC_HIT_DEFLECT = 0x0000200,
264  PROC_HIT_ABSORB = 0x0000400, // partial or full absorb
265  PROC_HIT_REFLECT = 0x0000800,
266  PROC_HIT_INTERRUPT = 0x0001000, // (not used atm)
267  PROC_HIT_FULL_BLOCK = 0x0002000,
268  PROC_HIT_MASK_ALL = 0x2FFF
269 };
Definition: SpellMgr.h:254
Definition: SpellMgr.h:263
Definition: SpellMgr.h:259
Definition: SpellMgr.h:266
Definition: SpellMgr.h:260
Definition: SpellMgr.h:262
Definition: SpellMgr.h:265
Definition: SpellMgr.h:267
Definition: SpellMgr.h:261
Definition: SpellMgr.h:257
Definition: SpellMgr.h:253
Definition: SpellMgr.h:256
Definition: SpellMgr.h:258
Definition: SpellMgr.h:268
Definition: SpellMgr.h:264
Definition: SpellMgr.h:255
Enumerator
PROC_SPELL_PHASE_NONE 
PROC_SPELL_PHASE_CAST 
PROC_SPELL_PHASE_HIT 
PROC_SPELL_PHASE_FINISH 
PROC_SPELL_PHASE_MASK_ALL 
243 {
244  PROC_SPELL_PHASE_NONE = 0x0000000,
245  PROC_SPELL_PHASE_CAST = 0x0000001,
246  PROC_SPELL_PHASE_HIT = 0x0000002,
247  PROC_SPELL_PHASE_FINISH = 0x0000004,
249 };
Definition: SpellMgr.h:244
Definition: SpellMgr.h:247
Definition: SpellMgr.h:245
Definition: SpellMgr.h:246
Definition: SpellMgr.h:248
Enumerator
PROC_SPELL_TYPE_NONE 
PROC_SPELL_TYPE_DAMAGE 
PROC_SPELL_TYPE_HEAL 
PROC_SPELL_TYPE_NO_DMG_HEAL 
PROC_SPELL_TYPE_MASK_ALL 
234 {
235  PROC_SPELL_TYPE_NONE = 0x0000000,
236  PROC_SPELL_TYPE_DAMAGE = 0x0000001, // damage type of spell
237  PROC_SPELL_TYPE_HEAL = 0x0000002, // heal type of spell
238  PROC_SPELL_TYPE_NO_DMG_HEAL = 0x0000004, // other spells
240 };
Definition: SpellMgr.h:237
Definition: SpellMgr.h:238
Definition: SpellMgr.h:235
Definition: SpellMgr.h:236
Definition: SpellMgr.h:239
Enumerator
SPELLCATEGORY_HEALTH_MANA_POTIONS 
SPELLCATEGORY_DEVOUR_MAGIC 
SPELLCATEGORY_JUDGEMENT 
SPELLCATEGORY_FOOD 
SPELLCATEGORY_DRINK 
42 {
45  SPELLCATEGORY_JUDGEMENT = 1210, // Judgement (seal trigger)
46  SPELLCATEGORY_FOOD = 11,
48 };
Definition: SpellMgr.h:45
Definition: SpellMgr.h:44
Definition: SpellMgr.h:47
Definition: SpellMgr.h:43
Definition: SpellMgr.h:46
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)
52 {
53  // SPELLFAMILYFLAG = SpellFamilyFlags[0]
54  // SPELLFAMILYFLAG1 = SpellFamilyFlags[1]
55  // SPELLFAMILYFLAG2 = SpellFamilyFlags[2]
56 
57  // Rogue
58  SPELLFAMILYFLAG0_ROGUE_VANISH = 0x00000800,
59  SPELLFAMILYFLAG0_ROGUE_VAN_SPRINT = 0x00000840, // Vanish, Sprint
60  SPELLFAMILYFLAG1_ROGUE_SHADOWSTEP = 0x00000200, // Shadowstep
61  SPELLFAMILYFLAG0_ROGUE_KICK = 0x00000010, // Kick
62  SPELLFAMILYFLAG1_ROGUE_DISMANTLE_SMOKE_BOMB = 0x80100000, // Dismantle, Smoke Bomb
63 
64  // Warrior
65  SPELLFAMILYFLAG_WARRIOR_CHARGE = 0x00000001,
66  SPELLFAMILYFLAG_WARRIOR_SLAM = 0x00200000,
69 
70  // Warlock
72 
73  // Druid
75 
76  // Paladin
78 
79  // Shaman
85 
86  // Deathknight
88  SPELLFAMILYFLAG_DK_DEATH_COIL = 0x00002000,
89 
91  SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS = 0x04000000 // Seems to be linked to most totems and some totem effects
92 };
Definition: SpellMgr.h:83
Definition: SpellMgr.h:66
Definition: SpellMgr.h:59
Definition: SpellMgr.h:71
Definition: SpellMgr.h:81
Definition: SpellMgr.h:91
Definition: SpellMgr.h:58
Definition: SpellMgr.h:77
Definition: SpellMgr.h:84
Definition: SpellMgr.h:60
Definition: SpellMgr.h:61
Definition: SpellMgr.h:74
Definition: SpellMgr.h:87
Definition: SpellMgr.h:88
Definition: SpellMgr.h:82
Definition: SpellMgr.h:80
Definition: SpellMgr.h:67
Definition: SpellMgr.h:65
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 
318 {
319  SPELL_GROUP_NONE = 0,
325 };
Definition: SpellMgr.h:324
Definition: SpellMgr.h:323
Definition: SpellMgr.h:320
Definition: SpellMgr.h:321
Definition: SpellMgr.h:322
Definition: SpellMgr.h:319
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 
Enumerator
SPELL_LINK_CAST 
SPELL_LINK_HIT 
SPELL_LINK_AURA 
SPELL_LINK_REMOVE 
98 {
99  SPELL_LINK_CAST = 0, // +: cast; -: remove
100  SPELL_LINK_HIT = 1 * 200000,
101  SPELL_LINK_AURA = 2 * 200000, // +: aura; -: immune
103 };
Definition: SpellMgr.h:100
Definition: SpellMgr.h:99
Definition: SpellMgr.h:101
Definition: SpellMgr.h:102

Function Documentation

TC_GAME_API DiminishingGroup GetDiminishingReturnsGroupForSpell ( SpellInfo const spellproto)
56 {
57  if (spellproto->IsPositive())
58  return DIMINISHING_NONE;
59 
60  for (SpellEffectInfo const* effect: spellproto->GetEffectsForDifficulty(DIFFICULTY_NONE))
61  {
62  if (effect && effect->ApplyAuraName == SPELL_AURA_MOD_TAUNT)
63  return DIMINISHING_TAUNT;
64  }
65 
66  // Explicit Diminishing Groups
67  switch (spellproto->SpellFamilyName)
68  {
70  {
71  // Entrapment -- 135373
72  if (spellproto->SpellIconID == 20 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39588)
73  return DIMINISHING_ROOT;
74 
75  // Intimidation -- 24394
76  if (spellproto->SpellIconID == 166 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 2816)
77  return DIMINISHING_STUN;
78  // Pulverize (Primal Earth Elemental) -- 118345
79  if (spellproto->SpellIconID == 4507 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39877)
80  return DIMINISHING_STUN;
81  // Static Charge (Capacitor Totem) -- 118905
82  if (spellproto->SpellIconID == 54 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 24442)
83  return DIMINISHING_STUN;
84  // Remorseless Winter -- 115001
85  if (spellproto->SpellIconID == 5744 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 23514)
86  return DIMINISHING_STUN;
87 
88  // Gorefiend's Grasp -- 108199
89  if (spellproto->SpellIconID == 5743 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 28937)
91  break;
92  }
93  case SPELLFAMILY_MAGE:
94  {
95  // Frostjaw -- 102051
96  if (spellproto->SpellFamilyFlags[2] & 0x40000)
97  return DIMINISHING_SILENCE;
98 
99  // Frost Nova -- 122
100  if (spellproto->SpellFamilyFlags[0] & 0x40)
101  return DIMINISHING_ROOT;
102  // Ice Ward -- 111340
103  if (spellproto->SpellFamilyFlags[0] & 0x80000 && spellproto->SpellFamilyFlags[2] & 0x2000)
104  return DIMINISHING_ROOT;
105  // Freeze (Water Elemental) -- 33395
106  if (spellproto->SpellFamilyFlags[2] & 0x200)
107  return DIMINISHING_ROOT;
108 
109  // Deep Freeze -- 44572
110  if (spellproto->SpellFamilyFlags[1] & 0x100000)
111  return DIMINISHING_STUN;
112 
113  // Dragon's Breath -- 31661
114  if (spellproto->SpellFamilyFlags[0] & 0x800000)
116  // Polymorph -- 118
117  if (spellproto->SpellFamilyFlags[0] & 0x1000000)
119  // Ring of Frost -- 82691
120  if (spellproto->SpellFamilyFlags[2] & 0x40)
122  // Ice Nova -- 157997
123  if (spellproto->SpellFamilyFlags[2] & 0x800000)
125  break;
126  }
127  case SPELLFAMILY_WARRIOR:
128  {
129  // Shockwave -- 132168
130  if (spellproto->SpellFamilyFlags[1] & 0x8000)
131  return DIMINISHING_STUN;
132  // Storm Bolt -- 132169
133  if (spellproto->SpellFamilyFlags[2] & 0x1000)
134  return DIMINISHING_STUN;
135 
136  // Intimidating Shout -- 5246
137  if (spellproto->SpellFamilyFlags[0] & 0x40000)
138  return DIMINISHING_DISORIENT;
139 
140  // Hamstring -- 1715, 8 seconds in PvP (6.0)
141  if (spellproto->SpellFamilyFlags[0] & 0x2)
142  return DIMINISHING_LIMITONLY;
143  break;
144  }
145  case SPELLFAMILY_WARLOCK:
146  {
147  // Mortal Coil -- 6789
148  if (spellproto->SpellFamilyFlags[0] & 0x80000)
150  // Banish -- 710
151  if (spellproto->SpellFamilyFlags[1] & 0x8000000)
153  // Blood Horror -- 137143, no flags (17986)
154  if (spellproto->SpellIconID == 6447 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 26758)
156 
157  // Fear -- 118699
158  if (spellproto->SpellFamilyFlags[1] & 0x400)
159  return DIMINISHING_DISORIENT;
160  // Howl of Terror -- 5484
161  if (spellproto->SpellFamilyFlags[1] & 0x8)
162  return DIMINISHING_DISORIENT;
163 
164  // Shadowfury -- 30283
165  if (spellproto->SpellFamilyFlags[1] & 0x1000)
166  return DIMINISHING_STUN;
167  // Summon Infernal -- 22703
168  if (spellproto->SpellFamilyFlags[0] & 0x1000)
169  return DIMINISHING_STUN;
170  break;
171  }
173  {
174  // Fellash -- 115770
175  // Whiplash -- 6360
176  if (spellproto->SpellFamilyFlags[0] & 0x8000000)
178 
179  // Mesmerize (Shivarra pet) -- 115268
180  // Seduction (Succubus pet) -- 6358
181  if (spellproto->SpellFamilyFlags[0] & 0x2000000)
182  return DIMINISHING_DISORIENT;
183 
184  // Axe Toss (Felguard pet) -- 89766
185  if (spellproto->SpellFamilyFlags[1] & 0x4)
186  return DIMINISHING_STUN;
187  break;
188  }
189  case SPELLFAMILY_DRUID:
190  {
191  // Maim -- 22570
192  if (spellproto->SpellFamilyFlags[1] & 0x80)
193  return DIMINISHING_STUN;
194  // Mighty Bash -- 5211
195  if (spellproto->SpellFamilyFlags[0] & 0x2000)
196  return DIMINISHING_STUN;
197  // Rake -- 163505 -- no flags on the stun, 20490
198  if (spellproto->SpellIconID == 494 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 38283)
199  return DIMINISHING_STUN;
200 
201  // Incapacitating Roar -- 99, no flags on the stun, 14
202  if (spellproto->SpellIconID == 960 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 38528)
204 
205  // Cyclone -- 33786
206  if (spellproto->SpellFamilyFlags[1] & 0x20)
207  return DIMINISHING_DISORIENT;
208 
209  // Glyph of Fae Silence -- 114238, no flags on the silence, 15035
210  if (spellproto->SpellIconID == 957 && spellproto->SchoolMask == 8)
211  return DIMINISHING_SILENCE;
212 
213  // Typhoon -- 61391
214  if (spellproto->SpellFamilyFlags[1] & 0x1000000)
216  // Ursol's Vortex -- 127797, no flags on the effect, 16921
217  if (spellproto->SpellIconID == 5784 && spellproto->SchoolMask == 8)
219 
220  // Entangling Roots -- 339
221  if (spellproto->SpellFamilyFlags[0] & 0x200)
222  return DIMINISHING_ROOT;
223  // Mass Entanglement -- 102359, no flags on the root, 13535
224  if (spellproto->SpellIconID == 5782 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 38269)
225  return DIMINISHING_ROOT;
226 
227  // Faerie Fire -- 770, 20 seconds in PvP (6.0)
228  if (spellproto->SpellFamilyFlags[0] & 0x400)
229  return DIMINISHING_LIMITONLY;
230  break;
231  }
232  case SPELLFAMILY_ROGUE:
233  {
234  // Cheap Shot -- 1833
235  if (spellproto->SpellFamilyFlags[0] & 0x400)
236  return DIMINISHING_STUN;
237  // Kidney Shot -- 408
238  if (spellproto->SpellFamilyFlags[0] & 0x200000)
239  return DIMINISHING_STUN;
240 
241  // Gouge -- 1776
242  if (spellproto->SpellFamilyFlags[0] & 0x8)
244  // Sap -- 6770
245  if (spellproto->SpellFamilyFlags[0] & 0x80)
247 
248  // Blind -- 2094
249  if (spellproto->SpellFamilyFlags[0] & 0x1000000)
250  return DIMINISHING_DISORIENT;
251 
252  // Garrote -- 1330
253  if (spellproto->SpellFamilyFlags[1] & 0x20000000)
254  return DIMINISHING_SILENCE;
255  break;
256  }
257  case SPELLFAMILY_HUNTER:
258  {
259  // Glyph of Explosive Trap -- 149575 maybe? @todo
260  // return DIMINISHING_AOE_KNOCKBACK;
261 
262  // Charge (Tenacity pet) -- 53148, no flags (5526)
263  if (spellproto->SpellIconID == 1559 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39480)
264  return DIMINISHING_ROOT;
265  // Narrow Escape -- 136634, no flags (17964)
266  if (spellproto->SpellIconID == 3342 && spellproto->SchoolMask == 8)
267  return DIMINISHING_ROOT;
268 
269  // Binding Shot -- 117526, no flags (15581)
270  if (spellproto->SpellIconID == 4612 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 6859)
271  return DIMINISHING_STUN;
272 
273  // Freezing Trap -- 3355
274  if (spellproto->SpellFamilyFlags[0] & 0x8)
276  // Wyvern Sting -- 19386
277  if (spellproto->SpellFamilyFlags[1] & 0x1000)
279  break;
280  }
281  case SPELLFAMILY_PALADIN:
282  {
283  // Repentance -- 20066
284  if (spellproto->SpellFamilyFlags[0] & 0x4)
286 
287  // Turn Evil -- 10326
288  if (spellproto->SpellFamilyFlags[1] & 0x800000)
289  return DIMINISHING_DISORIENT;
290 
291  // Avenger's Shield -- 31935
292  if (spellproto->SpellFamilyFlags[0] & 0x4000)
293  return DIMINISHING_SILENCE;
294 
295  // Fist of Justice -- 105593
296  // Hammer of Justice -- 853
297  if (spellproto->SpellFamilyFlags[0] & 0x800)
298  return DIMINISHING_STUN;
299  // Holy Wrath -- 119072
300  if (spellproto->SpellFamilyFlags[1] & 0x200000)
301  return DIMINISHING_STUN;
302  break;
303  }
304  case SPELLFAMILY_SHAMAN:
305  {
306  // Hex -- 51514
307  if (spellproto->SpellFamilyFlags[1] & 0x8000)
309 
310  // Thunderstorm -- 51490
311  if (spellproto->SpellFamilyFlags[1] & 0x2000)
313  // Earthgrab Totem -- 64695
314  if (spellproto->SpellFamilyFlags[2] & 0x4000)
315  return DIMINISHING_ROOT;
316  // Frost Shock (with Frozen Power) -- 63685, no flags (6918)
317  if (spellproto->SpellIconID == 193 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39876)
318  return DIMINISHING_ROOT;
319  break;
320  }
322  {
323  // Strangulate -- 47476
324  if (spellproto->SpellFamilyFlags[0] & 0x200)
325  return DIMINISHING_SILENCE;
326 
327  // Chains of Ice (with Chilblains) -- 96294, no flags (13020)
328  if (spellproto->SpellIconID == 180 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 20135)
329  return DIMINISHING_ROOT;
330 
331  // Asphyxiate -- 108194
332  if (spellproto->SpellFamilyFlags[2] & 0x100000)
333  return DIMINISHING_STUN;
334  // Gnaw (Ghoul) -- 91800, no flags (12511)
335  if (spellproto->SpellIconID == 3010 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 38760)
336  return DIMINISHING_STUN;
337  // Monstrous Blow (Ghoul w/ Dark Transformation active) -- 91797, no flags (12510)
338  if (spellproto->SpellIconID == 15 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 38761)
339  return DIMINISHING_STUN;
340  break;
341  }
342  case SPELLFAMILY_PRIEST:
343  {
344  // Glyph of Mind Blast -- 87194, no flags (10092)
345  if (spellproto->SpellIconID == 2114 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 38927)
346  return DIMINISHING_ROOT;
347  // Void Tendrils -- 114404, no flags (15067)
348  if (spellproto->SpellIconID == 5816 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 25199)
349  return DIMINISHING_ROOT;
350 
351  // Dominate Mind -- 605
352  if (spellproto->SpellFamilyFlags[0] & 0x20000 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39068)
354  // Holy Word: Chastise -- 88625
355  if (spellproto->SpellFamilyFlags[2] & 0x20)
357  // Psychic Horror -- 64044
358  if (spellproto->SpellFamilyFlags[2] & 0x2000)
360 
361  // Psychic Scream -- 8122
362  if (spellproto->SpellFamilyFlags[0] & 0x10000)
363  return DIMINISHING_DISORIENT;
364 
365  // Silence -- 15487
366  if (spellproto->SpellFamilyFlags[1] & 0x200000 && spellproto->SchoolMask == 32)
367  return DIMINISHING_SILENCE;
368  break;
369  }
370  case SPELLFAMILY_MONK:
371  {
372  // Disable -- 116706, no flags (15483)
373  if (spellproto->SpellIconID == 23 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39984)
374  return DIMINISHING_ROOT;
375 
376  // Charging Ox Wave -- 119392
377  if (spellproto->SpellFamilyFlags[1] & 0x10000)
378  return DIMINISHING_STUN;
379  // Fists of Fury -- 120086
380  if (spellproto->SpellFamilyFlags[1] & 0x800000 && !(spellproto->SpellFamilyFlags[2] & 0x8))
381  return DIMINISHING_STUN;
382  // Leg Sweep -- 119381
383  if (spellproto->SpellFamilyFlags[1] & 0x200)
384  return DIMINISHING_STUN;
385 
386  // Glyph of Breath of Fire -- 123393, no flags (16504)
387  if (spellproto->SpellIconID == 15 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 25408)
389  // Paralysis -- 115078
390  if (spellproto->SpellFamilyFlags[2] & 0x800000)
392  // Ring of Peace -- 137460, no flags (18006)
393  if (spellproto->SpellIconID == 7195 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 39999)
395  break;
396  }
397  default:
398  break;
399  }
400 
401  return DIMINISHING_NONE;
402 }
Definition: SharedDefines.h:4375
Definition: DBCEnums.h:404
Definition: SharedDefines.h:4633
Definition: SharedDefines.h:4371
Definition: SharedDefines.h:4376
Definition: SharedDefines.h:4638
Definition: SharedDefines.h:4628
Definition: SharedDefines.h:4632
Definition: SharedDefines.h:4379
Definition: SharedDefines.h:4626
Definition: SharedDefines.h:4377
Definition: SharedDefines.h:4634
Definition: SharedDefines.h:4629
Definition: SharedDefines.h:4378
Definition: SharedDefines.h:4631
Definition: SpellInfo.h:238
Definition: SpellAuraDefines.h:71
Definition: SharedDefines.h:4630
Definition: SharedDefines.h:4374
Definition: SharedDefines.h:4623
Definition: SharedDefines.h:4372
Definition: SharedDefines.h:4627
Definition: SharedDefines.h:4373
Definition: SharedDefines.h:4643
Definition: SharedDefines.h:4642

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TC_GAME_API DiminishingReturnsType GetDiminishingReturnsGroupType ( DiminishingGroup  group)
405 {
406  switch (group)
407  {
408  case DIMINISHING_TAUNT:
409  case DIMINISHING_STUN:
410  return DRTYPE_ALL;
412  case DIMINISHING_NONE:
413  return DRTYPE_NONE;
414  default:
415  return DRTYPE_PLAYER;
416  }
417 }
Definition: SharedDefines.h:4364
Definition: SharedDefines.h:4363
Definition: SharedDefines.h:4371
Definition: SharedDefines.h:4365
Definition: SharedDefines.h:4379
Definition: SharedDefines.h:4378
Definition: SharedDefines.h:4373

+ Here is the caller graph for this function:

TC_GAME_API int32 GetDiminishingReturnsLimitDuration ( SpellInfo const spellproto)
433 {
434  // Explicit diminishing duration
435  switch (spellproto->SpellFamilyName)
436  {
437  case SPELLFAMILY_DRUID:
438  {
439  // Faerie Fire - 20 seconds in PvP (6.0)
440  if (spellproto->SpellFamilyFlags[0] & 0x400)
441  return 20 * IN_MILLISECONDS;
442  break;
443  }
444  case SPELLFAMILY_HUNTER:
445  {
446  // Binding Shot - 3 seconds in PvP (6.0)
447  if (spellproto->SpellIconID == 4612 && spellproto->GetSpellVisual(DIFFICULTY_NONE) == 6859)
448  return 3 * IN_MILLISECONDS;
449  // Wyvern Sting - 6 seconds in PvP (6.0)
450  if (spellproto->SpellFamilyFlags[1] & 0x1000)
451  return 6 * IN_MILLISECONDS;
452  break;
453  }
454  case SPELLFAMILY_MONK:
455  {
456  // Paralysis - 4 seconds in PvP regardless of if they are facing you (6.0)
457  if (spellproto->SpellFamilyFlags[2] & 0x800000)
458  return 4 * IN_MILLISECONDS;
459  break;
460  }
461  default:
462  break;
463  }
464 
465  return 8 * IN_MILLISECONDS;
466 }
Definition: DBCEnums.h:404
Definition: SharedDefines.h:4632
Definition: SharedDefines.h:4630
Definition: Common.h:103
Definition: SharedDefines.h:4642

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TC_GAME_API DiminishingLevels GetDiminishingReturnsMaxLevel ( DiminishingGroup  group)
420 {
421  switch (group)
422  {
423  case DIMINISHING_TAUNT:
426  return DIMINISHING_LEVEL_2;
427  default:
429  }
430 }
Definition: SharedDefines.h:4877
Definition: SharedDefines.h:4377
Definition: SharedDefines.h:4881
Definition: SharedDefines.h:4378
Definition: SharedDefines.h:4879

+ Here is the caller graph for this function:

bool IsPartOfSkillLine ( uint32  skillId,
uint32  spellId 
)
46 {
47  SkillLineAbilityMapBounds skillBounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellId);
48  for (SkillLineAbilityMap::const_iterator itr = skillBounds.first; itr != skillBounds.second; ++itr)
49  if (itr->second->SkillLine == skillId)
50  return true;
51 
52  return false;
53 }
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
Definition: SpellMgr.h:549
#define sSpellMgr
Definition: SpellMgr.h:756

+ Here is the caller graph for this function:

bool IsPrimaryProfessionSkill ( uint32  skill)
34 {
35  SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(skill);
36  return pSkill && pSkill->CategoryID == SKILL_CATEGORY_PROFESSION;
37 }
Definition: DBCStructure.h:952
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
Definition: SharedDefines.h:4151
int32 CategoryID
Definition: DBCStructure.h:955

+ Here is the caller graph for this function:

bool IsProfessionOrRidingSkill ( uint32  skill)
inline
586 {
587  return IsProfessionSkill(skill) || skill == SKILL_RIDING;
588 }
bool IsProfessionSkill(uint32 skill)
Definition: SpellMgr.h:580
Definition: SharedDefines.h:4010

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool IsProfessionSkill ( uint32  skill)
inline
581 {
582  return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING || skill == SKILL_FIRST_AID;
583 }
bool IsPrimaryProfessionSkill(uint32 skill)
Definition: SpellMgr.cpp:33
Definition: SharedDefines.h:3976
Definition: SharedDefines.h:3937
Definition: SharedDefines.h:3911

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool IsWeaponSkill ( uint32  skill)
40 {
41  SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(skill);
42  return pSkill && pSkill->CategoryID == SKILL_CATEGORY_WEAPON;
43 }
Definition: DBCStructure.h:952
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
Definition: SharedDefines.h:4146
int32 CategoryID
Definition: DBCStructure.h:955

Variable Documentation

TC_GAME_API PetFamilySpellsStore sPetFamilySpellsStore