34#define VISUAL_WAYPOINT 1
35#define WORLD_TRIGGER 12999
37#define MAX_SPELL_CHARM 4
38#define MAX_SPELL_VEHICLE 6
39#define MAX_SPELL_POSSESS 8
40#define MAX_SPELL_CONTROL_BAR 10
42#define MAX_AGGRO_RESET_TIME 10
43#define MAX_AGGRO_RADIUS 45.0f
114 bool RollDispel()
const;
349#define MAX_COMBAT_RATING 25
453 void ModifyDamage(
int32 amount);
454 void AbsorbDamage(
uint32 amount);
455 void ResistDamage(
uint32 amount);
456 void BlockDamage(
uint32 amount);
469 uint32 GetHitMask()
const;
487 void AbsorbHeal(
uint32 amount);
498 uint32 GetHitMask()
const;
567 : target(_target), attacker(_attacker), SpellID(_SpellID), damage(0), overkill(0), schoolMask(_schoolMask),
568 absorb(0), resist(0), periodicLog(false), unused(false), blocked(0),
HitInfo(0), cleanDamage(0), fullBlock(false)
612#define CURRENT_FIRST_NON_MELEE_SPELL 1
613#define CURRENT_MAX_SPELL 4
615#define UNIT_ACTION_BUTTON_ACTION(X) (uint32(X) & 0x00FFFFFF)
616#define UNIT_ACTION_BUTTON_TYPE(X) ((uint32(X) & 0xFF000000) >> 24)
617#define MAKE_UNIT_ACTION_BUTTON(A, T) (uint32(A) | (uint32(T) << 24))
670#define MAX_UNIT_ACTION_BAR_INDEX (ACTION_BAR_INDEX_END-ACTION_BAR_INDEX_START)
679 void SetPetNumber(
uint32 petnumber,
bool statwindow);
685 void InitPossessCreateSpells();
686 void InitCharmCreateSpells();
687 void InitPetActionBar();
688 void InitEmptyActionBar(
bool withAttack =
true);
692 bool RemoveSpellFromActionBar(
uint32 spell_id);
693 void LoadPetActionBar(
const std::string& data);
695 void SetSpellAutocast(
SpellInfo const* spellInfo,
bool state);
698 PetActionBar[index].SetActionAndType(spellOrAction, type);
702 void ToggleCreatureAutocast(
SpellInfo const* spellInfo,
bool apply);
706 void SetIsCommandAttack(
bool val);
707 bool IsCommandAttack();
708 void SetIsCommandFollow(
bool val);
709 bool IsCommandFollow();
710 void SetIsAtStay(
bool val);
712 void SetIsFollowing(
bool val);
714 void SetIsReturning(
bool val);
716 void SaveStayPosition();
717 void GetStayPosition(
float &x,
float &y,
float &z);
741#define REACTIVE_TIMER_START 4000
765#define ATTACK_DISPLAY_DELAY 200
766#define MAX_PLAYER_STEALTH_DETECT_RANGE 30.0f
777 typedef std::pair<AuraMap::const_iterator, AuraMap::const_iterator>
AuraMapBounds;
790 typedef std::array<DiminishingReturn, DIMINISHING_MAX>
Diminishing;
799 void AIUpdateTick(
uint32 diff);
801 void ScheduleAIChange();
802 void PushAI(
UnitAI* newAI);
805 void SetAI(
UnitAI* newAI);
808 UnitAI* GetScheduledChangeAI();
809 bool HasScheduledAIChange()
const;
812 void AddToWorld()
override;
813 void RemoveFromWorld()
override;
815 void CleanupBeforeRemoveFromMap(
bool finalCleanup);
816 void CleanupsBeforeDelete(
bool finalCleanup =
true)
override;
823 void IncrDiminishing(
SpellInfo const* auraSpellInfo,
bool triggered);
826 void ClearDiminishings();
828 virtual void Update(
uint32 time)
override;
830 void Heartbeat()
override;
836 bool haveOffhandWeapon()
const;
843 bool IsWithinCombatRange(
Unit const* obj,
float dist2compare)
const;
845 bool IsWithinMeleeRangeAt(
Position const& pos,
Unit const* obj)
const;
846 float GetMeleeRange(
Unit const* target)
const;
850 void _addAttacker(
Unit* pAttacker);
851 void _removeAttacker(
Unit* pAttacker);
852 Unit* getAttackerForHelper()
const;
853 bool Attack(
Unit* victim,
bool meleeAttack);
854 void CastStop(
uint32 except_spellid = 0);
856 void RemoveAllAttackers();
858 bool isAttackingPlayer()
const;
867 void ValidateAttackersAndOwnTarget();
868 void CombatStop(
bool includingCast =
false,
bool mutualPvP =
true);
869 void CombatStopWithPets(
bool includingCast =
false);
870 void StopAttackFaction(
uint32 faction_id);
872 void SendMeleeAttackStop(
Unit* victim =
nullptr);
873 void SendMeleeAttackStart(
Unit* victim);
878 bool CanFreeMove()
const;
891 void SetLevel(
uint8 lvl,
bool sendUpdate =
true);
921 float GetHealthPct()
const {
return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
925 void SetHealth(
uint32 val);
926 void SetMaxHealth(
uint32 val);
932 void SetPowerType(
Powers power,
bool sendUpdate =
true);
933 void UpdateDisplayPower();
937 float GetPowerPct(
Powers power)
const {
return GetMaxPower(power) ? 100.f * GetPower(power) / GetMaxPower(power) : 0.0f; }
939 void SetPower(
Powers power,
uint32 val,
bool withPowerUpdate =
true,
bool force =
false);
947 void ApplyAttackTimePercentMod(
WeaponAttackType att,
float val,
bool apply);
948 void ApplyCastTimePercentMod(
float val,
bool apply);
976 bool IsInPartyWith(
Unit const* unit)
const;
977 bool IsInRaidWith(
Unit const* unit)
const;
978 void GetPartyMembers(std::list<Unit*> &units);
979 bool IsContestedGuard()
const;
990 virtual void SetPvP(
bool state);
998 uint32 GetCreatureType()
const;
999 uint32 GetCreatureTypeMask()
const;
1002 bool IsSitState()
const;
1003 bool IsStandState()
const;
1011 void SetAnimTier(
AnimTier animTier);
1020 static void DealDamageMods(
Unit const* victim,
uint32& damage,
uint32* absorb);
1022 static void Kill(
Unit* attacker,
Unit* victim,
bool durabilityLoss =
true);
1024 static void DealHeal(
HealInfo& healInfo);
1026 static void ProcSkillsAndAuras(
Unit* actor,
Unit* actionTarget,
uint32 typeMaskActor,
uint32 typeMaskActionTarget,
1030 void GetProcAurasTriggeredOnEvent(AuraApplicationProcContainer& aurasTriggeringProc, AuraApplicationList* procAuras,
ProcEventInfo& eventInfo);
1031 void TriggerAurasProcOnEvent(
Unit* actionTarget,
uint32 typeMaskActor,
uint32 typeMaskActionTarget,
1034 void TriggerAurasProcOnEvent(
ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras);
1036 void HandleEmoteCommand(
Emote emoteId);
1040 void DealMeleeDamage(
CalcDamageInfo* damageInfo,
bool durabilityLoss);
1041 void HandleProcExtraAttackFor(
Unit* victim,
uint32 count);
1045 void AddExtraAttacks(
uint32 count);
1067 virtual bool CanApplyResilience()
const;
1068 static void ApplyResilience(
Unit const* victim,
float* crit,
int32* damage,
bool isCrit,
CombatRating type);
1078 float GetUnitMissChance()
const;
1080 float GetUnitCriticalChanceTaken(
Unit const* attacker,
WeaponAttackType attackType,
float critDone)
const;
1083 bool CanUseAttackType(
uint8 attacktype)
const;
1087 uint32 GetDefenseSkillValue(
Unit const* target =
nullptr)
const;
1090 float GetWeaponProcChance()
const;
1091 float GetPPMProcChance(
uint32 WeaponSpeed,
float PPM,
SpellInfo const* spellProto)
const;
1115 bool IsServiceProvider()
const;
1127 bool IsEngagedBy(
Unit const* who)
const {
return CanHaveThreatList() ? IsThreatenedBy(who) : IsInCombatWith(who); }
1128 void EngageWithTarget(
Unit* who);
1132 void AtTargetAttacked(
Unit* target,
bool canInitialAggro);
1135 void SetImmuneToAll(
bool apply,
bool keepCombat);
1138 void SetImmuneToPC(
bool apply,
bool keepCombat);
1141 void SetImmuneToNPC(
bool apply,
bool keepCombat);
1146 void SetInCombatWith(
Unit* enemy,
bool addSecondUnitSuppressed =
false) {
if (enemy) m_combatManager.SetInCombatWith(enemy, addSecondUnitSuppressed); }
1148 void UpdatePetCombatState();
1150 bool IsThreatened()
const;
1158 void SendClearTarget();
1160 bool HasAuraTypeWithFamilyFlags(
AuraType auraType,
uint32 familyName,
flag96 familyFlags)
const;
1162 bool HasBreakableByDamageAuraType(
AuraType type,
uint32 excludeAura = 0)
const;
1163 bool HasBreakableByDamageCrowdControlAura(
Unit* excludeCasterChannel =
nullptr)
const;
1169 bool IsPolymorphed()
const;
1172 bool isTargetableForAttack(
bool checkFakeDeath =
true)
const;
1174 bool IsInWater()
const;
1175 bool IsUnderWater()
const;
1176 bool isInAccessiblePlaceFor(
Creature const* c)
const;
1178 void SendHealSpellLog(
HealInfo& healInfo,
bool critical =
false);
1179 int32 HealBySpell(
HealInfo& healInfo,
bool critical =
false);
1188 void SendPlaySpellVisualKit(
uint32 id,
uint32 type)
const;
1197 void SendSpellDamageResist(
Unit* target,
uint32 spellId);
1198 void SendSpellDamageImmune(
Unit* target,
uint32 spellId);
1200 void NearTeleportTo(
Position const& pos,
bool casting =
false);
1202 void SendTeleportPacket(
Position const& pos,
bool teleportingTransport =
false);
1203 virtual bool UpdatePosition(
float x,
float y,
float z,
float ang,
bool teleport =
false);
1205 virtual bool UpdatePosition(
Position const& pos,
bool teleport =
false);
1206 void UpdateOrientation(
float orientation);
1207 void UpdateHeight(
float newZ);
1209 void SendMoveKnockBack(
Player* player,
float speedXY,
float speedZ,
float vcos,
float vsin);
1210 void KnockbackFrom(
float x,
float y,
float speedXY,
float speedZ);
1211 void JumpTo(
float speedXY,
float speedZ,
bool forward =
true,
Optional<Position> dest = {});
1212 void JumpTo(
WorldObject* obj,
float speedZ,
bool withOrientation =
false);
1214 void MonsterMoveWithSpeed(
float x,
float y,
float z,
float speed,
bool generatePath =
false,
bool forceDestination =
false);
1221 bool SetWalk(
bool enable);
1222 bool SetDisableGravity(
bool disable,
bool updateAnimTier =
true);
1223 bool SetFall(
bool enable);
1224 bool SetSwim(
bool enable);
1225 bool SetCanFly(
bool enable,
bool packetOnly =
false);
1226 bool SetWaterWalking(
bool enable);
1227 bool SetFeatherFall(
bool enable);
1228 bool SetHover(
bool enable,
bool updateAnimTier =
true);
1231 void SetFacingTo(
float ori,
bool force =
true,
uint32 movementId =
EVENT_FACE);
1237 bool IsGhouled()
const;
1259 Player* GetControllingPlayer()
const;
1264 Minion* GetFirstMinion()
const;
1267 void SetMinion(
Minion *minion,
bool apply);
1268 void GetAllMinionsByEntry(std::list<Creature*>& Minions,
uint32 entry);
1269 void RemoveAllMinionsByEntry(
uint32 entry);
1270 void SetCharm(
Unit* target,
bool apply);
1271 Unit* GetNextRandomRaidMemberOrPet(
float radius);
1273 void RemoveCharmedBy(
Unit* charmer);
1274 void RestoreFaction();
1277 Unit* GetFirstControlled()
const;
1278 void RemoveAllControlled();
1280 bool IsCharmed()
const {
return !GetCharmerGUID().IsEmpty(); }
1283 bool isPossessedByPlayer()
const;
1284 bool isPossessing()
const;
1285 bool isPossessing(
Unit* u)
const;
1289 void DeleteCharmInfo();
1295 Unit* GetCharmerOrSelf()
const;
1306 void AddPlayerToVision(
Player* player);
1307 void RemovePlayerFromVision(
Player* player);
1309 void RemoveBindSightAuras();
1310 void RemoveCharmAuras();
1320 void _ApplyAuraEffect(
Aura* aura,
uint8 effIndex);
1322 void _UnapplyAura(AuraApplicationMap::iterator& i,
AuraRemoveMode removeMode);
1324 void _RemoveNoStackAurasDueToAura(
Aura* aura,
bool owned);
1325 void _RegisterAuraEffect(
AuraEffect* aurEff,
bool apply);
1362 void RemoveNotOwnSingleTargetAuras(
uint32 newPhase = 0x0);
1363 void RemoveAurasWithInterruptFlags(
uint32 flag,
uint32 except = 0);
1367 void RemoveMovementImpairingAuras(
bool withRoot);
1368 void RemoveAurasByShapeShift();
1370 void RemoveAreaAurasDueToLeaveWorld();
1371 void RemoveAllAuras();
1372 void RemoveArenaAuras();
1373 void RemoveAurasOnEvade();
1374 void RemoveAllAurasOnDeath();
1375 void RemoveAllAurasRequiringDeadTarget();
1376 void RemoveAllAurasExceptType(
AuraType type);
1378 void RemoveAllGroupBuffsFromCaster(
ObjectGuid casterGUID);
1381 void _RemoveAllAuraStatMods();
1382 void _ApplyAllAuraStatMods();
1406 bool HasAuraType(
AuraType auraType)
const;
1408 bool HasAuraTypeWithMiscvalue(
AuraType auraType,
int32 miscValue)
const;
1409 bool HasAuraTypeWithAffectMask(
AuraType auraType,
SpellInfo const* affectedSpell)
const;
1410 bool HasAuraTypeWithValue(
AuraType auraType,
int32 value)
const;
1411 bool HasAuraTypeWithTriggerSpell(
AuraType auratype,
uint32 triggerSpell)
const;
1413 bool HasAuraWithMechanic(
uint32 mechanicMask)
const;
1414 bool HasStrongerAuraWithDR(
SpellInfo const* auraSpellInfo,
Unit* caster,
bool triggered)
const;
1421 float GetTotalAuraMultiplier(
AuraType auraType)
const;
1426 float GetTotalAuraMultiplier(
AuraType auraType, std::function<
bool(
AuraEffect const*)>
const& predicate)
const;
1427 int32 GetMaxPositiveAuraModifier(
AuraType auraType, std::function<
bool(
AuraEffect const*)>
const& predicate)
const;
1428 int32 GetMaxNegativeAuraModifier(
AuraType auraType, std::function<
bool(
AuraEffect const*)>
const& predicate)
const;
1431 float GetTotalAuraMultiplierByMiscMask(
AuraType auraType,
uint32 misc_mask)
const;
1436 float GetTotalAuraMultiplierByMiscValue(
AuraType auraType,
int32 misc_value)
const;
1437 int32 GetMaxPositiveAuraModifierByMiscValue(
AuraType auraType,
int32 misc_value)
const;
1438 int32 GetMaxNegativeAuraModifierByMiscValue(
AuraType auraType,
int32 misc_value)
const;
1441 float GetTotalAuraMultiplierByAffectMask(
AuraType auraType,
SpellInfo const* affectedSpell)
const;
1446 void InitStatBuffMods();
1447 void UpdateStatBuffMod(
Stats stat);
1463 void SetCurrentCastSpell(
Spell* pSpell);
1470 bool IsNonMeleeSpellCast(
bool withDelayed,
bool skipChanneled =
false,
bool skipAutorepeat =
false,
bool isAutoshoot =
false,
bool skipInstant =
true)
const;
1474 void InterruptNonMeleeSpells(
bool withDelayed,
uint32 spellid = 0,
bool withInstant =
true);
1478 Spell* FindCurrentSpellBySpellId(
uint32 spell_id)
const;
1479 int32 GetCurrentSpellCastTime(
uint32 spell_id)
const;
1482 virtual bool IsMovementPreventedByCasting()
const;
1493 bool IsInFeralForm()
const;
1495 bool IsInDisallowedMountForm()
const;
1515 void UpdateUnitMod(
UnitMods unitMod);
1521 void UpdateAllDamageDoneMods();
1524 void UpdateAllDamagePctDoneMods();
1526 float GetTotalStatValue(
Stats stat)
const;
1527 float GetTotalAuraModValue(
UnitMods unitMod)
const;
1536 virtual void UpdateAllResistances();
1557 bool isInFrontInMap(
Unit const* target,
float distance,
float arc =
float(
M_PI))
const;
1558 bool isInBackInMap(
Unit const* target,
float distance,
float arc =
float(
M_PI))
const;
1561 bool IsVisible()
const;
1562 void SetVisible(
bool x);
1565 void SetPhaseMask(
uint32 newPhaseMask,
bool update)
override;
1566 void UpdateObjectVisibility(
bool forced =
true)
override;
1574 void RemoveVisibleAura(
uint8 slot);
1578 void UpdateInterruptMask();
1581 virtual void RecalculateObjectScale();
1583 virtual void SetDisplayId(
uint32 modelId);
1585 void RestoreDisplayId();
1594 std::vector<DynamicObject*> GetDynObjects(
uint32 spellId)
const;
1595 void RemoveDynObject(
uint32 spellId);
1596 void RemoveAllDynObjects();
1599 std::vector<GameObject*> GetGameObjects(
uint32 spellId)
const;
1601 void RemoveGameObject(
GameObject* gameObj,
bool del);
1602 void RemoveGameObject(
uint32 spellid,
bool del);
1603 void RemoveAllGameObjects();
1606 uint32 BuildAuraStateUpdateForTarget(
Unit const* target)
const;
1608 void UnsummonAllTotems();
1609 bool IsMagnet()
const;
1610 Unit* GetMeleeHitRedirectTarget(
Unit* victim,
SpellInfo const* spellInfo =
nullptr);
1618 float SpellHealingPctDone(
Unit* victim,
SpellInfo const* spellProto)
const;
1624 bool IsBlockCritical();
1631 bool IsUnderLastManaUseEffect()
const;
1637 virtual bool IsImmunedToSpell(
SpellInfo const* spellInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const;
1638 uint32 GetSchoolImmunityMask()
const;
1639 uint32 GetDamageImmunityMask()
const;
1640 uint32 GetMechanicImmunityMask()
const;
1643 bool IsImmunedToDamage(
SpellInfo const* spellInfo)
const;
1644 virtual bool IsImmunedToSpellEffect(
SpellInfo const* spellInfo,
SpellEffectInfo const& spellEffectInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const;
1649 static void CalcAbsorbResist(
DamageInfo& damageInfo,
Spell* spell =
nullptr);
1650 static void CalcHealAbsorb(
HealInfo& healInfo);
1661 float CalculateSpellpowerCoefficientLevelPenalty(
SpellInfo const* spellInfo)
const;
1665 void RemoveAllFollowers();
1672 void StopMoving(
bool force =
false);
1673 void PauseMovement(
uint32 timer = 0,
uint8 slot = 0,
bool forced =
true);
1674 void ResumeMovement(
uint32 timer = 0,
uint8 slot = 0);
1688 bool IsSplineEnabled()
const;
1690 void SetControlled(
bool apply,
UnitState state);
1691 void ApplyControlStatesIfNeeded();
1699 void AddComboPoints(
Unit* target,
int8 count);
1701 void ClearComboPoints();
1702 void SendComboPoints();
1706 void ClearComboPointHolders();
1710 void SendPetActionSound(
PetAction action)
const;
1711 void SendPetDismissSound()
const;
1712 void SendPetAIReaction(
ObjectGuid guid)
const;
1715 void PropagateSpeedChange();
1718 void ClearAllReactives();
1720 void UpdateReactives(
uint32 p_time);
1723 void UpdateAuraForGroup(
uint8 slot);
1727 void SetCantProc(
bool apply);
1733 bool CreateVehicleKit(
uint32 id,
uint32 creatureEntry);
1734 void RemoveVehicleKit();
1739 bool IsOnVehicle(
Unit const* vehicle)
const;
1740 Unit* GetVehicleBase()
const;
1741 Unit* GetVehicleRoot()
const;
1742 Creature* GetVehicleCreatureBase()
const;
1747 void HandleSpellClick(
Unit* clicker,
int8 seatId = -1);
1748 void EnterVehicle(
Unit* base,
int8 seatId = -1);
1749 virtual void ExitVehicle(
Position const* exitPosition =
nullptr);
1750 void ChangeSeat(
int8 seatId,
bool next =
true);
1753 void _ExitVehicle(
Position const* exitPosition =
nullptr);
1756 void BuildMovementPacket(
ByteBuffer* data)
const;
1763 bool IsFalling()
const;
1765 virtual bool CanSwim()
const;
1778 void PurgeAndApplyPendingMovementChanges(
bool informObservers =
true);
1780 void RewardRage(
uint32 damage,
uint32 weaponSpeedHitFactor,
bool attacker);
1784 void OutDebugInfo()
const;
1788 Pet*
ToPet() {
if (IsPet())
return reinterpret_cast<Pet*
>(
this);
else return nullptr; }
1789 Pet const*
ToPet()
const {
if (IsPet())
return reinterpret_cast<Pet const*
>(
this);
else return nullptr; }
1792 Totem const*
ToTotem()
const {
if (IsTotem())
return reinterpret_cast<Totem const*
>(
this);
else return nullptr; }
1806 int32 GetHighestExclusiveSameEffectSpellGroupValue(
AuraEffect const* aurEff,
AuraType auraType,
bool checkMiscValue =
false,
int32 miscValue = 0)
const;
1807 bool IsHighestExclusiveAura(
Aura const* aura,
bool removeOtherAuraApplications =
false);
1808 bool IsHighestExclusiveAuraEffect(
SpellInfo const* spellInfo,
AuraType auraType,
int32 effectAmount,
uint8 auraEffectMask,
bool removeOtherAuraApplications =
false);
1812 virtual void Yell(std::string_view text,
Language language,
WorldObject const* target =
nullptr);
1813 virtual void TextEmote(std::string_view text,
WorldObject const* target =
nullptr,
bool isBossEmote =
false);
1814 virtual void Whisper(std::string_view text,
Language language,
Player* target,
bool isBossWhisper =
false);
1818 virtual void TextEmote(
uint32 textId,
WorldObject const* target =
nullptr,
bool isBossEmote =
false);
1819 virtual void Whisper(
uint32 textId,
Player* target,
bool isBossWhisper =
false);
1821 float GetCollisionHeight()
const override;
1833 explicit Unit (
bool isWorldObject);
1836 void DestroyForPlayer(
Player* target,
bool onDeath)
const override;
1838 void _UpdateSpells(
uint32 time);
1839 void _DeleteRemovedAuras();
1841 void _UpdateAutoRepeatSpell();
1904 bool IsAlwaysVisibleFor(
WorldObject const* seer)
const override;
1905 bool IsAlwaysDetectableFor(
WorldObject const* seer)
const override;
1907 void DisableSpline();
1914 virtual void AtExitCombat();
1916 virtual void AtEngage(
Unit* target);
1921 void UpdateSplineMovement(
uint32 t_diff);
1922 void UpdateSplinePosition();
1923 void SendFlightSplineSyncUpdate();
1924 void InterruptMovementBasedAuras();
1925 void CheckPendingMovementAcks();
1934 void SetFeared(
bool apply);
1935 void SetConfused(
bool apply);
1936 void SetStunned(
bool apply);
1937 void SetRooted(
bool apply);
1952 void UpdateCharmAI();
1953 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
#define MAX_GAMEOBJECT_SLOT
@ SPELL_FAILED_INTERRUPTED
@ SPELL_AURA_MOD_INVISIBILITY
@ UNIT_BYTES_2_OFFSET_SHEATH_STATE
@ UNIT_BYTES_2_OFFSET_PVP_FLAG
@ UNIT_BYTES_2_OFFSET_SHAPESHIFT_FORM
@ UNIT_BYTES_2_OFFSET_PET_FLAGS
@ UNIT_BYTES_0_OFFSET_POWER_TYPE
@ UNIT_BYTES_0_OFFSET_RACE
@ UNIT_BYTES_0_OFFSET_GENDER
@ UNIT_BYTES_0_OFFSET_CLASS
@ MOVEMENTFLAG_MASK_MOVING
@ MOVEMENTFLAG_DISABLE_GRAVITY
@ MOVEMENTFLAG_MASK_TURNING
@ UNIT_BYTES_1_OFFSET_ANIM_TIER
@ UNIT_BYTES_1_OFFSET_STAND_STATE
@ UNIT_BYTES_1_OFFSET_VIS_FLAG
NPCFlags
Non Player Character flags.
@ UNIT_NPC_FLAG_TABARDDESIGNER
@ UNIT_NPC_FLAG_AUCTIONEER
@ UNIT_NPC_FLAG_BATTLEMASTER
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_NPC_FLAG_INNKEEPER
@ UNIT_NPC_FLAG_FLIGHTMASTER
@ UNIT_NPC_FLAG_PETITIONER
@ UNIT_NPC_FLAG_SPIRITGUIDE
@ UNIT_NPC_FLAG_SPIRITHEALER
@ UNIT_BYTE2_FLAG_FFA_PVP
@ UNIT_BYTE2_FLAG_SANCTUARY
@ UNIT_FLAG_IMMUNE_TO_NPC
std::unordered_multimap< uint32, uint32 > SpellImmuneContainer
@ UNIT_MASK_CONTROLABLE_GUARDIAN
UnitActionBarEntry CharmSpellInfo
#define MAX_UNIT_ACTION_BAR_INDEX
@ SPEED_CHANGE_FLIGHT_SPEED
@ SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY
@ SPEED_CHANGE_FLIGHT_BACK_SPEED
#define UNIT_ACTION_BUTTON_ACTION(X)
@ 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_RESISTANCE_FIRE
@ UNIT_MOD_RESISTANCE_NATURE
@ UNIT_MOD_RESISTANCE_END
@ UNIT_MOD_DAMAGE_MAINHAND
@ UNIT_MOD_ATTACK_POWER_RANGED
TC_GAME_API float playerBaseMoveSpeed[MAX_MOVE_TYPE]
@ ACTION_BAR_INDEX_PET_SPELL_START
@ ACTION_BAR_INDEX_PET_SPELL_END
@ 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
#define MAKE_UNIT_ACTION_BUTTON(A, T)
std::vector< DispelableAura > DispelChargesList
#define CURRENT_MAX_SPELL
@ CR_WEAPON_SKILL_OFFHAND
@ CR_WEAPON_SKILL_MAINHAND
uint32 createProcHitMask(SpellNonMeleeDamage *damageInfo, SpellMissInfo missCondition)
#define UNIT_ACTION_BUTTON_TYPE(X)
std::list< Unit * > UnitList
#define REACTIVE_TIMER_START
@ REACTIVE_WOLVERINE_BITE
TC_GAME_API float baseMoveSpeed[MAX_MOVE_TYPE]
@ UNIT_FIELD_CHANNEL_OBJECT
@ UNIT_FIELD_ATTACK_POWER_MODS
@ UNIT_FIELD_FACTIONTEMPLATE
@ UNIT_FIELD_RANGED_ATTACK_POWER
@ UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER
@ UNIT_FIELD_MOUNTDISPLAYID
@ UNIT_FIELD_ATTACK_POWER_MULTIPLIER
@ UNIT_FIELD_ATTACK_POWER
@ UNIT_FIELD_PET_NAME_TIMESTAMP
@ UNIT_FIELD_RANGED_ATTACK_POWER_MODS
@ UNIT_FIELD_BOUNDINGRADIUS
@ UNIT_FIELD_NATIVEDISPLAYID
@ UNIT_FIELD_BASEATTACKTIME
T CalculatePct(T base, U pct)
WeaponAttackType m_attackType
Unit * GetAttacker() const
SpellInfo const *const m_spellInfo
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
uint8 GetDispelCharges() const
uint32 GetEffectiveHeal() const
SpellInfo const *const _spellInfo
SpellInfo const * GetSpellInfo() const
void SetEffectiveHeal(uint32 amount)
SpellSchoolMask GetSchoolMask() const
SpellSchoolMask const _schoolMask
static ObjectGuid const Empty
static Unit * ToUnit(Object *o)
uint32 GetHitMask() const
HealInfo * GetHealInfo() const
Unit * GetActionTarget() const
uint32 GetSpellTypeMask() const
Spell const * GetProcSpell() const
uint32 GetTypeMask() const
Unit *const _actionTarget
uint32 GetSpellPhaseMask() const
DamageInfo * GetDamageInfo() const
HealthPctOrderPred(bool ascending=true)
bool operator()(WorldObject const *objA, WorldObject const *objB) const
bool operator()(Unit const *a, Unit const *b) const
bool operator()(WorldObject const *objA, WorldObject const *objB) const
PowerPctOrderPred(Powers power, bool ascending=true)
Specialized variant of std::shared_ptr that enforces unique ownership and/or std::unique_ptr with std...
Trinity::unique_trackable_ptr companion class, replicating what std::weak_ptr is to std::shared_ptr.
float GetSpellCritChanceReduction() const
ObjectGuid GetComboTargetGUID() const
Unit * GetCharmed() const
void ClearUnitState(uint32 f)
uint32 GetChannelSpellId() const
void ReplaceAllDynamicFlags(uint32 flag) override
void SetLastDamagedTargetGuid(ObjectGuid guid)
std::pair< AuraApplicationMap::iterator, AuraApplicationMap::iterator > AuraApplicationMapBoundsNonConst
bool IsWithinMeleeRange(Unit const *obj) const
bool m_duringRemoveFromWorld
float GetBoundingRadius() const
Vehicle * GetVehicle() const
float GetPosStat(Stats stat) const
void AddComboPointHolder(Unit *unit)
bool IsBattleMaster() const
std::list< GameObject * > GameObjectList
bool HealthAbovePct(int32 pct) const
bool HasPetFlag(UnitPetFlag flags) const
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
float GetHealthPct() const
bool IsCharmerOrSelfPlayer() const
float m_baseSpellCritChance
uint32 m_lastSanctuaryTime
void SetCreateStat(Stats stat, float val)
bool HasExtraUnitMovementFlag(uint32 f) const
void SetStat(Stats stat, int32 val)
bool HasPvpFlag(UnitPVPStateFlags flags) const
void KillSelf(bool durabilityLoss=true)
void SetChannelObjectGuid(ObjectGuid guid)
uint32 GetUnitMovementFlags() const
LiquidTypeEntry const * _lastLiquid
bool IsGuildMaster() const
virtual void SetTarget(ObjectGuid)=0
float GetRangedCritChanceReduction() const
bool CanHaveThreatList() const
====================== THREAT & COMBAT ====================
Movement::MoveSpline * movespline
void SetGender(Gender gender)
std::unordered_map< ObjectGuid, uint32 > extraAttacksTargets
std::unordered_set< Unit * > m_ComboPointHolders
void AddComboPoints(int8 count)
void SetGameClientMovingMe(GameClient *gameClientMovingMe)
void AddExtraUnitMovementFlag(uint32 f)
std::shared_ptr< UnitAI > i_AI
void SetMinionGUID(ObjectGuid guid)
Diminishing m_Diminishing
bool IsTabardDesigner() const
void SetHoverHeight(float hoverHeight)
Unit * GetCharmedOrSelf() const
ThreatManager & GetThreatManager()
void ReplaceAllPvpFlags(UnitPVPStateFlags flags)
void SetInCombatWith(Unit *enemy, bool addSecondUnitSuppressed=false)
void SetLastExtraAttackSpell(uint32 spellId)
virtual void SetCanDualWield(bool value)
std::vector< std::pair< uint8, AuraApplication * > > AuraApplicationProcContainer
void SetVisFlag(UnitVisFlags flags)
void SetCreateHealth(uint32 val)
std::list< Aura * > AuraList
uint32 GetRaceMask() const
uint32 GetClassMask() const
virtual bool UpdateAllStats()=0
uint32 GetLastExtraAttackSpell() const
uint32 GetMountDisplayId() const
ThreatManager const & GetThreatManager() const
GameClient * _gameClientMovingMe
virtual SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType=BASE_ATTACK, uint8 damageIndex=0) const =0
std::multimap< uint32, AuraApplication * > AuraApplicationMap
Emote GetEmoteState() const
bool HealthAbovePctHealed(int32 pct, uint32 heal) const
SpellHistory * _spellHistory
NPCFlags GetNpcFlags() const
bool IsMovedByClient() const
ObjectGuid GetCreatorGUID() const
ShapeshiftForm GetShapeshiftForm() const
void SetFaction(uint32 faction) override
ObjectGuid GetOwnerGUID() const override
void RemoveExtraUnitMovementFlag(uint32 f)
virtual void UpdateAttackPowerAndDamage(bool ranged=false)=0
Spell * GetCurrentSpell(uint32 spellType) const
Unit * GetCharmer() const
UnitPetFlag GetPetFlags() const
Trinity::unique_trackable_ptr< Vehicle > m_vehicleKit
UnitPVPStateFlags GetPvpFlags() const
uint32 GetTransformSpell() const
void SetAttackPowerModNeg(int32 attackPowerMod)
void SetBaseWeaponDamage(WeaponAttackType attType, WeaponDamageRange damageRange, float value, uint8 damageIndex=0)
uint32 _lastExtraAttackSpell
MotionMaster * i_motionMaster
virtual bool CanFly() const =0
void ReplaceAllUnitFlags(UnitFlags flags)
MotionMaster * GetMotionMaster()
AuraApplicationMap const & GetAppliedAuras() const
Powers GetPowerType() const
bool HasUnitFlag(UnitFlags flags) const
GameClient * GetGameClientMovingMe() const
ObjectGuid GetCharmedGUID() const
void SetCreatedBySpell(int32 spellId)
bool CanDualWield() const
bool CanInstantCast() const
void StartReactiveTimer(ReactiveType reactive)
void SetUnitMovementFlags(uint32 f)
uint32 GetMaxHealth() const
virtual void AtDisengage()
virtual void UpdateResistances(uint32 school)=0
void SetChannelSpellId(uint32 channelSpellId)
virtual void SetImmuneToAll(bool apply)
uint32 GetSpellCritDamageReduction(uint32 damage) const
bool IsFullHealth() const
float GetMeleeCritChanceReduction() const
void SetUnitFlag2(UnitFlags2 flags)
bool HasUnitFlag2(UnitFlags2 flags) const
bool HasInterruptFlag(uint32 flags) const
bool IsInSanctuary() const
std::pair< AuraMap::const_iterator, AuraMap::const_iterator > AuraMapBounds
uint32 GetRangedDamageReduction(uint32 damage) const
virtual bool IsLoading() const
uint8 GetComboPoints(ObjectGuid const &guid) const
void ReplaceAllPetFlags(UnitPetFlag flags)
float GetNegStat(Stats stat) const
void SetPetNameTimestamp(uint32 timestamp)
std::stack< std::shared_ptr< UnitAI > > UnitAIStack
float m_modRangedHitChance
float GetCombatReach() const override
void ReplaceAllVisFlags(UnitVisFlags flags)
std::deque< PlayerMovementPendingChange > m_pendingMovementChanges
void NearTeleportTo(float x, float y, float z, float orientation, bool casting=false)
int32 GetMinPower(Powers) const
void SetRangedAttackPowerModNeg(int32 attackPowerMod)
std::pair< AuraApplicationMap::const_iterator, AuraApplicationMap::const_iterator > AuraApplicationMapBounds
void RemoveNpcFlag(NPCFlags flags)
uint32 m_removedAurasCount
uint32 GetRangedCritDamageReduction(uint32 damage) const
UnitFlags GetUnitFlags() const
void SetPetFlag(UnitPetFlag flags)
TempSummon * ToTempSummon()
bool IsGravityDisabled() const
bool IsQuestGiver() const
CharmInfo * GetCharmInfo()
bool HasStealthAura() const
void RemoveVisFlag(UnitVisFlags flags)
bool IsInCombatWith(Unit const *who) const
ObjectGuid GetCharmerOrOwnerGUID() const override
AuraMap::iterator m_auraUpdateIterator
std::list< AuraApplication * > AuraApplicationList
ObjectGuid _lastDamagedTargetGuid
std::map< uint8, AuraApplication * > VisibleAuraMap
void SetNativeDisplayId(uint32 displayId)
void FollowerRemoved(AbstractFollower *f)
void SetRangedAttackPowerModPos(int32 attackPowerMod)
void FollowerAdded(AbstractFollower *f)
bool m_AutoRepeatFirstCast
AnimTier GetAnimTier() const
std::set< Unit * > ControlList
TempSummon const * ToTempSummon() const
virtual bool HasSpell(uint32) const
virtual bool IsAffectedByDiminishingReturns() const
std::pair< AuraStateAurasMap::const_iterator, AuraStateAurasMap::const_iterator > AuraStateAurasMapBounds
void AddUnitState(uint32 f)
std::multimap< AuraStateType, AuraApplication * > AuraStateAurasMap
ObjectGuid GetLastDamagedTargetGuid() const
void SetBoundingRadius(float boundingRadius)
void SetCreateMana(uint32 val)
void RemoveComboPointHolder(Unit *unit)
bool IsCharmedOwnedByPlayerOrPlayer() const
bool IsImmuneToNPC() const
virtual bool CanEnterWater() const =0
Pet const * ToPet() const
Unit * EnsureVictim() const
uint32 getAttackTimer(WeaponAttackType type) const
virtual void SetSheath(SheathState sheathed)
bool IsDuringRemoveFromWorld() const
bool m_ControlledByPlayer
void AddInterruptMask(uint32 flags)
Unit * GetCharmerOrOwner() const
void SetLastManaUse(uint32 spellCastTime)
virtual Gender GetNativeGender() const
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)
uint32 CountPctFromCurHealth(int32 pct) const
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
UnitAI * GetTopAI() const
uint32 GetNativeDisplayId() const
virtual void UpdateArmor()=0
bool HealthBelowPct(int32 pct) const
void AddUnitMovementFlag(uint32 f)
ThreatManager m_threatManager
uint32 _oldFactionId
faction before charm
SpellHistory const * GetSpellHistory() const
ObjectGuid GetMinionGUID() const
float GetHoverOffset() const
SharedVisionList const & GetSharedVisionList()
bool HasUnitMovementFlag(uint32 f) const
uint32 GetMaxPower(Powers power) const
virtual void UpdateMaxPower(Powers power)=0
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
virtual uint32 GetShieldBlockValue() const =0
void SetNpcFlag(NPCFlags flags)
VisibleAuraMap const & GetVisibleAuras() const
Totem const * ToTotem() const
void RemovePetFlag(UnitPetFlag flags)
void setAttackTimer(WeaponAttackType type, uint32 time)
virtual bool UpdateStats(Stats stat)=0
bool HasNpcFlag(NPCFlags flags) const
virtual void AtEnterCombat()
std::array< DiminishingReturn, DIMINISHING_MAX > Diminishing
float m_modMeleeHitChance
virtual bool CheckAttackFitToAuraRequirement(WeaponAttackType, AuraEffect const *) const
ObjectGuid GetCritterGUID() const
uint8 GetLevelForTarget(WorldObject const *) const override
void SetFullPower(Powers power)
AuraList const & GetSingleCastAuras() const
bool CanModifyStats() const
void SetAttackPower(int32 attackPower)
float GetSpeedRate(UnitMoveType mtype) const
std::set< Unit * > AttackerSet
virtual float GetFollowAngle() const
std::vector< Unit * > UnitVector
bool IsMovedByServer() const
uint32 GetExtraUnitMovementFlags() const
uint32 GetMeleeCritDamageReduction(uint32 damage) const
Unit * GetComboTarget() const
float GetCreateStat(Stats stat) const
DeathState getDeathState() const
ObjectGuid GetChannelObjectGuid() const
bool IsEngagedBy(Unit const *who) const
bool HasUnitState(const uint32 f) const
uint32 GetSpellDamageReduction(uint32 damage) const
std::unordered_set< AbstractFollower * > m_followingMe
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
Player * GetCharmerOrSelfPlayer() const
virtual void UpdateMaxHealth()=0
uint32 HasUnitTypeMask(uint32 mask) const
uint8 GetComboPoints(Unit const *who=nullptr) const
--------—Combo point system----------------—
uint32 CountPctFromMaxHealth(int32 pct) const
float GetStat(Stats stat) const
virtual void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float &minDamage, float &maxDamage, uint8 damageIndex) const =0
SpellHistory * GetSpellHistory()
void ReplaceAllUnitFlags2(UnitFlags2 flags)
bool IsControlledByPlayer() 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
void SetCreatorGUID(ObjectGuid creator)
static void Kill(Unit *attacker, Unit *victim, bool durabilityLoss=true)
ObjectGuid LastCharmerGUID
uint32 GetPower(Powers power) const
CombatManager & GetCombatManager()
uint32 GetMeleeDamageReduction(uint32 damage) const
void SetUnitFlag(UnitFlags flags)
void SetExtraUnitMovementFlags(uint32 f)
void SetCritterGUID(ObjectGuid guid)
AuraApplicationMap & GetAppliedAuras()
std::list< AuraEffect * > AuraEffectList
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
void SetAttackTime(WeaponAttackType att, uint32 val)
void SetPetNumberForClient(uint32 petNumber)
bool IsSpiritHealer() const
VisibleAuraMap m_visibleAuras
uint32 GetCreateMana() const
CombatManager m_combatManager
void SetRangedAttackPower(int32 attackPower)
virtual void SetNativeGender(Gender gender)
AuraStateAurasMap m_auraStateAuras
int32 GetResistance(SpellSchools school) const
AuraList & GetSingleCastAuras()
uint32 GetMovementCounterAndInc()
void AddUnitTypeMask(uint32 mask)
void SetModCastingSpeed(float castingSpeed)
Vehicle * GetVehicleKit() const
virtual void SetImmuneToPC(bool apply)
float m_modSpellHitChance
std::list< DynamicObject * > DynObjectList
virtual bool IsEngaged() const
void ReplaceAllNpcFlags(NPCFlags flags)
void SetAttackPowerMultiplier(float attackPowerMult)
AuraMap & GetOwnedAuras()
bool IsSpiritService() const
void SetTransformSpell(uint32 spellid)
bool IsImmuneToPC() const
SharedVisionList m_sharedVision
ObjectGuid GetTarget() const
bool _isWalkingBeforeCharm
Are we walking before we were charmed?
void SetAttackPowerModPos(int32 attackPowerMod)
void SetMountDisplayId(uint32 mountDisplayId)
UnitFlags2 GetUnitFlags2() const
void SetIsCombatDisallowed(bool apply)
bool IsThreatenedBy(Unit const *who) const
void RemoveUnitFlag(UnitFlags flags)
uint32 GetDynamicFlags() const override
bool HasPendingMovementChange() const
bool IsSpiritGuide() const
ObjectGuid GetPetGUID() const
uint32 GetMaxSkillValueForLevel(Unit const *target=nullptr) const
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
Player session in the World.
WeaponAttackType AttackType
struct CalcDamageInfo::@227 Damages[2]
MeleeHitOutcome HitOutCome
uint32 GetPetNumber() const
void SetActionBar(uint8 index, uint32 spellOrAction, ActiveStates type)
CharmSpellInfo * GetCharmSpell(uint8 index)
CommandStates GetCommandState() const
CommandStates _CommandState
UnitActionBarEntry const * GetActionBarEntry(uint8 index) const
bool HasCommandState(CommandStates state) const
ReactStates _oldReactState
void SetCommandState(CommandStates st)
MeleeHitOutcome hitOutCome
CleanDamage(uint32 mitigated, uint32 absorbed, WeaponAttackType _attackType, MeleeHitOutcome _hitOutCome)
WeaponAttackType attackType
PlayerMovementPendingChange()
MovementChangeType movementChangeType
struct PlayerMovementPendingChange::KnockbackInfo knockbackInfo
SpellNonMeleeDamage(Unit *_attacker, Unit *_target, uint32 _SpellID, uint32 _schoolMask)
SpellPeriodicAuraLogInfo(AuraEffect const *_auraEff, uint32 _damage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical)
AuraEffect const * auraEff
ActiveStates GetType() const
void SetActionAndType(uint32 action, ActiveStates type)
bool IsActionBarForSpell() const
void SetType(ActiveStates type)
void SetAction(uint32 action)