Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
SpellTargeting.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SF_SPELLTARGETING_H
7
#define SF_SPELLTARGETING_H
8
9
#include "
SharedDefines.h
"
10
11
enum
SpellCastTargetFlags
12
{
13
TARGET_FLAG_NONE
= 0x00000000,
14
TARGET_FLAG_UNUSED_1
= 0x00000001,
// not used
15
TARGET_FLAG_UNIT
= 0x00000002,
// pguid
16
TARGET_FLAG_UNIT_RAID
= 0x00000004,
// not sent, used to validate target (if raid member)
17
TARGET_FLAG_UNIT_PARTY
= 0x00000008,
// not sent, used to validate target (if party member)
18
TARGET_FLAG_ITEM
= 0x00000010,
// pguid
19
TARGET_FLAG_SOURCE_LOCATION
= 0x00000020,
// pguid, 3 float
20
TARGET_FLAG_DEST_LOCATION
= 0x00000040,
// pguid, 3 float
21
TARGET_FLAG_UNIT_ENEMY
= 0x00000080,
// not sent, used to validate target (if enemy)
22
TARGET_FLAG_UNIT_ALLY
= 0x00000100,
// not sent, used to validate target (if ally)
23
TARGET_FLAG_CORPSE_ENEMY
= 0x00000200,
// pguid
24
TARGET_FLAG_UNIT_DEAD
= 0x00000400,
// not sent, used to validate target (if dead creature)
25
TARGET_FLAG_GAMEOBJECT
= 0x00000800,
// pguid, used with TARGET_GAMEOBJECT_TARGET
26
TARGET_FLAG_TRADE_ITEM
= 0x00001000,
// pguid
27
TARGET_FLAG_STRING
= 0x00002000,
// string
28
TARGET_FLAG_GAMEOBJECT_ITEM
= 0x00004000,
// not sent, used with TARGET_GAMEOBJECT_ITEM_TARGET
29
TARGET_FLAG_CORPSE_ALLY
= 0x00008000,
// pguid
30
TARGET_FLAG_UNIT_MINIPET
= 0x00010000,
// pguid, used to validate target (if non combat pet)
31
TARGET_FLAG_GLYPH_SLOT
= 0x00020000,
// used in glyph spells
32
TARGET_FLAG_DEST_TARGET
= 0x00040000,
// sometimes appears with DEST_TARGET spells (may appear or not for a given spell)
33
TARGET_FLAG_EXTRA_TARGETS
= 0x00080000,
// uint32 counter, loop { vec3 - screen position (?), guid }, not used so far
34
TARGET_FLAG_UNIT_PASSENGER
= 0x00100000,
// guessed, used to validate target (if vehicle passenger)
35
36
TARGET_FLAG_UNIT_MASK
=
TARGET_FLAG_UNIT
|
TARGET_FLAG_UNIT_RAID
|
TARGET_FLAG_UNIT_PARTY
37
|
TARGET_FLAG_UNIT_ENEMY
|
TARGET_FLAG_UNIT_ALLY
|
TARGET_FLAG_UNIT_DEAD
|
TARGET_FLAG_UNIT_MINIPET
|
TARGET_FLAG_UNIT_PASSENGER
,
38
TARGET_FLAG_GAMEOBJECT_MASK
=
TARGET_FLAG_GAMEOBJECT
|
TARGET_FLAG_GAMEOBJECT_ITEM
,
39
TARGET_FLAG_CORPSE_MASK
=
TARGET_FLAG_CORPSE_ALLY
|
TARGET_FLAG_CORPSE_ENEMY
,
40
TARGET_FLAG_ITEM_MASK
=
TARGET_FLAG_TRADE_ITEM
|
TARGET_FLAG_ITEM
|
TARGET_FLAG_GAMEOBJECT_ITEM
41
};
42
43
enum
SpellTargetSelectionCategories
44
{
45
TARGET_SELECT_CATEGORY_NYI
,
46
TARGET_SELECT_CATEGORY_DEFAULT
,
47
TARGET_SELECT_CATEGORY_CHANNEL
,
48
TARGET_SELECT_CATEGORY_NEARBY
,
49
TARGET_SELECT_CATEGORY_CONE
,
50
TARGET_SELECT_CATEGORY_AREA
51
};
52
53
enum
SpellTargetReferenceTypes
54
{
55
TARGET_REFERENCE_TYPE_NONE
,
56
TARGET_REFERENCE_TYPE_CASTER
,
57
TARGET_REFERENCE_TYPE_TARGET
,
58
TARGET_REFERENCE_TYPE_LAST
,
59
TARGET_REFERENCE_TYPE_SRC
,
60
TARGET_REFERENCE_TYPE_DEST
61
};
62
63
enum
SpellTargetObjectTypes
64
{
65
TARGET_OBJECT_TYPE_NONE
= 0,
66
TARGET_OBJECT_TYPE_SRC
,
67
TARGET_OBJECT_TYPE_DEST
,
68
TARGET_OBJECT_TYPE_UNIT
,
69
TARGET_OBJECT_TYPE_UNIT_AND_DEST
,
70
TARGET_OBJECT_TYPE_GOBJ
,
71
TARGET_OBJECT_TYPE_GOBJ_ITEM
,
72
TARGET_OBJECT_TYPE_ITEM
,
73
TARGET_OBJECT_TYPE_CORPSE
,
74
// only for effect target type
75
TARGET_OBJECT_TYPE_CORPSE_ENEMY
,
76
TARGET_OBJECT_TYPE_CORPSE_ALLY
77
};
78
79
enum
SpellTargetCheckTypes
80
{
81
TARGET_CHECK_DEFAULT
,
82
TARGET_CHECK_ENTRY
,
83
TARGET_CHECK_ENEMY
,
84
TARGET_CHECK_ALLY
,
85
TARGET_CHECK_PARTY
,
86
TARGET_CHECK_RAID
,
87
TARGET_CHECK_RAID_CLASS
,
88
TARGET_CHECK_PASSENGER
89
};
90
91
enum
SpellTargetDirectionTypes
92
{
93
TARGET_DIR_NONE
,
94
TARGET_DIR_FRONT
,
95
TARGET_DIR_BACK
,
96
TARGET_DIR_RIGHT
,
97
TARGET_DIR_LEFT
,
98
TARGET_DIR_FRONT_RIGHT
,
99
TARGET_DIR_BACK_RIGHT
,
100
TARGET_DIR_BACK_LEFT
,
101
TARGET_DIR_FRONT_LEFT
,
102
TARGET_DIR_RANDOM
,
103
TARGET_DIR_ENTRY
104
};
105
106
enum
SpellEffectImplicitTargetTypes
107
{
108
EFFECT_IMPLICIT_TARGET_NONE
= 0,
109
EFFECT_IMPLICIT_TARGET_EXPLICIT
,
110
EFFECT_IMPLICIT_TARGET_CASTER
111
};
112
113
uint32
GetTargetFlagMask
(
SpellTargetObjectTypes
objType);
114
115
class
SpellImplicitTargetInfo
116
{
117
private
:
118
Targets
_target
;
119
public
:
120
SpellImplicitTargetInfo
() :
_target
(
Targets
(0)) { }
121
SpellImplicitTargetInfo
(
uint32
target) :
_target
(
Targets
(target)) { }
122
123
bool
IsArea
()
const
;
124
SpellTargetSelectionCategories
GetSelectionCategory
()
const
;
125
SpellTargetReferenceTypes
GetReferenceType
()
const
;
126
SpellTargetObjectTypes
GetObjectType
()
const
;
127
SpellTargetCheckTypes
GetCheckType
()
const
;
128
SpellTargetDirectionTypes
GetDirectionType
()
const
;
129
float
CalcDirectionAngle
()
const
;
130
131
Targets
GetTarget
()
const
;
132
uint32
GetExplicitTargetMask
(
bool
& srcSet,
bool
& dstSet)
const
;
133
134
private
:
135
struct
StaticData
136
{
137
SpellTargetObjectTypes
ObjectType
;
// type of object returned by target type
138
SpellTargetReferenceTypes
ReferenceType
;
// defines which object is used as a reference when selecting target
139
SpellTargetSelectionCategories
SelectionCategory
;
140
SpellTargetCheckTypes
SelectionCheckType
;
// defines selection criteria
141
SpellTargetDirectionTypes
DirectionType
;
// direction for cone and dest targets
142
};
143
static
StaticData
_data
[
TOTAL_SPELL_TARGETS
];
144
};
145
146
#endif
uint32
std::uint32_t uint32
Definition
Define.h:77
SharedDefines.h
Targets
Targets
Definition
SharedDefines.h:1610
TOTAL_SPELL_TARGETS
@ TOTAL_SPELL_TARGETS
Definition
SharedDefines.h:1748
SpellEffectImplicitTargetTypes
SpellEffectImplicitTargetTypes
Definition
SpellTargeting.h:107
EFFECT_IMPLICIT_TARGET_CASTER
@ EFFECT_IMPLICIT_TARGET_CASTER
Definition
SpellTargeting.h:110
EFFECT_IMPLICIT_TARGET_NONE
@ EFFECT_IMPLICIT_TARGET_NONE
Definition
SpellTargeting.h:108
EFFECT_IMPLICIT_TARGET_EXPLICIT
@ EFFECT_IMPLICIT_TARGET_EXPLICIT
Definition
SpellTargeting.h:109
SpellTargetSelectionCategories
SpellTargetSelectionCategories
Definition
SpellTargeting.h:44
TARGET_SELECT_CATEGORY_CONE
@ TARGET_SELECT_CATEGORY_CONE
Definition
SpellTargeting.h:49
TARGET_SELECT_CATEGORY_AREA
@ TARGET_SELECT_CATEGORY_AREA
Definition
SpellTargeting.h:50
TARGET_SELECT_CATEGORY_DEFAULT
@ TARGET_SELECT_CATEGORY_DEFAULT
Definition
SpellTargeting.h:46
TARGET_SELECT_CATEGORY_NEARBY
@ TARGET_SELECT_CATEGORY_NEARBY
Definition
SpellTargeting.h:48
TARGET_SELECT_CATEGORY_NYI
@ TARGET_SELECT_CATEGORY_NYI
Definition
SpellTargeting.h:45
TARGET_SELECT_CATEGORY_CHANNEL
@ TARGET_SELECT_CATEGORY_CHANNEL
Definition
SpellTargeting.h:47
SpellTargetCheckTypes
SpellTargetCheckTypes
Definition
SpellTargeting.h:80
TARGET_CHECK_PASSENGER
@ TARGET_CHECK_PASSENGER
Definition
SpellTargeting.h:88
TARGET_CHECK_PARTY
@ TARGET_CHECK_PARTY
Definition
SpellTargeting.h:85
TARGET_CHECK_ENEMY
@ TARGET_CHECK_ENEMY
Definition
SpellTargeting.h:83
TARGET_CHECK_DEFAULT
@ TARGET_CHECK_DEFAULT
Definition
SpellTargeting.h:81
TARGET_CHECK_ENTRY
@ TARGET_CHECK_ENTRY
Definition
SpellTargeting.h:82
TARGET_CHECK_RAID_CLASS
@ TARGET_CHECK_RAID_CLASS
Definition
SpellTargeting.h:87
TARGET_CHECK_ALLY
@ TARGET_CHECK_ALLY
Definition
SpellTargeting.h:84
TARGET_CHECK_RAID
@ TARGET_CHECK_RAID
Definition
SpellTargeting.h:86
SpellCastTargetFlags
SpellCastTargetFlags
Definition
SpellTargeting.h:12
TARGET_FLAG_TRADE_ITEM
@ TARGET_FLAG_TRADE_ITEM
Definition
SpellTargeting.h:26
TARGET_FLAG_GAMEOBJECT
@ TARGET_FLAG_GAMEOBJECT
Definition
SpellTargeting.h:25
TARGET_FLAG_STRING
@ TARGET_FLAG_STRING
Definition
SpellTargeting.h:27
TARGET_FLAG_NONE
@ TARGET_FLAG_NONE
Definition
SpellTargeting.h:13
TARGET_FLAG_UNIT_RAID
@ TARGET_FLAG_UNIT_RAID
Definition
SpellTargeting.h:16
TARGET_FLAG_UNIT_ENEMY
@ TARGET_FLAG_UNIT_ENEMY
Definition
SpellTargeting.h:21
TARGET_FLAG_GLYPH_SLOT
@ TARGET_FLAG_GLYPH_SLOT
Definition
SpellTargeting.h:31
TARGET_FLAG_CORPSE_ALLY
@ TARGET_FLAG_CORPSE_ALLY
Definition
SpellTargeting.h:29
TARGET_FLAG_ITEM
@ TARGET_FLAG_ITEM
Definition
SpellTargeting.h:18
TARGET_FLAG_UNIT_MINIPET
@ TARGET_FLAG_UNIT_MINIPET
Definition
SpellTargeting.h:30
TARGET_FLAG_UNIT_PASSENGER
@ TARGET_FLAG_UNIT_PASSENGER
Definition
SpellTargeting.h:34
TARGET_FLAG_GAMEOBJECT_ITEM
@ TARGET_FLAG_GAMEOBJECT_ITEM
Definition
SpellTargeting.h:28
TARGET_FLAG_DEST_LOCATION
@ TARGET_FLAG_DEST_LOCATION
Definition
SpellTargeting.h:20
TARGET_FLAG_UNIT_ALLY
@ TARGET_FLAG_UNIT_ALLY
Definition
SpellTargeting.h:22
TARGET_FLAG_SOURCE_LOCATION
@ TARGET_FLAG_SOURCE_LOCATION
Definition
SpellTargeting.h:19
TARGET_FLAG_ITEM_MASK
@ TARGET_FLAG_ITEM_MASK
Definition
SpellTargeting.h:40
TARGET_FLAG_UNUSED_1
@ TARGET_FLAG_UNUSED_1
Definition
SpellTargeting.h:14
TARGET_FLAG_UNIT
@ TARGET_FLAG_UNIT
Definition
SpellTargeting.h:15
TARGET_FLAG_DEST_TARGET
@ TARGET_FLAG_DEST_TARGET
Definition
SpellTargeting.h:32
TARGET_FLAG_UNIT_MASK
@ TARGET_FLAG_UNIT_MASK
Definition
SpellTargeting.h:36
TARGET_FLAG_UNIT_DEAD
@ TARGET_FLAG_UNIT_DEAD
Definition
SpellTargeting.h:24
TARGET_FLAG_CORPSE_ENEMY
@ TARGET_FLAG_CORPSE_ENEMY
Definition
SpellTargeting.h:23
TARGET_FLAG_CORPSE_MASK
@ TARGET_FLAG_CORPSE_MASK
Definition
SpellTargeting.h:39
TARGET_FLAG_EXTRA_TARGETS
@ TARGET_FLAG_EXTRA_TARGETS
Definition
SpellTargeting.h:33
TARGET_FLAG_GAMEOBJECT_MASK
@ TARGET_FLAG_GAMEOBJECT_MASK
Definition
SpellTargeting.h:38
TARGET_FLAG_UNIT_PARTY
@ TARGET_FLAG_UNIT_PARTY
Definition
SpellTargeting.h:17
SpellTargetDirectionTypes
SpellTargetDirectionTypes
Definition
SpellTargeting.h:92
TARGET_DIR_FRONT_RIGHT
@ TARGET_DIR_FRONT_RIGHT
Definition
SpellTargeting.h:98
TARGET_DIR_NONE
@ TARGET_DIR_NONE
Definition
SpellTargeting.h:93
TARGET_DIR_BACK
@ TARGET_DIR_BACK
Definition
SpellTargeting.h:95
TARGET_DIR_BACK_RIGHT
@ TARGET_DIR_BACK_RIGHT
Definition
SpellTargeting.h:99
TARGET_DIR_RIGHT
@ TARGET_DIR_RIGHT
Definition
SpellTargeting.h:96
TARGET_DIR_FRONT_LEFT
@ TARGET_DIR_FRONT_LEFT
Definition
SpellTargeting.h:101
TARGET_DIR_FRONT
@ TARGET_DIR_FRONT
Definition
SpellTargeting.h:94
TARGET_DIR_LEFT
@ TARGET_DIR_LEFT
Definition
SpellTargeting.h:97
TARGET_DIR_ENTRY
@ TARGET_DIR_ENTRY
Definition
SpellTargeting.h:103
TARGET_DIR_BACK_LEFT
@ TARGET_DIR_BACK_LEFT
Definition
SpellTargeting.h:100
TARGET_DIR_RANDOM
@ TARGET_DIR_RANDOM
Definition
SpellTargeting.h:102
SpellTargetObjectTypes
SpellTargetObjectTypes
Definition
SpellTargeting.h:64
TARGET_OBJECT_TYPE_UNIT
@ TARGET_OBJECT_TYPE_UNIT
Definition
SpellTargeting.h:68
TARGET_OBJECT_TYPE_ITEM
@ TARGET_OBJECT_TYPE_ITEM
Definition
SpellTargeting.h:72
TARGET_OBJECT_TYPE_CORPSE
@ TARGET_OBJECT_TYPE_CORPSE
Definition
SpellTargeting.h:73
TARGET_OBJECT_TYPE_UNIT_AND_DEST
@ TARGET_OBJECT_TYPE_UNIT_AND_DEST
Definition
SpellTargeting.h:69
TARGET_OBJECT_TYPE_NONE
@ TARGET_OBJECT_TYPE_NONE
Definition
SpellTargeting.h:65
TARGET_OBJECT_TYPE_DEST
@ TARGET_OBJECT_TYPE_DEST
Definition
SpellTargeting.h:67
TARGET_OBJECT_TYPE_GOBJ
@ TARGET_OBJECT_TYPE_GOBJ
Definition
SpellTargeting.h:70
TARGET_OBJECT_TYPE_CORPSE_ALLY
@ TARGET_OBJECT_TYPE_CORPSE_ALLY
Definition
SpellTargeting.h:76
TARGET_OBJECT_TYPE_CORPSE_ENEMY
@ TARGET_OBJECT_TYPE_CORPSE_ENEMY
Definition
SpellTargeting.h:75
TARGET_OBJECT_TYPE_GOBJ_ITEM
@ TARGET_OBJECT_TYPE_GOBJ_ITEM
Definition
SpellTargeting.h:71
TARGET_OBJECT_TYPE_SRC
@ TARGET_OBJECT_TYPE_SRC
Definition
SpellTargeting.h:66
GetTargetFlagMask
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
Definition
SpellTargeting.cpp:10
SpellTargetReferenceTypes
SpellTargetReferenceTypes
Definition
SpellTargeting.h:54
TARGET_REFERENCE_TYPE_SRC
@ TARGET_REFERENCE_TYPE_SRC
Definition
SpellTargeting.h:59
TARGET_REFERENCE_TYPE_TARGET
@ TARGET_REFERENCE_TYPE_TARGET
Definition
SpellTargeting.h:57
TARGET_REFERENCE_TYPE_LAST
@ TARGET_REFERENCE_TYPE_LAST
Definition
SpellTargeting.h:58
TARGET_REFERENCE_TYPE_NONE
@ TARGET_REFERENCE_TYPE_NONE
Definition
SpellTargeting.h:55
TARGET_REFERENCE_TYPE_CASTER
@ TARGET_REFERENCE_TYPE_CASTER
Definition
SpellTargeting.h:56
TARGET_REFERENCE_TYPE_DEST
@ TARGET_REFERENCE_TYPE_DEST
Definition
SpellTargeting.h:60
SpellImplicitTargetInfo::GetDirectionType
SpellTargetDirectionTypes GetDirectionType() const
Definition
SpellTargeting.cpp:64
SpellImplicitTargetInfo::GetCheckType
SpellTargetCheckTypes GetCheckType() const
Definition
SpellTargeting.cpp:59
SpellImplicitTargetInfo::IsArea
bool IsArea() const
Definition
SpellTargeting.cpp:39
SpellImplicitTargetInfo::GetReferenceType
SpellTargetReferenceTypes GetReferenceType() const
Definition
SpellTargeting.cpp:49
SpellImplicitTargetInfo::GetSelectionCategory
SpellTargetSelectionCategories GetSelectionCategory() const
Definition
SpellTargeting.cpp:44
SpellImplicitTargetInfo::SpellImplicitTargetInfo
SpellImplicitTargetInfo()
Definition
SpellTargeting.h:120
SpellImplicitTargetInfo::SpellImplicitTargetInfo
SpellImplicitTargetInfo(uint32 target)
Definition
SpellTargeting.h:121
SpellImplicitTargetInfo::GetObjectType
SpellTargetObjectTypes GetObjectType() const
Definition
SpellTargeting.cpp:54
SpellImplicitTargetInfo::_data
static StaticData _data[TOTAL_SPELL_TARGETS]
Definition
SpellTargeting.h:185
SpellImplicitTargetInfo::_target
Targets _target
Definition
SpellTargeting.h:118
SpellImplicitTargetInfo::CalcDirectionAngle
float CalcDirectionAngle() const
Definition
SpellTargeting.cpp:69
SpellImplicitTargetInfo::GetExplicitTargetMask
uint32 GetExplicitTargetMask(bool &srcSet, bool &dstSet) const
Definition
SpellTargeting.cpp:101
SpellImplicitTargetInfo::GetTarget
Targets GetTarget() const
Definition
SpellTargeting.cpp:96
SpellImplicitTargetInfo::StaticData
Definition
SpellTargeting.h:136
SpellImplicitTargetInfo::StaticData::ObjectType
SpellTargetObjectTypes ObjectType
Definition
SpellTargeting.h:137
SpellImplicitTargetInfo::StaticData::SelectionCheckType
SpellTargetCheckTypes SelectionCheckType
Definition
SpellTargeting.h:140
SpellImplicitTargetInfo::StaticData::ReferenceType
SpellTargetReferenceTypes ReferenceType
Definition
SpellTargeting.h:138
SpellImplicitTargetInfo::StaticData::SelectionCategory
SpellTargetSelectionCategories SelectionCategory
Definition
SpellTargeting.h:139
SpellImplicitTargetInfo::StaticData::DirectionType
SpellTargetDirectionTypes DirectionType
Definition
SpellTargeting.h:141
src
server
game
Spells
SpellTargeting.h
Generated on
for Project SkyFire Core by
1.17.0