TrinityCore
Loading...
Searching...
No Matches
Creature.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 TRINITYCORE_CREATURE_H
19#define TRINITYCORE_CREATURE_H
20
21#include "Unit.h"
22#include "Common.h"
23#include "CreatureData.h"
24#include "DatabaseEnvFwd.h"
25#include "Duration.h"
26#include "Loot.h"
27#include "GridObject.h"
28#include "MapObject.h"
29#include <list>
30
31class CreatureAI;
32class CreatureGroup;
33class Group;
34class Quest;
35class Player;
36class SpellInfo;
37class WorldSession;
38
40
49
50typedef std::list<VendorItemCount> VendorItemCounts;
51
52// max different by z coordinate for creature aggro reaction
53#define CREATURE_Z_ATTACK_RANGE 3
54
55#define MAX_VENDOR_ITEMS 150 // Limitation in 3.x.x item count in SMSG_LIST_INVENTORY
56
57//used for handling non-repeatable random texts
58typedef std::vector<uint8> CreatureTextRepeatIds;
59typedef std::unordered_map<uint8, CreatureTextRepeatIds> CreatureTextRepeatGroup;
60
61class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public MapObject
62{
63 public:
64 explicit Creature(bool isWorldObject = false);
65
66 void AddToWorld() override;
67 void RemoveFromWorld() override;
68
69 float GetNativeObjectScale() const override;
70 void SetObjectScale(float scale) override;
71 void SetDisplayId(uint32 modelId) override;
72
73 void DisappearAndDie() { ForcedDespawn(0); }
74
75 bool Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, uint32 entry, Position const& pos, CreatureData const* data = nullptr, uint32 vehId = 0, bool dynamic = false);
76 bool LoadCreaturesAddon();
77 void SelectLevel();
78 void UpdateLevelDependantStats();
79 void LoadEquipment(int8 id = 1, bool force = false);
80 void SetSpawnHealth();
81 void LoadTemplateRoot();
82
83 ObjectGuid::LowType GetSpawnId() const { return m_spawnId; }
84
85 void Update(uint32 time) override; // overwrited Unit::Update
86 void GetRespawnPosition(float &x, float &y, float &z, float* ori = nullptr, float* dist = nullptr) const;
87 bool IsSpawnedOnTransport() const { return m_creatureData && m_creatureData->mapId != GetMapId(); }
88
89 void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio = false)
90 {
91 m_corpseDelay = delay;
92 if (ignoreCorpseDecayRatio)
93 m_ignoreCorpseDecayRatio = true;
94 }
95 uint32 GetCorpseDelay() const { return m_corpseDelay; }
96 bool IsRacialLeader() const { return GetCreatureTemplate()->RacialLeader; }
97 bool IsCivilian() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_CIVILIAN) != 0; }
98 bool IsTrigger() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER) != 0; }
99 bool IsGuard() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_GUARD) != 0; }
100
101 void InitializeMovementFlags();
102 void UpdateMovementFlags();
103
104 CreatureMovementData const& GetMovementTemplate() const;
105 bool CanWalk() const { return GetMovementTemplate().IsGroundAllowed(); }
106 bool CanSwim() const override;
107 bool CanEnterWater() const override;
108 bool CanFly() const override { return GetMovementTemplate().IsFlightAllowed() || IsFlying(); }
109 bool CanHover() const { return GetMovementTemplate().Ground == CreatureGroundMovementType::Hover || IsHovering(); }
110
111 MovementGeneratorType GetDefaultMovementType() const override { return m_defaultMovementType; }
112 void SetDefaultMovementType(MovementGeneratorType mgt) { m_defaultMovementType = mgt; }
113
114 bool IsDungeonBoss() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_DUNGEON_BOSS) != 0; }
115 bool IsAffectedByDiminishingReturns() const override { return Unit::IsAffectedByDiminishingReturns() || (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH) != 0; }
116
117 Unit* SelectVictim();
118
119 void SetReactState(ReactStates st) { m_reactState = st; }
120 ReactStates GetReactState() const { return m_reactState; }
121 bool HasReactState(ReactStates state) const { return (m_reactState == state); }
122 void InitializeReactState();
123
126 void SetImmuneToAll(bool apply) override { Unit::SetImmuneToAll(apply, HasReactState(REACT_PASSIVE)); }
127 using Unit::IsImmuneToPC;
129 void SetImmuneToPC(bool apply) override { Unit::SetImmuneToPC(apply, HasReactState(REACT_PASSIVE)); }
132 void SetImmuneToNPC(bool apply) override { Unit::SetImmuneToNPC(apply, HasReactState(REACT_PASSIVE)); }
133
135 bool isCanInteractWithBattleMaster(Player* player, bool msg) const;
136 bool CanResetTalents(Player* player, bool pet) const;
137 bool CanCreatureAttack(Unit const* victim, bool force = true) const;
138 void LoadTemplateImmunities();
139 bool IsImmunedToSpell(SpellInfo const* spellInfo, WorldObject const* caster, bool requireImmunityPurgesEffectAttribute = false) const override;
140 bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, WorldObject const* caster, bool requireImmunityPurgesEffectAttribute = false) const override;
141 bool isElite() const;
142 bool isWorldBoss() const;
143
144 uint8 GetLevelForTarget(WorldObject const* target) const override; // overwrite Unit::GetLevelForTarget for boss level support
145
147 bool IsEvadingAttacks() const { return IsInEvadeMode() || CanNotReachTarget(); }
148
149 bool AIM_Destroy();
150 bool AIM_Create(CreatureAI* ai = nullptr);
151 bool AIM_Initialize(CreatureAI* ai = nullptr);
152 void Motion_Initialize();
153
154 CreatureAI* AI() const { return reinterpret_cast<CreatureAI*>(GetAI()); }
155
156 uint32 GetShieldBlockValue() const override;
157
158 SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType /*attackType*/ = BASE_ATTACK, uint8 /*damageIndex*/ = 0) const override { return m_meleeDamageSchoolMask; }
159 void SetMeleeDamageSchool(SpellSchools school) { m_meleeDamageSchoolMask = SpellSchoolMask(1 << school); }
160
161 bool HasSpell(uint32 spellID) const override;
162
163 bool UpdateEntry(uint32 entry, CreatureData const* data = nullptr, bool updateLevel = true);
164 void SetPhaseMask(uint32 newPhaseMask, bool update) override;// overwrite Unit::SetPhaseMask
165
166 bool UpdateStats(Stats stat) override;
167 bool UpdateAllStats() override;
168 void UpdateResistances(uint32 school) override;
169 void UpdateArmor() override;
170 void UpdateMaxHealth() override;
171 void UpdateMaxPower(Powers power) override;
172 void UpdateAttackPowerAndDamage(bool ranged = false) override;
173 void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex) const override;
174
175 void SetCanDualWield(bool value) override;
176 int8 GetOriginalEquipmentId() const { return m_originalEquipmentId; }
177 uint8 GetCurrentEquipmentId() const { return m_equipmentId; }
178 void SetCurrentEquipmentId(uint8 id) { m_equipmentId = id; }
179
180 float GetSpellDamageMod(int32 Rank) const;
181
182 VendorItemData const* GetVendorItems() const;
183 uint32 GetVendorItemCurrentCount(VendorItem const* vItem);
184 uint32 UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 used_count);
185
186 CreatureTemplate const* GetCreatureTemplate() const { return m_creatureInfo; }
187 CreatureData const* GetCreatureData() const { return m_creatureData; }
188 CreatureAddon const* GetCreatureAddon() const;
189
190 std::string const& GetAIName() const;
191 std::string GetScriptName() const;
192 uint32 GetScriptId() const;
193 void InheritStringIds(Creature const* parent);
194 bool HasStringId(std::string_view id) const;
195 void SetScriptStringId(std::string id);
196 std::string_view GetStringId(StringIdType type) const { return m_stringIds[size_t(type)] ? std::string_view(*m_stringIds[size_t(type)]) : std::string_view(); }
197
198 // override WorldObject function for proper name localization
199 std::string const& GetNameForLocaleIdx(LocaleConstant locale_idx) const override;
200
201 void setDeathState(DeathState s) override; // override virtual Unit::setDeathState
202
203 bool LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap, bool allowDuplicate);
204 void SaveToDB();
205 // overriden in Pet
206 virtual void SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask);
207 static bool DeleteFromDB(ObjectGuid::LowType spawnId);
208
210 void StartPickPocketRefillTimer();
211 void ResetPickPocketRefillTimer() { _pickpocketLootRestore = 0; }
212 bool CanGeneratePickPocketLoot() const;
213 ObjectGuid GetLootRecipientGUID() const { return m_lootRecipient; }
214 Player* GetLootRecipient() const;
215 Group* GetLootRecipientGroup() const;
216 bool hasLootRecipient() const { return !m_lootRecipient.IsEmpty() || !m_lootRecipientGroup.IsEmpty(); }
217 bool isTappedBy(Player const* player) const; // return true if the creature is tapped by the player or a member of his party.
218
219 void SetLootRecipient (Unit* unit, bool withGroup = true);
220 void AllLootRemovedFromCorpse();
221
222 uint16 GetLootMode() const { return m_LootMode; }
223 bool HasLootMode(uint16 lootMode) { return (m_LootMode & lootMode) != 0; }
224 void SetLootMode(uint16 lootMode) { m_LootMode = lootMode; }
225 void AddLootMode(uint16 lootMode) { m_LootMode |= lootMode; }
226 void RemoveLootMode(uint16 lootMode) { m_LootMode &= ~lootMode; }
227 void ResetLootMode() { m_LootMode = LOOT_MODE_DEFAULT; }
228
230
231 bool CanStartAttack(Unit const* u, bool force) const;
232 float GetAttackDistance(Unit const* player) const;
233 float GetAggroRange(Unit const* target) const;
234
235 void SendAIReaction(AiReaction reactionType);
236
237 Unit* SelectNearestTarget(float dist = 0, bool playerOnly = false) const;
238 Unit* SelectNearestTargetInAttackDistance(float dist = 0) const;
239 Unit* SelectNearestHostileUnitInAggroRange(bool useLOS = false, bool ignoreCivilians = false) const;
240
241 void DoFleeToGetAssistance();
242 void CallForHelp(float fRadius);
243 void CallAssistance();
244 void SetNoCallAssistance(bool val) { m_AlreadyCallAssistance = val; }
245 void SetNoSearchAssistance(bool val) { m_AlreadySearchedAssistance = val; }
246 bool HasSearchedAssistance() const { return m_AlreadySearchedAssistance; }
247 bool CanAssistTo(Unit const* u, Unit const* enemy, bool checkfaction = true) const;
248 bool _IsTargetAcceptable(Unit const* target) const;
249 bool CanIgnoreFeignDeath() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH) != 0; }
250
251 void RemoveCorpse(bool setSpawnTime = true, bool destroyForNearbyPlayers = true);
252
253 void DespawnOrUnsummon(Milliseconds timeToDespawn = 0s, Seconds forceRespawnTime = 0s);
254
255 time_t const& GetRespawnTime() const { return m_respawnTime; }
256 time_t GetRespawnTimeEx() const;
257 void SetRespawnTime(uint32 respawn);
258 void Respawn(bool force = false);
259 void SaveRespawnTime(uint32 forceDelay = 0);
260
261 uint32 GetRespawnDelay() const { return m_respawnDelay; }
262 void SetRespawnDelay(uint32 delay) { m_respawnDelay = delay; }
263
264 float GetWanderDistance() const { return m_wanderDistance; }
265 void SetWanderDistance(float dist) { m_wanderDistance = dist; }
266
267 void DoImmediateBoundaryCheck() { m_boundaryCheckTime = 0; }
268 uint32 GetCombatPulseDelay() const { return m_combatPulseDelay; }
269 void SetCombatPulseDelay(uint32 delay) // (secs) interval at which the creature pulses the entire zone into combat (only works in dungeons)
270 {
271 m_combatPulseDelay = delay;
272 if (m_combatPulseTime == 0 || m_combatPulseTime > delay)
273 m_combatPulseTime = delay;
274 }
275
276 uint32 m_groupLootTimer; // (msecs)timer used for group loot
277 ObjectGuid lootingGroupLowGUID; // used to find group which is looting corpse
278
279 void SendZoneUnderAttackMessage(Player* attacker);
280
281 bool hasQuest(uint32 quest_id) const override;
282 bool hasInvolvedQuest(uint32 quest_id) const override;
283
284 bool CanRegenerateHealth() const { return !_regenerateHealthLock && _regenerateHealth; }
285 void SetRegenerateHealth(bool value) { _regenerateHealthLock = !value; }
286 virtual uint8 GetPetAutoSpellSize() const { return MAX_SPELL_CHARM; }
287 virtual uint32 GetPetAutoSpellOnPos(uint8 pos) const;
288 float GetPetChaseDistance() const;
289
290 void SetCannotReachTarget(bool cannotReach);
291 bool CanNotReachTarget() const { return m_cannotReachTarget; }
292
293 void SetHomePosition(float x, float y, float z, float o) { m_homePosition.Relocate(x, y, z, o); }
294 void SetHomePosition(Position const& pos) { m_homePosition.Relocate(pos); }
295 void GetHomePosition(float& x, float& y, float& z, float& ori) const { m_homePosition.GetPosition(x, y, z, ori); }
296 Position const& GetHomePosition() const { return m_homePosition; }
297
298 void SetTransportHomePosition(float x, float y, float z, float o) { m_transportHomePosition.Relocate(x, y, z, o); }
299 void SetTransportHomePosition(Position const& pos) { m_transportHomePosition.Relocate(pos); }
300 void GetTransportHomePosition(float& x, float& y, float& z, float& ori) const { m_transportHomePosition.GetPosition(x, y, z, ori); }
301 Position const& GetTransportHomePosition() const { return m_transportHomePosition; }
302
303 uint32 GetWaypointPath() const { return _waypointPathId; }
304 void LoadPath(uint32 pathid) { _waypointPathId = pathid; }
305
306 // nodeId, pathId
307 std::pair<uint32, uint32> GetCurrentWaypointInfo() const { return _currentWaypointNodeInfo; }
308 void UpdateCurrentWaypointInfo(uint32 nodeId, uint32 pathId) { _currentWaypointNodeInfo = { nodeId, pathId }; }
309
310 bool IsReturningHome() const;
311
312 void SearchFormation();
313 CreatureGroup* GetFormation() { return m_formation; }
314 void SetFormation(CreatureGroup* formation) { m_formation = formation; }
315 bool IsFormationLeader() const;
316 void SignalFormationMovement();
317 bool IsFormationLeaderMoveAllowed() const;
318
319 void SetDisableReputationGain(bool disable) { DisableReputationGain = disable; }
320 bool IsReputationGainDisabled() const { return DisableReputationGain; }
321 bool IsDamageEnoughForLootingAndReward() const { return (m_creatureInfo->flags_extra & CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ) || (m_PlayerDamageReq == 0); }
322 void LowerPlayerDamageReq(uint32 unDamage);
323 void ResetPlayerDamageReq() { m_PlayerDamageReq = GetHealth() / 2; }
325
326 uint32 GetOriginalEntry() const { return m_originalEntry; }
327 void SetOriginalEntry(uint32 entry) { m_originalEntry = entry; }
328
329 // There's many places not ready for dynamic spawns. This allows them to live on for now.
330 void SetRespawnCompatibilityMode(bool mode = true) { m_respawnCompatibilityMode = mode; }
331 bool GetRespawnCompatibilityMode() { return m_respawnCompatibilityMode; }
332
333 static float _GetDamageMod(int32 Rank);
334
335 float m_SightDistance, m_CombatDistance;
336
337 bool m_isTempWorldObject; //true when possessed
338
339 // Handling caster facing during spellcast
340 void SetTarget(ObjectGuid guid) override;
341 void DoNotReacquireSpellFocusTarget();
342 void SetSpellFocus(Spell const* focusSpell, WorldObject const* target);
343 bool HasSpellFocus(Spell const* focusSpell = nullptr) const override;
344 void ReleaseSpellFocus(Spell const* focusSpell = nullptr, bool withDelay = true);
345
346 bool IsMovementPreventedByCasting() const override;
347
348 // Part of Evade mechanics
349 time_t GetLastDamagedTime() const { return _lastDamagedTime; }
350 void SetLastDamagedTime(time_t val) { _lastDamagedTime = val; }
351
352 CreatureTextRepeatIds GetTextRepeatGroup(uint8 textGroup);
353 void SetTextRepeatId(uint8 textGroup, uint8 id);
354 void ClearTextRepeatGroup(uint8 textGroup);
355 bool IsEscorted() const;
356
357 bool CanGiveExperience() const;
358
359 bool IsEngaged() const override;
360 void AtEngage(Unit* target) override;
361 void AtDisengage() override;
362
364 {
365 return !_isMissingCanSwimFlagOutOfCombat;
366 }
367 void RefreshCanSwimFlag(bool recheck = false);
368
369 std::string GetDebugInfo() const override;
370
371 void ExitVehicle(Position const* exitPosition = nullptr) override;
372
373 protected:
374 bool CreateFromProto(ObjectGuid::LowType guidlow, uint32 entry, CreatureData const* data = nullptr, uint32 vehId = 0);
375 bool InitEntry(uint32 entry, CreatureData const* data = nullptr);
376
377 // vendor items
379
380 static float _GetHealthMod(int32 Rank);
381
384
387 time_t m_corpseRemoveTime; // (msecs)timer for death or corpse disappearance
388 time_t m_respawnTime; // (secs) time of next respawn
389 uint32 m_respawnDelay; // (secs) delay between corpse disappearance and respawning
390 uint32 m_corpseDelay; // (secs) delay between death and corpse disappearance
393 uint32 m_boundaryCheckTime; // (msecs) remaining time for next evade boundary check
394 uint32 m_combatPulseTime; // (msecs) remaining time for next zone-in-combat pulse
395 uint32 m_combatPulseDelay; // (secs) how often the creature puts the entire zone in combat (only works in dungeons)
396
397 ReactStates m_reactState; // for AI, not charmInfo
398 void RegenerateHealth();
399 void Regenerate(Powers power);
404
409
412
415
417
418 CreatureTemplate const* m_creatureInfo; // Can differ from sObjectMgr->GetCreatureTemplate(GetEntry()) in difficulty mode > 0
420 std::array<std::string const*, 3> m_stringIds;
422
423 uint16 m_LootMode; // Bitmask (default: LOOT_MODE_DEFAULT) that determines what loot will be lootable
424
425 bool IsInvisibleDueToDespawn() const override;
426 bool CanAlwaysSee(WorldObject const* obj) const override;
427
428 private:
429 void ForcedDespawn(uint32 timeMSToDespawn = 0, Seconds forceRespawnTimer = 0s);
430 bool CheckNoGrayAggroConfig(uint32 playerLevel, uint32 creatureLevel) const; // No aggro from gray creatures
431
432 // Waypoint path
434 std::pair<uint32/*nodeId*/, uint32/*pathId*/> _currentWaypointNodeInfo;
435
436 // Formation var
440
441 /* Spell focus system */
442 void ReacquireSpellFocusTarget();
443 struct
444 {
445 ::Spell const* Spell = nullptr;
446 uint32 Delay = 0; // ms until the creature's target should snap back (0 = no snapback scheduled)
447 ObjectGuid Target; // the creature's "real" target while casting
448 float Orientation = 0.0f; // the creature's "real" orientation while casting
449 } _spellFocusInfo;
450
451 time_t _lastDamagedTime; // Part of Evade mechanics
453
454 // Regenerate health
455 bool _regenerateHealth; // Set on creation
456 bool _regenerateHealthLock; // Dynamically set
457
459};
460
462{
463 public:
464 AssistDelayEvent(ObjectGuid victim, Unit& owner) : BasicEvent(), m_victim(victim), m_owner(owner) { }
465
466 bool Execute(uint64 e_time, uint32 p_time) override;
467 void AddAssistant(ObjectGuid guid) { m_assistants.push_back(guid); }
468 private:
470
474};
475
477{
478 public:
479 ForcedDespawnDelayEvent(Creature& owner, Seconds respawnTimer) : BasicEvent(), m_owner(owner), m_respawnTimer(respawnTimer) { }
480 bool Execute(uint64 e_time, uint32 p_time) override;
481
482 private:
485};
486
487#endif
LocaleConstant
Definition Common.h:48
@ CREATURE_FLAG_EXTRA_DUNGEON_BOSS
@ CREATURE_FLAG_EXTRA_TRIGGER
@ CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH
@ CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ
@ CREATURE_FLAG_EXTRA_CIVILIAN
@ CREATURE_FLAG_EXTRA_GUARD
@ CREATURE_FLAG_EXTRA_ALL_DIMINISH
static const uint32 MAX_CREATURE_SPELLS
std::vector< uint8 > CreatureTextRepeatIds
Definition Creature.h:58
std::list< VendorItemCount > VendorItemCounts
Definition Creature.h:50
std::unordered_map< uint8, CreatureTextRepeatIds > CreatureTextRepeatGroup
Definition Creature.h:59
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
int8_t int8
Definition Define.h:131
int32_t int32
Definition Define.h:129
uint64_t uint64
Definition Define.h:132
uint16_t uint16
Definition Define.h:134
uint32_t uint32
Definition Define.h:133
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:27
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:24
MovementGeneratorType
std::list< ObjectGuid > GuidList
Definition ObjectGuid.h:261
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
SpellSchools
SpellSchoolMask
StringIdType
AiReaction
WeaponAttackType
@ BASE_ATTACK
Powers
@ LOOT_MODE_DEFAULT
Stats
ReactStates
@ REACT_PASSIVE
#define MAX_SPELL_CHARM
Definition Unit.h:37
DeathState
Definition Unit.h:210
@ UNIT_STATE_EVADE
Definition Unit.h:242
ObjectGuid m_victim
Definition Creature.h:471
AssistDelayEvent(ObjectGuid victim, Unit &owner)
Definition Creature.h:464
void AddAssistant(ObjectGuid guid)
Definition Creature.h:467
GuidList m_assistants
Definition Creature.h:472
time_t _pickpocketLootRestore
Timers.
Definition Creature.h:386
void SetCombatPulseDelay(uint32 delay)
Definition Creature.h:269
VendorItemCounts m_vendorItemCounts
Definition Creature.h:378
time_t const & GetRespawnTime() const
Definition Creature.h:255
virtual uint8 GetPetAutoSpellSize() const
Definition Creature.h:286
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:293
float m_wanderDistance
Definition Creature.h:392
void SetNoSearchAssistance(bool val)
Definition Creature.h:245
Loot loot
Definition Creature.h:209
void RemoveLootMode(uint16 lootMode)
Definition Creature.h:226
ObjectGuid lootingGroupLowGUID
Definition Creature.h:277
int8 GetOriginalEquipmentId() const
Definition Creature.h:176
bool IsTrigger() const
Definition Creature.h:98
std::array< std::string const *, 3 > m_stringIds
Definition Creature.h:420
void SetHomePosition(Position const &pos)
Definition Creature.h:294
void ResetLootMode()
Definition Creature.h:227
void DoImmediateBoundaryCheck()
Definition Creature.h:267
CreatureTextRepeatGroup m_textRepeat
Definition Creature.h:452
bool _regenerateHealth
Definition Creature.h:455
bool IsDungeonBoss() const
Definition Creature.h:114
SpellSchoolMask m_meleeDamageSchoolMask
Definition Creature.h:410
int8 m_originalEquipmentId
Definition Creature.h:403
void SetDisableReputationGain(bool disable)
Definition Creature.h:319
ObjectGuid::LowType m_spawnId
For new or temporary creatures is 0 for saved it is lowguid.
Definition Creature.h:401
Position m_transportHomePosition
Definition Creature.h:414
uint16 GetLootMode() const
Definition Creature.h:222
bool IsCivilian() const
Definition Creature.h:97
void SetImmuneToPC(bool apply) override
Definition Creature.h:129
bool IsReputationGainDisabled() const
Definition Creature.h:320
bool HasCanSwimFlagOutOfCombat() const
Definition Creature.h:363
Optional< std::string > m_scriptStringId
Definition Creature.h:421
bool m_cannotReachTarget
Definition Creature.h:407
bool m_respawnCompatibilityMode
Definition Creature.h:439
bool CanWalk() const
Definition Creature.h:105
CreatureTemplate const * m_creatureInfo
Definition Creature.h:418
bool IsSpawnedOnTransport() const
Definition Creature.h:87
bool CanFly() const override
Definition Creature.h:108
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:295
Position const & GetHomePosition() const
Definition Creature.h:296
uint32 GetWaypointPath() const
Definition Creature.h:303
void SetLastDamagedTime(time_t val)
Definition Creature.h:350
bool IsEvadingAttacks() const
Definition Creature.h:147
bool HasReactState(ReactStates state) const
Definition Creature.h:121
bool m_triggerJustAppeared
Definition Creature.h:438
void GetTransportHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:300
uint32 GetOriginalEntry() const
Definition Creature.h:326
ObjectGuid GetLootRecipientGUID() const
Definition Creature.h:213
MovementGeneratorType m_defaultMovementType
Definition Creature.h:400
void SetReactState(ReactStates st)
Definition Creature.h:119
bool GetRespawnCompatibilityMode()
Definition Creature.h:331
bool CanHover() const
Definition Creature.h:109
uint32 _waypointPathId
Definition Creature.h:433
void ResetPlayerDamageReq()
Definition Creature.h:323
std::pair< uint32, uint32 > _currentWaypointNodeInfo
Definition Creature.h:434
bool hasLootRecipient() const
Definition Creature.h:216
void SetRespawnCompatibilityMode(bool mode=true)
Definition Creature.h:330
void SetCurrentEquipmentId(uint8 id)
Definition Creature.h:178
void SetRespawnDelay(uint32 delay)
Definition Creature.h:262
uint32 m_cannotReachTimer
Definition Creature.h:408
uint32 m_respawnDelay
Definition Creature.h:389
time_t m_corpseRemoveTime
Definition Creature.h:387
uint32 m_combatPulseDelay
Definition Creature.h:395
void UpdateCurrentWaypointInfo(uint32 nodeId, uint32 pathId)
Definition Creature.h:308
time_t m_respawnTime
Definition Creature.h:388
void SetRegenerateHealth(bool value)
Definition Creature.h:285
CreatureData const * m_creatureData
Definition Creature.h:419
float m_CombatDistance
Definition Creature.h:335
uint16 m_LootMode
Definition Creature.h:423
uint32 m_boundaryCheckTime
Definition Creature.h:393
ObjectGuid m_lootRecipient
Definition Creature.h:382
Position m_homePosition
Definition Creature.h:413
CreatureData const * GetCreatureData() const
Definition Creature.h:187
uint32 m_PlayerDamageReq
Definition Creature.h:324
std::pair< uint32, uint32 > GetCurrentWaypointInfo() const
Definition Creature.h:307
bool CanIgnoreFeignDeath() const
Definition Creature.h:249
ObjectGuid::LowType GetSpawnId() const
Definition Creature.h:83
bool CanNotReachTarget() const
Definition Creature.h:291
bool m_AlreadyCallAssistance
Definition Creature.h:405
CreatureTemplate const * GetCreatureTemplate() const
Definition Creature.h:186
uint32 GetRespawnDelay() const
Definition Creature.h:261
Position const & GetTransportHomePosition() const
Definition Creature.h:301
bool CanRegenerateHealth() const
Definition Creature.h:284
bool DisableReputationGain
Definition Creature.h:416
CreatureGroup * m_formation
Definition Creature.h:437
bool HasSearchedAssistance() const
Definition Creature.h:246
void SetTransportHomePosition(Position const &pos)
Definition Creature.h:299
uint32 m_corpseDelay
Definition Creature.h:390
bool _regenerateHealthLock
Definition Creature.h:456
void SetImmuneToNPC(bool apply) override
Definition Creature.h:132
uint8 m_equipmentId
Definition Creature.h:402
bool IsDamageEnoughForLootingAndReward() const
Definition Creature.h:321
SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType=BASE_ATTACK, uint8=0) const override
Definition Creature.h:158
CreatureGroup * GetFormation()
Definition Creature.h:313
bool m_AlreadySearchedAssistance
Definition Creature.h:406
uint32 GetCorpseDelay() const
Definition Creature.h:95
std::string_view GetStringId(StringIdType type) const
Definition Creature.h:196
uint32 m_originalEntry
Definition Creature.h:411
void SetImmuneToAll(bool apply) override
Definition Creature.h:126
bool m_isTempWorldObject
Definition Creature.h:337
void AddLootMode(uint16 lootMode)
Definition Creature.h:225
ObjectGuid Target
Definition Creature.h:447
ReactStates m_reactState
Definition Creature.h:397
time_t _lastDamagedTime
Definition Creature.h:451
ReactStates GetReactState() const
Definition Creature.h:120
void SetTransportHomePosition(float x, float y, float z, float o)
Definition Creature.h:298
void SetWanderDistance(float dist)
Definition Creature.h:265
time_t GetLastDamagedTime() const
Definition Creature.h:349
ObjectGuid m_lootRecipientGroup
Definition Creature.h:383
MovementGeneratorType GetDefaultMovementType() const override
Definition Creature.h:111
uint8 GetCurrentEquipmentId() const
Definition Creature.h:177
void SetFormation(CreatureGroup *formation)
Definition Creature.h:314
void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio=false)
Definition Creature.h:89
uint32 GetCombatPulseDelay() const
Definition Creature.h:268
void SetMeleeDamageSchool(SpellSchools school)
Definition Creature.h:159
float GetWanderDistance() const
Definition Creature.h:264
bool HasLootMode(uint16 lootMode)
Definition Creature.h:223
void ResetPickPocketRefillTimer()
Definition Creature.h:211
void SetNoCallAssistance(bool val)
Definition Creature.h:244
bool IsAffectedByDiminishingReturns() const override
Definition Creature.h:115
bool IsRacialLeader() const
Definition Creature.h:96
bool m_ignoreCorpseDecayRatio
Definition Creature.h:391
bool IsInEvadeMode() const
Definition Creature.h:146
bool IsGuard() const
Definition Creature.h:99
CreatureAI * AI() const
Definition Creature.h:154
void SetLootMode(uint16 lootMode)
Definition Creature.h:224
uint32 m_groupLootTimer
Definition Creature.h:276
void SetDefaultMovementType(MovementGeneratorType mgt)
Definition Creature.h:112
void LoadPath(uint32 pathid)
Definition Creature.h:304
void SetOriginalEntry(uint32 entry)
Definition Creature.h:327
bool _isMissingCanSwimFlagOutOfCombat
Definition Creature.h:458
void DisappearAndDie()
Definition Creature.h:73
uint32 m_combatPulseTime
Definition Creature.h:394
Seconds const m_respawnTimer
Definition Creature.h:484
ForcedDespawnDelayEvent(Creature &owner, Seconds respawnTimer)
Definition Creature.h:479
Definition Group.h:165
Definition Map.h:281
uint32 LowType
Definition ObjectGuid.h:142
virtual bool hasQuest(uint32) const
Definition Object.h:155
virtual void SetObjectScale(float scale)
Definition Object.h:85
virtual bool hasInvolvedQuest(uint32) const
Definition Object.h:156
Definition Spell.h:152
Definition Unit.h:769
void SetImmuneToAll(bool apply, bool keepCombat)
Definition Unit.cpp:8303
void SetImmuneToPC(bool apply, bool keepCombat)
Definition Unit.cpp:8316
virtual bool IsMovementPreventedByCasting() const
Definition Unit.cpp:3123
virtual void SetTarget(ObjectGuid)=0
void AddToWorld() override
Definition Unit.cpp:9592
virtual void SetCanDualWield(bool value)
Definition Unit.h:838
virtual bool UpdateAllStats()=0
virtual void UpdateAttackPowerAndDamage(bool ranged=false)=0
virtual bool IsImmunedToSpell(SpellInfo const *spellInfo, WorldObject const *caster, bool requireImmunityPurgesEffectAttribute=false) const
Definition Unit.cpp:7691
virtual void AtDisengage()
Definition Unit.h:1917
virtual void UpdateResistances(uint32 school)=0
std::string GetDebugInfo() const override
Definition Unit.cpp:13950
void SetImmuneToNPC(bool apply, bool keepCombat)
Definition Unit.cpp:8339
UnitAI * GetAI() const
Definition Unit.h:800
virtual bool HasSpell(uint32) const
Definition Unit.h:1161
virtual bool IsAffectedByDiminishingReturns() const
Definition Unit.h:821
bool IsImmuneToNPC() const
Definition Unit.h:1140
virtual bool CanEnterWater() const =0
virtual bool IsImmunedToSpellEffect(SpellInfo const *spellInfo, SpellEffectInfo const &spellEffectInfo, WorldObject const *caster, bool requireImmunityPurgesEffectAttribute=false) const
Definition Unit.cpp:7811
bool IsImmuneToAll() const
Definition Unit.h:1134
virtual void UpdateArmor()=0
bool IsHovering() const
Definition Unit.h:1220
virtual void UpdateMaxPower(Powers power)=0
uint32 GetHealth() const
Definition Unit.h:913
virtual uint32 GetShieldBlockValue() const =0
virtual bool UpdateStats(Stats stat)=0
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:12152
uint8 GetLevelForTarget(WorldObject const *) const override
Definition Unit.h:890
virtual void SetDisplayId(uint32 modelId)
Definition Unit.cpp:10407
bool HasUnitState(const uint32 f) const
Definition Unit.h:876
virtual void Update(uint32 time) override
Definition Unit.cpp:432
virtual bool CanSwim() const
Definition Unit.cpp:12818
virtual float GetNativeObjectScale() const
Definition Unit.h:1580
void RemoveFromWorld() override
Definition Unit.cpp:9601
virtual void UpdateMaxHealth()=0
virtual void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float &minDamage, float &maxDamage, uint8 damageIndex) const =0
virtual bool HasSpellFocus(Spell const *=nullptr) const
Definition Unit.h:1481
virtual void setDeathState(DeathState s)
Definition Unit.cpp:8728
virtual void AtEngage(Unit *target)
Definition Unit.cpp:8785
bool IsFlying() const
Definition Unit.h:1762
virtual bool IsEngaged() const
Definition Unit.h:1126
bool IsImmuneToPC() const
Definition Unit.h:1137
virtual void ExitVehicle(Position const *exitPosition=nullptr)
Definition Unit.cpp:12661
uint32 GetMapId() const
Definition Position.h:193
virtual bool IsInvisibleDueToDespawn() const
Definition Object.h:625
virtual std::string const & GetNameForLocaleIdx(LocaleConstant) const
Definition Object.h:385
virtual bool CanAlwaysSee(WorldObject const *) const
Definition Object.h:645
Player session in the World.
Definition Loot.h:207
time_t lastIncrementTime
Definition Creature.h:47
uint32 itemId
Definition Creature.h:45