TrinityCore
Loading...
Searching...
No Matches
Spell.h File Reference
#include "ConditionMgr.h"
#include "DBCEnums.h"
#include "ObjectGuid.h"
#include "Optional.h"
#include "Position.h"
#include "SharedDefines.h"
#include "SpellDefines.h"
#include <memory>
+ Include dependency graph for Spell.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  SpellLogEffectPowerDrainParams
 
struct  SpellLogEffectExtraAttacksParams
 
struct  SpellLogEffectDurabilityDamageParams
 
struct  SpellLogEffectGenericVictimParams
 
struct  SpellLogEffectTradeSkillItemParams
 
struct  SpellLogEffectFeedPetParams
 
struct  SpellLogEffect
 
struct  SpellValue
 
class  Spell
 
struct  Spell::TargetInfoBase
 
struct  Spell::TargetInfo
 
struct  Spell::GOTargetInfo
 
struct  Spell::ItemTargetInfo
 
struct  Spell::CorpseTargetInfo
 
struct  Spell::HitTriggerSpell
 
struct  Trinity::WorldObjectSpellTargetCheck
 
struct  Trinity::WorldObjectSpellNearbyTargetCheck
 
struct  Trinity::WorldObjectSpellAreaTargetCheck
 
struct  Trinity::WorldObjectSpellConeTargetCheck
 
struct  Trinity::WorldObjectSpellTrajTargetCheck
 
struct  Trinity::WorldObjectSpellLineTargetCheck
 

Namespaces

namespace  WorldPackets
 
namespace  WorldPackets::Spells
 
namespace  Trinity
 

Macros

#define SPELL_CHANNEL_UPDATE_INTERVAL   (1 * IN_MILLISECONDS)
 
#define MAX_SPELL_RANGE_TOLERANCE   3.0f
 
#define TRAJECTORY_MISSILE_SIZE   3.0f
 

Typedefs

typedef std::vector< std::pair< uint32, ObjectGuid > > DispelList
 
using SpellEffectHandlerFn = void(Spell::*)()
 

Enumerations

enum  SpellCastFlags {
  CAST_FLAG_NONE = 0x00000000 , CAST_FLAG_PENDING = 0x00000001 , CAST_FLAG_HAS_TRAJECTORY = 0x00000002 , CAST_FLAG_UNKNOWN_3 = 0x00000004 ,
  CAST_FLAG_UNKNOWN_4 = 0x00000008 , CAST_FLAG_UNKNOWN_5 = 0x00000010 , CAST_FLAG_PROJECTILE = 0x00000020 , CAST_FLAG_UNKNOWN_7 = 0x00000040 ,
  CAST_FLAG_UNKNOWN_8 = 0x00000080 , CAST_FLAG_UNKNOWN_9 = 0x00000100 , CAST_FLAG_UNKNOWN_10 = 0x00000200 , CAST_FLAG_UNKNOWN_11 = 0x00000400 ,
  CAST_FLAG_POWER_LEFT_SELF = 0x00000800 , CAST_FLAG_UNKNOWN_13 = 0x00001000 , CAST_FLAG_UNKNOWN_14 = 0x00002000 , CAST_FLAG_UNKNOWN_15 = 0x00004000 ,
  CAST_FLAG_UNKNOWN_16 = 0x00008000 , CAST_FLAG_UNKNOWN_17 = 0x00010000 , CAST_FLAG_ADJUST_MISSILE = 0x00020000 , CAST_FLAG_NO_GCD = 0x00040000 ,
  CAST_FLAG_VISUAL_CHAIN = 0x00080000 , CAST_FLAG_UNKNOWN_21 = 0x00100000 , CAST_FLAG_RUNE_LIST = 0x00200000 , CAST_FLAG_UNKNOWN_23 = 0x00400000 ,
  CAST_FLAG_UNKNOWN_24 = 0x00800000 , CAST_FLAG_UNKNOWN_25 = 0x01000000 , CAST_FLAG_UNKNOWN_26 = 0x02000000 , CAST_FLAG_IMMUNITY = 0x04000000 ,
  CAST_FLAG_UNKNOWN_28 = 0x08000000 , CAST_FLAG_UNKNOWN_29 = 0x10000000 , CAST_FLAG_UNKNOWN_30 = 0x20000000 , CAST_FLAG_HEAL_PREDICTION = 0x40000000 ,
  CAST_FLAG_UNKNOWN_32 = 0x80000000
}
 
