TrinityCore
enuminfo_UnitDefines.cpp
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#include "UnitDefines.h"
19#include "Define.h"
20#include "SmartEnum.h"
21#include <stdexcept>
22
24{
25
26/***************************************************************\
27|* data for enum 'UnitFlags' in 'UnitDefines.h' auto-generated *|
28\***************************************************************/
29template <>
31{
32 switch (value)
33 {
34 case UNIT_FLAG_SERVER_CONTROLLED: return { "UNIT_FLAG_SERVER_CONTROLLED", "UNIT_FLAG_SERVER_CONTROLLED", "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" };
35 case UNIT_FLAG_NON_ATTACKABLE: return { "UNIT_FLAG_NON_ATTACKABLE", "UNIT_FLAG_NON_ATTACKABLE", "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" };
36 case UNIT_FLAG_REMOVE_CLIENT_CONTROL: return { "UNIT_FLAG_REMOVE_CLIENT_CONTROL", "UNIT_FLAG_REMOVE_CLIENT_CONTROL", "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)" };
37 case UNIT_FLAG_PLAYER_CONTROLLED: return { "UNIT_FLAG_PLAYER_CONTROLLED", "UNIT_FLAG_PLAYER_CONTROLLED", "controlled by player, use _IMMUNE_TO_PC instead of _IMMUNE_TO_NPC" };
38 case UNIT_FLAG_RENAME: return { "UNIT_FLAG_RENAME", "UNIT_FLAG_RENAME", "" };
39 case UNIT_FLAG_PREPARATION: return { "UNIT_FLAG_PREPARATION", "UNIT_FLAG_PREPARATION", "don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_WHILE_PREP" };
40 case UNIT_FLAG_UNK_6: return { "UNIT_FLAG_UNK_6", "UNIT_FLAG_UNK_6", "" };
41 case UNIT_FLAG_NOT_ATTACKABLE_1: return { "UNIT_FLAG_NOT_ATTACKABLE_1", "UNIT_FLAG_NOT_ATTACKABLE_1", "?? (UNIT_FLAG_PLAYER_CONTROLLED | UNIT_FLAG_NOT_ATTACKABLE_1) is NON_PVP_ATTACKABLE" };
42 case UNIT_FLAG_IMMUNE_TO_PC: return { "UNIT_FLAG_IMMUNE_TO_PC", "UNIT_FLAG_IMMUNE_TO_PC", "disables combat/assistance with PlayerCharacters (PC) - see Unit::IsValidAttackTarget, Unit::IsValidAssistTarget" };
43 case UNIT_FLAG_IMMUNE_TO_NPC: return { "UNIT_FLAG_IMMUNE_TO_NPC", "UNIT_FLAG_IMMUNE_TO_NPC", "disables combat/assistance with NonPlayerCharacters (NPC) - see Unit::IsValidAttackTarget, Unit::IsValidAssistTarget" };
44 case UNIT_FLAG_LOOTING: return { "UNIT_FLAG_LOOTING", "UNIT_FLAG_LOOTING", "loot animation" };
45 case UNIT_FLAG_PET_IN_COMBAT: return { "UNIT_FLAG_PET_IN_COMBAT", "UNIT_FLAG_PET_IN_COMBAT", "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" };
46 case UNIT_FLAG_PVP_ENABLING: return { "UNIT_FLAG_PVP_ENABLING", "UNIT_FLAG_PVP_ENABLING", "changed in 3.0.3, now UNIT_BYTES_2_OFFSET_PVP_FLAG from UNIT_FIELD_BYTES_2" };
47 case UNIT_FLAG_FORCE_NAMEPLATE: return { "UNIT_FLAG_FORCE_NAMEPLATE", "UNIT_FLAG_FORCE_NAMEPLATE", "Force show nameplate, 9.0" };
48 case UNIT_FLAG_CANT_SWIM: return { "UNIT_FLAG_CANT_SWIM", "Can't Swim", "" };
49 case UNIT_FLAG_CAN_SWIM: return { "UNIT_FLAG_CAN_SWIM", "Can Swim", "shows swim animation in water" };
50 case UNIT_FLAG_NON_ATTACKABLE_2: return { "UNIT_FLAG_NON_ATTACKABLE_2", "UNIT_FLAG_NON_ATTACKABLE_2", "removes attackable icon, if on yourself, cannot assist self but can cast TARGET_SELF spells - added by SPELL_AURA_MOD_UNATTACKABLE" };
51 case UNIT_FLAG_PACIFIED: return { "UNIT_FLAG_PACIFIED", "UNIT_FLAG_PACIFIED", "3.0.3 ok" };
52 case UNIT_FLAG_STUNNED: return { "UNIT_FLAG_STUNNED", "UNIT_FLAG_STUNNED", "3.0.3 ok" };
53 case UNIT_FLAG_IN_COMBAT: return { "UNIT_FLAG_IN_COMBAT", "UNIT_FLAG_IN_COMBAT", "" };
54 case UNIT_FLAG_ON_TAXI: return { "UNIT_FLAG_ON_TAXI", "UNIT_FLAG_ON_TAXI", "disable casting at client side spell not allowed by taxi flight (mounted?), probably used with 0x4 flag" };
55 case UNIT_FLAG_DISARMED: return { "UNIT_FLAG_DISARMED", "UNIT_FLAG_DISARMED", "3.0.3, disable melee spells casting..., \042Required melee weapon\042 added to melee spells tooltip." };
56 case UNIT_FLAG_CONFUSED: return { "UNIT_FLAG_CONFUSED", "UNIT_FLAG_CONFUSED", "" };
57 case UNIT_FLAG_FLEEING: return { "UNIT_FLAG_FLEEING", "UNIT_FLAG_FLEEING", "" };
58 case UNIT_FLAG_POSSESSED: return { "UNIT_FLAG_POSSESSED", "UNIT_FLAG_POSSESSED", "under direct client control by a player (possess or vehicle)" };
59 case UNIT_FLAG_UNINTERACTIBLE: return { "UNIT_FLAG_UNINTERACTIBLE", "UNIT_FLAG_UNINTERACTIBLE", "" };
60 case UNIT_FLAG_SKINNABLE: return { "UNIT_FLAG_SKINNABLE", "UNIT_FLAG_SKINNABLE", "" };
61 case UNIT_FLAG_MOUNT: return { "UNIT_FLAG_MOUNT", "UNIT_FLAG_MOUNT", "" };
62 case UNIT_FLAG_UNK_28: return { "UNIT_FLAG_UNK_28", "UNIT_FLAG_UNK_28", "" };
63 case UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT: return { "UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT", "UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT", "Prevent automatically playing emotes from parsing chat text, for example \042lol\042 in /say, ending message with ? or !, or using /yell" };
64 case UNIT_FLAG_SHEATHE: return { "UNIT_FLAG_SHEATHE", "UNIT_FLAG_SHEATHE", "" };
65 case UNIT_FLAG_IMMUNE: return { "UNIT_FLAG_IMMUNE", "UNIT_FLAG_IMMUNE", "Immune to damage" };
66 default: throw std::out_of_range("value");
67 }
68}
69
70template <>
72
73template <>
75{
76 switch (index)
77 {
78 case 0: return UNIT_FLAG_SERVER_CONTROLLED;
79 case 1: return UNIT_FLAG_NON_ATTACKABLE;
81 case 3: return UNIT_FLAG_PLAYER_CONTROLLED;
82 case 4: return UNIT_FLAG_RENAME;
83 case 5: return UNIT_FLAG_PREPARATION;
84 case 6: return UNIT_FLAG_UNK_6;
85 case 7: return UNIT_FLAG_NOT_ATTACKABLE_1;
86 case 8: return UNIT_FLAG_IMMUNE_TO_PC;
87 case 9: return UNIT_FLAG_IMMUNE_TO_NPC;
88 case 10: return UNIT_FLAG_LOOTING;
89 case 11: return UNIT_FLAG_PET_IN_COMBAT;
90 case 12: return UNIT_FLAG_PVP_ENABLING;
91 case 13: return UNIT_FLAG_FORCE_NAMEPLATE;
92 case 14: return UNIT_FLAG_CANT_SWIM;
93 case 15: return UNIT_FLAG_CAN_SWIM;
94 case 16: return UNIT_FLAG_NON_ATTACKABLE_2;
95 case 17: return UNIT_FLAG_PACIFIED;
96 case 18: return UNIT_FLAG_STUNNED;
97 case 19: return UNIT_FLAG_IN_COMBAT;
98 case 20: return UNIT_FLAG_ON_TAXI;
99 case 21: return UNIT_FLAG_DISARMED;
100 case 22: return UNIT_FLAG_CONFUSED;
101 case 23: return UNIT_FLAG_FLEEING;
102 case 24: return UNIT_FLAG_POSSESSED;
103 case 25: return UNIT_FLAG_UNINTERACTIBLE;
104 case 26: return UNIT_FLAG_SKINNABLE;
105 case 27: return UNIT_FLAG_MOUNT;
106 case 28: return UNIT_FLAG_UNK_28;
108 case 30: return UNIT_FLAG_SHEATHE;
109 case 31: return UNIT_FLAG_IMMUNE;
110 default: throw std::out_of_range("index");
111 }
112}
113
114template <>
116{
117 switch (value)
118 {
119 case UNIT_FLAG_SERVER_CONTROLLED: return 0;
120 case UNIT_FLAG_NON_ATTACKABLE: return 1;
121 case UNIT_FLAG_REMOVE_CLIENT_CONTROL: return 2;
122 case UNIT_FLAG_PLAYER_CONTROLLED: return 3;
123 case UNIT_FLAG_RENAME: return 4;
124 case UNIT_FLAG_PREPARATION: return 5;
125 case UNIT_FLAG_UNK_6: return 6;
126 case UNIT_FLAG_NOT_ATTACKABLE_1: return 7;
127 case UNIT_FLAG_IMMUNE_TO_PC: return 8;
128 case UNIT_FLAG_IMMUNE_TO_NPC: return 9;
129 case UNIT_FLAG_LOOTING: return 10;
130 case UNIT_FLAG_PET_IN_COMBAT: return 11;
131 case UNIT_FLAG_PVP_ENABLING: return 12;
132 case UNIT_FLAG_FORCE_NAMEPLATE: return 13;
133 case UNIT_FLAG_CANT_SWIM: return 14;
134 case UNIT_FLAG_CAN_SWIM: return 15;
135 case UNIT_FLAG_NON_ATTACKABLE_2: return 16;
136 case UNIT_FLAG_PACIFIED: return 17;
137 case UNIT_FLAG_STUNNED: return 18;
138 case UNIT_FLAG_IN_COMBAT: return 19;
139 case UNIT_FLAG_ON_TAXI: return 20;
140 case UNIT_FLAG_DISARMED: return 21;
141 case UNIT_FLAG_CONFUSED: return 22;
142 case UNIT_FLAG_FLEEING: return 23;
143 case UNIT_FLAG_POSSESSED: return 24;
144 case UNIT_FLAG_UNINTERACTIBLE: return 25;
145 case UNIT_FLAG_SKINNABLE: return 26;
146 case UNIT_FLAG_MOUNT: return 27;
147 case UNIT_FLAG_UNK_28: return 28;
149 case UNIT_FLAG_SHEATHE: return 30;
150 case UNIT_FLAG_IMMUNE: return 31;
151 default: throw std::out_of_range("value");
152 }
153}
154
155/****************************************************************\
156|* data for enum 'UnitFlags2' in 'UnitDefines.h' auto-generated *|
157\****************************************************************/
158template <>
160{
161 switch (value)
162 {
163 case UNIT_FLAG2_FEIGN_DEATH: return { "UNIT_FLAG2_FEIGN_DEATH", "UNIT_FLAG2_FEIGN_DEATH", "" };
164 case UNIT_FLAG2_HIDE_BODY: return { "UNIT_FLAG2_HIDE_BODY", "Hide Body", "Hide unit model (show only player equip)" };
165 case UNIT_FLAG2_IGNORE_REPUTATION: return { "UNIT_FLAG2_IGNORE_REPUTATION", "UNIT_FLAG2_IGNORE_REPUTATION", "" };
166 case UNIT_FLAG2_COMPREHEND_LANG: return { "UNIT_FLAG2_COMPREHEND_LANG", "UNIT_FLAG2_COMPREHEND_LANG", "" };
167 case UNIT_FLAG2_MIRROR_IMAGE: return { "UNIT_FLAG2_MIRROR_IMAGE", "UNIT_FLAG2_MIRROR_IMAGE", "" };
168 case UNIT_FLAG2_DONT_FADE_IN: return { "UNIT_FLAG2_DONT_FADE_IN", "Don't Fade In", "Unit model instantly appears when summoned (does not fade in)" };
169 case UNIT_FLAG2_FORCE_MOVEMENT: return { "UNIT_FLAG2_FORCE_MOVEMENT", "UNIT_FLAG2_FORCE_MOVEMENT", "" };
170 case UNIT_FLAG2_DISARM_OFFHAND: return { "UNIT_FLAG2_DISARM_OFFHAND", "UNIT_FLAG2_DISARM_OFFHAND", "" };
171 case UNIT_FLAG2_DISABLE_PRED_STATS: return { "UNIT_FLAG2_DISABLE_PRED_STATS", "UNIT_FLAG2_DISABLE_PRED_STATS", "Player has disabled predicted stats (Used by raid frames)" };
172 case UNIT_FLAG2_ALLOW_CHANGING_TALENTS: return { "UNIT_FLAG2_ALLOW_CHANGING_TALENTS", "UNIT_FLAG2_ALLOW_CHANGING_TALENTS", "Allows changing talents outside rest area" };
173 case UNIT_FLAG2_DISARM_RANGED: return { "UNIT_FLAG2_DISARM_RANGED", "UNIT_FLAG2_DISARM_RANGED", "this does not disable ranged weapon display (maybe additional flag needed?)" };
174 case UNIT_FLAG2_REGENERATE_POWER: return { "UNIT_FLAG2_REGENERATE_POWER", "UNIT_FLAG2_REGENERATE_POWER", "" };
175 case UNIT_FLAG2_RESTRICT_PARTY_INTERACTION: return { "UNIT_FLAG2_RESTRICT_PARTY_INTERACTION", "UNIT_FLAG2_RESTRICT_PARTY_INTERACTION", "Restrict interaction to party or raid" };
176 case UNIT_FLAG2_PREVENT_SPELL_CLICK: return { "UNIT_FLAG2_PREVENT_SPELL_CLICK", "UNIT_FLAG2_PREVENT_SPELL_CLICK", "Prevent spellclick" };
177 case UNIT_FLAG2_INTERACT_WHILE_HOSTILE: return { "UNIT_FLAG2_INTERACT_WHILE_HOSTILE", "Interact while Hostile", "" };
178 case UNIT_FLAG2_CANNOT_TURN: return { "UNIT_FLAG2_CANNOT_TURN", "Cannot Turn", "" };
179 case UNIT_FLAG2_UNK2: return { "UNIT_FLAG2_UNK2", "UNIT_FLAG2_UNK2", "" };
180 case UNIT_FLAG2_PLAY_DEATH_ANIM: return { "UNIT_FLAG2_PLAY_DEATH_ANIM", "UNIT_FLAG2_PLAY_DEATH_ANIM", "Plays special death animation upon death" };
181 case UNIT_FLAG2_ALLOW_CHEAT_SPELLS: return { "UNIT_FLAG2_ALLOW_CHEAT_SPELLS", "UNIT_FLAG2_ALLOW_CHEAT_SPELLS", "Allows casting spells with AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL" };
182 case UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER: return { "UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER", "Suppress highlight when targeted or moused over", "" };
183 case UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS: return { "UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS", "Treat as Raid Unit For Helpful Spells (Instances ONLY)", "" };
184 case UNIT_FLAG2_LARGE_AOI: return { "UNIT_FLAG2_LARGE_AOI", "Large (AOI)", "" };
185 case UNIT_FLAG2_GIGANTIC_AOI: return { "UNIT_FLAG2_GIGANTIC_AOI", "Gigantic (AOI)", "" };
186 case UNIT_FLAG2_NO_ACTIONS: return { "UNIT_FLAG2_NO_ACTIONS", "UNIT_FLAG2_NO_ACTIONS", "" };
187 case UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS: return { "UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS", "AI will only swim if target swims", "" };
188 case UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS: return { "UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS", "Don't generate combat log when engaged with NPC's", "" };
189 case UNIT_FLAG2_UNTARGETABLE_BY_CLIENT: return { "UNIT_FLAG2_UNTARGETABLE_BY_CLIENT", "Untargetable By Client", "" };
190 case UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES: return { "UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES", "Attacker Ignores Minimum Ranges", "" };
191 case UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE: return { "UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE", "Uninteractible If Hostile", "" };
192 case UNIT_FLAG2_UNUSED_11: return { "UNIT_FLAG2_UNUSED_11", "UNIT_FLAG2_UNUSED_11", "" };
193 case UNIT_FLAG2_INFINITE_AOI: return { "UNIT_FLAG2_INFINITE_AOI", "Infinite (AOI)", "" };
194 case UNIT_FLAG2_UNUSED_13: return { "UNIT_FLAG2_UNUSED_13", "UNIT_FLAG2_UNUSED_13", "" };
195 default: throw std::out_of_range("value");
196 }
197}
198
199template <>
201
202template <>
204{
205 switch (index)
206 {
207 case 0: return UNIT_FLAG2_FEIGN_DEATH;
208 case 1: return UNIT_FLAG2_HIDE_BODY;
209 case 2: return UNIT_FLAG2_IGNORE_REPUTATION;
210 case 3: return UNIT_FLAG2_COMPREHEND_LANG;
211 case 4: return UNIT_FLAG2_MIRROR_IMAGE;
212 case 5: return UNIT_FLAG2_DONT_FADE_IN;
213 case 6: return UNIT_FLAG2_FORCE_MOVEMENT;
214 case 7: return UNIT_FLAG2_DISARM_OFFHAND;
215 case 8: return UNIT_FLAG2_DISABLE_PRED_STATS;
217 case 10: return UNIT_FLAG2_DISARM_RANGED;
218 case 11: return UNIT_FLAG2_REGENERATE_POWER;
220 case 13: return UNIT_FLAG2_PREVENT_SPELL_CLICK;
221 case 14: return UNIT_FLAG2_INTERACT_WHILE_HOSTILE;
222 case 15: return UNIT_FLAG2_CANNOT_TURN;
223 case 16: return UNIT_FLAG2_UNK2;
224 case 17: return UNIT_FLAG2_PLAY_DEATH_ANIM;
225 case 18: return UNIT_FLAG2_ALLOW_CHEAT_SPELLS;
228 case 21: return UNIT_FLAG2_LARGE_AOI;
229 case 22: return UNIT_FLAG2_GIGANTIC_AOI;
230 case 23: return UNIT_FLAG2_NO_ACTIONS;
233 case 26: return UNIT_FLAG2_UNTARGETABLE_BY_CLIENT;
236 case 29: return UNIT_FLAG2_UNUSED_11;
237 case 30: return UNIT_FLAG2_INFINITE_AOI;
238 case 31: return UNIT_FLAG2_UNUSED_13;
239 default: throw std::out_of_range("index");
240 }
241}
242
243template <>
245{
246 switch (value)
247 {
248 case UNIT_FLAG2_FEIGN_DEATH: return 0;
249 case UNIT_FLAG2_HIDE_BODY: return 1;
250 case UNIT_FLAG2_IGNORE_REPUTATION: return 2;
251 case UNIT_FLAG2_COMPREHEND_LANG: return 3;
252 case UNIT_FLAG2_MIRROR_IMAGE: return 4;
253 case UNIT_FLAG2_DONT_FADE_IN: return 5;
254 case UNIT_FLAG2_FORCE_MOVEMENT: return 6;
255 case UNIT_FLAG2_DISARM_OFFHAND: return 7;
256 case UNIT_FLAG2_DISABLE_PRED_STATS: return 8;
258 case UNIT_FLAG2_DISARM_RANGED: return 10;
259 case UNIT_FLAG2_REGENERATE_POWER: return 11;
261 case UNIT_FLAG2_PREVENT_SPELL_CLICK: return 13;
262 case UNIT_FLAG2_INTERACT_WHILE_HOSTILE: return 14;
263 case UNIT_FLAG2_CANNOT_TURN: return 15;
264 case UNIT_FLAG2_UNK2: return 16;
265 case UNIT_FLAG2_PLAY_DEATH_ANIM: return 17;
266 case UNIT_FLAG2_ALLOW_CHEAT_SPELLS: return 18;
269 case UNIT_FLAG2_LARGE_AOI: return 21;
270 case UNIT_FLAG2_GIGANTIC_AOI: return 22;
271 case UNIT_FLAG2_NO_ACTIONS: return 23;
274 case UNIT_FLAG2_UNTARGETABLE_BY_CLIENT: return 26;
277 case UNIT_FLAG2_UNUSED_11: return 29;
278 case UNIT_FLAG2_INFINITE_AOI: return 30;
279 case UNIT_FLAG2_UNUSED_13: return 31;
280 default: throw std::out_of_range("value");
281 }
282}
283
284/****************************************************************\
285|* data for enum 'UnitFlags3' in 'UnitDefines.h' auto-generated *|
286\****************************************************************/
287template <>
289{
290 switch (value)
291 {
292 case UNIT_FLAG3_UNK0: return { "UNIT_FLAG3_UNK0", "UNIT_FLAG3_UNK0", "" };
293 case UNIT_FLAG3_UNCONSCIOUS_ON_DEATH: return { "UNIT_FLAG3_UNCONSCIOUS_ON_DEATH", "Unconscious on Death", "Shows \042Unconscious\042 in unit tooltip instead of \042Dead\042" };
294 case UNIT_FLAG3_ALLOW_MOUNTED_COMBAT: return { "UNIT_FLAG3_ALLOW_MOUNTED_COMBAT", "Allow mounted combat", "" };
295 case UNIT_FLAG3_GARRISON_PET: return { "UNIT_FLAG3_GARRISON_PET", "Garrison pet", "Special garrison pet creatures that display one of favorite player battle pets - this flag allows querying name and turns off default battle pet behavior" };
296 case UNIT_FLAG3_UI_CAN_GET_POSITION: return { "UNIT_FLAG3_UI_CAN_GET_POSITION", "UI Can Get Position", "Allows lua functions like UnitPosition to always get the position even for npcs or non-grouped players" };
297 case UNIT_FLAG3_AI_OBSTACLE: return { "UNIT_FLAG3_AI_OBSTACLE", "UNIT_FLAG3_AI_OBSTACLE", "" };
298 case UNIT_FLAG3_ALTERNATIVE_DEFAULT_LANGUAGE: return { "UNIT_FLAG3_ALTERNATIVE_DEFAULT_LANGUAGE", "UNIT_FLAG3_ALTERNATIVE_DEFAULT_LANGUAGE", "" };
299 case UNIT_FLAG3_SUPPRESS_ALL_NPC_FEEDBACK: return { "UNIT_FLAG3_SUPPRESS_ALL_NPC_FEEDBACK", "Suppress all NPC feedback", "Skips playing sounds on left clicking npc for all npcs as long as npc with this flag is visible" };
300 case UNIT_FLAG3_IGNORE_COMBAT: return { "UNIT_FLAG3_IGNORE_COMBAT", "Ignore Combat", "Same as SPELL_AURA_IGNORE_COMBAT" };
301 case UNIT_FLAG3_SUPPRESS_NPC_FEEDBACK: return { "UNIT_FLAG3_SUPPRESS_NPC_FEEDBACK", "Suppress NPC feedback", "Skips playing sounds on left clicking npc" };
302 case UNIT_FLAG3_UNK10: return { "UNIT_FLAG3_UNK10", "UNIT_FLAG3_UNK10", "" };
303 case UNIT_FLAG3_UNK11: return { "UNIT_FLAG3_UNK11", "UNIT_FLAG3_UNK11", "" };
304 case UNIT_FLAG3_UNK12: return { "UNIT_FLAG3_UNK12", "UNIT_FLAG3_UNK12", "" };
305 case UNIT_FLAG3_FAKE_DEAD: return { "UNIT_FLAG3_FAKE_DEAD", "Show as dead", "" };
306 case UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE: return { "UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE", "UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE", "Causes the creature to both not change facing on interaction and speeds up smooth facing changes while attacking (clientside)" };
307 case UNIT_FLAG3_UNTARGETABLE_FROM_UI: return { "UNIT_FLAG3_UNTARGETABLE_FROM_UI", "Untargetable from UI", "Cannot be targeted from lua functions StartAttack, TargetUnit, PetAttack" };
308 case UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD: return { "UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD", "UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD", "Prevents facing changes while interacting if creature has flag UNIT_FLAG3_FAKE_DEAD" };
309 case UNIT_FLAG3_ALREADY_SKINNED: return { "UNIT_FLAG3_ALREADY_SKINNED", "UNIT_FLAG3_ALREADY_SKINNED", "" };
310 case UNIT_FLAG3_SUPPRESS_ALL_NPC_SOUNDS: return { "UNIT_FLAG3_SUPPRESS_ALL_NPC_SOUNDS", "Suppress all NPC sounds", "Skips playing sounds on beginning and end of npc interaction for all npcs as long as npc with this flag is visible" };
311 case UNIT_FLAG3_SUPPRESS_NPC_SOUNDS: return { "UNIT_FLAG3_SUPPRESS_NPC_SOUNDS", "Suppress NPC sounds", "Skips playing sounds on beginning and end of npc interaction" };
312 case UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT: return { "UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT", "Allow Interaction While in Combat", "Allows using various NPC functions while in combat (vendor, gossip, questgiver)" };
313 case UNIT_FLAG3_UNK21: return { "UNIT_FLAG3_UNK21", "UNIT_FLAG3_UNK21", "" };
314 case UNIT_FLAG3_DONT_FADE_OUT: return { "UNIT_FLAG3_DONT_FADE_OUT", "UNIT_FLAG3_DONT_FADE_OUT", "" };
315 case UNIT_FLAG3_UNK23: return { "UNIT_FLAG3_UNK23", "UNIT_FLAG3_UNK23", "" };
316 case UNIT_FLAG3_FORCE_HIDE_NAMEPLATE: return { "UNIT_FLAG3_FORCE_HIDE_NAMEPLATE", "UNIT_FLAG3_FORCE_HIDE_NAMEPLATE", "" };
317 case UNIT_FLAG3_UNK25: return { "UNIT_FLAG3_UNK25", "UNIT_FLAG3_UNK25", "" };
318 case UNIT_FLAG3_UNK26: return { "UNIT_FLAG3_UNK26", "UNIT_FLAG3_UNK26", "" };
319 case UNIT_FLAG3_UNK27: return { "UNIT_FLAG3_UNK27", "UNIT_FLAG3_UNK27", "" };
320 case UNIT_FLAG3_UNK28: return { "UNIT_FLAG3_UNK28", "UNIT_FLAG3_UNK28", "" };
321 case UNIT_FLAG3_UNK29: return { "UNIT_FLAG3_UNK29", "UNIT_FLAG3_UNK29", "" };
322 case UNIT_FLAG3_UNK30: return { "UNIT_FLAG3_UNK30", "UNIT_FLAG3_UNK30", "" };
323 case UNIT_FLAG3_UNK31: return { "UNIT_FLAG3_UNK31", "UNIT_FLAG3_UNK31", "" };
324 default: throw std::out_of_range("value");
325 }
326}
327
328template <>
330
331template <>
333{
334 switch (index)
335 {
336 case 0: return UNIT_FLAG3_UNK0;
337 case 1: return UNIT_FLAG3_UNCONSCIOUS_ON_DEATH;
338 case 2: return UNIT_FLAG3_ALLOW_MOUNTED_COMBAT;
339 case 3: return UNIT_FLAG3_GARRISON_PET;
340 case 4: return UNIT_FLAG3_UI_CAN_GET_POSITION;
341 case 5: return UNIT_FLAG3_AI_OBSTACLE;
344 case 8: return UNIT_FLAG3_IGNORE_COMBAT;
346 case 10: return UNIT_FLAG3_UNK10;
347 case 11: return UNIT_FLAG3_UNK11;
348 case 12: return UNIT_FLAG3_UNK12;
349 case 13: return UNIT_FLAG3_FAKE_DEAD;
351 case 15: return UNIT_FLAG3_UNTARGETABLE_FROM_UI;
353 case 17: return UNIT_FLAG3_ALREADY_SKINNED;
355 case 19: return UNIT_FLAG3_SUPPRESS_NPC_SOUNDS;
357 case 21: return UNIT_FLAG3_UNK21;
358 case 22: return UNIT_FLAG3_DONT_FADE_OUT;
359 case 23: return UNIT_FLAG3_UNK23;
360 case 24: return UNIT_FLAG3_FORCE_HIDE_NAMEPLATE;
361 case 25: return UNIT_FLAG3_UNK25;
362 case 26: return UNIT_FLAG3_UNK26;
363 case 27: return UNIT_FLAG3_UNK27;
364 case 28: return UNIT_FLAG3_UNK28;
365 case 29: return UNIT_FLAG3_UNK29;
366 case 30: return UNIT_FLAG3_UNK30;
367 case 31: return UNIT_FLAG3_UNK31;
368 default: throw std::out_of_range("index");
369 }
370}
371
372template <>
374{
375 switch (value)
376 {
377 case UNIT_FLAG3_UNK0: return 0;
378 case UNIT_FLAG3_UNCONSCIOUS_ON_DEATH: return 1;
379 case UNIT_FLAG3_ALLOW_MOUNTED_COMBAT: return 2;
380 case UNIT_FLAG3_GARRISON_PET: return 3;
381 case UNIT_FLAG3_UI_CAN_GET_POSITION: return 4;
382 case UNIT_FLAG3_AI_OBSTACLE: return 5;
385 case UNIT_FLAG3_IGNORE_COMBAT: return 8;
387 case UNIT_FLAG3_UNK10: return 10;
388 case UNIT_FLAG3_UNK11: return 11;
389 case UNIT_FLAG3_UNK12: return 12;
390 case UNIT_FLAG3_FAKE_DEAD: return 13;
392 case UNIT_FLAG3_UNTARGETABLE_FROM_UI: return 15;
394 case UNIT_FLAG3_ALREADY_SKINNED: return 17;
396 case UNIT_FLAG3_SUPPRESS_NPC_SOUNDS: return 19;
398 case UNIT_FLAG3_UNK21: return 21;
399 case UNIT_FLAG3_DONT_FADE_OUT: return 22;
400 case UNIT_FLAG3_UNK23: return 23;
401 case UNIT_FLAG3_FORCE_HIDE_NAMEPLATE: return 24;
402 case UNIT_FLAG3_UNK25: return 25;
403 case UNIT_FLAG3_UNK26: return 26;
404 case UNIT_FLAG3_UNK27: return 27;
405 case UNIT_FLAG3_UNK28: return 28;
406 case UNIT_FLAG3_UNK29: return 29;
407 case UNIT_FLAG3_UNK30: return 30;
408 case UNIT_FLAG3_UNK31: return 31;
409 default: throw std::out_of_range("value");
410 }
411}
412
413/**************************************************************\
414|* data for enum 'NPCFlags' in 'UnitDefines.h' auto-generated *|
415\**************************************************************/
416template <>
418{
419 switch (value)
420 {
421 case UNIT_NPC_FLAG_NONE: return { "UNIT_NPC_FLAG_NONE", "UNIT_NPC_FLAG_NONE", "" };
422 case UNIT_NPC_FLAG_GOSSIP: return { "UNIT_NPC_FLAG_GOSSIP", "has gossip menu", "100%" };
423 case UNIT_NPC_FLAG_QUESTGIVER: return { "UNIT_NPC_FLAG_QUESTGIVER", "is quest giver", "100%" };
424 case UNIT_NPC_FLAG_UNK1: return { "UNIT_NPC_FLAG_UNK1", "UNIT_NPC_FLAG_UNK1", "" };
425 case UNIT_NPC_FLAG_UNK2: return { "UNIT_NPC_FLAG_UNK2", "UNIT_NPC_FLAG_UNK2", "" };
426 case UNIT_NPC_FLAG_TRAINER: return { "UNIT_NPC_FLAG_TRAINER", "is trainer", "100%" };
427 case UNIT_NPC_FLAG_TRAINER_CLASS: return { "UNIT_NPC_FLAG_TRAINER_CLASS", "is class trainer", "100%" };
428 case UNIT_NPC_FLAG_TRAINER_PROFESSION: return { "UNIT_NPC_FLAG_TRAINER_PROFESSION", "is profession trainer", "100%" };
429 case UNIT_NPC_FLAG_VENDOR: return { "UNIT_NPC_FLAG_VENDOR", "is vendor (generic)", "100%" };
430 case UNIT_NPC_FLAG_VENDOR_AMMO: return { "UNIT_NPC_FLAG_VENDOR_AMMO", "is vendor (ammo)", "100%, general goods vendor" };
431 case UNIT_NPC_FLAG_VENDOR_FOOD: return { "UNIT_NPC_FLAG_VENDOR_FOOD", "is vendor (food)", "100%" };
432 case UNIT_NPC_FLAG_VENDOR_POISON: return { "UNIT_NPC_FLAG_VENDOR_POISON", "is vendor (poison)", "guessed" };
433 case UNIT_NPC_FLAG_VENDOR_REAGENT: return { "UNIT_NPC_FLAG_VENDOR_REAGENT", "is vendor (reagents)", "100%" };
434 case UNIT_NPC_FLAG_REPAIR: return { "UNIT_NPC_FLAG_REPAIR", "can repair", "100%" };
435 case UNIT_NPC_FLAG_FLIGHTMASTER: return { "UNIT_NPC_FLAG_FLIGHTMASTER", "is flight master", "100%" };
436 case UNIT_NPC_FLAG_SPIRIT_HEALER: return { "UNIT_NPC_FLAG_SPIRIT_HEALER", "is spirit healer", "" };
437 case UNIT_NPC_FLAG_AREA_SPIRIT_HEALER: return { "UNIT_NPC_FLAG_AREA_SPIRIT_HEALER", "is area spirit healer", "" };
438 case UNIT_NPC_FLAG_INNKEEPER: return { "UNIT_NPC_FLAG_INNKEEPER", "is innkeeper", "" };
439 case UNIT_NPC_FLAG_BANKER: return { "UNIT_NPC_FLAG_BANKER", "is banker", "100%" };
440 case UNIT_NPC_FLAG_PETITIONER: return { "UNIT_NPC_FLAG_PETITIONER", "handles guild/arena petitions", "100% 0xC0000 = guild petitions, 0x40000 = arena team petitions" };
441 case UNIT_NPC_FLAG_TABARDDESIGNER: return { "UNIT_NPC_FLAG_TABARDDESIGNER", "is guild tabard designer", "100%" };
442 case UNIT_NPC_FLAG_BATTLEMASTER: return { "UNIT_NPC_FLAG_BATTLEMASTER", "is battlemaster", "100%" };
443 case UNIT_NPC_FLAG_AUCTIONEER: return { "UNIT_NPC_FLAG_AUCTIONEER", "is auctioneer", "100%" };
444 case UNIT_NPC_FLAG_STABLEMASTER: return { "UNIT_NPC_FLAG_STABLEMASTER", "is stable master", "100%" };
445 case UNIT_NPC_FLAG_GUILD_BANKER: return { "UNIT_NPC_FLAG_GUILD_BANKER", "is guild banker DESCRIPTION", "" };
446 case UNIT_NPC_FLAG_SPELLCLICK: return { "UNIT_NPC_FLAG_SPELLCLICK", "has spell click enabled", "" };
447 case UNIT_NPC_FLAG_PLAYER_VEHICLE: return { "UNIT_NPC_FLAG_PLAYER_VEHICLE", "is player vehicle", "players with mounts that have vehicle data should have it set" };
448 case UNIT_NPC_FLAG_MAILBOX: return { "UNIT_NPC_FLAG_MAILBOX", "is mailbox", "" };
449 case UNIT_NPC_FLAG_ARTIFACT_POWER_RESPEC: return { "UNIT_NPC_FLAG_ARTIFACT_POWER_RESPEC", "can reset artifact powers", "" };
450 case UNIT_NPC_FLAG_TRANSMOGRIFIER: return { "UNIT_NPC_FLAG_TRANSMOGRIFIER", "transmogrification", "" };
451 case UNIT_NPC_FLAG_VAULTKEEPER: return { "UNIT_NPC_FLAG_VAULTKEEPER", "is void storage", "" };
452 case UNIT_NPC_FLAG_WILD_BATTLE_PET: return { "UNIT_NPC_FLAG_WILD_BATTLE_PET", "is wild battle pet", "Pet that player can fight (Battle Pet)" };
453 case UNIT_NPC_FLAG_BLACK_MARKET: return { "UNIT_NPC_FLAG_BLACK_MARKET", "is black market", "" };
454 default: throw std::out_of_range("value");
455 }
456}
457
458template <>
460
461template <>
463{
464 switch (index)
465 {
466 case 0: return UNIT_NPC_FLAG_NONE;
467 case 1: return UNIT_NPC_FLAG_GOSSIP;
468 case 2: return UNIT_NPC_FLAG_QUESTGIVER;
469 case 3: return UNIT_NPC_FLAG_UNK1;
470 case 4: return UNIT_NPC_FLAG_UNK2;
471 case 5: return UNIT_NPC_FLAG_TRAINER;
472 case 6: return UNIT_NPC_FLAG_TRAINER_CLASS;
474 case 8: return UNIT_NPC_FLAG_VENDOR;
475 case 9: return UNIT_NPC_FLAG_VENDOR_AMMO;
476 case 10: return UNIT_NPC_FLAG_VENDOR_FOOD;
477 case 11: return UNIT_NPC_FLAG_VENDOR_POISON;
478 case 12: return UNIT_NPC_FLAG_VENDOR_REAGENT;
479 case 13: return UNIT_NPC_FLAG_REPAIR;
480 case 14: return UNIT_NPC_FLAG_FLIGHTMASTER;
481 case 15: return UNIT_NPC_FLAG_SPIRIT_HEALER;
482 case 16: return UNIT_NPC_FLAG_AREA_SPIRIT_HEALER;
483 case 17: return UNIT_NPC_FLAG_INNKEEPER;
484 case 18: return UNIT_NPC_FLAG_BANKER;
485 case 19: return UNIT_NPC_FLAG_PETITIONER;
486 case 20: return UNIT_NPC_FLAG_TABARDDESIGNER;
487 case 21: return UNIT_NPC_FLAG_BATTLEMASTER;
488 case 22: return UNIT_NPC_FLAG_AUCTIONEER;
489 case 23: return UNIT_NPC_FLAG_STABLEMASTER;
490 case 24: return UNIT_NPC_FLAG_GUILD_BANKER;
491 case 25: return UNIT_NPC_FLAG_SPELLCLICK;
492 case 26: return UNIT_NPC_FLAG_PLAYER_VEHICLE;
493 case 27: return UNIT_NPC_FLAG_MAILBOX;
495 case 29: return UNIT_NPC_FLAG_TRANSMOGRIFIER;
496 case 30: return UNIT_NPC_FLAG_VAULTKEEPER;
497 case 31: return UNIT_NPC_FLAG_WILD_BATTLE_PET;
498 case 32: return UNIT_NPC_FLAG_BLACK_MARKET;
499 default: throw std::out_of_range("index");
500 }
501}
502
503template <>
505{
506 switch (value)
507 {
508 case UNIT_NPC_FLAG_NONE: return 0;
509 case UNIT_NPC_FLAG_GOSSIP: return 1;
510 case UNIT_NPC_FLAG_QUESTGIVER: return 2;
511 case UNIT_NPC_FLAG_UNK1: return 3;
512 case UNIT_NPC_FLAG_UNK2: return 4;
513 case UNIT_NPC_FLAG_TRAINER: return 5;
514 case UNIT_NPC_FLAG_TRAINER_CLASS: return 6;
516 case UNIT_NPC_FLAG_VENDOR: return 8;
517 case UNIT_NPC_FLAG_VENDOR_AMMO: return 9;
518 case UNIT_NPC_FLAG_VENDOR_FOOD: return 10;
519 case UNIT_NPC_FLAG_VENDOR_POISON: return 11;
520 case UNIT_NPC_FLAG_VENDOR_REAGENT: return 12;
521 case UNIT_NPC_FLAG_REPAIR: return 13;
522 case UNIT_NPC_FLAG_FLIGHTMASTER: return 14;
523 case UNIT_NPC_FLAG_SPIRIT_HEALER: return 15;
524 case UNIT_NPC_FLAG_AREA_SPIRIT_HEALER: return 16;
525 case UNIT_NPC_FLAG_INNKEEPER: return 17;
526 case UNIT_NPC_FLAG_BANKER: return 18;
527 case UNIT_NPC_FLAG_PETITIONER: return 19;
528 case UNIT_NPC_FLAG_TABARDDESIGNER: return 20;
529 case UNIT_NPC_FLAG_BATTLEMASTER: return 21;
530 case UNIT_NPC_FLAG_AUCTIONEER: return 22;
531 case UNIT_NPC_FLAG_STABLEMASTER: return 23;
532 case UNIT_NPC_FLAG_GUILD_BANKER: return 24;
533 case UNIT_NPC_FLAG_SPELLCLICK: return 25;
534 case UNIT_NPC_FLAG_PLAYER_VEHICLE: return 26;
535 case UNIT_NPC_FLAG_MAILBOX: return 27;
537 case UNIT_NPC_FLAG_TRANSMOGRIFIER: return 29;
538 case UNIT_NPC_FLAG_VAULTKEEPER: return 30;
539 case UNIT_NPC_FLAG_WILD_BATTLE_PET: return 31;
540 case UNIT_NPC_FLAG_BLACK_MARKET: return 32;
541 default: throw std::out_of_range("value");
542 }
543}
544
545/***************************************************************\
546|* data for enum 'NPCFlags2' in 'UnitDefines.h' auto-generated *|
547\***************************************************************/
548template <>
550{
551 switch (value)
552 {
553 case UNIT_NPC_FLAG_2_NONE: return { "UNIT_NPC_FLAG_2_NONE", "UNIT_NPC_FLAG_2_NONE", "" };
554 case UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER: return { "UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER", "is item upgrade", "" };
555 case UNIT_NPC_FLAG_2_GARRISON_ARCHITECT: return { "UNIT_NPC_FLAG_2_GARRISON_ARCHITECT", "is garrison architect", "garrison building placement UI" };
556 case UNIT_NPC_FLAG_2_STEERING: return { "UNIT_NPC_FLAG_2_STEERING", "is avoiding obstacles", "clientside pathfinding" };
557 case UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL: return { "UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL", "is area spirit healer individual", "area spirit healer with individual timers" };
558 case UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER: return { "UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER", "is shipment crafter", "garrison work orders" };
559 case UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC: return { "UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC", "is garrison mission", "" };
560 case UNIT_NPC_FLAG_2_TRADESKILL_NPC: return { "UNIT_NPC_FLAG_2_TRADESKILL_NPC", "is tradeskill", "crafting at npc" };
561 case UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW: return { "UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW", "is black market view", "only allows viewing black market auctions, no bidding" };
562 case UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC: return { "UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC", "is garrrison talent", "" };
563 case UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR: return { "UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR", "is contribution collector", "" };
564 case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return { "UNIT_NPC_FLAG_2_AZERITE_RESPEC", "is azerite respec", "" };
565 case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return { "UNIT_NPC_FLAG_2_ISLANDS_QUEUE", "is islands queue", "" };
566 case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return { "UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION", "UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION", "" };
567 case UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER: return { "UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER", "is personal tabard designer", "" };
568 default: throw std::out_of_range("value");
569 }
570}
571
572template <>
574
575template <>
577{
578 switch (index)
579 {
580 case 0: return UNIT_NPC_FLAG_2_NONE;
583 case 3: return UNIT_NPC_FLAG_2_STEERING;
587 case 7: return UNIT_NPC_FLAG_2_TRADESKILL_NPC;
591 case 11: return UNIT_NPC_FLAG_2_AZERITE_RESPEC;
592 case 12: return UNIT_NPC_FLAG_2_ISLANDS_QUEUE;
595 default: throw std::out_of_range("index");
596 }
597}
598
599template <>
601{
602 switch (value)
603 {
604 case UNIT_NPC_FLAG_2_NONE: return 0;
607 case UNIT_NPC_FLAG_2_STEERING: return 3;
611 case UNIT_NPC_FLAG_2_TRADESKILL_NPC: return 7;
615 case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return 11;
616 case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return 12;
619 default: throw std::out_of_range("value");
620 }
621}
622}
#define TC_API_EXPORT
Definition: Define.h:92
UnitFlags2
Definition: UnitDefines.h:193
@ UNIT_FLAG2_UNK2
Definition: UnitDefines.h:210
@ UNIT_FLAG2_MIRROR_IMAGE
Definition: UnitDefines.h:198
@ UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS
Definition: UnitDefines.h:218
@ UNIT_FLAG2_INTERACT_WHILE_HOSTILE
Definition: UnitDefines.h:208
@ UNIT_FLAG2_UNUSED_13
Definition: UnitDefines.h:225
@ UNIT_FLAG2_PLAY_DEATH_ANIM
Definition: UnitDefines.h:211
@ UNIT_FLAG2_HIDE_BODY
Definition: UnitDefines.h:195
@ UNIT_FLAG2_IGNORE_REPUTATION
Definition: UnitDefines.h:196
@ UNIT_FLAG2_PREVENT_SPELL_CLICK
Definition: UnitDefines.h:207
@ UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE
Definition: UnitDefines.h:222
@ UNIT_FLAG2_RESTRICT_PARTY_INTERACTION
Definition: UnitDefines.h:206
@ UNIT_FLAG2_DISABLE_PRED_STATS
Definition: UnitDefines.h:202
@ UNIT_FLAG2_COMPREHEND_LANG
Definition: UnitDefines.h:197
@ UNIT_FLAG2_CANNOT_TURN
Definition: UnitDefines.h:209
@ UNIT_FLAG2_FORCE_MOVEMENT
Definition: UnitDefines.h:200
@ UNIT_FLAG2_GIGANTIC_AOI
Definition: UnitDefines.h:216
@ UNIT_FLAG2_ALLOW_CHEAT_SPELLS
Definition: UnitDefines.h:212
@ UNIT_FLAG2_FEIGN_DEATH
Definition: UnitDefines.h:194
@ UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES
Definition: UnitDefines.h:221
@ UNIT_FLAG2_INFINITE_AOI
Definition: UnitDefines.h:224
@ UNIT_FLAG2_NO_ACTIONS
Definition: UnitDefines.h:217
@ UNIT_FLAG2_REGENERATE_POWER
Definition: UnitDefines.h:205
@ UNIT_FLAG2_DONT_FADE_IN
Definition: UnitDefines.h:199
@ UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS
Definition: UnitDefines.h:219
@ UNIT_FLAG2_UNUSED_11
Definition: UnitDefines.h:223
@ UNIT_FLAG2_ALLOW_CHANGING_TALENTS
Definition: UnitDefines.h:203
@ UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER
Definition: UnitDefines.h:213
@ UNIT_FLAG2_DISARM_OFFHAND
Definition: UnitDefines.h:201
@ UNIT_FLAG2_LARGE_AOI
Definition: UnitDefines.h:215
@ UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS
Definition: UnitDefines.h:214
@ UNIT_FLAG2_UNTARGETABLE_BY_CLIENT
Definition: UnitDefines.h:220
@ UNIT_FLAG2_DISARM_RANGED
Definition: UnitDefines.h:204
NPCFlags
Non Player Character flags.
Definition: UnitDefines.h:295
@ UNIT_NPC_FLAG_VENDOR_AMMO
Definition: UnitDefines.h:305
@ UNIT_NPC_FLAG_TABARDDESIGNER
Definition: UnitDefines.h:316
@ UNIT_NPC_FLAG_SPIRIT_HEALER
Definition: UnitDefines.h:311
@ UNIT_NPC_FLAG_BANKER
Definition: UnitDefines.h:314
@ UNIT_NPC_FLAG_AUCTIONEER
Definition: UnitDefines.h:318
@ UNIT_NPC_FLAG_UNK2
Definition: UnitDefines.h:300
@ UNIT_NPC_FLAG_VENDOR_POISON
Definition: UnitDefines.h:307
@ UNIT_NPC_FLAG_AREA_SPIRIT_HEALER
Definition: UnitDefines.h:312
@ UNIT_NPC_FLAG_GUILD_BANKER
Definition: UnitDefines.h:320
@ UNIT_NPC_FLAG_VENDOR
Definition: UnitDefines.h:304
@ UNIT_NPC_FLAG_STABLEMASTER
Definition: UnitDefines.h:319
@ UNIT_NPC_FLAG_VENDOR_REAGENT
Definition: UnitDefines.h:308
@ UNIT_NPC_FLAG_GOSSIP
Definition: UnitDefines.h:297
@ UNIT_NPC_FLAG_NONE
Definition: UnitDefines.h:296
@ UNIT_NPC_FLAG_BATTLEMASTER
Definition: UnitDefines.h:317
@ UNIT_NPC_FLAG_VENDOR_FOOD
Definition: UnitDefines.h:306
@ UNIT_NPC_FLAG_QUESTGIVER
Definition: UnitDefines.h:298
@ UNIT_NPC_FLAG_ARTIFACT_POWER_RESPEC
Definition: UnitDefines.h:324
@ UNIT_NPC_FLAG_INNKEEPER
Definition: UnitDefines.h:313
@ UNIT_NPC_FLAG_SPELLCLICK
Definition: UnitDefines.h:321
@ UNIT_NPC_FLAG_UNK1
Definition: UnitDefines.h:299
@ UNIT_NPC_FLAG_TRANSMOGRIFIER
Definition: UnitDefines.h:325
@ UNIT_NPC_FLAG_BLACK_MARKET
Definition: UnitDefines.h:328
@ UNIT_NPC_FLAG_MAILBOX
Definition: UnitDefines.h:323
@ UNIT_NPC_FLAG_PLAYER_VEHICLE
Definition: UnitDefines.h:322
@ UNIT_NPC_FLAG_FLIGHTMASTER
Definition: UnitDefines.h:310
@ UNIT_NPC_FLAG_TRAINER_CLASS
Definition: UnitDefines.h:302
@ UNIT_NPC_FLAG_VAULTKEEPER
Definition: UnitDefines.h:326
@ UNIT_NPC_FLAG_TRAINER_PROFESSION
Definition: UnitDefines.h:303
@ UNIT_NPC_FLAG_REPAIR
Definition: UnitDefines.h:309
@ UNIT_NPC_FLAG_TRAINER
Definition: UnitDefines.h:301
@ UNIT_NPC_FLAG_PETITIONER
Definition: UnitDefines.h:315
@ UNIT_NPC_FLAG_WILD_BATTLE_PET
Definition: UnitDefines.h:327
UnitFlags3
Definition: UnitDefines.h:245
@ UNIT_FLAG3_UI_CAN_GET_POSITION
Definition: UnitDefines.h:250
@ UNIT_FLAG3_UNK28
Definition: UnitDefines.h:274
@ UNIT_FLAG3_SUPPRESS_ALL_NPC_SOUNDS
Definition: UnitDefines.h:264
@ UNIT_FLAG3_UNK29
Definition: UnitDefines.h:275
@ UNIT_FLAG3_UNK11
Definition: UnitDefines.h:257
@ UNIT_FLAG3_SUPPRESS_NPC_FEEDBACK
Definition: UnitDefines.h:255
@ UNIT_FLAG3_UNCONSCIOUS_ON_DEATH
Definition: UnitDefines.h:247
@ UNIT_FLAG3_UNK26
Definition: UnitDefines.h:272
@ UNIT_FLAG3_AI_OBSTACLE
Definition: UnitDefines.h:251
@ UNIT_FLAG3_FAKE_DEAD
Definition: UnitDefines.h:259
@ UNIT_FLAG3_UNK10
Definition: UnitDefines.h:256
@ UNIT_FLAG3_UNK0
Definition: UnitDefines.h:246
@ UNIT_FLAG3_UNTARGETABLE_FROM_UI
Definition: UnitDefines.h:261
@ UNIT_FLAG3_UNK23
Definition: UnitDefines.h:269
@ UNIT_FLAG3_UNK12
Definition: UnitDefines.h:258
@ UNIT_FLAG3_UNK27
Definition: UnitDefines.h:273
@ UNIT_FLAG3_NO_FACING_ON_INTERACT_WHILE_FAKE_DEAD
Definition: UnitDefines.h:262
@ UNIT_FLAG3_NO_FACING_ON_INTERACT_AND_FAST_FACING_CHASE
Definition: UnitDefines.h:260
@ UNIT_FLAG3_FORCE_HIDE_NAMEPLATE
Definition: UnitDefines.h:270
@ UNIT_FLAG3_ALTERNATIVE_DEFAULT_LANGUAGE
Definition: UnitDefines.h:252
@ UNIT_FLAG3_UNK30
Definition: UnitDefines.h:276
@ UNIT_FLAG3_GARRISON_PET
Definition: UnitDefines.h:249
@ UNIT_FLAG3_UNK21
Definition: UnitDefines.h:267
@ UNIT_FLAG3_ALREADY_SKINNED
Definition: UnitDefines.h:263
@ UNIT_FLAG3_IGNORE_COMBAT
Definition: UnitDefines.h:254
@ UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT
Definition: UnitDefines.h:266
@ UNIT_FLAG3_ALLOW_MOUNTED_COMBAT
Definition: UnitDefines.h:248
@ UNIT_FLAG3_UNK25
Definition: UnitDefines.h:271
@ UNIT_FLAG3_DONT_FADE_OUT
Definition: UnitDefines.h:268
@ UNIT_FLAG3_SUPPRESS_ALL_NPC_FEEDBACK
Definition: UnitDefines.h:253
@ UNIT_FLAG3_UNK31
Definition: UnitDefines.h:277
@ UNIT_FLAG3_SUPPRESS_NPC_SOUNDS
Definition: UnitDefines.h:265
NPCFlags2
Definition: UnitDefines.h:335
@ UNIT_NPC_FLAG_2_GARRISON_ARCHITECT
Definition: UnitDefines.h:338
@ UNIT_NPC_FLAG_2_STEERING
Definition: UnitDefines.h:339
@ UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW
Definition: UnitDefines.h:344
@ UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR
Definition: UnitDefines.h:346
@ UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC
Definition: UnitDefines.h:345
@ UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER
Definition: UnitDefines.h:337
@ UNIT_NPC_FLAG_2_AZERITE_RESPEC
Definition: UnitDefines.h:347
@ UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER
Definition: UnitDefines.h:350
@ UNIT_NPC_FLAG_2_NONE
Definition: UnitDefines.h:336
@ UNIT_NPC_FLAG_2_TRADESKILL_NPC
Definition: UnitDefines.h:343
@ UNIT_NPC_FLAG_2_ISLANDS_QUEUE
Definition: UnitDefines.h:348
@ UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL
Definition: UnitDefines.h:340
@ UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER
Definition: UnitDefines.h:341
@ UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION
Definition: UnitDefines.h:349
@ UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC
Definition: UnitDefines.h:342
UnitFlags
Definition: UnitDefines.h:143
@ UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT
Definition: UnitDefines.h:173
@ UNIT_FLAG_STUNNED
Definition: UnitDefines.h:162
@ UNIT_FLAG_PVP_ENABLING
Definition: UnitDefines.h:156
@ UNIT_FLAG_NON_ATTACKABLE
Definition: UnitDefines.h:145
@ UNIT_FLAG_UNK_6
Definition: UnitDefines.h:150
@ UNIT_FLAG_IN_COMBAT
Definition: UnitDefines.h:163
@ UNIT_FLAG_PREPARATION
Definition: UnitDefines.h:149
@ UNIT_FLAG_NON_ATTACKABLE_2
Definition: UnitDefines.h:160
@ UNIT_FLAG_IMMUNE_TO_NPC
Definition: UnitDefines.h:153
@ UNIT_FLAG_ON_TAXI
Definition: UnitDefines.h:164
@ UNIT_FLAG_POSSESSED
Definition: UnitDefines.h:168
@ UNIT_FLAG_IMMUNE
Definition: UnitDefines.h:175
@ UNIT_FLAG_SERVER_CONTROLLED
Definition: UnitDefines.h:144
@ UNIT_FLAG_DISARMED
Definition: UnitDefines.h:165
@ UNIT_FLAG_PACIFIED
Definition: UnitDefines.h:161
@ UNIT_FLAG_CAN_SWIM
Definition: UnitDefines.h:159
@ UNIT_FLAG_REMOVE_CLIENT_CONTROL
Definition: UnitDefines.h:146
@ UNIT_FLAG_CONFUSED
Definition: UnitDefines.h:166
@ UNIT_FLAG_FLEEING
Definition: UnitDefines.h:167
@ UNIT_FLAG_CANT_SWIM
Definition: UnitDefines.h:158
@ UNIT_FLAG_RENAME
Definition: UnitDefines.h:148
@ UNIT_FLAG_LOOTING
Definition: UnitDefines.h:154
@ UNIT_FLAG_UNINTERACTIBLE
Definition: UnitDefines.h:169
@ UNIT_FLAG_IMMUNE_TO_PC
Definition: UnitDefines.h:152
@ UNIT_FLAG_NOT_ATTACKABLE_1
Definition: UnitDefines.h:151
@ UNIT_FLAG_PLAYER_CONTROLLED
Definition: UnitDefines.h:147
@ UNIT_FLAG_FORCE_NAMEPLATE
Definition: UnitDefines.h:157
@ UNIT_FLAG_SKINNABLE
Definition: UnitDefines.h:170
@ UNIT_FLAG_MOUNT
Definition: UnitDefines.h:171
@ UNIT_FLAG_PET_IN_COMBAT
Definition: UnitDefines.h:155
@ UNIT_FLAG_UNK_28
Definition: UnitDefines.h:172
@ UNIT_FLAG_SHEATHE
Definition: UnitDefines.h:174
static size_t ToIndex(Enum index)
static EnumText ToString(Enum value)
static Enum FromIndex(size_t index)