TrinityCore
Loading...
Searching...
No Matches
CreatureData.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 CreatureData_h__
19#define CreatureData_h__
20
21#include "Common.h"
22#include "DBCEnums.h"
23#include "EnumFlag.h"
24#include "Optional.h"
25#include "SharedDefines.h"
26#include "SpawnData.h"
27#include "UnitDefines.h"
28#include <memory>
29#include <string>
30#include <unordered_map>
31#include <cmath>
32
33class WorldPacket;
34struct ItemTemplate;
35enum class VisibilityDistanceType : uint8;
36
38{
39 CREATURE_STATIC_FLAG_MOUNTABLE = 0x00000001, // Mountable
40 CREATURE_STATIC_FLAG_NO_XP = 0x00000002, // No XP | CREATURE_FLAG_EXTRA_NO_XP
41 CREATURE_STATIC_FLAG_NO_LOOT = 0x00000004, // No Loot
42 CREATURE_STATIC_FLAG_UNKILLABLE = 0x00000008, // Unkillable
43 CREATURE_STATIC_FLAG_TAMEABLE = 0x00000010, // Tameable | CREATURE_TYPE_FLAG_TAMEABLE
44 CREATURE_STATIC_FLAG_IMMUNE_PC = 0x00000020, // ImmunePC | UNIT_FLAG_IMMUNE_TO_PC
45 CREATURE_STATIC_FLAG_IMMUNE_NPC = 0x00000040, // ImmuneNPC | UNIT_FLAG_IMMUNE_TO_NPC
46 CREATURE_STATIC_FLAG_CAN_WIELD_LOOT = 0x00000080, // CanWieldLoot
47 CREATURE_STATIC_FLAG_SESSILE = 0x00000100, // Sessile | Rooted movementflag, creature is permanently rooted in place
48 CREATURE_STATIC_FLAG_UNINTERACTIBLE = 0x00000200, // Uninteractible | UNIT_FLAG_UNINTERACTIBLE
49 CREATURE_STATIC_FLAG_NO_AUTOMATIC_REGEN = 0x00000400, // No Automatic Regen | Creatures with that flag uses no UNIT_FLAG2_REGENERATE_POWER
50 CREATURE_STATIC_FLAG_DESPAWN_INSTANTLY = 0x00000800, // Despawn Instantly | Creature instantly disappear when killed
51 CREATURE_STATIC_FLAG_CORPSE_RAID = 0x00001000, // CorpseRaid
52 CREATURE_STATIC_FLAG_CREATOR_LOOT = 0x00002000, // Creator Loot | Lootable only by creator (engineering dummies)
53 CREATURE_STATIC_FLAG_NO_DEFENSE = 0x00004000, // No Defense
54 CREATURE_STATIC_FLAG_NO_SPELL_DEFENSE = 0x00008000, // No Spell Defense
55 CREATURE_STATIC_FLAG_RAID_BOSS_MOB = 0x00010000, // Raid Boss Mob | CREATURE_TYPE_FLAG_BOSS_MOB
56 CREATURE_STATIC_FLAG_COMBAT_PING = 0x00020000, // Combat Ping
57 CREATURE_STATIC_FLAG_AQUATIC = 0x00040000, // Aquatic (aka Water Only)
58 CREATURE_STATIC_FLAG_AMPHIBIOUS = 0x00080000, // Amphibious | Creatures will be able to enter and leave water but can only move on the ocean floor when CREATURE_STATIC_FLAG_CAN_SWIM is not present
59 CREATURE_STATIC_FLAG_NO_MELEE_FLEE = 0x00100000, // No Melee (Flee) | Prevents melee (moves as-if feared, does not make creature passive)
60 CREATURE_STATIC_FLAG_VISIBLE_TO_GHOSTS = 0x00200000, // Visible to Ghosts | CREATURE_TYPE_FLAG_VISIBLE_TO_GHOSTS
61 CREATURE_STATIC_FLAG_PVP_ENABLING = 0x00400000, // PvP Enabling | Old UNIT_FLAG_PVP_ENABLING, now UNIT_BYTES_2_OFFSET_PVP_FLAG from UNIT_FIELD_BYTES_2
62 CREATURE_STATIC_FLAG_DO_NOT_PLAY_WOUND_ANIM = 0x00800000, // Do Not Play Wound Anim | CREATURE_TYPE_FLAG_DO_NOT_PLAY_WOUND_ANIM
63 CREATURE_STATIC_FLAG_NO_FACTION_TOOLTIP = 0x01000000, // No Faction Tooltip | CREATURE_TYPE_FLAG_NO_FACTION_TOOLTIP
64 CREATURE_STATIC_FLAG_IGNORE_COMBAT = 0x02000000, // Ignore Combat | Actually only changes react state to passive
65 CREATURE_STATIC_FLAG_ONLY_ATTACK_TARGETS_THAT_ARE_PVP_ENABLING = 0x04000000, // Only attack targets that are PvP enabling
66 CREATURE_STATIC_FLAG_CALLS_GUARDS = 0x08000000, // Calls Guards | Creature will summon a guard if player is within its aggro range (even if creature doesn't attack per se)
67 CREATURE_STATIC_FLAG_CAN_SWIM = 0x10000000, // Can Swim | UnitFlags 0x8000 UNIT_FLAG_CAN_SWIM
68 CREATURE_STATIC_FLAG_FLOATING = 0x20000000, // Floating <Don't Use> | sets DisableGravity movementflag on spawn/reset
69 CREATURE_STATIC_FLAG_MORE_AUDIBLE = 0x40000000, // More Audible: Caution, Expensive | CREATURE_TYPE_FLAG_MORE_AUDIBLE
70 CREATURE_STATIC_FLAG_LARGE_AOI = 0x80000000 // Large (AOI): Caution, Expensive | UnitFlags2 0x200000
71};
72
74
76{
77 CREATURE_STATIC_FLAG_2_NO_PET_SCALING = 0x00000001, // No Pet Scaling
78 CREATURE_STATIC_FLAG_2_FORCE_RAID_COMBAT = 0x00000002, // Force Raid Combat
79 CREATURE_STATIC_FLAG_2_LOCK_TAPPERS_TO_RAID_ON_DEATH = 0x00000004, // Lock Tappers To Raid On Death | toggleable by 'Set "RAID_LOCK_ON_DEATH" flag for unit(s)' action, CREATURE_FLAG_EXTRA_INSTANCE_BIND
80 CREATURE_STATIC_FLAG_2_NO_HARMFUL_VERTEX_COLORING = 0x00000008, // No Harmful Vertex Coloring
81 CREATURE_STATIC_FLAG_2_NO_CRUSHING_BLOWS = 0x00000010, // No Crushing Blows | CREATURE_FLAG_EXTRA_NO_CRUSHING_BLOWS
82 CREATURE_STATIC_FLAG_2_NO_OWNER_THREAT = 0x00000020, // No Owner Threat
83 CREATURE_STATIC_FLAG_2_NO_WOUNDED_SLOWDOWN = 0x00000040, // No Wounded Slowdown
84 CREATURE_STATIC_FLAG_2_USE_CREATOR_BONUSES = 0x00000080, // Use Creator Bonuses
85 CREATURE_STATIC_FLAG_2_IGNORE_FEIGN_DEATH = 0x00000100, // Ignore Feign Death | CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH
86 CREATURE_STATIC_FLAG_2_IGNORE_SANCTUARY = 0x00000200, // Ignore Sanctuary | Ignores SPELL_EFFECT_SANCTUARY
87 CREATURE_STATIC_FLAG_2_ACTION_TRIGGERS_WHILE_CHARMED = 0x00000400, // Action Triggers While Charmed
88 CREATURE_STATIC_FLAG_2_INTERACT_WHILE_DEAD = 0x00000800, // Interact While Dead | CREATURE_TYPE_FLAG_INTERACT_WHILE_DEAD
89 CREATURE_STATIC_FLAG_2_NO_INTERRUPT_SCHOOL_COOLDOWN = 0x00001000, // No Interrupt School Cooldown
90 CREATURE_STATIC_FLAG_2_RETURN_SOUL_SHARD_TO_MASTER_OF_PET = 0x00002000, // Return soul shard to master of pet
91 CREATURE_STATIC_FLAG_2_SKIN_WITH_HERBALISM = 0x00004000, // Skin With Herbalism | CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM
92 CREATURE_STATIC_FLAG_2_SKIN_WITH_MINING = 0x00008000, // Skin With Mining | CREATURE_TYPE_FLAG_SKIN_WITH_MINING
93 CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_ON_DEATH = 0x00010000, // Alert Content Team on Death
94 CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_AT_90_PCT_HEALTH = 0x00020000, // Alert Content Team at 90% Health
95 CREATURE_STATIC_FLAG_2_ALLOW_MOUNTED_COMBAT = 0x00040000, // Allow Mounted Combat | CREATURE_TYPE_FLAG_ALLOW_MOUNTED_COMBAT
96 CREATURE_STATIC_FLAG_2_PVP_ENABLING_OOC = 0x00080000, // PvP Enabling OOC
97 CREATURE_STATIC_FLAG_2_NO_DEATH_MESSAGE = 0x00100000, // No Death Message | CREATURE_TYPE_FLAG_NO_DEATH_MESSAGE
98 CREATURE_STATIC_FLAG_2_IGNORE_PATHING_FAILURE = 0x00200000, // Ignore Pathing Failure
99 CREATURE_STATIC_FLAG_2_FULL_SPELL_LIST = 0x00400000, // Full Spell List
100 CREATURE_STATIC_FLAG_2_DOESNT_REDUCE_REPUTATION_FOR_RAIDS = 0x00800000, // Doesn't Reduce Reputation for raids
101 CREATURE_STATIC_FLAG_2_IGNORE_MISDIRECTION = 0x01000000, // Ignore Misdirection
102 CREATURE_STATIC_FLAG_2_HIDE_BODY = 0x02000000, // Hide Body | UNIT_FLAG2_HIDE_BODY
103 CREATURE_STATIC_FLAG_2_SPAWN_DEFENSIVE = 0x04000000, // Spawn Defensive
104 CREATURE_STATIC_FLAG_2_SERVER_ONLY = 0x08000000, // Server Only
105 CREATURE_STATIC_FLAG_2_NO_COLLISION = 0x10000000, // No Collision
106 CREATURE_STATIC_FLAG_2_PLAYER_CAN_HEAL_OR_BUFF = 0x20000000, // Player Can Heal/Buff | CREATURE_TYPE_FLAG_CAN_ASSIST
107 CREATURE_STATIC_FLAG_2_NO_SKILL_GAINS = 0x40000000, // No Skill Gains | CREATURE_FLAG_EXTRA_NO_SKILL_GAINS
108 CREATURE_STATIC_FLAG_2_NO_PET_BAR = 0x80000000 // No Pet Bar | CREATURE_TYPE_FLAG_NO_PET_BAR
110
112
114{
115 CREATURE_STATIC_FLAG_3_NO_DAMAGE_HISTORY = 0x00000001, // No Damage History
116 CREATURE_STATIC_FLAG_3_DONT_PVP_ENABLE_OWNER = 0x00000002, // Don't PvP Enable Owner
117 CREATURE_STATIC_FLAG_3_DONT_FADE_IN = 0x00000004, // Don't Fade In | UNIT_FLAG2_DO_NOT_FADE_IN
118 CREATURE_STATIC_FLAG_3_NON_UNIQUE_IN_COMBAT_LOG = 0x00000008, // Non-Unique In Combat Log
119 CREATURE_STATIC_FLAG_3_SKIN_WITH_ENGINEERING = 0x00000010, // Skin With Engineering | CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING
120 CREATURE_STATIC_FLAG_3_NO_AGGRO_ON_LEASH = 0x00000020, // No Aggro On Leash
121 CREATURE_STATIC_FLAG_3_NO_FRIENDLY_AREA_AURAS = 0x00000040, // No Friendly Area Auras
122 CREATURE_STATIC_FLAG_3_EXTENDED_CORPSE_DURATION = 0x00000080, // Extended Corpse Duration
123 CREATURE_STATIC_FLAG_3_CANT_SWIM = 0x00000100, // Can't Swim | UNIT_FLAG_CANNOT_SWIM
124 CREATURE_STATIC_FLAG_3_TAMEABLE_EXOTIC = 0x00000200, // Tameable (Exotic) | CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC
125 CREATURE_STATIC_FLAG_3_GIGANTIC_AOI = 0x00000400, // Gigantic (AOI): Caution, Expensive | UnitFlags2 0x400000
126 CREATURE_STATIC_FLAG_3_INFINITE_AOI = 0x00000800, // Infinite (AOI): Caution, Expensive | UnitFlags2 0x40000000
127 CREATURE_STATIC_FLAG_3_CANNOT_PENETRATE_WATER = 0x00001000, // Cannot Penetrate Water | Waterwalking
128 CREATURE_STATIC_FLAG_3_NO_NAME_PLATE = 0x00002000, // No Name Plate | CREATURE_TYPE_FLAG_NO_NAME_PLATE
129 CREATURE_STATIC_FLAG_3_CHECKS_LIQUIDS = 0x00004000, // Checks Liquids: Caution, Expensive
130 CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK = 0x00008000, // No Threat Feedback
131 CREATURE_STATIC_FLAG_3_USE_MODEL_COLLISION_SIZE = 0x00010000, // Use Model Collision Size (TALK TO A PROGRAMMER FIRST) | CREATURE_TYPE_FLAG_USE_MODEL_COLLISION_SIZE
132 CREATURE_STATIC_FLAG_3_ATTACKER_IGNORES_FACING = 0x00020000, // Attacker Ignores Facing
133 CREATURE_STATIC_FLAG_3_ALLOW_INTERACTION_WHILE_IN_COMBAT = 0x00040000, // Allow Interaction While in Combat | CREATURE_TYPE_FLAG_ALLOW_INTERACTION_WHILE_IN_COMBAT
134 CREATURE_STATIC_FLAG_3_SPELL_CLICK_FOR_PARTY_ONLY = 0x00080000, // Spell Click for Party Only
135 CREATURE_STATIC_FLAG_3_FACTION_LEADER = 0x00100000, // Faction Leader
136 CREATURE_STATIC_FLAG_3_IMMUNE_TO_PLAYER_BUFFS = 0x00200000, // Immune to Player Buffs
137 CREATURE_STATIC_FLAG_3_COLLIDE_WITH_MISSILES = 0x00400000, // Collide With Missiles | CREATURE_TYPE_FLAG_COLLIDE_WITH_MISSILES
138 CREATURE_STATIC_FLAG_3_DO_NOT_TAP = 0x00800000, // Do Not Tap (Credit to threat list)
139 CREATURE_STATIC_FLAG_3_DISABLE_DODGE_PARRY_AND_BLOCK_ANIMATIONS = 0x01000000, // Disable Dodge, Parry and Block Animations | CREATURE_TYPE_FLAG_DO_NOT_PLAY_MOUNTED_ANIMATIONS
140 CREATURE_STATIC_FLAG_3_CANNOT_TURN = 0x02000000, // Cannot Turn | UNIT_FLAG2_CANNOT_TURN
141 CREATURE_STATIC_FLAG_3_ENEMY_CHECK_IGNORES_LINE_OF_SIGHT = 0x04000000, // Enemy Check Ignores Line of Sight
142 CREATURE_STATIC_FLAG_3_FOREVER_CORPSE_DURATION = 0x08000000, // Forever Corpse Duration (7 days)
143 CREATURE_STATIC_FLAG_3_PETS_ATTACK_WITH_3D_PATHING = 0x10000000, // Pets attack with 3d pathing (Kologarn)
144 CREATURE_STATIC_FLAG_3_LINK_ALL_FLAG = 0x20000000, // LinkAll flag (TALK TO A PROGRAMMER FIRST) | CREATURE_TYPE_FLAG_LINK_ALL
145 CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_TAKEOFF_IN_COMBAT = 0x40000000, // AI Can Auto Takeoff in Combat
146 CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_LAND_IN_COMBAT = 0x80000000 // AI Can Auto Land in Combat
148
150
152{
153 CREATURE_STATIC_FLAG_4_NO_BIRTH_ANIM = 0x00000001, // No Birth Anim
154 CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_DIMINISHING_RETURNS = 0x00000002, // Treat as Player for Diminishing Returns
155 CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_PVP_DEBUFF_DURATION = 0x00000004, // Treat as Player for PvP Debuff Duration
156 CREATURE_STATIC_FLAG_4_ONLY_DISPLAY_GOSSIP_FOR_SUMMONER = 0x00000008, // Only Display Gossip for Summoner | CREATURE_TYPE_FLAG_INTERACT_ONLY_WITH_CREATOR
157 CREATURE_STATIC_FLAG_4_NO_DEATH_SCREAM = 0x00000010, // No Death Scream | CREATURE_TYPE_FLAG_DO_NOT_PLAY_UNIT_EVENT_SOUNDS
158 CREATURE_STATIC_FLAG_4_CAN_BE_HEALED_BY_ENEMIES = 0x00000020, // Can be Healed by Enemies | CREATURE_TYPE_FLAG_HAS_NO_SHADOW_BLOB
159 CREATURE_STATIC_FLAG_4_DEALS_TRIPLE_DAMAGE_TO_PC_CONTROLLED_PETS= 0x00000040, // Deals triple damage to PC controlled pets
160 CREATURE_STATIC_FLAG_4_NO_NPC_DAMAGE_BELOW_85_PCT = 0x00000080, // No NPC damage below 85%
161 CREATURE_STATIC_FLAG_4_OBEYS_TAUNT_DIMINISHING_RETURNS = 0x00000100, // Obeys Taunt Diminishing Returns | CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS
162 CREATURE_STATIC_FLAG_4_NO_MELEE_APPROACH = 0x00000200, // No Melee (Approach) | Prevents melee (chases into melee range, does not make creature passive)
163 CREATURE_STATIC_FLAG_4_UPDATE_CREATURE_RECORD_WHEN_INSTANCE_CHANGES_DIFFICULTY = 0x00000400, // Update Creature Record when instance changes difficulty
164 CREATURE_STATIC_FLAG_4_CANNOT_DAZE = 0x00000800, // Cannot Daze (Combat Stun)
165 CREATURE_STATIC_FLAG_4_FLAT_HONOR_AWARD = 0x00001000, // Flat Honor Award
166 CREATURE_STATIC_FLAG_4_IGNORE_LOS_WHEN_CASTING_ON_ME = 0x00002000, // Other objects can ignore line of sight requirements when casting spells on me
167 CREATURE_STATIC_FLAG_4_GIVE_QUEST_KILL_CREDIT_WHILE_OFFLINE = 0x00004000, // Give quest kill credit while offline
168 CREATURE_STATIC_FLAG_4_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS = 0x00008000, // Treat as Raid Unit For Helpful Spells (Instances ONLY) | CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT
169 CREATURE_STATIC_FLAG_4_DONT_REPOSITION_BECAUSE_MELEE_TARGET_IS_TOO_CLOSE = 0x00010000, // Don't reposition because melee target is too close
170 CREATURE_STATIC_FLAG_4_PET_OR_GUARDIAN_AI_DONT_GO_BEHIND_TARGET = 0x00020000, // Pet/Guardian AI Don't Go Behind Target
171 CREATURE_STATIC_FLAG_4_5_MINUTE_LOOT_ROLL_TIMER = 0x00040000, // 5 Minute loot roll timer
172 CREATURE_STATIC_FLAG_4_FORCE_GOSSIP = 0x00080000, // Force Gossip | CREATURE_TYPE_FLAG_FORCE_GOSSIP
173 CREATURE_STATIC_FLAG_4_DONT_REPOSITION_WITH_FRIENDS_IN_COMBAT = 0x00100000, // Don't reposition with friends in combat
174 CREATURE_STATIC_FLAG_4_MANUAL_SHEATHING_CONTROL = 0x00200000, // Manual Sheathing control | CREATURE_TYPE_FLAG_DO_NOT_SHEATHE
175 CREATURE_STATIC_FLAG_4_ATTACKER_IGNORES_MINIMUM_RANGES = 0x00400000, // Attacker Ignores Minimum Ranges | UnitFlags2 0x8000000
176 CREATURE_STATIC_FLAG_4_SUPPRESS_INSTANCE_WIDE_RELEASE_IN_COMBAT = 0x00800000, // Suppress Instance Wide Release in Combat
177 CREATURE_STATIC_FLAG_4_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS = 0x01000000, // AI will only swim if target swims | UnitFlags2 0x1000000
178 CREATURE_STATIC_FLAG_4_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS = 0x02000000, // Don't generate combat log when engaged with NPC's | UnitFlags2 0x2000000
179 CREATURE_STATIC_FLAG_4_ALLOW_NPC_COMBAT_WHILE_UNINTERACTIBLE = 0x04000000, // Allow NPC Combat while Uninteractible
180 CREATURE_STATIC_FLAG_4_PREFER_NPCS_WHEN_SEARCHING_FOR_ENEMIES = 0x08000000, // Prefer NPCs When Searching For Enemies
181 CREATURE_STATIC_FLAG_4_ONLY_GENERATE_INITIAL_THREAT = 0x10000000, // Only Generate Initial Threat
182 CREATURE_STATIC_FLAG_4_DOESNT_CHANGE_TARGET_ON_RIGHT_CLICK = 0x20000000, // Doesn't change target on right click | CREATURE_TYPE_FLAG_DO_NOT_TARGET_ON_INTERACTION
183 CREATURE_STATIC_FLAG_4_HIDE_NAME_IN_WORLD_FRAME = 0x40000000, // Hide name in world frame | CREATURE_TYPE_FLAG_DO_NOT_RENDER_OBJECT_NAME
184 CREATURE_STATIC_FLAG_4_QUEST_BOSS = 0x80000000 // Quest Boss | CREATURE_TYPE_FLAG_QUEST_BOSS
186
188
190{
191 CREATURE_STATIC_FLAG_5_UNTARGETABLE_BY_CLIENT = 0x00000001, // Untargetable By Client | UnitFlags2 0x4000000 UNIT_FLAG2_UNTARGETABLE_BY_CLIENT
192 CREATURE_STATIC_FLAG_5_FORCE_SELF_MOUNTING = 0x00000002, // Force Self Mounting
193 CREATURE_STATIC_FLAG_5_UNINTERACTIBLE_IF_HOSTILE = 0x00000004, // Uninteractible If Hostile | UnitFlags2 0x10000000 UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE
194 CREATURE_STATIC_FLAG_5_DISABLES_XP_AWARD = 0x00000008, // Disables XP Award
195 CREATURE_STATIC_FLAG_5_DISABLE_AI_PREDICTION = 0x00000010, // Disable AI prediction
196 CREATURE_STATIC_FLAG_5_NO_LEAVE_COMBAT_STATE_RESTORE = 0x00000020, // No LeaveCombat State Restore
197 CREATURE_STATIC_FLAG_5_BYPASS_INTERACT_INTERRUPTS = 0x00000040, // Bypass Interact Interrupts
198 CREATURE_STATIC_FLAG_5_240_DEGREE_BACK_ARC = 0x00000080, // 240 Degree Back Arc
199 CREATURE_STATIC_FLAG_5_INTERACT_WHILE_HOSTILE = 0x00000100, // Interact while Hostile | UnitFlags2 0x4000 UNIT_FLAG2_INTERACT_WHILE_HOSTILE
200 CREATURE_STATIC_FLAG_5_DONT_DISMISS_ON_FLYING_MOUNT = 0x00000200, // Don't Dismiss On Flying Mount
201 CREATURE_STATIC_FLAG_5_PREDICTIVE_POWER_REGEN = 0x00000400, // Predictive Power Regen | CREATURE_TYPE_FLAG_2_PREDICTIVE_POWER_REGEN
202 CREATURE_STATIC_FLAG_5_HIDE_LEVEL_INFO_IN_TOOLTIP = 0x00000800, // Hide Level Info In Tooltip | CREATURE_TYPE_FLAG_2_HIDE_LEVEL_INFO_IN_TOOLTIP
203 CREATURE_STATIC_FLAG_5_HIDE_HEALTH_BAR_UNDER_TOOLTIP = 0x00001000, // Hide Health Bar Under Tooltip | CREATURE_TYPE_FLAG_2_HIDE_HEALTH_BAR_UNDER_TOOLTIP
204 CREATURE_STATIC_FLAG_5_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER = 0x00002000, // Suppress highlight when targeted or moused over | UnitFlags2 0x80000 UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER
205 CREATURE_STATIC_FLAG_5_AI_PREFER_PATHABLE_TARGETS = 0x00004000, // AI Prefer pathable targets
206 CREATURE_STATIC_FLAG_5_FREQUENT_AREA_TRIGGER_CHECKS = 0x00008000, // Frequent Area Trigger Checks (EXPENSIVE/TALK TO A PROGRAMMER FIRST)
207 CREATURE_STATIC_FLAG_5_ASSIGN_KILL_CREDIT_TO_ENCOUNTER_LIST = 0x00010000, // Assign Kill Credit to Encounter List
208 CREATURE_STATIC_FLAG_5_NEVER_EVADE = 0x00020000, // Never Evade
209 CREATURE_STATIC_FLAG_5_AI_CANT_PATH_ON_STEEP_SLOPES = 0x00040000, // AI Can't path on Steep Slopes
210 CREATURE_STATIC_FLAG_5_AI_IGNORE_LOS_TO_MELEE_TARGET = 0x00080000, // AI Ignore Los To Melee Target
211 CREATURE_STATIC_FLAG_5_NEVER_DISPLAY_EMOTE_OR_CHAT_TEXT_IN_A_CHAT_BUBBLE = 0x00100000, // Never display emote or chat text in a chat bubble | CREATURE_TYPEFLAGS_2_UNK4
212 CREATURE_STATIC_FLAG_5_AI_PETS_CLOSE_IN_ON_UNPATHABLE_TARGET = 0x00200000, // AI Pets close in on unpathable target
213 CREATURE_STATIC_FLAG_5_PET_OR_GUARDIAN_AI_DONT_GO_BEHIND_ME = 0x00400000, // Pet/Guardian AI Don't Go Behind Me (use on target)
214 CREATURE_STATIC_FLAG_5_NO_DEATH_THUD = 0x00800000, // No Death Thud | CREATURE_TYPE_FLAG_2_NO_DEATH_THUD
215 CREATURE_STATIC_FLAG_5_CLIENT_LOCAL_CREATURE = 0x01000000, // Client Local Creature
216 CREATURE_STATIC_FLAG_5_CAN_DROP_LOOT_WHILE_IN_A_CHALLENGE_MODE_INSTANCE = 0x02000000, // Can drop loot while in a challenge mode instance
217 CREATURE_STATIC_FLAG_5_HAS_SAFE_LOCATION = 0x04000000, // Has Safe Location
218 CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN = 0x08000000, // No Health Regen
219 CREATURE_STATIC_FLAG_5_NO_POWER_REGEN = 0x10000000, // No Power Regen
220 CREATURE_STATIC_FLAG_5_NO_PET_UNIT_FRAME = 0x20000000, // No Pet Unit Frame
221 CREATURE_STATIC_FLAG_5_NO_INTERACT_ON_LEFT_CLICK = 0x40000000, // No Interact On Left Click | CREATURE_TYPE_FLAG_2_NO_INTERACT_ON_LEFT_CLICK
222 CREATURE_STATIC_FLAG_5_GIVE_CRITERIA_KILL_CREDIT_WHEN_CHARMED = 0x80000000 // Give criteria kill credit when charmed
224
226
228{
229 CREATURE_STATIC_FLAG_6_DO_NOT_AUTO_RESUMMON_THIS_COMPANION_CREATURE = 0x00000001, // Do not auto-resummon this companion creature
230 CREATURE_STATIC_FLAG_6_SMOOTH_PHASING_REPLACE_VISIBLE_UNIT_IF_AVAILABLE = 0x00000002, // Smooth Phasing: Replace visible unit if available (ASK PROGRAMMER FIRST)
231 CREATURE_STATIC_FLAG_6_IGNORE_THE_REALM_COALESCING_HIDING_CODE = 0x00000004, // Ignore the realm coalescing hiding code (always show)
232 CREATURE_STATIC_FLAG_6_TAPS_TO_FACTION = 0x00000008, // Taps to Faction
233 CREATURE_STATIC_FLAG_6_ONLY_QUEST_GIVER_FOR_SUMMONER = 0x00000010, // Only QuestGiver for Summoner
234 CREATURE_STATIC_FLAG_6_AI_COMBAT_RETURN_PRECISE = 0x00000020, // AI Combat Return Precise
235 CREATURE_STATIC_FLAG_6_HOME_REALM_ONLY_LOOT = 0x00000040, // Home realm only loot
236 CREATURE_STATIC_FLAG_6_NO_INTERACT_RESPONSE = 0x00000080, // No Interact Response | TFLAG2_UNK7
237 CREATURE_STATIC_FLAG_6_NO_INITIAL_POWER = 0x00000100, // No Initial Power
238 CREATURE_STATIC_FLAG_6_DONT_CANCEL_CHANNEL_ON_MASTER_MOUNTING = 0x00000200, // Don't Cancel Channel On Master Mounting
239 CREATURE_STATIC_FLAG_6_CAN_TOGGLE_BETWEEN_DEATH_AND_PERSONAL_LOOT = 0x00000400, // Can Toggle between Death and Personal Loot
240 CREATURE_STATIC_FLAG_6_ALWAYS_STAND_ON_TARGET = 0x00000800, // Always, ALWAYS tries to stand right on top of his move to target. ALWAYS!!
241 CREATURE_STATIC_FLAG_6_UNCONSCIOUS_ON_DEATH = 0x00001000, // Unconscious on Death
242 CREATURE_STATIC_FLAG_6_DONT_REPORT_TO_LOCAL_DEFENSE_CHANNEL_ON_DEATH = 0x00002000, // Don't report to local defense channel on death
243 CREATURE_STATIC_FLAG_6_PREFER_UNENGAGED_MONSTERS_WHEN_PICKING_A_TARGET = 0x00004000, // Prefer unengaged monsters when picking a target
244 CREATURE_STATIC_FLAG_6_USE_PVP_POWER_AND_RESILIENCE_WHEN_PLAYERS_ATTACK_THIS_CREATURE = 0x00008000, // Use PVP power and resilience when players attack this creature
245 CREATURE_STATIC_FLAG_6_DONT_CLEAR_DEBUFFS_ON_LEAVE_COMBAT = 0x00010000, // Don't clear debuffs on leave combat
246 CREATURE_STATIC_FLAG_6_PERSONAL_LOOT_HAS_FULL_SECURITY = 0x00020000, // Personal loot has full security (guaranteed push/mail delivery)
247 CREATURE_STATIC_FLAG_6_TRIPLE_SPELL_VISUALS = 0x00040000, // Triple Spell Visuals
248 CREATURE_STATIC_FLAG_6_USE_GARRISON_OWNER_LEVEL = 0x00080000, // Use Garrison Owner Level
249 CREATURE_STATIC_FLAG_6_IMMEDIATE_AOI_UPDATE_ON_SPAWN = 0x00100000, // Immediate AOI Update On Spawn
250 CREATURE_STATIC_FLAG_6_UI_CAN_GET_POSITION = 0x00200000, // UI Can Get Position
251 CREATURE_STATIC_FLAG_6_SEAMLESS_TRANSFER_PROHIBITED = 0x00400000, // Seamless Transfer Prohibited
252 CREATURE_STATIC_FLAG_6_ALWAYS_USE_GROUP_LOOT_METHOD = 0x00800000, // Always use Group Loot Method
253 CREATURE_STATIC_FLAG_6_NO_BOSS_KILL_BANNER = 0x01000000, // No Boss Kill Banner
254 CREATURE_STATIC_FLAG_6_FORCE_TRIGGERING_PLAYER_LOOT_ONLY = 0x02000000, // Force Triggering Player Loot Only
255 CREATURE_STATIC_FLAG_6_SHOW_BOSS_FRAME_WHILE_UNINTERACTABLE = 0x04000000, // Show Boss Frame While Uninteractable
256 CREATURE_STATIC_FLAG_6_SCALES_TO_PLAYER_LEVEL = 0x08000000, // Scales to Player Level
257 CREATURE_STATIC_FLAG_6_AI_DONT_LEAVE_MELEE_FOR_RANGED_WHEN_TARGET_GETS_ROOTED = 0x10000000, // AI don't leave melee for ranged when target gets rooted
258 CREATURE_STATIC_FLAG_6_DONT_USE_COMBAT_REACH_FOR_CHAINING = 0x20000000, // Don't Use Combat Reach For Chaining
259 CREATURE_STATIC_FLAG_6_DO_NOT_PLAY_PROCEDURAL_WOUND_ANIM = 0x40000000, // Do not play procedural wound anim
260 CREATURE_STATIC_FLAG_6_APPLY_PROCEDURAL_WOUND_ANIM_TO_BASE = 0x80000000, // Apply procedural wound anim to Base | TFLAG2_UNK14
261};
262
264
266{
267 CREATURE_STATIC_FLAG_7_IMPORTANT_NPC = 0x00000001, // Important NPC
268 CREATURE_STATIC_FLAG_7_IMPORTANT_QUEST_NPC = 0x00000002, // Important Quest NPC
269 CREATURE_STATIC_FLAG_7_LARGE_NAMEPLATE = 0x00000004, // Large Nameplate
270 CREATURE_STATIC_FLAG_7_TRIVIAL_PET = 0x00000008, // Trivial Pet (Ignored by helpful AOEs)
271 CREATURE_STATIC_FLAG_7_AI_ENEMIES_DONT_BACKUP_WHEN_I_GET_ROOTED = 0x00000010, // AI Enemies Don't backup when I get rooted
272 CREATURE_STATIC_FLAG_7_NO_AUTOMATIC_COMBAT_ANCHOR = 0x00000020, // No Automatic Combat Anchor
273 CREATURE_STATIC_FLAG_7_ONLY_TARGETABLE_BY_CREATOR = 0x00000040, // Only Targetable By Creator
274 CREATURE_STATIC_FLAG_7_TREAT_AS_PLAYER_FOR_IS_PLAYER_CONTROLLED = 0x00000080, // 8.0.1 Flag - Treat as Player for IsPlayerControlled()
275 CREATURE_STATIC_FLAG_7_GENERATE_NO_THREAT_OR_DAMAGE = 0x00000100, // 8.0.1 Flag - Generate No Threat or Damage
276 CREATURE_STATIC_FLAG_7_INTERACT_ONLY_ON_QUEST = 0x00000200, // 8.0.1 Flag - Interact Only on Quest
277 CREATURE_STATIC_FLAG_7_DISABLE_KILL_CREDIT_FOR_OFFLINE_PLAYERS = 0x00000400, // Disable Kill Credit for Offline Players
278 CREATURE_STATIC_FLAG_7_AI_ADDITIONAL_PATHING = 0x00080000, // AI Additional Pathing
279};
280
282
284{
285 CREATURE_STATIC_FLAG_8_FORCE_CLOSE_IN_ON_PATH_FAIL_BEHAVIOR = 0x00000002, // Force Close In On Path Fail Behavior
286 CREATURE_STATIC_FLAG_8_USE_2D_CHASING_CALCULATION = 0x00000020, // Use 2D Chasing Calculation
287 CREATURE_STATIC_FLAG_8_USE_FAST_CLASSIC_HEARTBEAT = 0x00000040, // Use Fast Classic Heartbeat
288};
289
291
293{
294public:
302
303 bool HasFlag(CreatureStaticFlags flag) const { return _flags.HasFlag(flag); }
304 bool HasFlag(CreatureStaticFlags2 flag) const { return _flags2.HasFlag(flag); }
305 bool HasFlag(CreatureStaticFlags3 flag) const { return _flags3.HasFlag(flag); }
306 bool HasFlag(CreatureStaticFlags4 flag) const { return _flags4.HasFlag(flag); }
307 bool HasFlag(CreatureStaticFlags5 flag) const { return _flags5.HasFlag(flag); }
308 bool HasFlag(CreatureStaticFlags6 flag) const { return _flags6.HasFlag(flag); }
309 bool HasFlag(CreatureStaticFlags7 flag) const { return _flags7.HasFlag(flag); }
310 bool HasFlag(CreatureStaticFlags8 flag) const { return _flags8.HasFlag(flag); }
311
312 void ApplyFlag(CreatureStaticFlags flag, bool apply) { if (apply) _flags |= flag; else _flags &= ~flag; }
313 void ApplyFlag(CreatureStaticFlags2 flag, bool apply) { if (apply) _flags2 |= flag; else _flags2 &= ~flag; }
314 void ApplyFlag(CreatureStaticFlags3 flag, bool apply) { if (apply) _flags3 |= flag; else _flags3 &= ~flag; }
315 void ApplyFlag(CreatureStaticFlags4 flag, bool apply) { if (apply) _flags4 |= flag; else _flags4 &= ~flag; }
316 void ApplyFlag(CreatureStaticFlags5 flag, bool apply) { if (apply) _flags5 |= flag; else _flags5 &= ~flag; }
317 void ApplyFlag(CreatureStaticFlags6 flag, bool apply) { if (apply) _flags6 |= flag; else _flags6 &= ~flag; }
318 void ApplyFlag(CreatureStaticFlags7 flag, bool apply) { if (apply) _flags7 |= flag; else _flags7 &= ~flag; }
319 void ApplyFlag(CreatureStaticFlags8 flag, bool apply) { if (apply) _flags8 |= flag; else _flags8 &= ~flag; }
320
329
330private:
339};
340
341// EnumUtils: DESCRIBE THIS
343{
344 CREATURE_FLAG_EXTRA_INSTANCE_BIND = 0x00000001, // creature kill bind instance with killer and killer's group
345 CREATURE_FLAG_EXTRA_CIVILIAN = 0x00000002, // not aggro (ignore faction/reputation hostility)
346 CREATURE_FLAG_EXTRA_NO_PARRY = 0x00000004, // creature can't parry
347 CREATURE_FLAG_EXTRA_NO_PARRY_HASTEN = 0x00000008, // creature can't counter-attack at parry
348 CREATURE_FLAG_EXTRA_NO_BLOCK = 0x00000010, // creature can't block
349 CREATURE_FLAG_EXTRA_NO_CRUSHING_BLOWS = 0x00000020, // creature can't do crush attacks
350 CREATURE_FLAG_EXTRA_NO_XP = 0x00000040, // creature kill does not provide XP
351 CREATURE_FLAG_EXTRA_TRIGGER = 0x00000080, // trigger creature
352 CREATURE_FLAG_EXTRA_NO_TAUNT = 0x00000100, // creature is immune to taunt auras and 'attack me' effects
354 CREATURE_FLAG_EXTRA_GHOST_VISIBILITY = 0x00000400, // creature will only be visible to dead players
355 CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK = 0x00000800, // creature will use offhand attacks
356 CREATURE_FLAG_EXTRA_NO_SELL_VENDOR = 0x00001000, // players can't sell items to this vendor
357 CREATURE_FLAG_EXTRA_CANNOT_ENTER_COMBAT = 0x00002000, // creature is not allowed to enter combat
358 CREATURE_FLAG_EXTRA_WORLDEVENT = 0x00004000, // custom flag for world event creatures (left room for merging)
359 CREATURE_FLAG_EXTRA_GUARD = 0x00008000, // Creature is guard
360 CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH = 0x00010000, // creature ignores feign death
361 CREATURE_FLAG_EXTRA_NO_CRIT = 0x00020000, // creature can't do critical strikes
362 CREATURE_FLAG_EXTRA_NO_SKILL_GAINS = 0x00040000, // creature won't increase weapon skills
363 CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS = 0x00080000, // Taunt is subject to diminishing returns on this creature
364 CREATURE_FLAG_EXTRA_ALL_DIMINISH = 0x00100000, // creature is subject to all diminishing returns as players are
365 CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ = 0x00200000, // creature does not need to take player damage for kill credit
372 CREATURE_FLAG_EXTRA_DUNGEON_BOSS = 0x10000000, // creature is a dungeon boss
373 CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING = 0x20000000, // creature ignore pathfinding
374 CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK = 0x40000000, // creature is immune to knockback effects
376
377 // Masks
381
384
386{
387 Run,
388 CanWalk,
390
391 Max
392};
393
395{
396 Walk,
397 CanRun,
398 AlwaysRun,
399
400 Max
401};
402
404{
406
411
412 CreatureChaseMovementType GetChase() const { return Chase; }
414
415 bool IsHoverInitiallyEnabled() const { return HoverInitiallyEnabled; }
416
417 uint32 GetInteractionPauseTimer() const { return InteractionPauseTimer; }
418
419 std::string ToString() const;
420};
421
425
430
432{
435
438
439 CreatureModel(uint32 creatureDisplayID, float displayScale, float probability) :
440 CreatureDisplayID(creatureDisplayID), DisplayScale(displayScale), Probability(probability) { }
441
445};
446
487
488// from `creature_template` table
490{
493 std::vector<CreatureModel> Models;
494 std::string Name;
495 std::string FemaleName;
496 std::string SubName;
497 std::string TitleAlt;
498 std::string IconName;
499 std::vector<uint32> GossipMenuIds;
500 std::unordered_map<Difficulty, CreatureDifficulty> difficultyStore;
507 float scale;
514 uint32 unit_class; // enum Classes. Note only 4 classes are known for creatures.
515 uint32 unit_flags; // enum UnitFlags mask values
516 uint32 unit_flags2; // enum UnitFlags2 mask values
517 uint32 unit_flags3; // enum UnitFlags3 mask values
518 CreatureFamily family; // enum CreatureFamily values (optional)
520 uint32 type; // enum CreatureType values
524 std::string AIName;
536 std::string StringId;
537 std::unique_ptr<WorldPacket[]> QueryData;
538 CreatureModel const* GetModelByIdx(uint32 idx) const;
539 CreatureModel const* GetRandomValidModel() const;
540 CreatureModel const* GetFirstValidModel() const;
541 CreatureModel const* GetModelWithDisplayId(uint32 displayId) const;
542 CreatureModel const* GetFirstInvisibleModel() const;
543 CreatureModel const* GetFirstVisibleModel() const;
544 CreatureDifficulty const* GetDifficulty(Difficulty difficulty) const;
545
546 // Helpers
547 bool IsExotic(CreatureDifficulty const* creatureDifficulty) const
548 {
549 return (creatureDifficulty->TypeFlags & CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC) != 0;
550 }
551
552 bool IsTameable(bool canTameExotic, CreatureDifficulty const* creatureDifficulty) const
553 {
554 if (type != CREATURE_TYPE_BEAST || family == CREATURE_FAMILY_NONE || (creatureDifficulty->TypeFlags & CREATURE_TYPE_FLAG_TAMEABLE) == 0)
555 return false;
556
557 // if can tame exotic then can tame any tameable
558 return canTameExotic || !IsExotic(creatureDifficulty);
559 }
560
561 void InitializeQueryData();
562 WorldPacket BuildQueryData(LocaleConstant loc, Difficulty difficulty) const;
563
565 CreatureTemplate(CreatureTemplate const& other) = delete;
570};
571
572// Defines base stats for creatures (used to calculate HP/mana/armor/attackpower/rangedattackpower/all damage).
574{
578
579 // Helpers
580 static CreatureBaseStats const* GetBaseStats(uint8 level, uint8 unitClass);
581};
582
584{
585 std::vector<std::string> Name;
586 std::vector<std::string> NameAlt;
587 std::vector<std::string> Title;
588 std::vector<std::string> TitleAlt;
589};
590
597
602
603// from `creature` table
618
627
635
636// `creature_addon` table
653
654// `creature_static_flags_override` table
666
667// Vendors
669{
671
673 uint32 maxcount; // 0 for infinity item amount
674 uint32 incrtime; // time for restore items amount if maxcount != 0
677 std::vector<int32> BonusListIDs;
680};
681
683{
684 std::vector<VendorItem> m_items;
685
686 VendorItem const* GetItem(uint32 slot) const
687 {
688 if (slot >= m_items.size())
689 return nullptr;
690
691 return &m_items[slot];
692 }
693 bool Empty() const { return m_items.empty(); }
694 uint32 GetItemCount() const { return uint32(m_items.size()); }
695 void AddItem(VendorItem vItem)
696 {
697 m_items.emplace_back(std::move(vItem));
698 }
699 bool RemoveItem(uint32 item_id, uint8 type);
700 VendorItem const* FindItemCostPair(uint32 item_id, uint32 extendedCost, uint8 type) const;
701 void Clear()
702 {
703 m_items.clear();
704 }
705};
706
707#endif // CreatureData_h__
LocaleConstant
Definition Common.h:51
@ IN_MILLISECONDS
Definition Common.h:38
const uint32 CREATURE_REGEN_INTERVAL
CreatureFlagsExtra
@ CREATURE_FLAG_EXTRA_NO_BLOCK
@ CREATURE_FLAG_EXTRA_DB_ALLOWED
@ CREATURE_FLAG_EXTRA_NO_CRUSHING_BLOWS
@ CREATURE_FLAG_EXTRA_UNUSED_22
@ CREATURE_FLAG_EXTRA_UNUSED_27
@ CREATURE_FLAG_EXTRA_NO_CRIT
@ CREATURE_FLAG_EXTRA_DUNGEON_BOSS
@ CREATURE_FLAG_EXTRA_TRIGGER
@ CREATURE_FLAG_EXTRA_UNUSED
@ CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING
@ CREATURE_FLAG_EXTRA_CANNOT_ENTER_COMBAT
@ CREATURE_FLAG_EXTRA_UNUSED_31
@ CREATURE_FLAG_EXTRA_NO_PARRY_HASTEN
@ CREATURE_FLAG_EXTRA_NO_XP
@ CREATURE_FLAG_EXTRA_UNUSED_25
@ CREATURE_FLAG_EXTRA_INSTANCE_BIND
@ CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS
@ CREATURE_FLAG_EXTRA_UNUSED_9
@ CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK
@ CREATURE_FLAG_EXTRA_NO_PARRY
@ CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH
@ CREATURE_FLAG_EXTRA_NO_TAUNT
@ CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ
@ CREATURE_FLAG_EXTRA_GHOST_VISIBILITY
@ CREATURE_FLAG_EXTRA_NO_SELL_VENDOR
@ CREATURE_FLAG_EXTRA_NO_SKILL_GAINS
@ CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK
@ CREATURE_FLAG_EXTRA_UNUSED_23
@ CREATURE_FLAG_EXTRA_CIVILIAN
@ CREATURE_FLAG_EXTRA_UNUSED_24
@ CREATURE_FLAG_EXTRA_GUARD
@ CREATURE_FLAG_EXTRA_ALL_DIMINISH
@ CREATURE_FLAG_EXTRA_UNUSED_26
@ CREATURE_FLAG_EXTRA_WORLDEVENT
CreatureStaticFlags7
@ CREATURE_STATIC_FLAG_7_INTERACT_ONLY_ON_QUEST
@ CREATURE_STATIC_FLAG_7_GENERATE_NO_THREAT_OR_DAMAGE
@ CREATURE_STATIC_FLAG_7_ONLY_TARGETABLE_BY_CREATOR
@ CREATURE_STATIC_FLAG_7_TREAT_AS_PLAYER_FOR_IS_PLAYER_CONTROLLED
@ CREATURE_STATIC_FLAG_7_AI_ADDITIONAL_PATHING
@ CREATURE_STATIC_FLAG_7_DISABLE_KILL_CREDIT_FOR_OFFLINE_PLAYERS
@ CREATURE_STATIC_FLAG_7_IMPORTANT_NPC
@ CREATURE_STATIC_FLAG_7_NO_AUTOMATIC_COMBAT_ANCHOR
@ CREATURE_STATIC_FLAG_7_LARGE_NAMEPLATE
@ CREATURE_STATIC_FLAG_7_AI_ENEMIES_DONT_BACKUP_WHEN_I_GET_ROOTED
@ CREATURE_STATIC_FLAG_7_IMPORTANT_QUEST_NPC
@ CREATURE_STATIC_FLAG_7_TRIVIAL_PET
CreatureStaticFlags6
@ CREATURE_STATIC_FLAG_6_CAN_TOGGLE_BETWEEN_DEATH_AND_PERSONAL_LOOT
@ CREATURE_STATIC_FLAG_6_SMOOTH_PHASING_REPLACE_VISIBLE_UNIT_IF_AVAILABLE
@ CREATURE_STATIC_FLAG_6_USE_GARRISON_OWNER_LEVEL
@ CREATURE_STATIC_FLAG_6_DO_NOT_AUTO_RESUMMON_THIS_COMPANION_CREATURE
@ CREATURE_STATIC_FLAG_6_AI_DONT_LEAVE_MELEE_FOR_RANGED_WHEN_TARGET_GETS_ROOTED
@ CREATURE_STATIC_FLAG_6_FORCE_TRIGGERING_PLAYER_LOOT_ONLY
@ CREATURE_STATIC_FLAG_6_ALWAYS_USE_GROUP_LOOT_METHOD
@ CREATURE_STATIC_FLAG_6_DONT_CLEAR_DEBUFFS_ON_LEAVE_COMBAT
@ CREATURE_STATIC_FLAG_6_HOME_REALM_ONLY_LOOT
@ CREATURE_STATIC_FLAG_6_NO_INTERACT_RESPONSE
@ CREATURE_STATIC_FLAG_6_IMMEDIATE_AOI_UPDATE_ON_SPAWN
@ CREATURE_STATIC_FLAG_6_USE_PVP_POWER_AND_RESILIENCE_WHEN_PLAYERS_ATTACK_THIS_CREATURE
@ CREATURE_STATIC_FLAG_6_SHOW_BOSS_FRAME_WHILE_UNINTERACTABLE
@ CREATURE_STATIC_FLAG_6_SCALES_TO_PLAYER_LEVEL
@ CREATURE_STATIC_FLAG_6_NO_BOSS_KILL_BANNER
@ CREATURE_STATIC_FLAG_6_IGNORE_THE_REALM_COALESCING_HIDING_CODE
@ CREATURE_STATIC_FLAG_6_SEAMLESS_TRANSFER_PROHIBITED
@ CREATURE_STATIC_FLAG_6_ONLY_QUEST_GIVER_FOR_SUMMONER
@ CREATURE_STATIC_FLAG_6_PREFER_UNENGAGED_MONSTERS_WHEN_PICKING_A_TARGET
@ CREATURE_STATIC_FLAG_6_UNCONSCIOUS_ON_DEATH
@ CREATURE_STATIC_FLAG_6_DONT_USE_COMBAT_REACH_FOR_CHAINING
@ CREATURE_STATIC_FLAG_6_DONT_CANCEL_CHANNEL_ON_MASTER_MOUNTING
@ CREATURE_STATIC_FLAG_6_PERSONAL_LOOT_HAS_FULL_SECURITY
@ CREATURE_STATIC_FLAG_6_APPLY_PROCEDURAL_WOUND_ANIM_TO_BASE
@ CREATURE_STATIC_FLAG_6_DONT_REPORT_TO_LOCAL_DEFENSE_CHANNEL_ON_DEATH
@ CREATURE_STATIC_FLAG_6_UI_CAN_GET_POSITION
@ CREATURE_STATIC_FLAG_6_TAPS_TO_FACTION
@ CREATURE_STATIC_FLAG_6_AI_COMBAT_RETURN_PRECISE
@ CREATURE_STATIC_FLAG_6_ALWAYS_STAND_ON_TARGET
@ CREATURE_STATIC_FLAG_6_DO_NOT_PLAY_PROCEDURAL_WOUND_ANIM
@ CREATURE_STATIC_FLAG_6_NO_INITIAL_POWER
@ CREATURE_STATIC_FLAG_6_TRIPLE_SPELL_VISUALS
CreatureChaseMovementType
const uint8 MAX_KILL_CREDIT
CreatureStaticFlags8
@ CREATURE_STATIC_FLAG_8_USE_2D_CHASING_CALCULATION
@ CREATURE_STATIC_FLAG_8_FORCE_CLOSE_IN_ON_PATH_FAIL_BEHAVIOR
@ CREATURE_STATIC_FLAG_8_USE_FAST_CLASSIC_HEARTBEAT
CreatureStaticFlags5
@ CREATURE_STATIC_FLAG_5_DISABLE_AI_PREDICTION
@ CREATURE_STATIC_FLAG_5_NO_DEATH_THUD
@ CREATURE_STATIC_FLAG_5_AI_CANT_PATH_ON_STEEP_SLOPES
@ CREATURE_STATIC_FLAG_5_NO_POWER_REGEN
@ CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN
@ CREATURE_STATIC_FLAG_5_HAS_SAFE_LOCATION
@ CREATURE_STATIC_FLAG_5_CAN_DROP_LOOT_WHILE_IN_A_CHALLENGE_MODE_INSTANCE
@ CREATURE_STATIC_FLAG_5_UNINTERACTIBLE_IF_HOSTILE
@ CREATURE_STATIC_FLAG_5_HIDE_HEALTH_BAR_UNDER_TOOLTIP
@ CREATURE_STATIC_FLAG_5_DISABLES_XP_AWARD
@ CREATURE_STATIC_FLAG_5_NO_PET_UNIT_FRAME
@ CREATURE_STATIC_FLAG_5_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER
@ CREATURE_STATIC_FLAG_5_NEVER_EVADE
@ CREATURE_STATIC_FLAG_5_PREDICTIVE_POWER_REGEN
@ CREATURE_STATIC_FLAG_5_DONT_DISMISS_ON_FLYING_MOUNT
@ CREATURE_STATIC_FLAG_5_NO_LEAVE_COMBAT_STATE_RESTORE
@ CREATURE_STATIC_FLAG_5_HIDE_LEVEL_INFO_IN_TOOLTIP
@ CREATURE_STATIC_FLAG_5_CLIENT_LOCAL_CREATURE
@ CREATURE_STATIC_FLAG_5_NEVER_DISPLAY_EMOTE_OR_CHAT_TEXT_IN_A_CHAT_BUBBLE
@ CREATURE_STATIC_FLAG_5_UNTARGETABLE_BY_CLIENT
@ CREATURE_STATIC_FLAG_5_NO_INTERACT_ON_LEFT_CLICK
@ CREATURE_STATIC_FLAG_5_PET_OR_GUARDIAN_AI_DONT_GO_BEHIND_ME
@ CREATURE_STATIC_FLAG_5_INTERACT_WHILE_HOSTILE
@ CREATURE_STATIC_FLAG_5_GIVE_CRITERIA_KILL_CREDIT_WHEN_CHARMED
@ CREATURE_STATIC_FLAG_5_AI_PREFER_PATHABLE_TARGETS
@ CREATURE_STATIC_FLAG_5_ASSIGN_KILL_CREDIT_TO_ENCOUNTER_LIST
@ CREATURE_STATIC_FLAG_5_240_DEGREE_BACK_ARC
@ CREATURE_STATIC_FLAG_5_BYPASS_INTERACT_INTERRUPTS
@ CREATURE_STATIC_FLAG_5_AI_PETS_CLOSE_IN_ON_UNPATHABLE_TARGET
@ CREATURE_STATIC_FLAG_5_AI_IGNORE_LOS_TO_MELEE_TARGET
@ CREATURE_STATIC_FLAG_5_FREQUENT_AREA_TRIGGER_CHECKS
@ CREATURE_STATIC_FLAG_5_FORCE_SELF_MOUNTING
CreatureStaticFlags
@ CREATURE_STATIC_FLAG_PVP_ENABLING
@ CREATURE_STATIC_FLAG_IGNORE_COMBAT
@ CREATURE_STATIC_FLAG_AQUATIC
@ CREATURE_STATIC_FLAG_NO_SPELL_DEFENSE
@ CREATURE_STATIC_FLAG_CAN_WIELD_LOOT
@ CREATURE_STATIC_FLAG_VISIBLE_TO_GHOSTS
@ CREATURE_STATIC_FLAG_RAID_BOSS_MOB
@ CREATURE_STATIC_FLAG_MOUNTABLE
@ CREATURE_STATIC_FLAG_COMBAT_PING
@ CREATURE_STATIC_FLAG_CREATOR_LOOT
@ CREATURE_STATIC_FLAG_CALLS_GUARDS
@ CREATURE_STATIC_FLAG_UNINTERACTIBLE
@ CREATURE_STATIC_FLAG_CAN_SWIM
@ CREATURE_STATIC_FLAG_MORE_AUDIBLE
@ CREATURE_STATIC_FLAG_IMMUNE_PC
@ CREATURE_STATIC_FLAG_DESPAWN_INSTANTLY
@ CREATURE_STATIC_FLAG_NO_XP
@ CREATURE_STATIC_FLAG_TAMEABLE
@ CREATURE_STATIC_FLAG_NO_MELEE_FLEE
@ CREATURE_STATIC_FLAG_UNKILLABLE
@ CREATURE_STATIC_FLAG_NO_DEFENSE
@ CREATURE_STATIC_FLAG_SESSILE
@ CREATURE_STATIC_FLAG_ONLY_ATTACK_TARGETS_THAT_ARE_PVP_ENABLING
@ CREATURE_STATIC_FLAG_CORPSE_RAID
@ CREATURE_STATIC_FLAG_IMMUNE_NPC
@ CREATURE_STATIC_FLAG_NO_AUTOMATIC_REGEN
@ CREATURE_STATIC_FLAG_LARGE_AOI
@ CREATURE_STATIC_FLAG_DO_NOT_PLAY_WOUND_ANIM
@ CREATURE_STATIC_FLAG_NO_LOOT
@ CREATURE_STATIC_FLAG_NO_FACTION_TOOLTIP
@ CREATURE_STATIC_FLAG_FLOATING
@ CREATURE_STATIC_FLAG_AMPHIBIOUS
CreatureStaticFlags3
@ CREATURE_STATIC_FLAG_3_FACTION_LEADER
@ CREATURE_STATIC_FLAG_3_CANT_SWIM
@ CREATURE_STATIC_FLAG_3_FOREVER_CORPSE_DURATION
@ CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_LAND_IN_COMBAT
@ CREATURE_STATIC_FLAG_3_CHECKS_LIQUIDS
@ CREATURE_STATIC_FLAG_3_EXTENDED_CORPSE_DURATION
@ CREATURE_STATIC_FLAG_3_SKIN_WITH_ENGINEERING
@ CREATURE_STATIC_FLAG_3_NO_DAMAGE_HISTORY
@ CREATURE_STATIC_FLAG_3_IMMUNE_TO_PLAYER_BUFFS
@ CREATURE_STATIC_FLAG_3_PETS_ATTACK_WITH_3D_PATHING
@ CREATURE_STATIC_FLAG_3_USE_MODEL_COLLISION_SIZE
@ CREATURE_STATIC_FLAG_3_SPELL_CLICK_FOR_PARTY_ONLY
@ CREATURE_STATIC_FLAG_3_ATTACKER_IGNORES_FACING
@ CREATURE_STATIC_FLAG_3_TAMEABLE_EXOTIC
@ CREATURE_STATIC_FLAG_3_DONT_FADE_IN
@ CREATURE_STATIC_FLAG_3_NO_AGGRO_ON_LEASH
@ CREATURE_STATIC_FLAG_3_INFINITE_AOI
@ CREATURE_STATIC_FLAG_3_ENEMY_CHECK_IGNORES_LINE_OF_SIGHT
@ CREATURE_STATIC_FLAG_3_DISABLE_DODGE_PARRY_AND_BLOCK_ANIMATIONS
@ CREATURE_STATIC_FLAG_3_NO_FRIENDLY_AREA_AURAS
@ CREATURE_STATIC_FLAG_3_ALLOW_INTERACTION_WHILE_IN_COMBAT
@ CREATURE_STATIC_FLAG_3_NO_NAME_PLATE
@ CREATURE_STATIC_FLAG_3_CANNOT_TURN
@ CREATURE_STATIC_FLAG_3_LINK_ALL_FLAG
@ CREATURE_STATIC_FLAG_3_CANNOT_PENETRATE_WATER
@ CREATURE_STATIC_FLAG_3_AI_CAN_AUTO_TAKEOFF_IN_COMBAT
@ CREATURE_STATIC_FLAG_3_GIGANTIC_AOI
@ CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK
@ CREATURE_STATIC_FLAG_3_DONT_PVP_ENABLE_OWNER
@ CREATURE_STATIC_FLAG_3_COLLIDE_WITH_MISSILES
@ CREATURE_STATIC_FLAG_3_DO_NOT_TAP
@ CREATURE_STATIC_FLAG_3_NON_UNIQUE_IN_COMBAT_LOG
CreatureStaticFlags4
@ CREATURE_STATIC_FLAG_4_NO_DEATH_SCREAM
@ CREATURE_STATIC_FLAG_4_OBEYS_TAUNT_DIMINISHING_RETURNS
@ CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_DIMINISHING_RETURNS
@ CREATURE_STATIC_FLAG_4_DONT_REPOSITION_BECAUSE_MELEE_TARGET_IS_TOO_CLOSE
@ CREATURE_STATIC_FLAG_4_TREAT_AS_PLAYER_FOR_PVP_DEBUFF_DURATION
@ CREATURE_STATIC_FLAG_4_FORCE_GOSSIP
@ CREATURE_STATIC_FLAG_4_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS
@ CREATURE_STATIC_FLAG_4_FLAT_HONOR_AWARD
@ CREATURE_STATIC_FLAG_4_DEALS_TRIPLE_DAMAGE_TO_PC_CONTROLLED_PETS
@ CREATURE_STATIC_FLAG_4_CANNOT_DAZE
@ CREATURE_STATIC_FLAG_4_ONLY_GENERATE_INITIAL_THREAT
@ CREATURE_STATIC_FLAG_4_MANUAL_SHEATHING_CONTROL
@ CREATURE_STATIC_FLAG_4_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS
@ CREATURE_STATIC_FLAG_4_NO_BIRTH_ANIM
@ CREATURE_STATIC_FLAG_4_CAN_BE_HEALED_BY_ENEMIES
@ CREATURE_STATIC_FLAG_4_ATTACKER_IGNORES_MINIMUM_RANGES
@ CREATURE_STATIC_FLAG_4_PREFER_NPCS_WHEN_SEARCHING_FOR_ENEMIES
@ CREATURE_STATIC_FLAG_4_NO_NPC_DAMAGE_BELOW_85_PCT
@ CREATURE_STATIC_FLAG_4_SUPPRESS_INSTANCE_WIDE_RELEASE_IN_COMBAT
@ CREATURE_STATIC_FLAG_4_5_MINUTE_LOOT_ROLL_TIMER
@ CREATURE_STATIC_FLAG_4_GIVE_QUEST_KILL_CREDIT_WHILE_OFFLINE
@ CREATURE_STATIC_FLAG_4_DOESNT_CHANGE_TARGET_ON_RIGHT_CLICK
@ CREATURE_STATIC_FLAG_4_HIDE_NAME_IN_WORLD_FRAME
@ CREATURE_STATIC_FLAG_4_ONLY_DISPLAY_GOSSIP_FOR_SUMMONER
@ CREATURE_STATIC_FLAG_4_DONT_REPOSITION_WITH_FRIENDS_IN_COMBAT
@ CREATURE_STATIC_FLAG_4_PET_OR_GUARDIAN_AI_DONT_GO_BEHIND_TARGET
@ CREATURE_STATIC_FLAG_4_NO_MELEE_APPROACH
@ CREATURE_STATIC_FLAG_4_ALLOW_NPC_COMBAT_WHILE_UNINTERACTIBLE
@ CREATURE_STATIC_FLAG_4_IGNORE_LOS_WHEN_CASTING_ON_ME
@ CREATURE_STATIC_FLAG_4_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS
@ CREATURE_STATIC_FLAG_4_QUEST_BOSS
@ CREATURE_STATIC_FLAG_4_UPDATE_CREATURE_RECORD_WHEN_INSTANCE_CHANGES_DIFFICULTY
CreatureStaticFlags2
@ CREATURE_STATIC_FLAG_2_IGNORE_FEIGN_DEATH
@ CREATURE_STATIC_FLAG_2_RETURN_SOUL_SHARD_TO_MASTER_OF_PET
@ CREATURE_STATIC_FLAG_2_NO_HARMFUL_VERTEX_COLORING
@ CREATURE_STATIC_FLAG_2_PVP_ENABLING_OOC
@ CREATURE_STATIC_FLAG_2_NO_COLLISION
@ CREATURE_STATIC_FLAG_2_ACTION_TRIGGERS_WHILE_CHARMED
@ CREATURE_STATIC_FLAG_2_IGNORE_SANCTUARY
@ CREATURE_STATIC_FLAG_2_NO_WOUNDED_SLOWDOWN
@ CREATURE_STATIC_FLAG_2_SKIN_WITH_MINING
@ CREATURE_STATIC_FLAG_2_SERVER_ONLY
@ CREATURE_STATIC_FLAG_2_HIDE_BODY
@ CREATURE_STATIC_FLAG_2_NO_INTERRUPT_SCHOOL_COOLDOWN
@ CREATURE_STATIC_FLAG_2_SPAWN_DEFENSIVE
@ CREATURE_STATIC_FLAG_2_USE_CREATOR_BONUSES
@ CREATURE_STATIC_FLAG_2_IGNORE_MISDIRECTION
@ CREATURE_STATIC_FLAG_2_NO_SKILL_GAINS
@ CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_ON_DEATH
@ CREATURE_STATIC_FLAG_2_ALLOW_MOUNTED_COMBAT
@ CREATURE_STATIC_FLAG_2_PLAYER_CAN_HEAL_OR_BUFF
@ CREATURE_STATIC_FLAG_2_INTERACT_WHILE_DEAD
@ CREATURE_STATIC_FLAG_2_FORCE_RAID_COMBAT
@ CREATURE_STATIC_FLAG_2_NO_OWNER_THREAT
@ CREATURE_STATIC_FLAG_2_SKIN_WITH_HERBALISM
@ CREATURE_STATIC_FLAG_2_NO_PET_BAR
@ CREATURE_STATIC_FLAG_2_NO_CRUSHING_BLOWS
@ CREATURE_STATIC_FLAG_2_ALERT_CONTENT_TEAM_AT_90_PCT_HEALTH
@ CREATURE_STATIC_FLAG_2_FULL_SPELL_LIST
@ CREATURE_STATIC_FLAG_2_IGNORE_PATHING_FAILURE
@ CREATURE_STATIC_FLAG_2_DOESNT_REDUCE_REPUTATION_FOR_RAIDS
@ CREATURE_STATIC_FLAG_2_LOCK_TAPPERS_TO_RAID_ON_DEATH
@ CREATURE_STATIC_FLAG_2_NO_DEATH_MESSAGE
@ CREATURE_STATIC_FLAG_2_NO_PET_SCALING
const uint32 MAX_CREATURE_NAMES
CreatureRandomMovementType
const uint32 CREATURE_NOPATH_EVADE_TIME
const uint32 MAX_CREATURE_SPELLS
const uint32 PET_FOCUS_REGEN_INTERVAL
const uint32 MAX_CREATURE_MODELS
Difficulty
Definition DBCEnums.h:932
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
int16_t int16
Definition Define.h:151
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
uint16 flags
#define DEFINE_ENUM_FLAG(enumType)
Definition EnumFlag.h:26
VisibilityDistanceType
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
#define CURRENT_EXPANSION
CreatureFamily
@ CREATURE_FAMILY_NONE
@ CREATURE_TYPE_BEAST
CreatureClassifications
@ MAX_SPELL_SCHOOL
@ EXPANSION_LEVEL_CURRENT
@ CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING
@ CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM
@ CREATURE_TYPE_FLAG_TAMEABLE
@ CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC
@ CREATURE_TYPE_FLAG_SKIN_WITH_MINING
SkillType
@ SKILL_MINING
@ SKILL_ENGINEERING
@ SKILL_SKINNING
@ SKILL_HERBALISM
@ SPAWN_TYPE_CREATURE
Definition SpawnData.h:36
#define MAX_EQUIPMENT_ITEMS
Definition UnitDefines.h:37
bool HasFlag(CreatureStaticFlags4 flag) const
EnumFlag< CreatureStaticFlags3 > _flags3
void ApplyFlag(CreatureStaticFlags3 flag, bool apply)
bool HasFlag(CreatureStaticFlags3 flag) const
EnumFlag< CreatureStaticFlags8 > _flags8
EnumFlag< CreatureStaticFlags > _flags
bool HasFlag(CreatureStaticFlags5 flag) const
bool HasFlag(CreatureStaticFlags flag) const
void ApplyFlag(CreatureStaticFlags7 flag, bool apply)
EnumFlag< CreatureStaticFlags7 > _flags7
EnumFlag< CreatureStaticFlags8 > GetFlags8() const
bool HasFlag(CreatureStaticFlags8 flag) const
void ApplyFlag(CreatureStaticFlags flag, bool apply)
void ApplyFlag(CreatureStaticFlags6 flag, bool apply)
EnumFlag< CreatureStaticFlags2 > GetFlags2() const
EnumFlag< CreatureStaticFlags > GetFlags() const
void ApplyFlag(CreatureStaticFlags2 flag, bool apply)
bool HasFlag(CreatureStaticFlags2 flag) const
bool HasFlag(CreatureStaticFlags7 flag) const
EnumFlag< CreatureStaticFlags7 > GetFlags7() const
bool HasFlag(CreatureStaticFlags6 flag) const
CreatureStaticFlagsHolder(CreatureStaticFlags flags=CreatureStaticFlags(), CreatureStaticFlags2 flags2=CreatureStaticFlags2(), CreatureStaticFlags3 flags3=CreatureStaticFlags3(), CreatureStaticFlags4 flags4=CreatureStaticFlags4(), CreatureStaticFlags5 flags5=CreatureStaticFlags5(), CreatureStaticFlags6 flags6=CreatureStaticFlags6(), CreatureStaticFlags7 flags7=CreatureStaticFlags7(), CreatureStaticFlags8 flags8=CreatureStaticFlags8())
void ApplyFlag(CreatureStaticFlags5 flag, bool apply)
EnumFlag< CreatureStaticFlags5 > GetFlags5() const
EnumFlag< CreatureStaticFlags5 > _flags5
EnumFlag< CreatureStaticFlags6 > GetFlags6() const
void ApplyFlag(CreatureStaticFlags4 flag, bool apply)
EnumFlag< CreatureStaticFlags4 > GetFlags4() const
EnumFlag< CreatureStaticFlags6 > _flags6
EnumFlag< CreatureStaticFlags3 > GetFlags3() const
EnumFlag< CreatureStaticFlags2 > _flags2
EnumFlag< CreatureStaticFlags4 > _flags4
void ApplyFlag(CreatureStaticFlags8 flag, bool apply)
constexpr bool HasFlag(T flag) const
Definition EnumFlag.h:106
std::vector< uint32 > auras
uint16 meleeAnimKit
uint16 movementAnimKit
VisibilityDistanceType visibilityDistanceType
float wander_distance
Optional< uint64 > npcflag
uint32 curHealthPct
Optional< CreatureModel > display
Optional< uint32 > unit_flags2
uint32 currentwaypoint
Optional< uint32 > unit_flags3
Optional< uint32 > unit_flags
SkillType GetRequiredLootSkill() const
int32 GetHealthScalingExpansion() const
CreatureStaticFlagsHolder StaticFlags
std::vector< std::string > Title
std::vector< std::string > Name
std::vector< std::string > TitleAlt
std::vector< std::string > NameAlt
uint32 displayId_other_gender
CreatureModel(uint32 creatureDisplayID, float displayScale, float probability)
uint32 CreatureDisplayID
static CreatureModel const DefaultVisibleModel
static CreatureModel const DefaultInvisibleModel
CreatureRandomMovementType Random
CreatureChaseMovementType GetChase() const
uint32 GetInteractionPauseTimer() const
CreatureChaseMovementType Chase
CreatureRandomMovementType GetRandom() const
bool IsHoverInitiallyEnabled() const
Optional< CreatureStaticFlags > StaticFlags1
Optional< CreatureStaticFlags5 > StaticFlags5
Optional< CreatureStaticFlags7 > StaticFlags7
Optional< CreatureStaticFlags3 > StaticFlags3
Optional< CreatureStaticFlags2 > StaticFlags2
Optional< CreatureStaticFlags6 > StaticFlags6
Optional< CreatureStaticFlags8 > StaticFlags8
Optional< CreatureStaticFlags4 > StaticFlags4
Optional< uint32 > CreatureIDVisibleToSummoner
Optional< uint32 > GroundMountDisplayID
Optional< std::vector< uint32 > > DespawnOnQuestsRemoved
Optional< uint32 > FlyingMountDisplayID
std::string TitleAlt
CreatureClassifications Classification
std::string SubName
CreatureFamily family
std::string Name
std::string StringId
CreatureTemplate & operator=(CreatureTemplate const &other)=delete
std::vector< uint32 > GossipMenuIds
CreatureMovementData Movement
std::unique_ptr< WorldPacket[]> QueryData
bool IsExotic(CreatureDifficulty const *creatureDifficulty) const
int32 WidgetSetUnitConditionID
std::vector< CreatureModel > Models
std::unordered_map< Difficulty, CreatureDifficulty > difficultyStore
CreatureTemplate & operator=(CreatureTemplate &&other) noexcept
std::string FemaleName
std::string AIName
CreatureTemplate(CreatureTemplate &&other) noexcept
bool IsTameable(bool canTameExotic, CreatureDifficulty const *creatureDifficulty) const
CreatureTemplate(CreatureTemplate const &other)=delete
std::string IconName
uint16 AppearanceModId
std::vector< VendorItem > m_items
uint32 GetItemCount() const
VendorItem const * GetItem(uint32 slot) const
VendorItem const * FindItemCostPair(uint32 item_id, uint32 extendedCost, uint8 type) const
Definition Creature.cpp:92
void AddItem(VendorItem vItem)
bool Empty() const
bool RemoveItem(uint32 item_id, uint8 type)
Definition Creature.cpp:80
uint32 ExtendedCost
bool IgnoreFiltering
uint32 PlayerConditionId
uint32 maxcount
std::vector< int32 > BonusListIDs
uint32 incrtime