30#include <forward_list>
35#define VISUAL_WAYPOINT 1
36#define WORLD_TRIGGER 12999
37#define ARTIFACTS_ALL_WEAPONS_GENERAL_WEAPON_EQUIPPED_PASSIVE 197886
38#define SPELL_DH_DOUBLE_JUMP 196055
39#define DISPLAYID_HIDDEN_MOUNT 73200
41#define WARMODE_ENLISTED_SPELL_OUTSIDE 269083
43#define MAX_AGGRO_RESET_TIME 10
44#define MAX_AGGRO_RADIUS 45.0f
111 struct SpellEffectExtraData;
128 bool RollDispel()
const;
345#define MAX_COMBAT_RATING 32
435 void ModifyDamage(
int32 amount);
436 void AbsorbDamage(
uint32 amount);
437 void ResistDamage(
uint32 amount);
438 void BlockDamage(
uint32 amount);
471 void AbsorbHeal(
uint32 amount);
483 uint32 GetHitMask()
const;
595#define CURRENT_FIRST_NON_MELEE_SPELL 1
596#define CURRENT_MAX_SPELL 4
601#define REACTIVE_TIMER_START 4000
623#define ATTACK_DISPLAY_DELAY 200
624#define MAX_PLAYER_STEALTH_DETECT_RANGE 30.0f
634 typedef std::pair<AuraMap::const_iterator, AuraMap::const_iterator>
AuraMapBounds;
647 typedef std::array<DiminishingReturn, DIMINISHING_MAX>
Diminishing;
654 static std::vector<AuraEffect*> CopyAuraEffectList(
AuraEffectList const& list);
659 void AIUpdateTick(
uint32 diff);
661 void ScheduleAIChange();
662 void PushAI(
UnitAI* newAI);
665 void SetAI(
UnitAI* newAI);
668 UnitAI* GetScheduledChangeAI();
669 bool HasScheduledAIChange()
const;
672 void AddToWorld()
override;
673 void RemoveFromWorld()
override;
675 void CleanupBeforeRemoveFromMap(
bool finalCleanup);
676 void CleanupsBeforeDelete(
bool finalCleanup =
true)
override;
680 void IncrDiminishing(
SpellInfo const* auraSpellInfo);
683 void ClearDiminishings();
691 bool haveOffhandWeapon()
const;
698 bool IsWithinCombatRange(
Unit const* obj,
float dist2compare)
const;
700 bool IsWithinMeleeRangeAt(
Position const& pos,
Unit const* obj)
const;
701 float GetMeleeRange(
Unit const* target)
const;
703 bool IsWithinBoundaryRadius(
const Unit* obj)
const;
706 void _addAttacker(
Unit* pAttacker);
707 void _removeAttacker(
Unit* pAttacker);
708 Unit* getAttackerForHelper()
const;
710 void CastStop(
uint32 except_spellid = 0);
712 void RemoveAllAttackers();
714 bool isAttackingPlayer()
const;
723 void ValidateAttackersAndOwnTarget();
724 void CombatStop(
bool includingCast =
false,
bool mutualPvP =
true,
bool (*unitFilter)(
Unit const* otherUnit) =
nullptr);
725 void CombatStopWithPets(
bool includingCast =
false);
726 void StopAttackFaction(
uint32 faction_id);
728 void SendMeleeAttackStop(
Unit* victim =
nullptr);
729 void SendMeleeAttackStart(
Unit* victim);
734 bool CanFreeMove()
const;
748 void SetLevel(
uint8 lvl,
bool sendUpdate =
true);
760 float GetStat(
Stats stat)
const {
return float(m_unitData->Stats[stat]); }
784 float GetHealthPct()
const {
return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
788 void SetHealth(
uint64 val);
789 void SetMaxHealth(
uint64 val);
793 void TriggerOnHealthChangeAuras(
uint64 oldVal,
uint64 newVal);
800 void SetPowerType(
Powers power,
bool sendUpdate =
true);
802 Powers CalculateDisplayPowerType()
const;
803 void UpdateDisplayPower();
807 float GetPowerPct(
Powers power)
const {
return GetMaxPower(power) ? 100.f * GetPower(power) / GetMaxPower(power) : 0.0f; }
809 void SetPower(
Powers power,
int32 val,
bool withPowerUpdate =
true);
823 void ApplyCastTimePercentMod(
float val,
bool apply);
861 bool IsInPartyWith(
Unit const* unit)
const;
862 bool IsInRaidWith(
Unit const* unit)
const;
863 void GetPartyMembers(std::list<Unit*> &units);
864 bool IsContestedGuard()
const;
875 virtual void SetPvP(
bool state);
883 uint32 GetCreatureType()
const;
884 uint32 GetCreatureTypeMask()
const;
887 bool IsSitState()
const;
888 bool IsStandState()
const;
896 void SetAnimTier(
AnimTier animTier,
bool notifyClient =
true);
906 void UpdateMountCapability();
908 void SendDurabilityLoss(
Player* receiver,
uint32 percent);
909 void PlayOneShotAnimKitId(
uint16 animKitId);
910 void SetAIAnimKitId(
uint16 animKitId);
912 void SetMovementAnimKitId(
uint16 animKitId);
914 void SetMeleeAnimKitId(
uint16 animKitId);
918 static void DealDamageMods(
Unit const* attacker,
Unit const* victim,
uint32& damage,
uint32* absorb);
920 static void Kill(
Unit* attacker,
Unit* victim,
bool durabilityLoss =
true,
bool skipSettingDeathState =
false);
921 void KillSelf(
bool durabilityLoss =
true,
bool skipSettingDeathState =
false) {
Unit::Kill(
this,
this, durabilityLoss, skipSettingDeathState); }
922 static void DealHeal(
HealInfo& healInfo);
928 void GetProcAurasTriggeredOnEvent(AuraApplicationProcContainer& aurasTriggeringProc, AuraApplicationList* procAuras,
ProcEventInfo& eventInfo);
929 void TriggerAurasProcOnEvent(AuraApplicationList* myProcAuras, AuraApplicationList* targetProcAuras,
933 void TriggerAurasProcOnEvent(
ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras);
936 void DoMeleeAttackIfReady();
940 void DealMeleeDamage(
CalcDamageInfo* damageInfo,
bool durabilityLoss);
941 void HandleProcExtraAttackFor(
Unit* victim,
uint32 count);
945 void AddExtraAttacks(
uint32 count);
955 virtual bool CanApplyResilience()
const;
956 static void ApplyResilience(
Unit const* victim,
int32* damage);
958 int32 CalculateAOEAvoidance(
int32 damage,
uint32 schoolMask,
bool npcCaster)
const;
966 float GetUnitMissChance()
const;
968 float GetUnitCriticalChanceTaken(
Unit const* attacker,
WeaponAttackType attackType,
float critDone)
const;
971 bool CanUseAttackType(
uint8 attacktype)
const;
975 float GetWeaponProcChance()
const;
976 float GetPPMProcChance(
uint32 WeaponSpeed,
float PPM,
SpellInfo const* spellProto)
const;
1007 bool IsServiceProvider()
const;
1020 bool IsEngagedBy(
Unit const* who)
const {
return CanHaveThreatList() ? IsThreatenedBy(who) : IsInCombatWith(who); }
1021 void EngageWithTarget(
Unit* who);
1025 void AtTargetAttacked(
Unit* target,
bool canInitialAggro);
1028 void SetImmuneToAll(
bool apply,
bool keepCombat);
1031 void SetImmuneToPC(
bool apply,
bool keepCombat);
1034 void SetImmuneToNPC(
bool apply,
bool keepCombat);
1038 void SetUninteractible(
bool apply);
1041 void SetCannotTurn(
bool apply);
1045 void SetInCombatWith(
Unit* enemy,
bool addSecondUnitSuppressed =
false) {
if (enemy) m_combatManager.SetInCombatWith(enemy, addSecondUnitSuppressed); }
1047 void UpdatePetCombatState();
1050 virtual void SetInteractionAllowedWhileHostile(
bool interactionAllowed);
1053 virtual void SetInteractionAllowedInCombat(
bool interactionAllowed);
1055 virtual void UpdateNearbyPlayersInteractions();
1058 bool IsThreatened()
const;
1066 void SendClearTarget();
1070 bool HasBreakableByDamageAuraType(
AuraType type,
uint32 excludeAura = 0)
const;
1071 bool HasBreakableByDamageCrowdControlAura(
Unit* excludeCasterChannel =
nullptr)
const;
1077 bool IsPolymorphed()
const;
1080 bool isTargetableForAttack(
bool checkFakeDeath =
true)
const;
1082 bool IsInWater()
const;
1083 bool IsUnderWater()
const;
1084 bool IsOnOceanFloor()
const;
1085 bool isInAccessiblePlaceFor(
Creature const* c)
const;
1087 void SendHealSpellLog(
HealInfo& healInfo,
bool critical =
false);
1088 int32 HealBySpell(
HealInfo& healInfo,
bool critical =
false);
1096 void SendPlaySpellVisual(
Unit* target,
uint32 spellVisualId,
uint16 missReason,
uint16 reflectStatus,
float travelSpeed,
bool speedAsTime =
false,
float launchDelay = 0.0f);
1097 void SendPlaySpellVisual(
Position const& targetPosition,
uint32 spellVisualId,
uint16 missReason,
uint16 reflectStatus,
float travelSpeed,
bool speedAsTime =
false,
float launchDelay = 0.0f);
1098 void SendCancelSpellVisual(
uint32 id);
1101 void SendCancelSpellVisualKit(
uint32 id);
1103 void CancelSpellMissiles(
uint32 spellId,
bool reverseMissile =
false,
bool abortSpell =
false);
1111 void SendSpellDamageResist(
Unit* target,
uint32 spellId);
1112 void SendSpellDamageImmune(
Unit* target,
uint32 spellId,
bool isPeriodic);
1114 void NearTeleportTo(
Position const& pos,
bool casting =
false);
1116 void SendTeleportPacket(
Position const& pos);
1117 virtual bool UpdatePosition(
float x,
float y,
float z,
float ang,
bool teleport =
false);
1119 virtual bool UpdatePosition(
Position const& pos,
bool teleport =
false);
1120 void UpdateOrientation(
float orientation);
1121 void UpdateHeight(
float newZ);
1123 void SendMoveKnockBack(
Player* player,
float speedXY,
float speedZ,
float vcos,
float vsin);
1126 void JumpTo(
WorldObject* obj,
float speedZ,
bool withOrientation =
false);
1128 void MonsterMoveWithSpeed(
float x,
float y,
float z,
float speed,
bool generatePath =
false,
bool forceDestination =
false);
1131 void SetPlayHoverAnim(
bool enable,
bool sendUpdate =
true);
1132 void CalculateHoverHeight();
1138 bool SetWalk(
bool enable);
1139 bool SetDisableGravity(
bool disable,
bool updateAnimTier =
true);
1140 bool SetFall(
bool enable);
1141 bool SetSwim(
bool enable);
1142 bool SetCanFly(
bool enable);
1143 bool SetWaterWalking(
bool enable);
1144 bool SetFeatherFall(
bool enable);
1145 bool SetHover(
bool enable,
bool updateAnimTier =
true);
1146 bool SetCollision(
bool disable);
1147 bool SetCanTransitionBetweenSwimAndFly(
bool enable);
1148 bool SetCanTurnWhileFalling(
bool enable);
1149 bool SetCanDoubleJump(
bool enable);
1150 bool SetDisableInertia(
bool disable);
1151 void SendSetVehicleRecId(
uint32 vehicleId);
1156 bool SetIgnoreMovementForces(
bool ignore);
1157 void UpdateMovementForcesModMagnitude();
1160 void SetFacingTo(
float const ori,
bool force =
true);
1161 void SetFacingToObject(
WorldObject const*
object,
bool force =
true);
1162 void SetFacingToPoint(
Position const& point,
bool force =
true);
1184 Unit* GetDemonCreator()
const;
1185 Player* GetDemonCreatorPlayer()
const;
1194 Player* GetControllingPlayer()
const;
1199 Minion* GetFirstMinion()
const;
1203 void GetAllMinionsByEntry(std::list<TempSummon*>& Minions,
uint32 entry);
1204 void RemoveAllMinionsByEntry(
uint32 entry);
1205 void SetCharm(
Unit* target,
bool apply);
1206 Unit* GetNextRandomRaidMemberOrPet(
float radius);
1208 void RemoveCharmedBy(
Unit* charmer);
1209 void RestoreFaction();
1212 Unit* GetFirstControlled()
const;
1213 void RemoveAllControlled();
1215 bool IsCharmed()
const {
return !GetCharmerGUID().IsEmpty(); }
1217 bool isPossessedByPlayer()
const;
1218 bool isPossessing()
const;
1219 bool isPossessing(
Unit* u)
const;
1223 void DeleteCharmInfo();
1228 void SetMovedUnit(
Unit* target);
1235 void AddPlayerToVision(
Player* player);
1236 void RemovePlayerFromVision(
Player* player);
1238 void RemoveBindSightAuras();
1239 void RemoveCharmAuras();
1256 void _ApplyAuraEffect(
Aura* aura,
uint8 effIndex);
1258 void _UnapplyAura(AuraApplicationMap::iterator& i,
AuraRemoveMode removeMode);
1260 void _RemoveNoStackAurasDueToAura(
Aura* aura,
bool owned);
1298 void RemoveNotOwnSingleTargetAuras(
bool onPhaseChange =
false);
1299 template <
typename InterruptFlags>
1300 void RemoveAurasWithInterruptFlags(InterruptFlags flag,
SpellInfo const* source =
nullptr);
1304 void RemoveMovementImpairingAuras(
bool withRoot);
1305 void RemoveAurasByShapeShift();
1307 void RemoveAreaAurasDueToLeaveWorld();
1308 void RemoveAllAuras();
1309 void RemoveArenaAuras();
1310 void RemoveAurasOnEvade();
1311 void RemoveAllAurasOnDeath();
1312 void RemoveAllAurasRequiringDeadTarget();
1313 void RemoveAllAurasExceptType(
AuraType type);
1315 void RemoveAllGroupBuffsFromCaster(
ObjectGuid casterGUID);
1318 void _RemoveAllAuraStatMods();
1319 void _ApplyAllAuraStatMods();
1334 AuraApplication* GetAuraApplication(std::function<
bool(
Aura const*)>
const& predicate)
const;
1337 Aura* GetAura(
uint32 spellId, std::function<
bool(
Aura const*)>
const& predicate)
const;
1338 Aura* GetAura(std::function<
bool(
Aura const*)>
const& predicate)
const;
1348 bool HasAura(std::function<
bool(
Aura const*)>
const& predicate)
const;
1349 bool HasAuraType(
AuraType auraType)
const;
1351 bool HasAuraTypeWithMiscvalue(
AuraType auraType,
int32 miscValue)
const;
1352 bool HasAuraTypeWithAffectMask(
AuraType auraType,
SpellInfo const* affectedSpell)
const;
1353 bool HasAuraTypeWithValue(
AuraType auraType,
int32 value)
const;
1354 bool HasAuraTypeWithTriggerSpell(
AuraType auratype,
uint32 triggerSpell)
const;
1355 template <
typename InterruptFlags>
1357 bool HasAuraWithMechanic(
uint64 mechanicMask)
const;
1358 bool HasStrongerAuraWithDR(
SpellInfo const* auraSpellInfo,
Unit* caster)
const;
1365 float GetTotalAuraMultiplier(
AuraType auraType)
const;
1370 float GetTotalAuraMultiplier(
AuraType auraType, std::function<
bool(
AuraEffect const*)>
const& predicate)
const;
1371 int32 GetMaxPositiveAuraModifier(
AuraType auraType, std::function<
bool(
AuraEffect const*)>
const& predicate)
const;
1372 int32 GetMaxNegativeAuraModifier(
AuraType auraType, std::function<
bool(
AuraEffect const*)>
const& predicate)
const;
1375 float GetTotalAuraMultiplierByMiscMask(
AuraType auraType,
uint32 misc_mask)
const;
1380 float GetTotalAuraMultiplierByMiscValue(
AuraType auraType,
int32 misc_value)
const;
1381 int32 GetMaxPositiveAuraModifierByMiscValue(
AuraType auraType,
int32 misc_value)
const;
1382 int32 GetMaxNegativeAuraModifierByMiscValue(
AuraType auraType,
int32 misc_value)
const;
1385 float GetTotalAuraMultiplierByAffectMask(
AuraType auraType,
SpellInfo const* affectedSpell)
const;
1389 void InitStatBuffMods();
1390 void UpdateStatBuffMod(
Stats stat);
1391 void UpdateStatBuffModForClient(
Stats stat);
1397 virtual int32 GetCreatePowerValue(
Powers power)
const;
1423 int32 index = m_unitData->ChannelObjects.FindIndex(guid);
1429 void SetCurrentCastSpell(
Spell* pSpell);
1430 void InterruptSpell(
CurrentSpellTypes spellType,
bool withDelayed =
true,
bool withInstant =
true);
1436 bool IsNonMeleeSpellCast(
bool withDelayed,
bool skipChanneled =
false,
bool skipAutorepeat =
false,
bool isAutoshoot =
false,
bool skipInstant =
true)
const;
1440 void InterruptNonMeleeSpells(
bool withDelayed,
uint32 spellid = 0,
bool withInstant =
true);
1444 Spell* FindCurrentSpellBySpellId(
uint32 spell_id)
const;
1445 int32 GetCurrentSpellCastTime(
uint32 spell_id)
const;
1447 uint32 GetCastSpellXSpellVisualId(
SpellInfo const* spellInfo)
const override;
1450 virtual bool IsMovementPreventedByCasting()
const;
1451 bool CanCastSpellWhileMoving(
SpellInfo const* spellInfo)
const;
1466 bool IsInFeralForm()
const;
1468 bool IsInDisallowedMountForm()
const;
1490 void UpdateUnitMod(
UnitMods unitMod);
1496 void UpdateAllDamageDoneMods();
1499 void UpdateAllDamagePctDoneMods();
1501 float GetTotalStatValue(
Stats stat)
const;
1502 float GetTotalAuraModValue(
UnitMods unitMod)
const;
1509 virtual void UpdateResistances(
uint32 school);
1510 virtual void UpdateAllResistances();
1528 float GetTotalAttackPowerValue(
WeaponAttackType attType,
bool includeWeapon =
true)
const;
1535 bool isInFrontInMap(
Unit const* target,
float distance,
float arc =
float(
M_PI))
const;
1536 bool isInBackInMap(
Unit const* target,
float distance,
float arc =
float(
M_PI))
const;
1539 bool IsVisible()
const;
1540 void SetVisible(
bool x);
1543 virtual void OnPhaseChange();
1544 void UpdateObjectVisibility(
bool forced =
true)
override;
1560 m_interruptMask |=
flags;
1561 m_interruptMask2 |= flags2;
1563 void UpdateInterruptMask();
1566 virtual void RecalculateObjectScale();
1569 virtual void SetDisplayId(
uint32 displayId,
bool setNative =
false);
1572 void RestoreDisplayId(
bool ignorePositiveAurasPreventingMounting =
false);
1580 std::vector<DynamicObject*> GetDynObjects(
uint32 spellId)
const;
1581 void RemoveDynObject(
uint32 spellId);
1582 void RemoveAllDynObjects();
1585 std::vector<GameObject*> GetGameObjects(
uint32 spellId)
const;
1587 void RemoveGameObject(
GameObject* gameObj,
bool del);
1588 void RemoveGameObject(
uint32 spellid,
bool del);
1589 void RemoveAllGameObjects();
1592 void _RegisterAreaTrigger(
AreaTrigger* areaTrigger);
1593 void _UnregisterAreaTrigger(
AreaTrigger* areaTrigger);
1595 std::vector<AreaTrigger*> GetAreaTriggers(
uint32 spellId)
const;
1596 void RemoveAreaTrigger(
uint32 spellId);
1597 void RemoveAreaTrigger(
AuraEffect const* aurEff);
1598 void RemoveAllAreaTriggers();
1601 uint32 BuildAuraStateUpdateForTarget(
Unit const* target)
const;
1603 void UnsummonAllTotems();
1604 bool IsMagnet()
const;
1605 Unit* GetMeleeHitRedirectTarget(
Unit* victim,
SpellInfo const* spellInfo =
nullptr);
1613 float SpellHealingPctDone(
Unit* victim,
SpellInfo const* spellProto)
const;
1619 bool IsBlockCritical();
1626 bool IsImmunedToSpell(
SpellInfo const* spellInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const;
1627 uint32 GetSchoolImmunityMask()
const;
1628 uint32 GetDamageImmunityMask()
const;
1629 uint64 GetMechanicImmunityMask()
const;
1634 virtual bool IsImmunedToSpellEffect(
SpellInfo const* spellInfo,
SpellEffectInfo const& spellEffectInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const;
1639 static void CalcAbsorbResist(
DamageInfo& damageInfo,
Spell* spell =
nullptr);
1640 static void CalcHealAbsorb(
HealInfo& healInfo);
1650 void RemoveAllFollowers();
1658 void PauseMovement(
uint32 timer = 0,
uint8 slot = 0,
bool forced =
true);
1659 void ResumeMovement(
uint32 timer = 0,
uint8 slot = 0);
1679 bool IsSplineEnabled()
const;
1682 void ApplyControlStatesIfNeeded();
1686 void SendPetTalk(
uint32 pettalk);
1690 void PropagateSpeedChange();
1693 void ClearAllReactives();
1695 void UpdateReactives(
uint32 p_time);
1698 void UpdateAuraForGroup();
1702 void SetCantProc(
bool apply);
1709 bool CreateVehicleKit(
uint32 id,
uint32 creatureEntry,
bool loading =
false);
1710 void RemoveVehicleKit(
bool onRemoveFromWorld =
false);
1715 bool IsOnVehicle(
Unit const* vehicle)
const;
1716 Unit* GetVehicleBase()
const;
1717 Unit* GetVehicleRoot()
const;
1718 Creature* GetVehicleCreatureBase()
const;
1723 void HandleSpellClick(
Unit* clicker,
int8 seatId = -1);
1724 void EnterVehicle(
Unit* base,
int8 seatId = -1);
1725 virtual void ExitVehicle(
Position const* exitPosition =
nullptr);
1726 void ChangeSeat(
int8 seatId,
bool next =
true);
1729 void _ExitVehicle(
Position const* exitPosition =
nullptr);
1736 bool IsFalling()
const;
1738 virtual bool CanSwim()
const;
1742 void RewardRage(
uint32 baseRage);
1746 void OutDebugInfo()
const;
1750 Pet*
ToPet() {
if (IsPet())
return reinterpret_cast<Pet*
>(
this);
else return nullptr; }
1751 Pet const*
ToPet()
const {
if (IsPet())
return reinterpret_cast<Pet const*
>(
this);
else return nullptr; }
1754 Totem const*
ToTotem()
const {
if (IsTotem())
return reinterpret_cast<Totem const*
>(
this);
else return nullptr; }
1768 int32 GetHighestExclusiveSameEffectSpellGroupValue(
AuraEffect const* aurEff,
AuraType auraType,
bool checkMiscValue =
false,
int32 miscValue = 0)
const;
1769 bool IsHighestExclusiveAura(
Aura const* aura,
bool removeOtherAuraApplications =
false);
1770 bool IsHighestExclusiveAuraEffect(
SpellInfo const* spellInfo,
AuraType auraType,
int32 effectAmount,
uint32 auraEffectMask,
bool removeOtherAuraApplications =
false);
1775 virtual void TextEmote(std::string_view text,
WorldObject const* target =
nullptr,
bool isBossEmote =
false);
1776 virtual void Whisper(std::string_view text,
Language language,
Player* target,
bool isBossWhisper =
false);
1780 virtual void TextEmote(
uint32 textId,
WorldObject const* target =
nullptr,
bool isBossEmote =
false);
1781 virtual void Whisper(
uint32 textId,
Player* target,
bool isBossWhisper =
false);
1790 float GetCollisionHeight()
const override;
1803 int32 index = m_unitData->WorldEffects.FindIndex(worldEffectId);
1810 void SetVignette(
uint32 vignetteId);
1817 explicit Unit (
bool isWorldObject);
1820 void BuildValuesCreate(
ByteBuffer* data,
Player const* target)
const override;
1821 void BuildValuesUpdate(
ByteBuffer* data,
Player const* target)
const override;
1836 void operator()(
Player const* player)
const;
1840 void DestroyForPlayer(
Player* target)
const override;
1841 void ClearUpdateMask(
bool remove)
override;
1843 void _UpdateSpells(
uint32 time);
1844 void _DeleteRemovedAuras();
1846 void _UpdateAutoRepeatSpell();
1918 bool IsAlwaysVisibleFor(
WorldObject const* seer)
const override;
1919 bool IsAlwaysDetectableFor(
WorldObject const* seer)
const override;
1921 void DisableSpline();
1927 virtual void AtEnterCombat();
1928 virtual void AtExitCombat();
1939 void UpdateSplineMovement(
uint32 t_diff);
1940 void UpdateSplinePosition();
1941 void InterruptMovementBasedAuras();
1950 void SetFeared(
bool apply);
1951 void SetConfused(
bool apply);
1952 void SetStunned(
bool apply);
1953 void SetRooted(
bool apply,
bool packetOnly =
false);
1970 void UpdateCharmAI();
1971 void RestoreDisabledAI();
std::string GetDebugInfo()
#define NOMINAL_MELEE_RANGE
std::optional< T > Optional
Optional helper class to wrap optional values within.
@ SPELL_SCHOOL_MASK_NORMAL
@ SPELL_AURA_MOD_INVISIBILITY
@ SPELL_AURA_MOD_ROOT_DISABLE_GRAVITY
@ UNIT_FLAG2_INTERACT_WHILE_HOSTILE
@ MOVEMENTFLAG_MASK_MOVING
@ MOVEMENTFLAG_DISABLE_GRAVITY
@ MOVEMENTFLAG_MASK_TURNING
NPCFlags
Non Player Character flags.
@ UNIT_NPC_FLAG_TABARDDESIGNER
@ UNIT_NPC_FLAG_SPIRIT_HEALER
@ UNIT_NPC_FLAG_AUCTIONEER
@ UNIT_NPC_FLAG_AREA_SPIRIT_HEALER
@ UNIT_NPC_FLAG_BATTLEMASTER
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_NPC_FLAG_INNKEEPER
@ UNIT_NPC_FLAG_FLIGHTMASTER
@ UNIT_NPC_FLAG_PETITIONER
@ UNIT_NPC_FLAG_WILD_BATTLE_PET
@ UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT
@ UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL
@ UNIT_BYTE2_FLAG_FFA_PVP
@ UNIT_BYTE2_FLAG_SANCTUARY
@ UNIT_FLAG_IMMUNE_TO_NPC
@ UNIT_FLAG_UNINTERACTIBLE
@ BASE_PCT_EXCLUDE_CREATE
std::unordered_multimap< uint32, uint32 > SpellImmuneContainer
@ UNIT_MASK_CONTROLABLE_GUARDIAN
@ UNIT_MOD_DAMAGE_OFFHAND
@ UNIT_MOD_STAT_INTELLECT
@ UNIT_MOD_RESISTANCE_SHADOW
@ UNIT_MOD_RESISTANCE_FROST
@ UNIT_MOD_RESISTANCE_HOLY
@ UNIT_MOD_RESISTANCE_START
@ UNIT_MOD_RESISTANCE_ARCANE
@ UNIT_MOD_ARCANE_CHARGES
@ UNIT_MOD_BURNING_EMBERS
@ UNIT_MOD_RESISTANCE_FIRE
@ UNIT_MOD_RESISTANCE_NATURE
@ UNIT_MOD_ALTERNATE_ENCOUNTER
@ UNIT_MOD_ALTERNATE_QUEST
@ UNIT_MOD_ALTERNATE_MOUNT
@ UNIT_MOD_RESISTANCE_END
@ UNIT_MOD_DAMAGE_MAINHAND
@ UNIT_MOD_ATTACK_POWER_RANGED
TC_GAME_API float playerBaseMoveSpeed[MAX_MOVE_TYPE]
@ CURRENT_CHANNELED_SPELL
@ CURRENT_AUTOREPEAT_SPELL
@ UNIT_STATE_FOLLOW_FORMATION
@ UNIT_STATE_ATTACK_PLAYER
@ UNIT_STATE_ROAMING_MOVE
@ UNIT_STATE_UNATTACKABLE
@ UNIT_STATE_LOST_CONTROL
@ UNIT_STATE_ALL_STATE_SUPPORTED
@ UNIT_STATE_CANNOT_AUTOATTACK
@ UNIT_STATE_FOLLOW_FORMATION_MOVE
@ UNIT_STATE_FLEEING_MOVE
@ UNIT_STATE_CONFUSED_MOVE
@ UNIT_STATE_IGNORE_PATHFINDING
@ UNIT_STATE_MELEE_ATTACKING
@ UNIT_STATE_ALL_ERASABLE
std::list< Player * > SharedVisionList
@ OFFHAND_CRIT_PERCENTAGE
std::vector< DispelableAura > DispelChargesList
@ CR_VERSATILITY_DAMAGE_TAKEN
@ CR_RESILIENCE_PLAYER_DAMAGE
@ CR_VERSATILITY_HEALING_DONE
@ CR_CORRUPTION_RESISTANCE
@ CR_VERSATILITY_DAMAGE_DONE
@ CR_RESILIENCE_CRIT_TAKEN
ProcFlagsHit createProcHitMask(SpellNonMeleeDamage *damageInfo, SpellMissInfo missCondition)
std::list< Unit * > UnitList
#define REACTIVE_TIMER_START
TC_GAME_API float baseMoveSpeed[MAX_MOVE_TYPE]
T CalculatePct(T base, U pct)
uint32 const m_originalDamage
WeaponAttackType m_attackType
Unit * GetAttacker() const
SpellInfo const *const m_spellInfo
uint32 GetOriginalDamage() const
SpellInfo const * GetSpellInfo() const
DamageEffectType GetDamageType() const
WeaponAttackType GetAttackType() const
SpellSchoolMask GetSchoolMask() const
SpellSchoolMask const m_schoolMask
DamageEffectType const m_damageType
uint32 GetDispellerSpellId() const
DispelInfo(WorldObject *dispeller, uint32 dispellerSpellId, uint8 chargesRemoved)
WorldObject * GetDispeller() const
void SetRemovedCharges(uint8 amount)
uint8 GetRemovedCharges() const
bool DecrementCharge(uint8 charges)
uint8 GetDispelCharges() const
uint32 GetEffectiveHeal() const
SpellInfo const *const _spellInfo
SpellInfo const * GetSpellInfo() const
uint32 const _originalHeal
uint32 GetOriginalHeal() const
void SetEffectiveHeal(uint32 amount)
SpellSchoolMask GetSchoolMask() const
SpellSchoolMask const _schoolMask
static ObjectGuid const Empty
HealInfo * GetHealInfo() const
Unit * GetActionTarget() const
ProcFlagsSpellType GetSpellTypeMask() const
ProcFlagsSpellType _spellTypeMask
Spell const * GetProcSpell() const
Unit *const _actionTarget
ProcFlagsHit GetHitMask() const
ProcFlagsInit GetTypeMask() const
ProcFlagsSpellPhase GetSpellPhaseMask() const
DamageInfo * GetDamageInfo() const
ProcFlagsSpellPhase _spellPhaseMask
Unit * GetProcTarget() const
Utility class to enable range for loop syntax for multimap.equal_range uses.
Trinity::unique_trackable_ptr companion class, replicating what std::weak_ptr is to std::shared_ptr.
Unit * GetCharmed() const
void ClearUnitState(uint32 f)
void SetExtraUnitMovementFlags2(uint32 f)
uint32 GetChannelSpellId() const
int32 GetContentTuning() const
void SetLastDamagedTargetGuid(ObjectGuid guid)
std::pair< AuraApplicationMap::iterator, AuraApplicationMap::iterator > AuraApplicationMapBoundsNonConst
void SetOverrideDisplayPowerId(uint32 powerDisplayId)
bool IsWithinMeleeRange(Unit const *obj) const
bool m_duringRemoveFromWorld
float GetBoundingRadius() const
Vehicle * GetVehicle() const
EnumFlag< SpellAuraInterruptFlags2 > m_interruptMask2
float GetPosStat(Stats stat) const
bool IsBattleMaster() const
std::list< GameObject * > GameObjectList
bool HealthAbovePct(int32 pct) const
bool HasPetFlag(UnitPetFlag flags) const
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
void SetSilencedSchoolMask(SpellSchoolMask schoolMask)
std::unique_ptr< SpellHistory > _spellHistory
float GetHealthPct() const
uint32 GetChannelSpellXSpellVisualId() const
float m_baseSpellCritChance
uint32 m_lastSanctuaryTime
void SetCreateStat(Stats stat, float val)
bool HasExtraUnitMovementFlag(uint32 f) const
void SetOffHandWeaponAttackPower(int32 attackPower)
void SetStat(Stats stat, int32 val)
bool HasPvpFlag(UnitPVPStateFlags flags) const
uint32 GetUnitMovementFlags() const
LiquidTypeEntry const * _lastLiquid
bool IsGuildMaster() const
uint16 GetMovementAnimKitId() const override
AreaTriggerList m_areaTrigger
bool IsInteractionAllowedInCombat() const
ObjectGuid GetDemonCreatorGUID() const
bool CanHaveThreatList() const
====================== THREAT & COMBAT ====================
std::unique_ptr< MotionMaster > i_motionMaster
void SetUnitFlag3(UnitFlags3 flags)
void SetGender(Gender gender)
std::unordered_map< ObjectGuid, uint32 > extraAttacksTargets
std::array< uint32, MAX_REACTIVE > m_reactiveTimer
void AddExtraUnitMovementFlag(uint32 f)
std::shared_ptr< UnitAI > i_AI
bool HasUnitFlag3(UnitFlags3 flags) const
void SetMinionGUID(ObjectGuid guid)
Diminishing m_Diminishing
bool IsTabardDesigner() const
void SetHoverHeight(float hoverHeight)
void ReplaceAllNpcFlags2(NPCFlags2 flags)
std::array< Spell *, CURRENT_MAX_SPELL > m_currentSpells
float GetDisplayScale() const
ThreatManager & GetThreatManager()
void ReplaceAllPvpFlags(UnitPVPStateFlags flags)
virtual float GetArmorMultiplierForTarget(WorldObject const *) const
void SetModRangedHaste(float rangedHaste)
void ApplyModManaCostModifier(SpellSchools school, int32 mod, bool apply)
void ReplaceAllUnitFlags3(UnitFlags3 flags)
void SetInCombatWith(Unit *enemy, bool addSecondUnitSuppressed=false)
void SetLastExtraAttackSpell(uint32 spellId)
virtual void SetCanDualWield(bool value)
UF::UpdateField< UF::UnitData, 0, TYPEID_UNIT > m_unitData
std::array< ObjectGuid, MAX_SUMMON_SLOT > m_SummonSlot
void SetArmor(int32 val, int32 bonusVal)
void SetVisFlag(UnitVisFlags flags)
void SetCreateHealth(uint32 val)
uint32 GetClassMask() const
virtual bool UpdateAllStats()=0
uint32 GetLastExtraAttackSpell() const
uint32 GetMountDisplayId() const
std::unique_ptr< CharmInfo > m_charmInfo
ThreatManager const & GetThreatManager() const
void AddExtraUnitMovementFlag2(uint32 f)
std::multimap< uint32, AuraApplication * > AuraApplicationMap
Emote GetEmoteState() const
bool HealthAbovePctHealed(int32 pct, uint32 heal) const
NPCFlags GetNpcFlags() const
bool IsAreaSpiritHealer() const
ShapeshiftForm GetShapeshiftForm() const
void SetFaction(uint32 faction) override
void SetBaseWeaponDamage(WeaponAttackType attType, WeaponDamageRange damageRange, float value)
ObjectGuid GetOwnerGUID() const override
virtual void AtEngage(Unit *)
void SetCosmeticMountDisplayId(uint32 mountDisplayId)
void RemoveNpcFlag2(NPCFlags2 flags)
void RemoveExtraUnitMovementFlag(uint32 f)
virtual void UpdateAttackPowerAndDamage(bool ranged=false)=0
Spell * GetCurrentSpell(uint32 spellType) const
virtual SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType=BASE_ATTACK) const =0
Unit * GetCharmer() const
std::forward_list< AuraEffect * > AuraEffectList
UnitPetFlag GetPetFlags() const
Trinity::unique_trackable_ptr< Vehicle > m_vehicleKit
std::vector< AreaTrigger * > AreaTriggerList
VisibleAuraContainer m_visibleAuras
uint32 GetCosmeticMountDisplayId() const
UnitPVPStateFlags GetPvpFlags() const
std::forward_list< AuraApplication * > AuraApplicationList
uint32 GetTransformSpell() const
void SetAttackPowerModNeg(int32 attackPowerMod)
bool IsAreaSpiritHealerIndividual() const
uint64 GetRaceMask() const
uint32 _lastExtraAttackSpell
virtual bool CanFly() const =0
void ReplaceAllUnitFlags(UnitFlags flags)
MotionMaster * GetMotionMaster()
AuraApplicationMap const & GetAppliedAuras() const
Powers GetPowerType() const
bool HasUnitFlag(UnitFlags flags) const
std::array< ObjectGuid, MAX_GAMEOBJECT_SLOT > m_ObjectSlot
ObjectGuid GetCharmedGUID() const
void SetCreatedBySpell(int32 spellId)
bool CanDualWield() const
bool CanInstantCast() const
void StartReactiveTimer(ReactiveType reactive)
NPCFlags2 GetNpcFlags2() const
void SetUnitMovementFlags(uint32 f)
void AddChannelObject(ObjectGuid guid)
bool HasInterruptFlag(SpellAuraInterruptFlags flags) const
void SetModHaste(float haste)
virtual void AtDisengage()
std::unique_ptr< MovementForces > _movementForces
MovementForces const * GetMovementForces() const
void SetChannelSpellId(uint32 channelSpellId)
virtual void SetImmuneToAll(bool apply)
uint32 GetDamageReduction(uint32 damage) const
std::array< float, MAX_STATS > m_floatStatPosBuff
bool IsFullHealth() const
void SetUnitFlag2(UnitFlags2 flags)
bool HasUnitFlag2(UnitFlags2 flags) const
bool IsInSanctuary() const
std::pair< AuraMap::const_iterator, AuraMap::const_iterator > AuraMapBounds
virtual bool IsLoading() const
void ReplaceAllPetFlags(UnitPetFlag flags)
void SetNpcFlag2(NPCFlags2 flags)
float GetNegStat(Stats stat) const
std::vector< DynamicObject * > DynObjectList
void SetDemonCreatorGUID(ObjectGuid guid)
bool HasVisibleAura(AuraApplication *aurApp) const
void SetPetNameTimestamp(uint32 timestamp)
std::array< uint32, MAX_ATTACK > m_baseAttackSpeed
void SetRangedWeaponAttackPower(int32 attackPower)
std::stack< std::shared_ptr< UnitAI > > UnitAIStack
Vignettes::VignetteData const * GetVignette() const
float m_modRangedHitChance
float GetCombatReach() const override
void ReplaceAllVisFlags(UnitVisFlags flags)
void NearTeleportTo(float x, float y, float z, float orientation, bool casting=false)
void SetBonusResistanceMod(SpellSchools school, int32 val)
void SetRangedAttackPowerModNeg(int32 attackPowerMod)
std::pair< AuraApplicationMap::const_iterator, AuraApplicationMap::const_iterator > AuraApplicationMapBounds
void RemoveNpcFlag(NPCFlags flags)
uint32 m_removedAurasCount
uint32 m_movementCounter
Incrementing counter used in movement packets.
void SetPetFlag(UnitPetFlag flags)
bool IsSilenced(SpellSchoolMask schoolMask) const
TempSummon * ToTempSummon()
bool IsGravityDisabled() const
bool IsQuestGiver() const
CharmInfo * GetCharmInfo()
bool HasStealthAura() const
void SetBattlePetCompanionExperience(uint32 experience)
void RemoveVisFlag(UnitVisFlags flags)
bool IsInCombatWith(Unit const *who) const
ObjectGuid GetCharmerOrOwnerGUID() const override
TimeTracker m_splineSyncTimer
void RemoveUnitFlag3(UnitFlags3 flags)
AuraMap::iterator m_auraUpdateIterator
ObjectGuid _lastDamagedTargetGuid
void FollowerRemoved(AbstractFollower *f)
void SetRangedAttackPowerModPos(int32 attackPowerMod)
void SetModHasteRegen(float hasteRegen)
void FollowerAdded(AbstractFollower *f)
float GetNativeDisplayScale() const
bool HasNpcFlag2(NPCFlags2 flags) const
AnimTier GetAnimTier() const
std::set< Unit * > ControlList
bool HasInterruptFlag(SpellAuraInterruptFlags2 flags) const
TempSummon const * ToTempSummon() const
Player * GetPlayerMovingMe() const
void SetChannelVisual(SpellCastVisual channelVisual)
virtual bool HasSpell(uint32) const
virtual bool IsAffectedByDiminishingReturns() const
std::pair< AuraStateAurasMap::const_iterator, AuraStateAurasMap::const_iterator > AuraStateAurasMapBounds
void AddUnitState(uint32 f)
ObjectGuid GetCreatorGUID() const override
std::multimap< AuraStateType, AuraApplication * > AuraStateAurasMap
ObjectGuid GetLastDamagedTargetGuid() const
void SetBoundingRadius(float boundingRadius)
void SetCreateMana(uint32 val)
bool IsCharmedOwnedByPlayerOrPlayer() const
int32 GetMinPower(Powers power) const
bool IsImmuneToNPC() const
virtual bool CanEnterWater() const =0
Pet const * ToPet() const
Unit * EnsureVictim() const
uint32 getAttackTimer(WeaponAttackType type) const
void SetModSpellHaste(float spellHaste)
bool IsDuringRemoveFromWorld() const
bool m_ControlledByPlayer
void SetMainHandWeaponAttackPower(int32 attackPower)
Unit * GetCharmerOrOwner() const
virtual Gender GetNativeGender() const
bool IsPlayingHoverAnim() const
void SetBattlePetCompanionNameTimestamp(uint32 timestamp)
AuraMap const & GetOwnedAuras() const
void SetInstantCast(bool set)
void SetRangedAttackPowerMultiplier(float attackPowerMult)
virtual void SetImmuneToNPC(bool apply)
void SetCombatReach(float combatReach)
void SetEmoteState(Emote emote)
MotionMaster const * GetMotionMaster() const
int32 CountPctFromMaxPower(Powers power, int32 pct) const
bool IsImmuneToAll() const
PositionUpdateInfo _positionUpdateInfo
void SetPvpFlag(UnitPVPStateFlags flags)
AuraApplicationList m_interruptableAuras
void SetResistance(SpellSchools school, int32 val)
Trinity::unique_weak_ptr< Vehicle > GetVehicleKitWeakPtr() const
uint32 GetDisplayId() const
Unit * GetUnitBeingMoved() const
UnitAI * GetTopAI() const
uint32 GetNativeDisplayId() const
virtual void UpdateArmor()=0
bool HealthBelowPct(int32 pct) const
void SetChannelObject(uint32 slot, ObjectGuid guid)
uint64 GetMaxHealth() const
void AddUnitMovementFlag(uint32 f)
ThreatManager m_threatManager
uint32 _oldFactionId
faction before charm
std::forward_list< Aura * > AuraList
uint16 GetMeleeAnimKitId() const override
SpellHistory const * GetSpellHistory() const
ObjectGuid GetMinionGUID() const
uint32 GetChannelScriptVisualId() const
float GetHoverOffset() const
virtual float GetDamageMultiplierForTarget(WorldObject const *) const
SharedVisionList const & GetSharedVisionList()
uint16 GetMaxSkillValueForLevel(Unit const *target=nullptr) const
bool HasUnitMovementFlag(uint32 f) const
virtual void UpdateMaxPower(Powers power)=0
uint64 CountPctFromCurHealth(int32 pct) const
uint32 GetFaction() const override
uint32 GetCreateHealth() const
AuraEffectList & GetAuraEffectsByType(AuraType type)
CombatManager const & GetCombatManager() const
AttackerSet const & getAttackers() const
void RemoveUnitFlag2(UnitFlags2 flags)
void RemovePvpFlag(UnitPVPStateFlags flags)
std::multimap< uint32, Aura * > AuraMap
void SetNpcFlag(NPCFlags flags)
std::unique_ptr< Vignettes::VignetteData > m_vignette
Totem const * ToTotem() const
void AddInterruptMask(SpellAuraInterruptFlags flags, SpellAuraInterruptFlags2 flags2)
void RemovePetFlag(UnitPetFlag flags)
void setAttackTimer(WeaponAttackType type, uint32 time)
virtual bool UpdateStats(Stats stat)=0
bool HasNpcFlag(NPCFlags flags) const
std::array< DiminishingReturn, DIMINISHING_MAX > Diminishing
float m_modMeleeHitChance
virtual bool CheckAttackFitToAuraRequirement(WeaponAttackType, AuraEffect const *) const
ObjectGuid GetCritterGUID() const
void SetNameplateAttachToGUID(ObjectGuid guid)
uint8 GetLevelForTarget(WorldObject const *) const override
void SetFullPower(Powers power)
AuraList const & GetSingleCastAuras() const
bool CanModifyStats() const
Trinity::Containers::FlatSet< AuraApplication *, VisibleAuraSlotCompare > m_visibleAurasToUpdate
virtual void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float &minDamage, float &maxDamage) const =0
void SetAttackPower(int32 attackPower)
float GetSpeedRate(UnitMoveType mtype) const
std::set< Unit * > AttackerSet
virtual void SetTarget(ObjectGuid const &)=0
virtual uint32 GetPowerIndex(Powers power) const =0
virtual float GetFollowAngle() const
std::vector< Unit * > UnitVector
uint32 GetExtraUnitMovementFlags() const
void SetModTimeRate(float timeRate)
void RemoveWorldEffect(int32 worldEffectId)
uint64 CountPctFromMaxHealth(int32 pct) const
bool HasExtraUnitMovementFlag2(uint32 f) const
void SetBattlePetCompanionGUID(ObjectGuid guid)
float GetCreateStat(Stats stat) const
DeathState getDeathState() const
int32 GetBonusResistanceMod(SpellSchools school) const
std::set< AuraApplication *, VisibleAuraSlotCompare > VisibleAuraContainer
bool IsEngagedBy(Unit const *who) const
virtual float GetHealthMultiplierForTarget(WorldObject const *) const
uint16 _movementAnimKitId
bool HasUnitState(const uint32 f) const
std::unordered_set< AbstractFollower * > m_followingMe
void RemoveExtraUnitMovementFlag2(uint32 f)
std::array< float, MAX_STATS > m_createStats
std::unique_ptr< Movement::MoveSpline > movespline
float GetPowerPct(Powers power) const
void SetCanModifyStats(bool modifyStats)
std::pair< AuraMap::iterator, AuraMap::iterator > AuraMapBoundsNonConst
void RemoveUnitMovementFlag(uint32 f)
AuraApplicationMap m_appliedAuras
void SetVehicle(Vehicle *vehicle)
void SetClass(uint8 classId)
virtual float GetNativeObjectScale() const
bool HasInvisibilityAura() const
int32 GetProcChainLength() const
virtual void UpdateMaxHealth()=0
uint16 GetAIAnimKitId() const override
uint32 HasUnitTypeMask(uint32 mask) const
std::array< float, MAX_MOVE_TYPE > m_speed_rate
float GetStat(Stats stat) const
bool IsInteractionAllowedWhileHostile() const
virtual float GetBlockPercent(uint8) const
SpellHistory * GetSpellHistory()
void ReplaceAllUnitFlags2(UnitFlags2 flags)
std::array< float, MAX_ATTACK > m_modAttackSpeedPct
bool IsControlledByPlayer() const
bool IsWildBattlePet() const
ObjectGuid GetCharmerGUID() const
bool IsCombatDisallowed() const
SheathState GetSheath() const
UnitStandStateType GetStandState() const
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
void SetPetGUID(ObjectGuid guid)
virtual bool HasSpellFocus(Spell const *=nullptr) const
bool HasSharedVision() const
std::vector< std::pair< uint32, AuraApplication * > > AuraApplicationProcContainer
void SetCreatorGUID(ObjectGuid creator)
ObjectGuid LastCharmerGUID
CombatManager & GetCombatManager()
void SetUnitFlag(UnitFlags flags)
void SetExtraUnitMovementFlags(uint32 f)
void SetCritterGUID(ObjectGuid guid)
AuraApplicationMap & GetAppliedAuras()
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
bool IsUninteractible() const
void SetPetNumberForClient(uint32 petNumber)
bool IsSpiritHealer() const
uint32 GetCreateMana() const
std::array< uint32, MAX_ATTACK > m_attackTimer
void SetVisibleAuraUpdate(AuraApplication *aurApp)
CombatManager m_combatManager
void SetRangedAttackPower(int32 attackPower)
virtual void SetNativeGender(Gender gender)
AuraStateAurasMap m_auraStateAuras
int32 GetResistance(SpellSchools school) const
AuraList & GetSingleCastAuras()
void AddUnitTypeMask(uint32 mask)
void SetModCastingSpeed(float castingSpeed)
ObjectGuid GetBattlePetCompanionGUID() const
Vehicle * GetVehicleKit() const
virtual void SetImmuneToPC(bool apply)
float m_modSpellHitChance
void KillSelf(bool durabilityLoss=true, bool skipSettingDeathState=false)
virtual bool IsEngaged() const
void ReplaceAllNpcFlags(NPCFlags flags)
uint32 GetBattlePetCompanionExperience() const
VisibleAuraContainer const & GetVisibleAuras() const
void SetAttackPowerMultiplier(float attackPowerMult)
void ReplaceAllSilencedSchoolMask(SpellSchoolMask schoolMask)
uint32 GetExtraUnitMovementFlags2() const
uint32 GetWildBattlePetLevel() const
AuraMap & GetOwnedAuras()
bool IsSpiritService() const
void ClearChannelObjects()
std::array< float, MAX_STATS > m_floatStatNegBuff
void SetTransformSpell(uint32 spellid)
bool IsImmuneToPC() const
void ApplyModManaCostMultiplier(float manaCostMultiplier, bool apply)
static void Kill(Unit *attacker, Unit *victim, bool durabilityLoss=true, bool skipSettingDeathState=false)
SharedVisionList m_sharedVision
EnumFlag< SpellAuraInterruptFlags > m_interruptMask
std::array< AuraEffectList, TOTAL_AURAS > m_modAuras
ObjectGuid GetTarget() const
bool _isWalkingBeforeCharm
Are we walking before we were charmed?
void SetAttackPowerModPos(int32 attackPowerMod)
void SetMountDisplayId(uint32 mountDisplayId)
void SetWildBattlePetLevel(uint32 wildBattlePetLevel)
void SetIsCombatDisallowed(bool apply)
bool IsThreatenedBy(Unit const *who) const
void RemoveVisibleAuraUpdate(AuraApplication *aurApp)
void AddWorldEffect(int32 worldEffectId)
void RemoveUnitFlag(UnitFlags flags)
uint32 GetBattlePetCompanionNameTimestamp() const
Player * m_playerMovingMe
ObjectGuid GetPetGUID() const
void RemoveChannelObject(ObjectGuid guid)
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API AreaTrigger * GetAreaTrigger(WorldObject const &u, ObjectGuid const &guid)
DynamicUpdateFieldSetter< T >::insert_result AddDynamicUpdateFieldValue(DynamicUpdateFieldSetter< T > &setter)
void RemoveDynamicUpdateFieldValue(DynamicUpdateFieldSetter< T > &setter, uint32 index)
void ClearDynamicUpdateFieldValues(DynamicUpdateFieldSetter< T > &setter)
bool SetUpdateFieldValue(UpdateFieldSetter< T > &setter, typename UpdateFieldSetter< T >::value_type &&value)
void Update(VignetteData &vignette, WorldObject const *owner)
WeaponAttackType AttackType
ProcFlagsInit ProcAttacker
MeleeHitOutcome HitOutCome
MeleeHitOutcome hitOutCome
CleanDamage(uint32 mitigated, uint32 absorbed, WeaponAttackType _attackType, MeleeHitOutcome _hitOutCome)
WeaponAttackType attackType
SpellCastVisual SpellVisual
SpellPeriodicAuraLogInfo(AuraEffect const *_auraEff, uint32 _damage, uint32 _originalDamage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical)
AuraEffect const * auraEff
UF::SpellCastVisual SpellVisual
UpdateField< int32, 64, 93 > RangedAttackPowerModNeg
UpdateField< uint32, 96, 124 > SilencedSchoolMask
UpdateField< uint32, 64, 67 > PetNumber
UpdateField< ObjectGuid, 0, 12 > Summon
UpdateField< float, 32, 50 > CombatReach
UpdateField< uint8, 64, 65 > VisFlags
UpdateField< int32, 64, 79 > EmoteState
UpdateField< float, 64, 73 > ModSpellHaste
UpdateField< int32, 96, 97 > MainHandWeaponAttackPower
UpdateField< int32, 64, 80 > BaseMana
UpdateFieldArray< int32, 7, 195, 196 > Resistances
UpdateField< int32, 96, 99 > RangedWeaponAttackPower
UpdateField< uint8, 0, 28 > Sex
UpdateField< float, 96, 104 > ManaCostMultiplier
UpdateField< float, 64, 71 > ModCastingSpeed
UpdateFieldArray< uint32, 2, 127, 128 > NpcFlags
UpdateField< int32, 64, 88 > AttackPowerModNeg
DynamicUpdateField< ObjectGuid, 0, 4 > ChannelObjects
DynamicUpdateField< int32, 0, 3 > WorldEffects
UpdateField< uint32, 32, 45 > Flags2
UpdateField< int32, 96, 112 > BattlePetCompanionExperience
UpdateField< float, 64, 74 > ModHaste
UpdateField< int32, 64, 91 > RangedAttackPower
UpdateField< uint32, 64, 68 > PetNameTimestamp
UpdateField< int32, 96, 98 > OffHandWeaponAttackPower
UpdateField< uint32, 96, 113 > BattlePetCompanionNameTimestamp
UpdateField< float, 64, 89 > AttackPowerMultiplier
UpdateField< int32, 64, 81 > BaseHealth
UpdateField< uint32, 0, 30 > OverrideDisplayPowerID
UpdateField< ObjectGuid, 0, 13 > Critter
UpdateField< uint8, 64, 84 > PetFlags
UpdateField< int32, 32, 57 > CosmeticMountDisplayID
UpdateField< int32, 64, 87 > AttackPowerModPos
UpdateField< int32, 32, 56 > MountDisplayID
UpdateField< float, 64, 94 > RangedAttackPowerMultiplier
UpdateField< uint32, 32, 46 > Flags3
UpdateField< uint8, 64, 83 > PvpFlags
UpdateField< ObjectGuid, 0, 16 > CreatedBy
UpdateField< int32, 64, 86 > AttackPower
UpdateField< UF::UnitChannel, 0, 22 > ChannelData
UpdateField< float, 32, 49 > BoundingRadius
UpdateField< uint32, 32, 44 > Flags
UpdateFieldArray< int32, 7, 195, 203 > BonusResistanceMods
UpdateField< int32, 64, 78 > CreatedBySpell
UpdateField< int32, 96, 111 > WildBattlePetLevel
UpdateField< float, 64, 77 > ModTimeRate
UpdateField< ObjectGuid, 0, 20 > BattlePetCompanionGUID
UpdateField< uint8, 0, 25 > Race
UpdateField< float, 64, 75 > ModRangedHaste
UpdateField< float, 64, 76 > ModHasteRegen
UpdateField< uint8, 0, 26 > ClassId
UpdateField< int32, 32, 43 > FactionTemplate
UpdateFieldArray< int32, 4, 178, 179 > Stats
UpdateField< float, 96, 106 > HoverHeight
UpdateFieldArray< int32, 7, 195, 210 > ManaCostModifier
UpdateField< ObjectGuid, 96, 126 > NameplateAttachToGUID
UpdateField< ObjectGuid, 0, 17 > DemonCreator
UpdateField< int32, 64, 92 > RangedAttackPowerModPos
UF::ObjectData::Base ObjectMask
ValuesUpdateForPlayerWithMaskSender(Unit const *owner)
UF::UnitData::Base UnitMask