enum  SpellCastFlagsEx {
  CAST_FLAG_EX_NONE = 0x00000 , CAST_FLAG_EX_UNKNOWN_1 = 0x00001 , CAST_FLAG_EX_UNKNOWN_2 = 0x00002 , CAST_FLAG_EX_UNKNOWN_3 = 0x00004 ,
  CAST_FLAG_EX_UNKNOWN_4 = 0x00008 , CAST_FLAG_EX_UNKNOWN_5 = 0x00010 , CAST_FLAG_EX_UNKNOWN_6 = 0x00020 , CAST_FLAG_EX_UNKNOWN_7 = 0x00040 ,
  CAST_FLAG_EX_UNKNOWN_8 = 0x00080 , CAST_FLAG_EX_UNKNOWN_9 = 0x00100 , CAST_FLAG_EX_IGNORE_COOLDOWN = 0x00200 , CAST_FLAG_EX_UNKNOWN_11 = 0x00400 ,
  CAST_FLAG_EX_UNKNOWN_12 = 0x00800 , CAST_FLAG_EX_UNKNOWN_13 = 0x01000 , CAST_FLAG_EX_UNKNOWN_14 = 0x02000 , CAST_FLAG_EX_UNKNOWN_15 = 0x04000 ,
  CAST_FLAG_EX_USE_TOY_SPELL = 0x08000 , CAST_FLAG_EX_UNKNOWN_17 = 0x10000 , CAST_FLAG_EX_UNKNOWN_18 = 0x20000 , CAST_FLAG_EX_UNKNOWN_19 = 0x40000 ,
  CAST_FLAG_EX_UNKNOWN_20 = 0x80000
}
 
enum  SpellCastSource : uint8 {
  SPELL_CAST_SOURCE_PLAYER = 2 , SPELL_CAST_SOURCE_NORMAL = 3 , SPELL_CAST_SOURCE_ITEM = 4 , SPELL_CAST_SOURCE_PASSIVE = 7 ,
  SPELL_CAST_SOURCE_PET = 9 , SPELL_CAST_SOURCE_AURA = 13 , SPELL_CAST_SOURCE_SPELL = 16
}
 
enum  SpellRangeFlag { SPELL_RANGE_DEFAULT = 0 , SPELL_RANGE_MELEE = 1 , SPELL_RANGE_RANGED = 2 }
 
enum  SpellState {
  SPELL_STATE_NULL = 0 , SPELL_STATE_PREPARING = 1 , SPELL_STATE_CASTING = 2 , SPELL_STATE_FINISHED = 3 ,
  SPELL_STATE_IDLE = 4 , SPELL_STATE_DELAYED = 5
}
 
enum  SpellEffectHandleMode { SPELL_EFFECT_HANDLE_LAUNCH , SPELL_EFFECT_HANDLE_LAUNCH_TARGET , SPELL_EFFECT_HANDLE_HIT , SPELL_EFFECT_HANDLE_HIT_TARGET }
 

Functions

void Trinity::SelectRandomInjuredTargets (std::list< WorldObject * > &targets, size_t maxTargets, bool prioritizePlayers)
 

Variables

static const uint32 SPELL_INTERRUPT_NONPLAYER = 32747
 

Macro Definition Documentation

◆ MAX_SPELL_RANGE_TOLERANCE

#define MAX_SPELL_RANGE_TOLERANCE   3.0f

Definition at line 72 of file Spell.h.

◆ SPELL_CHANNEL_UPDATE_INTERVAL

#define SPELL_CHANNEL_UPDATE_INTERVAL   (1 * IN_MILLISECONDS)

