Project SkyFire Core
SkyFire 5.4.8 server core API documentation
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
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
41};
42
52
62
78
90
105
112
114
116{
117private:
119public:
122
123 bool IsArea() const;
129 float CalcDirectionAngle() const;
130
131 Targets GetTarget() const;
132 uint32 GetExplicitTargetMask(bool& srcSet, bool& dstSet) const;
133
134private:
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
140 SpellTargetCheckTypes SelectionCheckType; // defines selection criteria
141 SpellTargetDirectionTypes DirectionType; // direction for cone and dest targets
142 };
144};
145
146#endif
std::uint32_t uint32
Definition Define.h:77
Targets
@ TOTAL_SPELL_TARGETS
SpellEffectImplicitTargetTypes
@ EFFECT_IMPLICIT_TARGET_CASTER
@ EFFECT_IMPLICIT_TARGET_NONE
@ EFFECT_IMPLICIT_TARGET_EXPLICIT
SpellTargetSelectionCategories
@ TARGET_SELECT_CATEGORY_CONE
@ TARGET_SELECT_CATEGORY_AREA
@ TARGET_SELECT_CATEGORY_DEFAULT
@ TARGET_SELECT_CATEGORY_NEARBY
@ TARGET_SELECT_CATEGORY_NYI
@ TARGET_SELECT_CATEGORY_CHANNEL
SpellTargetCheckTypes
@ TARGET_CHECK_PASSENGER
@ TARGET_CHECK_PARTY
@ TARGET_CHECK_ENEMY
@ TARGET_CHECK_DEFAULT
@ TARGET_CHECK_ENTRY
@ TARGET_CHECK_RAID_CLASS
@ TARGET_CHECK_ALLY
@ TARGET_CHECK_RAID
SpellCastTargetFlags
@ TARGET_FLAG_TRADE_ITEM
@ TARGET_FLAG_GAMEOBJECT
@ TARGET_FLAG_STRING
@ TARGET_FLAG_NONE
@ TARGET_FLAG_UNIT_RAID
@ TARGET_FLAG_UNIT_ENEMY
@ TARGET_FLAG_GLYPH_SLOT
@ TARGET_FLAG_CORPSE_ALLY
@ TARGET_FLAG_ITEM
@ TARGET_FLAG_UNIT_MINIPET
@ TARGET_FLAG_UNIT_PASSENGER
@ TARGET_FLAG_GAMEOBJECT_ITEM
@ TARGET_FLAG_DEST_LOCATION
@ TARGET_FLAG_UNIT_ALLY
@ TARGET_FLAG_SOURCE_LOCATION
@ TARGET_FLAG_ITEM_MASK
@ TARGET_FLAG_UNUSED_1
@ TARGET_FLAG_UNIT
@ TARGET_FLAG_DEST_TARGET
@ TARGET_FLAG_UNIT_MASK
@ TARGET_FLAG_UNIT_DEAD
@ TARGET_FLAG_CORPSE_ENEMY
@ TARGET_FLAG_CORPSE_MASK
@ TARGET_FLAG_EXTRA_TARGETS
@ TARGET_FLAG_GAMEOBJECT_MASK
@ TARGET_FLAG_UNIT_PARTY
SpellTargetDirectionTypes
@ TARGET_DIR_FRONT_RIGHT
@ TARGET_DIR_NONE
@ TARGET_DIR_BACK
@ TARGET_DIR_BACK_RIGHT
@ TARGET_DIR_RIGHT
@ TARGET_DIR_FRONT_LEFT
@ TARGET_DIR_FRONT
@ TARGET_DIR_LEFT
@ TARGET_DIR_ENTRY
@ TARGET_DIR_BACK_LEFT
@ TARGET_DIR_RANDOM
SpellTargetObjectTypes
@ TARGET_OBJECT_TYPE_UNIT
@ TARGET_OBJECT_TYPE_ITEM
@ TARGET_OBJECT_TYPE_CORPSE
@ TARGET_OBJECT_TYPE_UNIT_AND_DEST
@ TARGET_OBJECT_TYPE_NONE
@ TARGET_OBJECT_TYPE_DEST
@ TARGET_OBJECT_TYPE_GOBJ
@ TARGET_OBJECT_TYPE_CORPSE_ALLY
@ TARGET_OBJECT_TYPE_CORPSE_ENEMY
@ TARGET_OBJECT_TYPE_GOBJ_ITEM
@ TARGET_OBJECT_TYPE_SRC
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
SpellTargetReferenceTypes
@ TARGET_REFERENCE_TYPE_SRC
@ TARGET_REFERENCE_TYPE_TARGET
@ TARGET_REFERENCE_TYPE_LAST
@ TARGET_REFERENCE_TYPE_NONE
@ TARGET_REFERENCE_TYPE_CASTER
@ TARGET_REFERENCE_TYPE_DEST
SpellTargetDirectionTypes GetDirectionType() const
SpellTargetCheckTypes GetCheckType() const
SpellTargetReferenceTypes GetReferenceType() const
SpellTargetSelectionCategories GetSelectionCategory() const
SpellImplicitTargetInfo(uint32 target)
SpellTargetObjectTypes GetObjectType() const
static StaticData _data[TOTAL_SPELL_TARGETS]
float CalcDirectionAngle() const
uint32 GetExplicitTargetMask(bool &srcSet, bool &dstSet) const
SpellTargetCheckTypes SelectionCheckType
SpellTargetReferenceTypes ReferenceType
SpellTargetSelectionCategories SelectionCategory
SpellTargetDirectionTypes DirectionType