TrinityCore
Loading...
Searching...
No Matches
UnitDefines.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef UnitDefines_h__
19#define UnitDefines_h__
20
21#include "Define.h"
22#include "EnumFlag.h"
23#include <string>
24
25namespace UF
26{
27struct DeclinedNames;
28}
29
30#define MIN_MELEE_REACH 2.0f
31#define NOMINAL_MELEE_RANGE 5.0f
32#define MELEE_RANGE (NOMINAL_MELEE_RANGE - MIN_MELEE_REACH * 2) //center to center for players
33#define BASE_MINDAMAGE 1.0f
34#define BASE_MAXDAMAGE 2.0f
35#define BASE_ATTACK_TIME 2000
36
37#define MAX_EQUIPMENT_ITEMS 3
38
39// byte value (UNIT_FIELD_BYTES_1, 0)
55
56// byte flag value (UNIT_FIELD_BYTES_1, 2)
66
67// UNIT_FIELD_BYTES_1 (UNIT_BYTES_1_OFFSET_ANIM_TIER)
68enum class AnimTier : uint8
69{
70 Ground = 0, // plays ground tier animations
71 Swim = 1, // falls back to ground tier animations, not handled by the client, should never appear in sniffs, will prevent tier change animations from playing correctly if used
72 Hover = 2, // plays flying tier animations or falls back to ground tier animations, automatically enables hover clientside when entering visibility with this value
73 Fly = 3, // plays flying tier animations
74 Submerged = 4,
75
76 Max
77};
78
79// low byte (0 from 0..3) of UNIT_FIELD_BYTES_2
81{
82 SHEATH_STATE_UNARMED = 0, // non prepared weapon
83 SHEATH_STATE_MELEE = 1, // prepared melee weapon
84 SHEATH_STATE_RANGED = 2, // prepared ranged weapon
85
87};
88
89// byte (1 from 0..3) of UNIT_FIELD_BYTES_2
102
104
105// byte (2 from 0..3) of UNIT_FIELD_BYTES_2
112
114
127
128#define MAX_MOVE_TYPE 9
129
142
150
151#define ADV_FLYING_MAX_SPEED_TYPE 17
152
154{
155 DIRECT_DAMAGE = 0, // used for normal weapon damage (not for class abilities or spells)
156 SPELL_DIRECT_DAMAGE = 1, // spell/class abilities damage
157 DOT = 2,
158 HEAL = 3,
159 NODAMAGE = 4, // used also in case when damage applied to health but not applied to spell channelInterruptFlags/etc
160 SELF_DAMAGE = 5
162
163// Value masks for UNIT_FIELD_FLAGS
164// EnumUtils: DESCRIBE THIS
166{
167 UNIT_FLAG_SERVER_CONTROLLED = 0x00000001, // set only when unit movement is controlled by server - by SPLINE/MONSTER_MOVE packets, together with UNIT_FLAG_STUNNED; only set to units controlled by client; client function CGUnit_C::IsClientControlled returns false when set for owner
168 UNIT_FLAG_NON_ATTACKABLE = 0x00000002, // not attackable, set when creature starts to cast spells with SPELL_EFFECT_SPAWN and cast time, removed when spell hits caster, original name is UNIT_FLAG_SPAWNING. Rename when it will be removed from all scripts
169 UNIT_FLAG_REMOVE_CLIENT_CONTROL = 0x00000004, // This is a legacy flag used to disable movement player's movement while controlling other units, SMSG_CLIENT_CONTROL replaces this functionality clientside now. CONFUSED and FLEEING flags have the same effect on client movement asDISABLE_MOVE_CONTROL in addition to preventing spell casts/autoattack (they all allow climbing steeper hills and emotes while moving)
170 UNIT_FLAG_PLAYER_CONTROLLED = 0x00000008, // controlled by player, use _IMMUNE_TO_PC instead of _IMMUNE_TO_NPC
171 UNIT_FLAG_RENAME = 0x00000010,
172 UNIT_FLAG_PREPARATION = 0x00000020, // don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_WHILE_PREP
173 UNIT_FLAG_UNK_6 = 0x00000040,
174 UNIT_FLAG_NOT_ATTACKABLE_1 = 0x00000080, // ?? (UNIT_FLAG_PLAYER_CONTROLLED | UNIT_FLAG_NOT_ATTACKABLE_1) is NON_PVP_ATTACKABLE
175 UNIT_FLAG_IMMUNE_TO_PC = 0x00000100, // disables combat/assistance with PlayerCharacters (PC) - see Unit::IsValidAttackTarget, Unit::IsValidAssistTarget
176 UNIT_FLAG_IMMUNE_TO_NPC = 0x00000200, // disables combat/assistance with NonPlayerCharacters (NPC) - see Unit::IsValidAttackTarget, Unit::IsValidAssistTarget
177 UNIT_FLAG_LOOTING = 0x00000400, // loot animation
178 UNIT_FLAG_PET_IN_COMBAT = 0x00000800, // on player pets: whether the pet is chasing a target to attack || on other units: whether any of the unit's minions is in combat
179 UNIT_FLAG_PVP_ENABLING = 0x00001000, // changed in 3.0.3, now UNIT_BYTES_2_OFFSET_PVP_FLAG from UNIT_FIELD_BYTES_2
180 UNIT_FLAG_FORCE_NAMEPLATE = 0x00002000, // Force show nameplate, 9.0
181 UNIT_FLAG_CANT_SWIM = 0x00004000, // TITLE Can't Swim
182 UNIT_FLAG_CAN_SWIM = 0x00008000, // TITLE Can Swim DESCRIPTION shows swim animation in water
183 UNIT_FLAG_NON_ATTACKABLE_2 = 0x00010000, // removes attackable icon, if on yourself, cannot assist self but can cast TARGET_SELF spells - added by SPELL_AURA_MOD_UNATTACKABLE
184 UNIT_FLAG_PACIFIED = 0x00020000, // 3.0.3 ok
185 UNIT_FLAG_STUNNED = 0x00040000, // 3.0.3 ok
187 UNIT_FLAG_ON_TAXI = 0x00100000, // disable casting at client side spell not allowed by taxi flight (mounted?), probably used with 0x4 flag
188 UNIT_FLAG_DISARMED = 0x00200000, // 3.0.3, disable melee spells casting..., "Required melee weapon" added to melee spells tooltip.
189 UNIT_FLAG_CONFUSED = 0x00400000,
190 UNIT_FLAG_FLEEING = 0x00800000,
191 UNIT_FLAG_POSSESSED = 0x01000000, // under direct client control by a player (possess or vehicle)
194 UNIT_FLAG_MOUNT = 0x08000000,
195 UNIT_FLAG_UNK_28 = 0x10000000,
196 UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT = 0x20000000, // Prevent automatically playing emotes from parsing chat text, for example "lol" in /say, ending message with ? or !, or using /yell
197 UNIT_FLAG_SHEATHE = 0x40000000,
198 UNIT_FLAG_IMMUNE = 0x80000000, // Immune to damage
199
207
208 UNIT_FLAG_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG_DISALLOWED) // SKIP
210
212
213// Value masks for UNIT_FIELD_FLAGS_2
214// EnumUtils: DESCRIBE THIS
216{
218 UNIT_FLAG2_HIDE_BODY = 0x00000002, // TITLE Hide Body DESCRIPTION Hide unit model (show only player equip)
222 UNIT_FLAG2_DONT_FADE_IN = 0x00000020, // TITLE Don't Fade In DESCRIPTION Unit model instantly appears when summoned (does not fade in)
225 UNIT_FLAG2_DISABLE_PRED_STATS = 0x00000100, // Player has disabled predicted stats (Used by raid frames)
226 UNIT_FLAG2_ALLOW_CHANGING_TALENTS = 0x00000200, // Allows changing talents outside rest area
227 UNIT_FLAG2_DISARM_RANGED = 0x00000400, // this does not disable ranged weapon display (maybe additional flag needed?)
229 UNIT_FLAG2_RESTRICT_PARTY_INTERACTION = 0x00001000, // Restrict interaction to party or raid
230 UNIT_FLAG2_PREVENT_SPELL_CLICK = 0x00002000, // Prevent spellclick
231 UNIT_FLAG2_INTERACT_WHILE_HOSTILE = 0x00004000, // TITLE Interact while Hostile
232 UNIT_FLAG2_CANNOT_TURN = 0x00008000, // TITLE Cannot Turn
233 UNIT_FLAG2_UNK2 = 0x00010000,
234 UNIT_FLAG2_PLAY_DEATH_ANIM = 0x00020000, // Plays special death animation upon death
235 UNIT_FLAG2_ALLOW_CHEAT_SPELLS = 0x00040000, // Allows casting spells with AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL
236 UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER = 0x00080000, // TITLE Suppress highlight when targeted or moused over
237 UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS = 0x00100000, // TITLE Treat as Raid Unit For Helpful Spells (Instances ONLY)
238 UNIT_FLAG2_LARGE_AOI = 0x00200000, // TITLE Large (AOI)
239 UNIT_FLAG2_GIGANTIC_AOI = 0x00400000, // TITLE Gigantic (AOI)
241 UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS = 0x01000000, // TITLE AI will only swim if target swims
242 UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS = 0x02000000, // TITLE Don't generate combat log when engaged with NPC's
243 UNIT_FLAG2_UNTARGETABLE_BY_CLIENT = 0x04000000, // TITLE Untargetable By Client
244 UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES = 0x08000000, // TITLE Attacker Ignores Minimum Ranges
245 UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE = 0x10000000, // TITLE Uninteractible If Hostile
247 UNIT_FLAG2_INFINITE_AOI = 0x40000000, // TITLE Infinite (AOI)
249
253 /* UNIT_FLAG2_REGENERATE_POWER | */ UNIT_FLAG2_RESTRICT_PARTY_INTERACTION | UNIT_FLAG2_CANNOT_TURN |
254 UNIT_FLAG2_PREVENT_SPELL_CLICK | /* UNIT_FLAG2_INTERACT_WHILE_HOSTILE | */ /* UNIT_FLAG2_UNK2 | */
259
260 UNIT_FLAG2_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG2_DISALLOWED) // SKIP
262
264
265// Value masks for UNIT_FIELD_FLAGS_3
266// EnumUtils: DESCRIBE THIS
268{
269 UNIT_FLAG3_UNK0 = 0x00000001,
270 UNIT_FLAG3_UNCONSCIOUS_ON_DEATH = 0x00000002, // TITLE Unconscious on Death DESCRIPTION Shows "Unconscious" in unit tooltip instead of "Dead"
271 UNIT_FLAG3_ALLOW_MOUNTED_COMBAT = 0x00000004, // TITLE Allow mounted combat
272 UNIT_FLAG3_GARRISON_PET = 0x00000008, // TITLE Garrison pet DESCRIPTION Special garrison pet creatures that display one of favorite player battle pets - this flag allows querying name and turns off default battle pet behavior
273 UNIT_FLAG3_UI_CAN_GET_POSITION = 0x00000010, // TITLE UI Can Get Position DESCRIPTION Allows lua functions like UnitPosition to always get the position even for npcs or non-grouped players
276 UNIT_FLAG3_SUPPRESS_ALL_NPC_FEEDBACK = 0x00000080, // TITLE Suppress all NPC feedback DESCRIPTION Skips playing sounds on left clicking npc for all npcs as long as npc with this flag is visible
277 UNIT_FLAG3_IGNORE_COMBAT = 0x00000100, // TITLE Ignore Combat DESCRIPTION Same as SPELL_AURA_IGNORE_COMBAT
278 UNIT_FLAG3_SUPPRESS_NPC_FEEDBACK = 0x00000200, // TITLE Suppress NPC feedback DESCRIPTION Skips playing sounds on left clicking npc
279 UNIT_FLAG3_UNK10 = 0x00000400,
280 UNIT_FLAG3_UNK11 = 0x00000800,
281 UNIT_FLAG3_UNK12 = 0x00001000,
282 UNIT_FLAG3_FAKE_DEAD = 0x00002000, // TITLE Show as dead
283 UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE = 0x00004000, // Causes the creature to both not change facing on interaction and speeds up smooth facing changes while attacking (clientside)
284 UNIT_FLAG3_UNTARGETABLE_FROM_UI = 0x00008000, // TITLE Untargetable from UI DESCRIPTION Cannot be targeted from lua functions StartAttack, TargetUnit, PetAttack
285 UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD = 0x00010000, // Prevents facing changes while interacting if creature has flag UNIT_FLAG3_FAKE_DEAD
287 UNIT_FLAG3_SUPPRESS_ALL_NPC_SOUNDS = 0x00040000, // TITLE Suppress all NPC sounds DESCRIPTION Skips playing sounds on beginning and end of npc interaction for all npcs as long as npc with this flag is visible
288 UNIT_FLAG3_SUPPRESS_NPC_SOUNDS = 0x00080000, // TITLE Suppress NPC sounds DESCRIPTION Skips playing sounds on beginning and end of npc interaction
289 UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT = 0x00100000, // TITLE Allow Interaction While in Combat DESCRIPTION Allows using various NPC functions while in combat (vendor, gossip, questgiver)
290 UNIT_FLAG3_UNK21 = 0x00200000,
292 UNIT_FLAG3_UNK23 = 0x00800000,
294 UNIT_FLAG3_UNK25 = 0x02000000,
295 UNIT_FLAG3_UNK26 = 0x04000000,
296 UNIT_FLAG3_UNK27 = 0x08000000,
297 UNIT_FLAG3_UNK28 = 0x10000000,
298 UNIT_FLAG3_UNK29 = 0x20000000,
299 UNIT_FLAG3_UNK30 = 0x40000000,
300 UNIT_FLAG3_UNK31 = 0x80000000,
301
302 UNIT_FLAG3_DISALLOWED = (UNIT_FLAG3_UNK0 | /* UNIT_FLAG3_UNCONSCIOUS_ON_DEATH | */ /* UNIT_FLAG3_ALLOW_MOUNTED_COMBAT | */ UNIT_FLAG3_GARRISON_PET |
303 /* UNIT_FLAG3_UI_CAN_GET_POSITION | */ /* UNIT_FLAG3_AI_OBSTACLE | */ UNIT_FLAG3_ALTERNATIVE_DEFAULT_LANGUAGE | /* UNIT_FLAG3_SUPPRESS_ALL_NPC_FEEDBACK | */
305 UNIT_FLAG3_UNK12 | /* UNIT_FLAG3_FAKE_DEAD |*/ /* UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE | */ /* UNIT_FLAG3_UNTARGETABLE_FROM_UI | */
306 /* UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD | */ UNIT_FLAG3_ALREADY_SKINNED | /* UNIT_FLAG3_SUPPRESS_ALL_NPC_SOUNDS | */ /* UNIT_FLAG3_SUPPRESS_NPC_SOUNDS | */
308 /* UNIT_FLAG3_FORCE_HIDE_NAMEPLATE | */ UNIT_FLAG3_UNK25 | UNIT_FLAG3_UNK26 | UNIT_FLAG3_UNK27 |
310 UNIT_FLAG3_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG3_DISALLOWED) // SKIP
312
314
316// EnumUtils: DESCRIBE THIS
318{
319 UNIT_NPC_FLAG_NONE = 0x00000000,
320 UNIT_NPC_FLAG_GOSSIP = 0x00000001, // TITLE has gossip menu DESCRIPTION 100%
321 UNIT_NPC_FLAG_QUESTGIVER = 0x00000002, // TITLE is quest giver DESCRIPTION 100%
322 UNIT_NPC_FLAG_ACCOUNT_BANKER = 0x00000004, // TITLE is account banker
323 UNIT_NPC_FLAG_UNK2 = 0x00000008,
324 UNIT_NPC_FLAG_TRAINER = 0x00000010, // TITLE is trainer DESCRIPTION 100%
325 UNIT_NPC_FLAG_TRAINER_CLASS = 0x00000020, // TITLE is class trainer DESCRIPTION 100%
326 UNIT_NPC_FLAG_TRAINER_PROFESSION = 0x00000040, // TITLE is profession trainer DESCRIPTION 100%
327 UNIT_NPC_FLAG_VENDOR = 0x00000080, // TITLE is vendor (generic) DESCRIPTION 100%
328 UNIT_NPC_FLAG_VENDOR_AMMO = 0x00000100, // TITLE is vendor (ammo) DESCRIPTION 100%, general goods vendor
329 UNIT_NPC_FLAG_VENDOR_FOOD = 0x00000200, // TITLE is vendor (food) DESCRIPTION 100%
330 UNIT_NPC_FLAG_VENDOR_POISON = 0x00000400, // TITLE is vendor (poison) DESCRIPTION guessed
331 UNIT_NPC_FLAG_VENDOR_REAGENT = 0x00000800, // TITLE is vendor (reagents) DESCRIPTION 100%
332 UNIT_NPC_FLAG_REPAIR = 0x00001000, // TITLE can repair DESCRIPTION 100%
333 UNIT_NPC_FLAG_FLIGHTMASTER = 0x00002000, // TITLE is flight master DESCRIPTION 100%
334 UNIT_NPC_FLAG_SPIRIT_HEALER = 0x00004000, // TITLE is spirit healer
335 UNIT_NPC_FLAG_AREA_SPIRIT_HEALER = 0x00008000, // TITLE is area spirit healer
336 UNIT_NPC_FLAG_INNKEEPER = 0x00010000, // TITLE is innkeeper
337 UNIT_NPC_FLAG_BANKER = 0x00020000, // TITLE is banker DESCRIPTION 100%
338 UNIT_NPC_FLAG_PETITIONER = 0x00040000, // TITLE handles guild/arena petitions DESCRIPTION 100% 0xC0000 = guild petitions, 0x40000 = arena team petitions
339 UNIT_NPC_FLAG_TABARDDESIGNER = 0x00080000, // TITLE is guild tabard designer DESCRIPTION 100%
340 UNIT_NPC_FLAG_BATTLEMASTER = 0x00100000, // TITLE is battlemaster DESCRIPTION 100%
341 UNIT_NPC_FLAG_AUCTIONEER = 0x00200000, // TITLE is auctioneer DESCRIPTION 100%
342 UNIT_NPC_FLAG_STABLEMASTER = 0x00400000, // TITLE is stable master DESCRIPTION 100%
343 UNIT_NPC_FLAG_GUILD_BANKER = 0x00800000, // TITLE is guild banker DESCRIPTION
344 UNIT_NPC_FLAG_SPELLCLICK = 0x01000000, // TITLE has spell click enabled
345 UNIT_NPC_FLAG_PLAYER_VEHICLE = 0x02000000, // TITLE is player vehicle DESCRIPTION players with mounts that have vehicle data should have it set
346 UNIT_NPC_FLAG_MAILBOX = 0x04000000, // TITLE is mailbox
347 UNIT_NPC_FLAG_ARTIFACT_POWER_RESPEC = 0x08000000, // TITLE can reset artifact powers
348 UNIT_NPC_FLAG_TRANSMOGRIFIER = 0x10000000, // TITLE transmogrification
349 UNIT_NPC_FLAG_VAULTKEEPER = 0x20000000, // TITLE is void storage
350 UNIT_NPC_FLAG_WILD_BATTLE_PET = 0x40000000, // TITLE is wild battle pet DESCRIPTION Pet that player can fight (Battle Pet)
351 UNIT_NPC_FLAG_BLACK_MARKET = 0x80000000 // TITLE is black market
353
355
358
359// EnumUtils: DESCRIBE THIS
361{
363 UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER = 0x00000001, // TITLE is item upgrade
364 UNIT_NPC_FLAG_2_GARRISON_ARCHITECT = 0x00000002, // TITLE is garrison architect DESCRIPTION garrison building placement UI
365 UNIT_NPC_FLAG_2_STEERING = 0x00000004, // TITLE is avoiding obstacles DESCRIPTION clientside pathfinding
366 UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL = 0x00000008, // TITLE is area spirit healer individual DESCRIPTION area spirit healer with individual timers
367 UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER = 0x00000010, // TITLE is shipment crafter DESCRIPTION garrison work orders
368 UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC = 0x00000020, // TITLE is garrison mission
369 UNIT_NPC_FLAG_2_TRADESKILL_NPC = 0x00000040, // TITLE is tradeskill DESCRIPTION crafting at npc
370 UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW = 0x00000080, // TITLE is black market view DESCRIPTION only allows viewing black market auctions, no bidding
371 UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC = 0x00000200, // TITLE is garrrison talent
372 UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR = 0x00000400, // TITLE is contribution collector
373 UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES = 0x00002000, // TITLE enables avoiding obstacles when FastSteering spline flag is set
374 UNIT_NPC_FLAG_2_AZERITE_RESPEC = 0x00004000, // TITLE is azerite respec
375 UNIT_NPC_FLAG_2_ISLANDS_QUEUE = 0x00008000, // TITLE is islands queue
377 UNIT_NPC_FLAG_2_PERKS_VENDOR = 0x00080000, // TITLE is trading post vendor
378 UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER = 0x00200000, // TITLE is personal tabard designer
379};
380
382
383// EnumUtils: DESCRIBE THIS
385{
386 MOVEMENTFLAG_NONE = 0x00000000,
391 MOVEMENTFLAG_LEFT = 0x00000010,
392 MOVEMENTFLAG_RIGHT = 0x00000020,
395 MOVEMENTFLAG_WALKING = 0x00000100, // Walking
396 MOVEMENTFLAG_DISABLE_GRAVITY = 0x00000200, // Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible.
397 MOVEMENTFLAG_ROOT = 0x00000400, // Must not be set along with MOVEMENTFLAG_MASK_MOVING
398 MOVEMENTFLAG_FALLING = 0x00000800, // damage dealt on that type of falling
407 MOVEMENTFLAG_SWIMMING = 0x00100000, // appears with fly flag also
408 MOVEMENTFLAG_ASCENDING = 0x00200000, // press "space" when flying
410 MOVEMENTFLAG_CAN_FLY = 0x00800000, // Appears when unit can fly. For example, appears when a player sits on a mount.
411 MOVEMENTFLAG_FLYING = 0x01000000, // unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity
412 MOVEMENTFLAG_SPLINE_ELEVATION = 0x02000000, // used for flight paths
413 MOVEMENTFLAG_WATERWALKING = 0x04000000, // prevent unit from falling through water
414 MOVEMENTFLAG_FALLING_SLOW = 0x08000000, // active rogue safe fall spell (passive)
415 MOVEMENTFLAG_HOVER = 0x10000000, // hover, cannot jump
417
421
424
427
428 // Movement flags allowed for creature in CreateObject - we need to keep all other enabled serverside
429 // to properly calculate all movement
433
437
442
443// EnumUtils: DESCRIBE THIS
445{
446 MOVEMENTFLAG2_NONE = 0x00000000,
453 MOVEMENTFLAG2_WATERWALKING_FULL_PITCH = 0x00000040, // will always waterwalk, even if facing the camera directly down
456 MOVEMENTFLAG2_UNK9 = 0x00000200, // terrain normal calculation is disabled if this flag is not present, client automatically handles setting this flag
461 // these flags are not sent
467
468// EnumUtils: DESCRIBE THIS
480
482{
484 HITINFO_UNK1 = 0x00000001, // req correct packet structure
486 HITINFO_OFFHAND = 0x00000004,
487 HITINFO_UNK2 = 0x00000008,
488 HITINFO_MISS = 0x00000010,
493 HITINFO_CRITICALHIT = 0x00000200, // critical hit
494 HITINFO_UNK10 = 0x00000400,
495 HITINFO_UNK11 = 0x00000800,
496 HITINFO_UNK12 = 0x00001000,
497 HITINFO_BLOCK = 0x00002000, // blocked damage
498 HITINFO_UNK14 = 0x00004000, // set only if meleespellid is present// no world text when victim is hit for 0 dmg(HideWorldTextForNoDamage?)
499 HITINFO_UNK15 = 0x00008000, // player victim?// something related to blod sprut visual (BloodSpurtInBack?)
500 HITINFO_GLANCING = 0x00010000,
501 HITINFO_CRUSHING = 0x00020000,
503 HITINFO_UNK19 = 0x00080000,
504 HITINFO_UNK20 = 0x00100000,
505 HITINFO_SWINGNOHITSOUND = 0x00200000, // unused?
506 HITINFO_UNK22 = 0x00400000,
507 HITINFO_RAGE_GAIN = 0x00800000,
508 HITINFO_FAKE_DAMAGE = 0x01000000 // enables damage animation even if no damage done, set only if no damage
510
512{
513 NotInRange = 0,
514 BadFacing = 1,
515 CantAttack = 2,
516 DeadTarget = 3
517};
518
519#define MAX_DECLINED_NAME_CASES 5
520
522{
523 DeclinedName() = default;
525
527};
528
530{
531 ACT_PASSIVE = 0x01, // 0x01 - passive
532 ACT_DISABLED = 0x81, // 0x80 - castable
533 ACT_ENABLED = 0xC1, // 0x40 | 0x80 - auto cast + castable
534 ACT_COMMAND = 0x07, // 0x01 | 0x02 | 0x04
535 ACT_REACTION = 0x06, // 0x02 | 0x04
536 ACT_DECIDE = 0x00 // custom
538
546
547inline char const* DescribeReactState(ReactStates state)
548{
549 switch (state)
550 {
551 case REACT_PASSIVE: return "PASSIVE";
552 case REACT_DEFENSIVE: return "DEFENSIVE";
553 case REACT_AGGRESSIVE: return "AGGRESSIVE";
554 case REACT_ASSIST: return "ASSIST";
555 default: return "<Invalid react state>";
556 }
557}
558
567
568#endif // UnitDefines_h__
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
uint32_t uint32
Definition Define.h:154
#define DEFINE_ENUM_FLAG(enumType)
Definition EnumFlag.h:26
UnitMoveType
@ MOVE_FLIGHT
@ MOVE_SWIM
@ MOVE_TURN_RATE
@ MOVE_FLIGHT_BACK
@ MOVE_SWIM_BACK
@ MOVE_RUN
@ MOVE_PITCH_RATE
@ MOVE_RUN_BACK
@ MOVE_WALK
UnitFlags2
@ UNIT_FLAG2_UNK2
@ UNIT_FLAG2_MIRROR_IMAGE
@ UNIT_FLAG2_ALLOWED
@ UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS
@ UNIT_FLAG2_INTERACT_WHILE_HOSTILE
@ UNIT_FLAG2_UNUSED_13
@ UNIT_FLAG2_PLAY_DEATH_ANIM
@ UNIT_FLAG2_HIDE_BODY
@ UNIT_FLAG2_IGNORE_REPUTATION
@ UNIT_FLAG2_PREVENT_SPELL_CLICK
@ UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE
@ UNIT_FLAG2_RESTRICT_PARTY_INTERACTION
@ UNIT_FLAG2_DISABLE_PRED_STATS
@ UNIT_FLAG2_COMPREHEND_LANG
@ UNIT_FLAG2_CANNOT_TURN
@ UNIT_FLAG2_FORCE_MOVEMENT
@ UNIT_FLAG2_GIGANTIC_AOI
@ UNIT_FLAG2_ALLOW_CHEAT_SPELLS
@ UNIT_FLAG2_FEIGN_DEATH
@ UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES
@ UNIT_FLAG2_INFINITE_AOI
@ UNIT_FLAG2_NO_ACTIONS
@ UNIT_FLAG2_REGENERATE_POWER
@ UNIT_FLAG2_DONT_FADE_IN
@ UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS
@ UNIT_FLAG2_UNUSED_11
@ UNIT_FLAG2_DISALLOWED
@ UNIT_FLAG2_ALLOW_CHANGING_TALENTS
@ UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER
@ UNIT_FLAG2_DISARM_OFFHAND
@ UNIT_FLAG2_LARGE_AOI
@ UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS
@ UNIT_FLAG2_UNTARGETABLE_BY_CLIENT
@ UNIT_FLAG2_DISARM_RANGED
UnitPetFlag
@ UNIT_PET_FLAG_NONE
@ UNIT_PET_FLAG_CAN_BE_ABANDONED
@ UNIT_PET_FLAG_CAN_BE_RENAMED
HitInfo
@ HITINFO_PARTIAL_ABSORB
@ HITINFO_UNK2
@ HITINFO_FULL_RESIST
@ HITINFO_NORMALSWING
@ HITINFO_UNK22
@ HITINFO_BLOCK
@ HITINFO_UNK15
@ HITINFO_UNK19
@ HITINFO_CRUSHING
@ HITINFO_UNK20
@ HITINFO_FAKE_DAMAGE
@ HITINFO_SWINGNOHITSOUND
@ HITINFO_UNK12
@ HITINFO_MISS
@ HITINFO_RAGE_GAIN
@ HITINFO_FULL_ABSORB
@ HITINFO_NO_ANIMATION
@ HITINFO_OFFHAND
@ HITINFO_UNK1
@ HITINFO_GLANCING
@ HITINFO_UNK11
@ HITINFO_CRITICALHIT
@ HITINFO_PARTIAL_RESIST
@ HITINFO_AFFECTS_VICTIM
@ HITINFO_UNK14
@ HITINFO_UNK10
ReactStates
@ REACT_DEFENSIVE
@ REACT_PASSIVE
@ REACT_AGGRESSIVE
@ REACT_ASSIST
UnitStandStateType
Definition UnitDefines.h:41
@ UNIT_STAND_STATE_SLEEP
Definition UnitDefines.h:45
@ UNIT_STAND_STATE_SIT_HIGH_CHAIR
Definition UnitDefines.h:48
@ UNIT_STAND_STATE_SUBMERGED
Definition UnitDefines.h:51
@ UNIT_STAND_STATE_SIT_MEDIUM_CHAIR
Definition UnitDefines.h:47
@ UNIT_STAND_STATE_SIT_LOW_CHAIR
Definition UnitDefines.h:46
@ UNIT_STAND_STATE_DEAD
Definition UnitDefines.h:49
@ UNIT_STAND_STATE_KNEEL
Definition UnitDefines.h:50
@ UNIT_STAND_STATE_SIT_CHAIR
Definition UnitDefines.h:44
@ MAX_UNIT_STAND_STATE
Definition UnitDefines.h:53
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:42
@ UNIT_STAND_STATE_SIT
Definition UnitDefines.h:43
AdvFlyingRateTypeSingle
@ ADV_FLYING_DOUBLE_JUMP_VEL_MOD
@ ADV_FLYING_OVER_MAX_DECELERATION
@ ADV_FLYING_LIFT_COEFFICIENT
@ ADV_FLYING_ADD_IMPULSE_MAX_SPEED
@ ADV_FLYING_GLIDE_START_MIN_HEIGHT
@ ADV_FLYING_AIR_FRICTION
@ ADV_FLYING_LAUNCH_SPEED_COEFFICIENT
@ ADV_FLYING_MAX_VEL
@ ADV_FLYING_SURFACE_FRICTION
constexpr NPCFlags UNIT_NPC_FLAG_VENDOR_MASK
MovementFlags
@ MOVEMENTFLAG_MASK_PLAYER_ONLY
@ MOVEMENTFLAG_DESCENDING
@ MOVEMENTFLAG_MASK_CREATURE_ALLOWED
@ MOVEMENTFLAG_PITCH_DOWN
@ MOVEMENTFLAG_PENDING_STRAFE_STOP
@ MOVEMENTFLAG_PITCH_UP
@ MOVEMENTFLAG_RIGHT
@ MOVEMENTFLAG_PENDING_STOP
@ MOVEMENTFLAG_FORWARD
@ MOVEMENTFLAG_PENDING_STRAFE_LEFT
@ MOVEMENTFLAG_NONE
@ MOVEMENTFLAG_STRAFE_LEFT
@ MOVEMENTFLAG_BACKWARD
@ MOVEMENTFLAG_WATERWALKING
@ MOVEMENTFLAG_MASK_MOVING
@ MOVEMENTFLAG_DISABLE_GRAVITY
@ MOVEMENTFLAG_PENDING_BACKWARD
@ MOVEMENTFLAG_FLYING
@ MOVEMENTFLAG_FALLING_SLOW
@ MOVEMENTFLAG_PENDING_STRAFE_RIGHT
@ MOVEMENTFLAG_CAN_FLY
@ MOVEMENTFLAG_ROOT
@ MOVEMENTFLAG_MASK_TURNING
@ MOVEMENTFLAG_FALLING
@ MOVEMENTFLAG_LEFT
@ MOVEMENTFLAG_MASK_MOVING_FLY
@ MOVEMENTFLAG_STRAFE_RIGHT
@ MOVEMENTFLAG_FALLING_FAR
@ MOVEMENTFLAG_MASK_HAS_PLAYER_STATUS_OPCODE
Movement flags that have change status opcodes associated for players.
@ MOVEMENTFLAG_SWIMMING
@ MOVEMENTFLAG_ASCENDING
@ MOVEMENTFLAG_PENDING_FORWARD
@ MOVEMENTFLAG_HOVER
@ MOVEMENTFLAG_SPLINE_ELEVATION
@ MOVEMENTFLAG_PENDING_ROOT
@ MOVEMENTFLAG_WALKING
@ MOVEMENTFLAG_DISABLE_COLLISION
MovementFlags2
@ MOVEMENTFLAG2_CAN_DOUBLE_JUMP
@ MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS
@ MOVEMENTFLAG2_UNK9
@ MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING
@ MOVEMENTFLAG2_INTERPOLATED_PITCHING
@ MOVEMENTFLAG2_INTERPOLATED_MOVEMENT
@ MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING
@ MOVEMENTFLAG2_AWAITING_LOAD
@ MOVEMENTFLAG2_WATERWALKING_FULL_PITCH
@ MOVEMENTFLAG2_DOUBLE_JUMP
@ MOVEMENTFLAG2_NO_STRAFE
@ MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES
@ MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY
@ MOVEMENTFLAG2_INTERPOLATED_TURNING
@ MOVEMENTFLAG2_FULL_SPEED_PITCHING
@ MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED
@ MOVEMENTFLAG2_NONE
@ MOVEMENTFLAG2_FULL_SPEED_TURNING
@ MOVEMENTFLAG2_NO_JUMPING
#define MAX_DECLINED_NAME_CASES
AdvFlyingRateTypeRange
@ ADV_FLYING_PITCHING_RATE_DOWN
@ ADV_FLYING_TURN_VELOCITY_THRESHOLD
@ ADV_FLYING_PITCHING_RATE_UP
@ ADV_FLYING_BANKING_RATE
AttackSwingErr
ActiveStates
@ ACT_REACTION
@ ACT_DECIDE
@ ACT_COMMAND
@ ACT_ENABLED
@ ACT_PASSIVE
@ ACT_DISABLED
NPCFlags
Non Player Character flags.
@ UNIT_NPC_FLAG_VENDOR_AMMO
@ UNIT_NPC_FLAG_TABARDDESIGNER
@ UNIT_NPC_FLAG_SPIRIT_HEALER
@ UNIT_NPC_FLAG_BANKER
@ UNIT_NPC_FLAG_ACCOUNT_BANKER
@ UNIT_NPC_FLAG_AUCTIONEER
@ UNIT_NPC_FLAG_UNK2
@ UNIT_NPC_FLAG_VENDOR_POISON
@ UNIT_NPC_FLAG_AREA_SPIRIT_HEALER
@ UNIT_NPC_FLAG_GUILD_BANKER
@ UNIT_NPC_FLAG_VENDOR
@ UNIT_NPC_FLAG_STABLEMASTER
@ UNIT_NPC_FLAG_VENDOR_REAGENT
@ UNIT_NPC_FLAG_GOSSIP
@ UNIT_NPC_FLAG_NONE
@ UNIT_NPC_FLAG_BATTLEMASTER
@ UNIT_NPC_FLAG_VENDOR_FOOD
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_NPC_FLAG_ARTIFACT_POWER_RESPEC
@ UNIT_NPC_FLAG_INNKEEPER
@ UNIT_NPC_FLAG_SPELLCLICK
@ UNIT_NPC_FLAG_TRANSMOGRIFIER
@ UNIT_NPC_FLAG_BLACK_MARKET
@ UNIT_NPC_FLAG_MAILBOX
@ UNIT_NPC_FLAG_PLAYER_VEHICLE
@ UNIT_NPC_FLAG_FLIGHTMASTER
@ UNIT_NPC_FLAG_TRAINER_CLASS
@ UNIT_NPC_FLAG_VAULTKEEPER
@ UNIT_NPC_FLAG_TRAINER_PROFESSION
@ UNIT_NPC_FLAG_REPAIR
@ UNIT_NPC_FLAG_TRAINER
@ UNIT_NPC_FLAG_PETITIONER
@ UNIT_NPC_FLAG_WILD_BATTLE_PET
DamageEffectType
@ SELF_DAMAGE
@ DIRECT_DAMAGE
@ NODAMAGE
@ DOT
@ SPELL_DIRECT_DAMAGE
@ HEAL
UnitFlags3
@ UNIT_FLAG3_UI_CAN_GET_POSITION
@ UNIT_FLAG3_UNK28
@ UNIT_FLAG3_SUPPRESS_ALL_NPC_SOUNDS
@ UNIT_FLAG3_ALLOWED
@ UNIT_FLAG3_UNK29
@ UNIT_FLAG3_UNK11
@ UNIT_FLAG3_SUPPRESS_NPC_FEEDBACK
@ UNIT_FLAG3_UNCONSCIOUS_ON_DEATH
@ UNIT_FLAG3_UNK26
@ UNIT_FLAG3_AI_OBSTACLE
@ UNIT_FLAG3_FAKE_DEAD
@ UNIT_FLAG3_DISALLOWED
@ UNIT_FLAG3_UNK10
@ UNIT_FLAG3_UNK0
@ UNIT_FLAG3_UNTARGETABLE_FROM_UI
@ UNIT_FLAG3_UNK23
@ UNIT_FLAG3_UNK12
@ UNIT_FLAG3_UNK27
@ UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD
@ UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE
@ UNIT_FLAG3_FORCE_HIDE_NAMEPLATE
@ UNIT_FLAG3_ALTERNATIVE_DEFAULT_LANGUAGE
@ UNIT_FLAG3_UNK30
@ UNIT_FLAG3_GARRISON_PET
@ UNIT_FLAG3_UNK21
@ UNIT_FLAG3_ALREADY_SKINNED
@ UNIT_FLAG3_IGNORE_COMBAT
@ UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT
@ UNIT_FLAG3_ALLOW_MOUNTED_COMBAT
@ UNIT_FLAG3_UNK25
@ UNIT_FLAG3_DONT_FADE_OUT
@ UNIT_FLAG3_SUPPRESS_ALL_NPC_FEEDBACK
@ UNIT_FLAG3_UNK31
@ UNIT_FLAG3_SUPPRESS_NPC_SOUNDS
SheathState
Definition UnitDefines.h:81
@ SHEATH_STATE_UNARMED
Definition UnitDefines.h:82
@ SHEATH_STATE_MELEE
Definition UnitDefines.h:83
@ MAX_SHEATH_STATE
Definition UnitDefines.h:86
@ SHEATH_STATE_RANGED
Definition UnitDefines.h:84
MovementFlags3
@ MOVEMENTFLAG3_ADV_FLYING
@ MOVEMENTFLAG3_CAN_DRIVE
@ MOVEMENTFLAG3_DRIVING_FORWARD
@ MOVEMENTFLAG3_DISABLE_INERTIA
@ MOVEMENTFLAG3_DRIVING_BACKWARD
@ MOVEMENTFLAG3_CANNOT_SWIM
@ MOVEMENTFLAG3_CAN_ADV_FLY
@ MOVEMENTFLAG3_NONE
NPCFlags2
@ UNIT_NPC_FLAG_2_GARRISON_ARCHITECT
@ UNIT_NPC_FLAG_2_STEERING
@ UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW
@ UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR
@ UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC
@ UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER
@ UNIT_NPC_FLAG_2_AZERITE_RESPEC
@ UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER
@ UNIT_NPC_FLAG_2_NONE
@ UNIT_NPC_FLAG_2_TRADESKILL_NPC
@ UNIT_NPC_FLAG_2_ISLANDS_QUEUE
@ UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES
@ UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL
@ UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER
@ UNIT_NPC_FLAG_2_PERKS_VENDOR
@ UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION
@ UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC
char const * DescribeReactState(ReactStates state)
UnitPVPStateFlags
Definition UnitDefines.h:91
@ UNIT_BYTE2_FLAG_UNK1
Definition UnitDefines.h:94
@ UNIT_BYTE2_FLAG_UNK6
Definition UnitDefines.h:99
@ UNIT_BYTE2_FLAG_PVP
Definition UnitDefines.h:93
@ UNIT_BYTE2_FLAG_FFA_PVP
Definition UnitDefines.h:95
@ UNIT_BYTE2_FLAG_UNK4
Definition UnitDefines.h:97
@ UNIT_BYTE2_FLAG_UNK5
Definition UnitDefines.h:98
@ UNIT_BYTE2_FLAG_UNK7
@ UNIT_BYTE2_FLAG_NONE
Definition UnitDefines.h:92
@ UNIT_BYTE2_FLAG_SANCTUARY
Definition UnitDefines.h:96
AnimTier
Definition UnitDefines.h:69
UnitVisFlags
Definition UnitDefines.h:58
@ UNIT_VIS_FLAGS_UNTRACKABLE
Definition UnitDefines.h:61
@ UNIT_VIS_FLAGS_STEALTHED
Definition UnitDefines.h:60
@ UNIT_VIS_FLAGS_UNK5
Definition UnitDefines.h:63
@ UNIT_VIS_FLAGS_INVISIBLE
Definition UnitDefines.h:59
@ UNIT_VIS_FLAGS_UNK4
Definition UnitDefines.h:62
@ UNIT_VIS_FLAGS_ALL
Definition UnitDefines.h:64
CommandStates
@ COMMAND_ATTACK
@ COMMAND_MOVE_TO
@ COMMAND_ABANDON
@ COMMAND_STAY
@ COMMAND_FOLLOW
UnitFlags
@ UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT
@ UNIT_FLAG_STUNNED
@ UNIT_FLAG_PVP_ENABLING
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_UNK_6
@ UNIT_FLAG_IN_COMBAT
@ UNIT_FLAG_PREPARATION
@ UNIT_FLAG_NON_ATTACKABLE_2
@ UNIT_FLAG_IMMUNE_TO_NPC
@ UNIT_FLAG_ON_TAXI
@ UNIT_FLAG_ALLOWED
@ UNIT_FLAG_POSSESSED
@ UNIT_FLAG_IMMUNE
@ UNIT_FLAG_SERVER_CONTROLLED
@ UNIT_FLAG_DISARMED
@ UNIT_FLAG_PACIFIED
@ UNIT_FLAG_CAN_SWIM
@ UNIT_FLAG_REMOVE_CLIENT_CONTROL
@ UNIT_FLAG_CONFUSED
@ UNIT_FLAG_FLEEING
@ UNIT_FLAG_CANT_SWIM
@ UNIT_FLAG_RENAME
@ UNIT_FLAG_LOOTING
@ UNIT_FLAG_UNINTERACTIBLE
@ UNIT_FLAG_IMMUNE_TO_PC
@ UNIT_FLAG_NOT_ATTACKABLE_1
@ UNIT_FLAG_PLAYER_CONTROLLED
@ UNIT_FLAG_DISALLOWED
@ UNIT_FLAG_FORCE_NAMEPLATE
@ UNIT_FLAG_SKINNABLE
@ UNIT_FLAG_MOUNT
@ UNIT_FLAG_PET_IN_COMBAT
@ UNIT_FLAG_UNK_28
@ UNIT_FLAG_SHEATHE
DeclinedName()=default
std::string name[MAX_DECLINED_NAME_CASES]