Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
SpellTargeting.cpp
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#include "Common.h"
7#include "SpellTargeting.h"
8#include "Util.h"
9
38
43
48
53
58
60{
61 return _data[_target].SelectionCheckType;
62}
63
68
70{
71 switch (GetDirectionType())
72 {
74 return 0.0f;
75 case TARGET_DIR_BACK:
76 return static_cast<float>(M_PI);
78 return static_cast<float>(-M_PI / 2);
79 case TARGET_DIR_LEFT:
80 return static_cast<float>(M_PI / 2);
82 return static_cast<float>(-M_PI / 4);
84 return static_cast<float>(-3 * M_PI / 4);
86 return static_cast<float>(3 * M_PI / 4);
88 return static_cast<float>(M_PI / 4);
90 return float(rand_norm()) * static_cast<float>(2 * M_PI);
91 default:
92 return 0.0f;
93 }
94}
95
100
102{
103 uint32 targetMask = 0;
105 {
106 if (!srcSet)
107 targetMask = TARGET_FLAG_SOURCE_LOCATION;
108 if (!dstSet)
109 targetMask |= TARGET_FLAG_DEST_LOCATION;
110 }
111 else
112 {
113 switch (GetReferenceType())
114 {
116 if (srcSet)
117 break;
118 targetMask = TARGET_FLAG_SOURCE_LOCATION;
119 break;
121 if (dstSet)
122 break;
123 targetMask = TARGET_FLAG_DEST_LOCATION;
124 break;
126 switch (GetObjectType())
127 {
129 targetMask = TARGET_FLAG_GAMEOBJECT;
130 break;
132 targetMask = TARGET_FLAG_GAMEOBJECT_ITEM;
133 break;
137 switch (GetCheckType())
138 {
140 targetMask = TARGET_FLAG_UNIT_ENEMY;
141 break;
143 targetMask = TARGET_FLAG_UNIT_ALLY;
144 break;
146 targetMask = TARGET_FLAG_UNIT_PARTY;
147 break;
149 targetMask = TARGET_FLAG_UNIT_RAID;
150 break;
152 targetMask = TARGET_FLAG_UNIT_PASSENGER;
153 break;
155 // nobreak;
156 default:
157 targetMask = TARGET_FLAG_UNIT;
158 break;
159 }
160 break;
161 default:
162 break;
163 }
164 break;
165 default:
166 break;
167 }
168 }
169
170 switch (GetObjectType())
171 {
173 srcSet = true;
174 break;
177 dstSet = true;
178 break;
179 default:
180 break;
181 }
182 return targetMask;
183}
184
186{
331};
#define M_PI
Definition Common.h:192
std::uint32_t uint32
Definition Define.h:77
Targets
@ TARGET_DEST_TRAJ
@ TOTAL_SPELL_TARGETS
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
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
@ TARGET_FLAG_GAMEOBJECT
@ TARGET_FLAG_NONE
@ TARGET_FLAG_UNIT_RAID
@ TARGET_FLAG_UNIT_ENEMY
@ TARGET_FLAG_CORPSE_ALLY
@ TARGET_FLAG_ITEM
@ TARGET_FLAG_UNIT_PASSENGER
@ TARGET_FLAG_GAMEOBJECT_ITEM
@ TARGET_FLAG_DEST_LOCATION
@ TARGET_FLAG_UNIT_ALLY
@ TARGET_FLAG_SOURCE_LOCATION
@ TARGET_FLAG_UNIT
@ TARGET_FLAG_CORPSE_ENEMY
@ 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_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
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
double rand_norm(void)
Definition Util.cpp:50
SpellTargetDirectionTypes GetDirectionType() const
SpellTargetCheckTypes GetCheckType() const
SpellTargetReferenceTypes GetReferenceType() const
SpellTargetSelectionCategories GetSelectionCategory() const
SpellTargetObjectTypes GetObjectType() const
static StaticData _data[TOTAL_SPELL_TARGETS]
float CalcDirectionAngle() const
uint32 GetExplicitTargetMask(bool &srcSet, bool &dstSet) const