Definition at line 71 of file Spell.h.

◆ TRAJECTORY_MISSILE_SIZE

#define TRAJECTORY_MISSILE_SIZE   3.0f

Definition at line 73 of file Spell.h.

Typedef Documentation

◆ DispelList

typedef std::vector<std::pair<uint32, ObjectGuid> > DispelList

Definition at line 234 of file Spell.h.

◆ SpellEffectHandlerFn

using SpellEffectHandlerFn = void(Spell::*)()

Definition at line 975 of file Spell.h.

Enumeration Type Documentation

◆ SpellCastFlags

Enumerator
CAST_FLAG_NONE 
CAST_FLAG_PENDING 
CAST_FLAG_HAS_TRAJECTORY 
CAST_FLAG_UNKNOWN_3 
CAST_FLAG_UNKNOWN_4 
CAST_FLAG_UNKNOWN_5 
CAST_FLAG_PROJECTILE 
CAST_FLAG_UNKNOWN_7 
CAST_FLAG_UNKNOWN_8 
CAST_FLAG_UNKNOWN_9 
CAST_FLAG_UNKNOWN_10 
CAST_FLAG_UNKNOWN_11 
CAST_FLAG_POWER_LEFT_SELF 
CAST_FLAG_UNKNOWN_13 
CAST_FLAG_UNKNOWN_14 
CAST_FLAG_UNKNOWN_15 
CAST_FLAG_UNKNOWN_16 
CAST_FLAG_UNKNOWN_17 
CAST_FLAG_ADJUST_MISSILE 
CAST_FLAG_NO_GCD 
CAST_FLAG_VISUAL_CHAIN 
CAST_FLAG_UNKNOWN_21 
CAST_FLAG_RUNE_LIST 
CAST_FLAG_UNKNOWN_23 
CAST_FLAG_UNKNOWN_24 
CAST_FLAG_UNKNOWN_25 
CAST_FLAG_UNKNOWN_26 
CAST_FLAG_IMMUNITY 
CAST_FLAG_UNKNOWN_28 
CAST_FLAG_UNKNOWN_29 
CAST_FLAG_UNKNOWN_30 
CAST_FLAG_HEAL_PREDICTION 
CAST_FLAG_UNKNOWN_32 

Definition at line 75 of file Spell.h.

76{
77 CAST_FLAG_NONE = 0x00000000,
78 CAST_FLAG_PENDING = 0x00000001, // aoe combat log?
79 CAST_FLAG_HAS_TRAJECTORY = 0x00000002,
80 CAST_FLAG_UNKNOWN_3 = 0x00000004,
81 CAST_FLAG_UNKNOWN_4 = 0x00000008, // ignore AOE visual
82 CAST_FLAG_UNKNOWN_5 = 0x00000010,
83 CAST_FLAG_PROJECTILE = 0x00000020,
84 CAST_FLAG_UNKNOWN_7 = 0x00000040,
85 CAST_FLAG_UNKNOWN_8 = 0x00000080,
86 CAST_FLAG_UNKNOWN_9 = 0x00000100,
87 CAST_FLAG_UNKNOWN_10 = 0x00000200,
88 CAST_FLAG_UNKNOWN_11 = 0x00000400,
89 CAST_FLAG_POWER_LEFT_SELF = 0x00000800,
90 CAST_FLAG_UNKNOWN_13 = 0x00001000,
91 CAST_FLAG_UNKNOWN_14 = 0x00002000,
92 CAST_FLAG_UNKNOWN_15 = 0x00004000,
93 CAST_FLAG_UNKNOWN_16 = 0x00008000,
94 CAST_FLAG_UNKNOWN_17 = 0x00010000,
95 CAST_FLAG_ADJUST_MISSILE = 0x00020000,
96 CAST_FLAG_NO_GCD = 0x00040000, // no GCD for spell casts from charm/summon (vehicle spells is an example)
97 CAST_FLAG_VISUAL_CHAIN = 0x00080000,
98 CAST_FLAG_UNKNOWN_21 = 0x00100000,
99 CAST_FLAG_RUNE_LIST = 0x00200000,
100 CAST_FLAG_UNKNOWN_23 = 0x00400000,
101 CAST_FLAG_UNKNOWN_24 = 0x00800000,
102 CAST_FLAG_UNKNOWN_25 = 0x01000000,
103 CAST_FLAG_UNKNOWN_26 = 0x02000000,
104 CAST_FLAG_IMMUNITY = 0x04000000,
105 CAST_FLAG_UNKNOWN_28 = 0x08000000,
106 CAST_FLAG_UNKNOWN_29 = 0x10000000,
107 CAST_FLAG_UNKNOWN_30 = 0x20000000,
108 CAST_FLAG_HEAL_PREDICTION = 0x40000000,
109 CAST_FLAG_UNKNOWN_32 = 0x80000000
110};
@ CAST_FLAG_UNKNOWN_5
Definition: Spell.h:82
@ CAST_FLAG_UNKNOWN_10
Definition: Spell.h:87
@ CAST_FLAG_UNKNOWN_32
Definition: Spell.h:109
@ CAST_FLAG_UNKNOWN_25
Definition: Spell.h:102
@ CAST_FLAG_VISUAL_CHAIN
Definition: Spell.h:97
@ CAST_FLAG_ADJUST_MISSILE
Definition: Spell.h:95
@ CAST_FLAG_UNKNOWN_8
Definition: Spell.h:85
@ CAST_FLAG_HEAL_PREDICTION
Definition: Spell.h:108
@ CAST_FLAG_UNKNOWN_9
Definition: Spell.h:86
@ CAST_FLAG_UNKNOWN_3
Definition: Spell.h:80
@ CAST_FLAG_UNKNOWN_26
Definition: Spell.h:103
@ CAST_FLAG_UNKNOWN_11
Definition: Spell.h:88
@ CAST_FLAG_UNKNOWN_30
Definition: Spell.h:107
@ CAST_FLAG_UNKNOWN_4
Definition: Spell.h:81
@ CAST_FLAG_NO_GCD
Definition: Spell.h:96
@ CAST_FLAG_UNKNOWN_23
Definition: Spell.h:100
@ CAST_FLAG_UNKNOWN_16
Definition: Spell.h:93
@ CAST_FLAG_PROJECTILE
Definition: Spell.h:83
@ CAST_FLAG_UNKNOWN_29
Definition: Spell.h:106
@ CAST_FLAG_UNKNOWN_7
Definition: Spell.h:84
@ CAST_FLAG_POWER_LEFT_SELF
Definition: Spell.h:89
@ CAST_FLAG_UNKNOWN_13
Definition: Spell.h:90
@ CAST_FLAG_UNKNOWN_28
Definition: Spell.h:105
@ CAST_FLAG_UNKNOWN_24
Definition: Spell.h:101
@ CAST_FLAG_HAS_TRAJECTORY
Definition: Spell.h:79
@ CAST_FLAG_RUNE_LIST
Definition: Spell.h:99
@ CAST_FLAG_UNKNOWN_14
Definition: Spell.h:91
@ CAST_FLAG_UNKNOWN_15
Definition: Spell.h:92
@ CAST_FLAG_PENDING
Definition: Spell.h:78
@ CAST_FLAG_NONE
Definition: Spell.h:77
@ CAST_FLAG_UNKNOWN_17
Definition: Spell.h:94
@ CAST_FLAG_IMMUNITY
Definition: Spell.h:104
@ CAST_FLAG_UNKNOWN_21
Definition: Spell.h:98

◆ SpellCastFlagsEx

Enumerator
CAST_FLAG_EX_NONE 
CAST_FLAG_EX_UNKNOWN_1 
CAST_FLAG_EX_UNKNOWN_2 
CAST_FLAG_EX_UNKNOWN_3 
CAST_FLAG_EX_UNKNOWN_4 
CAST_FLAG_EX_UNKNOWN_5 
CAST_FLAG_EX_UNKNOWN_6 
CAST_FLAG_EX_UNKNOWN_7 
CAST_FLAG_EX_UNKNOWN_8 
CAST_FLAG_EX_UNKNOWN_9 
CAST_FLAG_EX_IGNORE_COOLDOWN 
CAST_FLAG_EX_UNKNOWN_11 
CAST_FLAG_EX_UNKNOWN_12 
CAST_FLAG_EX_UNKNOWN_13 
CAST_FLAG_EX_UNKNOWN_14 
CAST_FLAG_EX_UNKNOWN_15 
CAST_FLAG_EX_USE_TOY_SPELL 
CAST_FLAG_EX_UNKNOWN_17 
CAST_FLAG_EX_UNKNOWN_18 
CAST_FLAG_EX_UNKNOWN_19 
CAST_FLAG_EX_UNKNOWN_20 

Definition at line 112 of file Spell.h.

113{
114 CAST_FLAG_EX_NONE = 0x00000,
115 CAST_FLAG_EX_UNKNOWN_1 = 0x00001,
116 CAST_FLAG_EX_UNKNOWN_2 = 0x00002,
117 CAST_FLAG_EX_UNKNOWN_3 = 0x00004,
118 CAST_FLAG_EX_UNKNOWN_4 = 0x00008,
119 CAST_FLAG_EX_UNKNOWN_5 = 0x00010,
120 CAST_FLAG_EX_UNKNOWN_6 = 0x00020,
121 CAST_FLAG_EX_UNKNOWN_7 = 0x00040,
122 CAST_FLAG_EX_UNKNOWN_8 = 0x00080,
123 CAST_FLAG_EX_UNKNOWN_9 = 0x00100,
124 CAST_FLAG_EX_IGNORE_COOLDOWN = 0x00200, // makes client not automatically start cooldown after SPELL_GO
125 CAST_FLAG_EX_UNKNOWN_11 = 0x00400,
126 CAST_FLAG_EX_UNKNOWN_12 = 0x00800,
127 CAST_FLAG_EX_UNKNOWN_13 = 0x01000,
128 CAST_FLAG_EX_UNKNOWN_14 = 0x02000,
129 CAST_FLAG_EX_UNKNOWN_15 = 0x04000,
130 CAST_FLAG_EX_USE_TOY_SPELL = 0x08000, // Starts cooldown on toy
131 CAST_FLAG_EX_UNKNOWN_17 = 0x10000,
132 CAST_FLAG_EX_UNKNOWN_18 = 0x20000,
133 CAST_FLAG_EX_UNKNOWN_19 = 0x40000,
135};
@ CAST_FLAG_EX_UNKNOWN_5
Definition: Spell.h:119
@ CAST_FLAG_EX_UNKNOWN_15
Definition: Spell.h:129
@ CAST_FLAG_EX_UNKNOWN_7
Definition: Spell.h:121
@ CAST_FLAG_EX_UNKNOWN_17
Definition: Spell.h:131
@ CAST_FLAG_EX_UNKNOWN_2
Definition: Spell.h:116
@ CAST_FLAG_EX_UNKNOWN_9
Definition: Spell.h:123
@ CAST_FLAG_EX_UNKNOWN_3
Definition: Spell.h:117
@ CAST_FLAG_EX_USE_TOY_SPELL
Definition: Spell.h:130
@ CAST_FLAG_EX_UNKNOWN_11
Definition: Spell.h:125
@ CAST_FLAG_EX_UNKNOWN_14
Definition: Spell.h:128
@ CAST_FLAG_EX_UNKNOWN_12
Definition: Spell.h:126
@ CAST_FLAG_EX_UNKNOWN_19
Definition: Spell.h:133
@ CAST_FLAG_EX_UNKNOWN_8
Definition: Spell.h:122
@ CAST_FLAG_EX_IGNORE_COOLDOWN
Definition: Spell.h:124
@ CAST_FLAG_EX_UNKNOWN_13
Definition: Spell.h:127
@ CAST_FLAG_EX_UNKNOWN_4
Definition: Spell.h:118
@ CAST_FLAG_EX_UNKNOWN_18
Definition: Spell.h:132
@ CAST_FLAG_EX_UNKNOWN_6
Definition: Spell.h:120
@ CAST_FLAG_EX_UNKNOWN_1
Definition: Spell.h:115
@ CAST_FLAG_EX_NONE
Definition: Spell.h:114
@ CAST_FLAG_EX_UNKNOWN_20
Definition: Spell.h:134

◆ SpellCastSource

Enumerator
SPELL_CAST_SOURCE_PLAYER 
SPELL_CAST_SOURCE_NORMAL 
SPELL_CAST_SOURCE_ITEM 
SPELL_CAST_SOURCE_PASSIVE 
SPELL_CAST_SOURCE_PET 
SPELL_CAST_SOURCE_AURA 
SPELL_CAST_SOURCE_SPELL 

Definition at line 137 of file Spell.h.

138{
146};
@ SPELL_CAST_SOURCE_AURA
Definition: Spell.h:144
@ SPELL_CAST_SOURCE_SPELL
Definition: Spell.h:145
@ SPELL_CAST_SOURCE_PET
Definition: Spell.h:143
@ SPELL_CAST_SOURCE_PLAYER
Definition: Spell.h:139
@ SPELL_CAST_SOURCE_PASSIVE
Definition: Spell.h:142
@ SPELL_CAST_SOURCE_NORMAL
Definition: Spell.h:140
@ SPELL_CAST_SOURCE_ITEM
Definition: Spell.h:141

◆ SpellEffectHandleMode

Enumerator
SPELL_EFFECT_HANDLE_LAUNCH 
SPELL_EFFECT_HANDLE_LAUNCH_TARGET 
SPELL_EFFECT_HANDLE_HIT 
SPELL_EFFECT_HANDLE_HIT_TARGET 

Definition at line 226 of file Spell.h.

227{
232};
@ SPELL_EFFECT_HANDLE_LAUNCH_TARGET
Definition: Spell.h:229
@ SPELL_EFFECT_HANDLE_LAUNCH
Definition: Spell.h:228
@ SPELL_EFFECT_HANDLE_HIT
Definition: Spell.h:230
@ SPELL_EFFECT_HANDLE_HIT_TARGET
Definition: Spell.h:231

◆ SpellRangeFlag

Enumerator
SPELL_RANGE_DEFAULT 
SPELL_RANGE_MELEE 
SPELL_RANGE_RANGED 

Definition at line 148 of file Spell.h.

149{
151 SPELL_RANGE_MELEE = 1, //melee
152 SPELL_RANGE_RANGED = 2 //hunter range and ranged weapon
153};
@ SPELL_RANGE_MELEE
Definition: Spell.h:151
@ SPELL_RANGE_RANGED
Definition: Spell.h:152
@ SPELL_RANGE_DEFAULT
Definition: Spell.h:150

◆ SpellState

enum SpellState
Enumerator
SPELL_STATE_NULL 
SPELL_STATE_PREPARING 
SPELL_STATE_CASTING 
SPELL_STATE_FINISHED 
SPELL_STATE_IDLE 
SPELL_STATE_DELAYED 

Definition at line 216 of file Spell.h.

217{
224};
@ SPELL_STATE_DELAYED
Definition: Spell.h:223
@ SPELL_STATE_NULL
Definition: Spell.h:218
@ SPELL_STATE_FINISHED
Definition: Spell.h:221
@ SPELL_STATE_PREPARING
Definition: Spell.h:219
@ SPELL_STATE_CASTING
Definition: Spell.h:220
@ SPELL_STATE_IDLE
Definition: Spell.h:222

Variable Documentation

◆ SPELL_INTERRUPT_NONPLAYER

const uint32 SPELL_INTERRUPT_NONPLAYER = 32747
static

Definition at line 236 of file Spell.h.