Pet Class Reference

#include <Pet.h>

Public Member Functions

 Pet (Player *owner, PetType type=MAX_PET_TYPE)
virtual ~Pet ()
void AddToWorld () override
void RemoveFromWorld () override
float GetNativeObjectScale () const override
void SetDisplayId (uint32 modelId, float displayScale=1.f) override
PetType getPetType () const
void setPetType (PetType type)
bool isControlled () const
bool isTemporarySummoned () const
bool IsPermanentPetFor (Player *owner) const
bool Create (ObjectGuid::LowType guidlow, Map *map, uint32 Entry, uint32 pet_number)
bool CreateBaseAtCreature (Creature *creature)
bool CreateBaseAtCreatureInfo (CreatureTemplate const *cinfo, Unit *owner)
bool CreateBaseAtTamed (CreatureTemplate const *cinfo, Map *map)
bool LoadPetFromDB (Player *owner, uint32 petEntry, uint32 petnumber, bool current, Optional< PetSaveMode > forcedSlot={})
bool IsLoading () const override
void SavePetToDB (PetSaveMode mode)
void FillPetInfo (PetStable::PetInfo *petInfo) const
void Remove (PetSaveMode mode, bool returnreagent=false)
void setDeathState (DeathState s) override
void Update (uint32 diff) override
uint8 GetPetAutoSpellSize () const override
uint32 GetPetAutoSpellOnPos (uint8 pos) const override
void GivePetXP (uint32 xp)
void GivePetLevel (uint8 level)
void SetPetExperience (uint32 xp)
void SetPetNextLevelExperience (uint32 xp)
void SynchronizeLevelWithOwner ()
bool HaveInDiet (ItemTemplate const *item) const
void SetDuration (int32 dur)
int32 GetDuration () const
void ToggleAutocast (SpellInfo const *spellInfo, bool apply)
bool HasSpell (uint32 spell) const override
void LearnPetPassives ()
void CastPetAuras (bool current)
void CastPetAura (PetAura const *aura)
bool IsPetAura (Aura const *aura)
void _LoadAuras (PreparedQueryResult auraResult, PreparedQueryResult effectResult, uint32 timediff)
void _SaveAuras (CharacterDatabaseTransaction trans)
void _LoadSpells (PreparedQueryResult result)
void _SaveSpells (CharacterDatabaseTransaction trans)
bool addSpell (uint32 spellId, ActiveStates active=ACT_DECIDE, PetSpellState state=PETSPELL_NEW, PetSpellType type=PETSPELL_NORMAL)
bool learnSpell (uint32 spell_id)
void learnSpells (std::vector< uint32 > const &spellIds)
void learnSpellHighRank (uint32 spellid)
void InitLevelupSpellsForLevel ()
bool unlearnSpell (uint32 spell_id, bool learn_prev, bool clear_ab=true)
void unlearnSpells (std::vector< uint32 > const &spellIds, bool learn_prev, bool clear_ab=true)
bool removeSpell (uint32 spell_id, bool learn_prev, bool clear_ab=true)
void CleanupActionBar ()
std::string GenerateActionBarData () const
void InitPetCreateSpells ()
uint16 GetSpecialization () const
void SetSpecialization (uint16 spec)
void LearnSpecializationSpells ()
void RemoveSpecializationSpells (bool clearActionBar)
uint32 GetGroupUpdateFlag () const
void SetGroupUpdateFlag (uint32 flag)
void ResetGroupUpdateFlag ()
DeclinedName const * GetDeclinedNames () const
PlayerGetOwner () const
std::string GetDebugInfo () const override
- Public Member Functions inherited from Guardian
 Guardian (SummonPropertiesEntry const *properties, Unit *owner, bool isWorldObject)
void InitStats (uint32 duration) override
bool InitStatsForLevel (uint8 level)
void InitSummon () override
bool UpdateStats (Stats stat) override
bool UpdateAllStats () override
void UpdateResistances (uint32 school) override
void UpdateArmor () override
void UpdateMaxHealth () override
void UpdateMaxPower (Powers power) override
void UpdateAttackPowerAndDamage (bool ranged=false) override
void UpdateDamagePhysical (WeaponAttackType attType) override
int32 GetBonusDamage () const
float GetBonusStatFromOwner (Stats stat) const
void SetBonusDamage (int32 damage)
- Public Member Functions inherited from Minion
 Minion (SummonPropertiesEntry const *properties, Unit *owner, bool isWorldObject)
UnitGetOwner () const
float GetFollowAngle () const override
void SetFollowAngle (float angle)
bool IsPetImp () const
bool IsPetFelhunter () const
bool IsPetVoidwalker () const
bool IsPetSuccubus () const
bool IsPetDoomguard () const
bool IsPetFelguard () const
bool IsPetGhoul () const
bool IsPetAbomination () const
bool IsSpiritWolf () const
bool IsGuardianPet () const
- Public Member Functions inherited from TempSummon
 TempSummon (SummonPropertiesEntry const *properties, WorldObject *owner, bool isWorldObject)
virtual ~TempSummon ()
void UpdateObjectVisibilityOnCreate () override
void UpdateObjectVisibilityOnDestroy () override
virtual void UnSummon (uint32 msTime=0)
void SetTempSummonType (TempSummonType type)
WorldObjectGetSummoner () const
UnitGetSummonerUnit () const
CreatureGetSummonerCreatureBase () const
GameObjectGetSummonerGameObject () const
ObjectGuid GetSummonerGUID () const
TempSummonType GetSummonType () const
uint32 GetTimer () const
bool CanFollowOwner () const
void SetCanFollowOwner (bool can)
- Public Member Functions inherited from Creature
 Creature (bool isWorldObject=false)
void SetObjectScale (float scale) override
void SetDisplayFromModel (uint32 modelIdx)
void DisappearAndDie ()
bool Create (ObjectGuid::LowType guidlow, Map *map, uint32 entry, Position const &pos, CreatureData const *data, uint32 vehId, bool dynamic=false)
bool LoadCreaturesAddon ()
void SelectLevel ()
void UpdateLevelDependantStats ()
void SelectWildBattlePetLevel ()
void LoadEquipment (int8 id=1, bool force=false)
void SetSpawnHealth ()
void LoadTemplateRoot ()
ObjectGuid::LowType GetSpawnId () const
void GetRespawnPosition (float &x, float &y, float &z, float *ori=nullptr, float *dist=nullptr) const
bool IsSpawnedOnTransport () const
void SetCorpseDelay (uint32 delay, bool ignoreCorpseDecayRatio=false)
uint32 GetCorpseDelay () const
bool IsRacialLeader () const
bool IsCivilian () const
bool IsTrigger () const
bool IsGuard () const
void InitializeMovementFlags ()
void UpdateMovementFlags ()
CreatureMovementData const & GetMovementTemplate () const
bool CanWalk () const
bool CanSwim () const override
bool CanEnterWater () const override
bool CanFly () const override
bool CanHover () const
MovementGeneratorType GetDefaultMovementType () const override
void SetDefaultMovementType (MovementGeneratorType mgt)
bool IsDungeonBoss () const
bool IsAffectedByDiminishingReturns () const override
UnitSelectVictim ()
void SetReactState (ReactStates st)
ReactStates GetReactState () const
bool HasReactState (ReactStates state) const
void InitializeReactState ()
void SetImmuneToAll (bool apply) override
void SetImmuneToPC (bool apply) override
void SetImmuneToNPC (bool apply) override
bool isCanInteractWithBattleMaster (Player *player, bool msg) const
bool CanResetTalents (Player *player) const
bool CanCreatureAttack (Unit const *victim, bool force=true) const
void LoadTemplateImmunities ()
bool IsImmunedToSpellEffect (SpellInfo const *spellInfo, SpellEffectInfo const &spellEffectInfo, WorldObject const *caster) const override
bool isElite () const
bool isWorldBoss () const
bool HasScalableLevels () const
void ApplyLevelScaling ()
uint8 GetLevelForTarget (WorldObject const *target) const override
uint64 GetMaxHealthByLevel (uint8 level) const
float GetHealthMultiplierForTarget (WorldObject const *target) const override
float GetBaseDamageForLevel (uint8 level) const
float GetDamageMultiplierForTarget (WorldObject const *target) const override
float GetBaseArmorForLevel (uint8 level) const
float GetArmorMultiplierForTarget (WorldObject const *target) const override
bool IsInEvadeMode () const
bool IsEvadingAttacks () const
bool AIM_Destroy ()
bool AIM_Create (CreatureAI *ai=nullptr)
bool AIM_Initialize (CreatureAI *ai=nullptr)
void Motion_Initialize ()
CreatureAIAI () const
SpellSchoolMask GetMeleeDamageSchoolMask (WeaponAttackType=BASE_ATTACK) const override
void SetMeleeDamageSchool (SpellSchools school)
bool UpdateEntry (uint32 entry, CreatureData const *data=nullptr, bool updateLevel=true)
uint32 GetPowerIndex (Powers power) const override
void CalculateMinMaxDamage (WeaponAttackType attType, bool normalized, bool addTotalPct, float &minDamage, float &maxDamage) const override
void SetCanDualWield (bool value) override
int8 GetOriginalEquipmentId () const
uint8 GetCurrentEquipmentId () const
void SetCurrentEquipmentId (uint8 id)
float GetSpellDamageMod (int32 Rank) const
VendorItemData const * GetVendorItems () const
uint32 GetVendorItemCurrentCount (VendorItem const *vItem)
uint32 UpdateVendorItemCurrentCount (VendorItem const *vItem, uint32 used_count)
CreatureTemplate const * GetCreatureTemplate () const
CreatureData const * GetCreatureData () const
CreatureAddon const * GetCreatureAddon () const
std::string const & GetAIName () const
std::string GetScriptName () const
uint32 GetScriptId () const
std::string GetNameForLocaleIdx (LocaleConstant locale) const override
bool LoadFromDB (ObjectGuid::LowType spawnId, Map *map, bool addToMap, bool allowDuplicate)
void SaveToDB ()
void StartPickPocketRefillTimer ()
void ResetPickPocketRefillTimer ()
bool CanGeneratePickPocketLoot () const
ObjectGuid GetLootRecipientGUID () const
PlayerGetLootRecipient () const
GroupGetLootRecipientGroup () const
bool hasLootRecipient () const
bool isTappedBy (Player const *player) const
void SetLootRecipient (Unit *unit, bool withGroup=true)
void AllLootRemovedFromCorpse ()
uint16 GetLootMode () const
bool HasLootMode (uint16 lootMode)
void SetLootMode (uint16 lootMode)
void AddLootMode (uint16 lootMode)
void RemoveLootMode (uint16 lootMode)
void ResetLootMode ()
bool CanStartAttack (Unit const *u, bool force) const
float GetAttackDistance (Unit const *player) const
float GetAggroRange (Unit const *target) const
void SendAIReaction (AiReaction reactionType)
UnitSelectNearestTarget (float dist=0, bool playerOnly=false) const
UnitSelectNearestTargetInAttackDistance (float dist=0) const
UnitSelectNearestHostileUnitInAggroRange (bool useLOS=false, bool ignoreCivilians=false) const
void DoFleeToGetAssistance ()
void CallForHelp (float fRadius)
void CallAssistance ()
void SetNoCallAssistance (bool val)
void SetNoSearchAssistance (bool val)
bool HasSearchedAssistance () const
bool CanAssistTo (Unit const *u, Unit const *enemy, bool checkfaction=true) const
bool _IsTargetAcceptable (Unit const *target) const
bool CanIgnoreFeignDeath () const
void RemoveCorpse (bool setSpawnTime=true, bool destroyForNearbyPlayers=true)
void DespawnOrUnsummon (Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
time_t const & GetRespawnTime () const
time_t GetRespawnTimeEx () const
void SetRespawnTime (uint32 respawn)
void Respawn (bool force=false)
void SaveRespawnTime (uint32 forceDelay=0)
uint32 GetRespawnDelay () const
void SetRespawnDelay (uint32 delay)
float GetWanderDistance () const
void SetWanderDistance (float dist)
void DoImmediateBoundaryCheck ()
uint32 GetCombatPulseDelay () const
void SetCombatPulseDelay (uint32 delay)
void SendZoneUnderAttackMessage (Player *attacker)
 Send a message to LocalDefense channel for players opposition team in the zone. More...
bool hasQuest (uint32 quest_id) const override
bool hasInvolvedQuest (uint32 quest_id) const override
bool CanRegenerateHealth () const
void SetRegenerateHealth (bool value)
float GetPetChaseDistance () const
void SetCannotReachTarget (bool cannotReach)
bool CanNotReachTarget () const
void SetHomePosition (float x, float y, float z, float o)
void SetHomePosition (Position const &pos)
void GetHomePosition (float &x, float &y, float &z, float &ori) const
Position const & GetHomePosition () const
void SetTransportHomePosition (float x, float y, float z, float o)
void SetTransportHomePosition (Position const &pos)
void GetTransportHomePosition (float &x, float &y, float &z, float &ori) const
Position const & GetTransportHomePosition () const
uint32 GetWaypointPath () const
void LoadPath (uint32 pathid)
std::pair< uint32, uint32GetCurrentWaypointInfo () const
void UpdateCurrentWaypointInfo (uint32 nodeId, uint32 pathId)
bool IsReturningHome () const
void SearchFormation ()
CreatureGroupGetFormation ()
void SetFormation (CreatureGroup *formation)
bool IsFormationLeader () const
void SignalFormationMovement ()
bool IsFormationLeaderMoveAllowed () const
void SetDisableReputationGain (bool disable)
bool IsReputationGainDisabled () const
bool IsDamageEnoughForLootingAndReward () const
void LowerPlayerDamageReq (uint64 unDamage)
void ResetPlayerDamageReq ()
uint32 GetOriginalEntry () const
void SetOriginalEntry (uint32 entry)
void SetRespawnCompatibilityMode (bool mode=true)
bool GetRespawnCompatibilityMode ()
void SetTarget (ObjectGuid const &guid) override
void DoNotReacquireSpellFocusTarget ()
void SetSpellFocus (Spell const *focusSpell, WorldObject const *target)
bool HasSpellFocus (Spell const *focusSpell=nullptr) const override
void ReleaseSpellFocus (Spell const *focusSpell=nullptr, bool withDelay=true)
bool IsMovementPreventedByCasting () const override
time_t GetLastDamagedTime () const
void SetLastDamagedTime (time_t val)
CreatureTextRepeatIds GetTextRepeatGroup (uint8 textGroup)
void SetTextRepeatId (uint8 textGroup, uint8 id)
void ClearTextRepeatGroup (uint8 textGroup)
bool IsEscorted () const
bool CanGiveExperience () const
bool IsEngaged () const override
void AtEngage (Unit *target) override
void AtDisengage () override
bool HasCanSwimFlagOutOfCombat () const
void RefreshCanSwimFlag (bool recheck=false)
void ExitVehicle (Position const *exitPosition=nullptr) override
- Public Member Functions inherited from Unit
virtual ~Unit ()
bool IsAIEnabled () const
void AIUpdateTick (uint32 diff)
UnitAIGetAI () const
void ScheduleAIChange ()
void PushAI (UnitAI *newAI)
bool PopAI ()
void AddToWorld () override
void RemoveFromWorld () override
void CleanupBeforeRemoveFromMap (bool finalCleanup)
void CleanupsBeforeDelete (bool finalCleanup=true) override
DiminishingLevels GetDiminishing (DiminishingGroup group) const
void IncrDiminishing (SpellInfo const *auraSpellInfo)
bool ApplyDiminishingToDuration (SpellInfo const *auraSpellInfo, int32 &duration, WorldObject *caster, DiminishingLevels previousLevel) const
void ApplyDiminishingAura (DiminishingGroup group, bool apply)
void ClearDiminishings ()
void setAttackTimer (WeaponAttackType type, uint32 time)
void resetAttackTimer (WeaponAttackType type=BASE_ATTACK)
uint32 getAttackTimer (WeaponAttackType type) const
bool isAttackReady (WeaponAttackType type=BASE_ATTACK) const
bool haveOffhandWeapon () const
bool CanDualWield () const
float GetCombatReach () const override
void SetCombatReach (float combatReach)
float GetBoundingRadius () const
void SetBoundingRadius (float boundingRadius)
bool IsWithinCombatRange (Unit const *obj, float dist2compare) const
bool IsWithinMeleeRange (Unit const *obj) const
bool IsWithinMeleeRangeAt (Position const &pos, Unit const *obj) const
float GetMeleeRange (Unit const *target) const
bool IsWithinBoundaryRadius (const Unit *obj) const
void _addAttacker (Unit *pAttacker)
void _removeAttacker (Unit *pAttacker)
UnitgetAttackerForHelper () const
bool Attack (Unit *victim, bool meleeAttack)
void CastStop (uint32 except_spellid=0)
bool AttackStop ()
void RemoveAllAttackers ()
AttackerSet const & getAttackers () const
bool isAttackingPlayer () const
UnitGetVictim () const
UnitEnsureVictim () const
void ValidateAttackersAndOwnTarget ()
void CombatStop (bool includingCast=false, bool mutualPvP=true)
void CombatStopWithPets (bool includingCast=false)
void StopAttackFaction (uint32 faction_id)
UnitSelectNearbyTarget (Unit *exclude=nullptr, float dist=NOMINAL_MELEE_RANGE) const
void SendMeleeAttackStop (Unit *victim=nullptr)
void SendMeleeAttackStart (Unit *victim)
void AddUnitState (uint32 f)
bool HasUnitState (const uint32 f) const
void ClearUnitState (uint32 f)
bool CanFreeMove () const
uint32 HasUnitTypeMask (uint32 mask) const
void AddUnitTypeMask (uint32 mask)
bool IsSummon () const
bool IsGuardian () const
bool IsPet () const
bool IsHunterPet () const
bool IsTotem () const
bool IsVehicle () const
uint8 GetLevel () const
uint8 GetLevelForTarget (WorldObject const *) const override
void SetLevel (uint8 lvl, bool sendUpdate=true)
uint8 GetRace () const
void SetRace (uint8 race)
uint64 GetRaceMask () const
uint8 GetClass () const
void SetClass (uint8 classId)
uint32 GetClassMask () const
Gender GetGender () const
void SetGender (Gender gender)
virtual Gender GetNativeGender () const
virtual void SetNativeGender (Gender gender)
float GetStat (Stats stat) const
void SetStat (Stats stat, int32 val)
uint32 GetArmor () const
void SetArmor (int32 val, int32 bonusVal)
int32 GetResistance (SpellSchools school) const
int32 GetBonusResistanceMod (SpellSchools school) const
int32 GetResistance (SpellSchoolMask mask) const
void SetResistance (SpellSchools school, int32 val)
void SetBonusResistanceMod (SpellSchools school, int32 val)
uint64 GetHealth () const
uint64 GetMaxHealth () const
bool IsFullHealth () const
bool HealthBelowPct (int32 pct) const
bool HealthBelowPctDamaged (int32 pct, uint32 damage) const
bool HealthAbovePct (int32 pct) const
bool HealthAbovePctHealed (int32 pct, uint32 heal) const
float GetHealthPct () const
uint64 CountPctFromMaxHealth (int32 pct) const
uint64 CountPctFromCurHealth (int32 pct) const
void SetHealth (uint64 val)
void SetMaxHealth (uint64 val)
void SetFullHealth ()
int64 ModifyHealth (int64 val)
int64 GetHealthGain (int64 dVal)
void TriggerOnHealthChangeAuras (uint64 oldVal, uint64 newVal)
Powers GetPowerType () const
void SetPowerType (Powers power, bool sendUpdate=true)
void SetOverrideDisplayPowerId (uint32 powerDisplayId)
void UpdateDisplayPower ()
int32 GetPower (Powers power) const
int32 GetMinPower (Powers power) const
int32 GetMaxPower (Powers power) const
float GetPowerPct (Powers power) const
int32 CountPctFromMaxPower (Powers power, int32 pct) const
void SetPower (Powers power, int32 val, bool withPowerUpdate=true)
void SetMaxPower (Powers power, int32 val)
void TriggerOnPowerChangeAuras (Powers power, int32 oldVal, int32 newVal)
void SetFullPower (Powers power)
int32 ModifyPower (Powers power, int32 val, bool withPowerUpdate=true)
void ApplyModManaCostMultiplier (float manaCostMultiplier, bool apply)
void ApplyModManaCostModifier (SpellSchools school, int32 mod, bool apply)
uint32 GetBaseAttackTime (WeaponAttackType att) const
void SetBaseAttackTime (WeaponAttackType att, uint32 val)
void UpdateAttackTimeField (WeaponAttackType att)
void ApplyAttackTimePercentMod (WeaponAttackType att, float val, bool apply)
void ApplyCastTimePercentMod (float val, bool apply)
void SetModCastingSpeed (float castingSpeed)
void SetModSpellHaste (float spellHaste)
void SetModHaste (float haste)
void SetModRangedHaste (float rangedHaste)
void SetModHasteRegen (float hasteRegen)
void SetModTimeRate (float timeRate)
bool HasUnitFlag (UnitFlags flags) const
void SetUnitFlag (UnitFlags flags)
void RemoveUnitFlag (UnitFlags flags)
void ReplaceAllUnitFlags (UnitFlags flags)
bool HasUnitFlag2 (UnitFlags2 flags) const
void SetUnitFlag2 (UnitFlags2 flags)
void RemoveUnitFlag2 (UnitFlags2 flags)
void ReplaceAllUnitFlags2 (UnitFlags2 flags)
bool HasUnitFlag3 (UnitFlags3 flags) const
void SetUnitFlag3 (UnitFlags3 flags)
void RemoveUnitFlag3 (UnitFlags3 flags)
void ReplaceAllUnitFlags3 (UnitFlags3 flags)
void SetCreatedBySpell (int32 spellId)
Emote GetEmoteState () const
void SetEmoteState (Emote emote)
SheathState GetSheath () const
void SetSheath (SheathState sheathed)
uint32 GetFaction () const override
void SetFaction (uint32 faction) override
bool IsInPartyWith (Unit const *unit) const
bool IsInRaidWith (Unit const *unit) const
void GetPartyMembers (std::list< Unit *> &units)
bool IsContestedGuard () const
UnitPVPStateFlags GetPvpFlags () const
bool HasPvpFlag (UnitPVPStateFlags flags) const
void SetPvpFlag (UnitPVPStateFlags flags)
void RemovePvpFlag (UnitPVPStateFlags flags)
void ReplaceAllPvpFlags (UnitPVPStateFlags flags)
bool IsInSanctuary () const
bool IsPvP () const
bool IsFFAPvP () const
virtual void SetPvP (bool state)
UnitPetFlag GetPetFlags () const
bool HasPetFlag (UnitPetFlag flags) const
void SetPetFlag (UnitPetFlag flags)
void RemovePetFlag (UnitPetFlag flags)
void ReplaceAllPetFlags (UnitPetFlag flags)
uint32 GetCreatureType () const
uint32 GetCreatureTypeMask () const
UnitStandStateType GetStandState () const
bool IsSitState () const
bool IsStandState () const
void SetStandState (UnitStandStateType state, uint32 animKitID=0)
void SetVisFlag (UnitVisFlags flags)
void RemoveVisFlag (UnitVisFlags flags)
void ReplaceAllVisFlags (UnitVisFlags flags)
AnimTier GetAnimTier () const
void SetAnimTier (AnimTier animTier, bool notifyClient=true)
bool IsMounted () const
uint32 GetMountDisplayId () const
void SetMountDisplayId (uint32 mountDisplayId)
uint32 GetCosmeticMountDisplayId () const
void SetCosmeticMountDisplayId (uint32 mountDisplayId)
void Mount (uint32 mount, uint32 vehicleId=0, uint32 creatureEntry=0)
void Dismount ()
MountCapabilityEntry const * GetMountCapability (uint32 mountType) const
void UpdateMountCapability ()
void SendDurabilityLoss (Player *receiver, uint32 percent)
void PlayOneShotAnimKitId (uint16 animKitId)
void SetAIAnimKitId (uint16 animKitId)
uint16 GetAIAnimKitId () const override
void SetMovementAnimKitId (uint16 animKitId)
uint16 GetMovementAnimKitId () const override
void SetMeleeAnimKitId (uint16 animKitId)
uint16 GetMeleeAnimKitId () const override
uint16 GetMaxSkillValueForLevel (Unit const *target=nullptr) const
void KillSelf (bool durabilityLoss=true, bool skipSettingDeathState=false)
void GetProcAurasTriggeredOnEvent (AuraApplicationProcContainer &aurasTriggeringProc, AuraApplicationList *procAuras, ProcEventInfo &eventInfo)
void TriggerAurasProcOnEvent (AuraApplicationList *myProcAuras, AuraApplicationList *targetProcAuras, Unit *actionTarget, ProcFlagsInit const &typeMaskActor, ProcFlagsInit const &typeMaskActionTarget, ProcFlagsSpellType spellTypeMask, ProcFlagsSpellPhase spellPhaseMask, ProcFlagsHit hitMask, Spell *spell, DamageInfo *damageInfo, HealInfo *healInfo)
void TriggerAurasProcOnEvent (ProcEventInfo &eventInfo, AuraApplicationProcContainer &procAuras)
void HandleEmoteCommand (Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const *> spellVisualKitIds={}, int32 sequenceVariation=0)
void AttackerStateUpdate (Unit *victim, WeaponAttackType attType=BASE_ATTACK, bool extra=false)
void CalculateMeleeDamage (Unit *victim, CalcDamageInfo *damageInfo, WeaponAttackType attackType=BASE_ATTACK)
void DealMeleeDamage (CalcDamageInfo *damageInfo, bool durabilityLoss)
void HandleProcExtraAttackFor (Unit *victim, uint32 count)
void SetLastExtraAttackSpell (uint32 spellId)
uint32 GetLastExtraAttackSpell () const
void AddExtraAttacks (uint32 count)
void SetLastDamagedTargetGuid (ObjectGuid guid)
ObjectGuid GetLastDamagedTargetGuid () const
void CalculateSpellDamageTaken (SpellNonMeleeDamage *damageInfo, int32 damage, SpellInfo const *spellInfo, WeaponAttackType attackType=BASE_ATTACK, bool crit=false, Spell *spell=nullptr)
void DealSpellDamage (SpellNonMeleeDamage const *damageInfo, bool durabilityLoss)
uint32 GetDamageReduction (uint32 damage) const
virtual bool CanApplyResilience () const
int32 CalculateAOEAvoidance (int32 damage, uint32 schoolMask, ObjectGuid const &casterGuid) const
float MeleeSpellMissChance (Unit const *victim, WeaponAttackType attType, SpellInfo const *spellInfo) const override
SpellMissInfo MeleeSpellHitResult (Unit *victim, SpellInfo const *spellInfo) const override
float GetUnitDodgeChance (WeaponAttackType attType, Unit const *victim) const
float GetUnitParryChance (WeaponAttackType attType, Unit const *victim) const
float GetUnitBlockChance (WeaponAttackType attType, Unit const *victim) const
float GetUnitMissChance () const
float GetUnitCriticalChanceDone (WeaponAttackType attackType) const
float GetUnitCriticalChanceTaken (Unit const *attacker, WeaponAttackType attackType, float critDone) const
float GetUnitCriticalChanceAgainst (WeaponAttackType attackType, Unit const *victim) const
int32 GetMechanicResistChance (SpellInfo const *spellInfo) const
bool CanUseAttackType (uint8 attacktype) const
virtual float GetBlockPercent (uint8) const
float GetWeaponProcChance () const
float GetPPMProcChance (uint32 WeaponSpeed, float PPM, SpellInfo const *spellProto) const
MeleeHitOutcome RollMeleeOutcomeAgainst (Unit const *victim, WeaponAttackType attType) const
NPCFlags GetNpcFlags () const
bool HasNpcFlag (NPCFlags flags) const
void SetNpcFlag (NPCFlags flags)
void RemoveNpcFlag (NPCFlags flags)
void ReplaceAllNpcFlags (NPCFlags flags)
NPCFlags2 GetNpcFlags2 () const
bool HasNpcFlag2 (NPCFlags2 flags) const
void SetNpcFlag2 (NPCFlags2 flags)
void RemoveNpcFlag2 (NPCFlags2 flags)
void ReplaceAllNpcFlags2 (NPCFlags2 flags)
bool IsVendor () const
bool IsTrainer () const
bool IsQuestGiver () const
bool IsGossip () const
bool IsTaxi () const
bool IsGuildMaster () const
bool IsBattleMaster () const
bool IsBanker () const
bool IsInnkeeper () const
bool IsSpiritHealer () const
bool IsSpiritGuide () const
bool IsTabardDesigner () const
bool IsAuctioner () const
bool IsArmorer () const
bool IsWildBattlePet () const
bool IsServiceProvider () const
bool IsSpiritService () const
bool IsCritter () const
bool IsInFlight () const
bool CanHaveThreatList () const
 ====================== THREAT & COMBAT ==================== More...
bool IsEngagedBy (Unit const *who) const
void EngageWithTarget (Unit *who)
CombatManagerGetCombatManager ()
CombatManager const & GetCombatManager () const
void AtTargetAttacked (Unit *target, bool canInitialAggro)
bool IsImmuneToAll () const
void SetImmuneToAll (bool apply, bool keepCombat)
bool IsImmuneToPC () const
void SetImmuneToPC (bool apply, bool keepCombat)
bool IsImmuneToNPC () const
void SetImmuneToNPC (bool apply, bool keepCombat)
bool IsInCombat () const
bool IsInCombatWith (Unit const *who) const
void SetInCombatWith (Unit *enemy)
void ClearInCombat ()
void UpdatePetCombatState ()
bool IsThreatened () const
bool IsThreatenedBy (Unit const *who) const
ThreatManagerGetThreatManager ()
ThreatManager const & GetThreatManager () const
void SendClearTarget ()
bool HasAuraTypeWithFamilyFlags (AuraType auraType, uint32 familyName, flag128 familyFlags) const
bool HasBreakableByDamageAuraType (AuraType type, uint32 excludeAura=0) const
bool HasBreakableByDamageCrowdControlAura (Unit *excludeCasterChannel=nullptr) const
bool HasStealthAura () const
bool HasInvisibilityAura () const
bool IsFeared () const
bool HasRootAura () const
bool IsPolymorphed () const
bool IsFrozen () const
bool isTargetableForAttack (bool checkFakeDeath=true) const
bool IsInWater () const
bool IsUnderWater () const
bool isInAccessiblePlaceFor (Creature const *c) const
void SendHealSpellLog (HealInfo &healInfo, bool critical=false)
int32 HealBySpell (HealInfo &healInfo, bool critical=false)
void SendEnergizeSpellLog (Unit *victim, uint32 spellId, int32 damage, int32 overEnergize, Powers powerType)
void EnergizeBySpell (Unit *victim, SpellInfo const *spellInfo, int32 damage, Powers powerType)
AuraAddAura (uint32 spellId, Unit *target)
AuraAddAura (SpellInfo const *spellInfo, uint32 effMask, Unit *target)
void SetAuraStack (uint32 spellId, Unit *target, uint32 stack)
void CancelSpellMissiles (uint32 spellId, bool reverseMissile=false)
void DeMorph ()
void SendAttackStateUpdate (CalcDamageInfo *damageInfo)
void SendAttackStateUpdate (uint32 HitInfo, Unit *target, uint8 SwingType, SpellSchoolMask damageSchoolMask, uint32 Damage, uint32 AbsorbDamage, uint32 Resist, VictimState TargetState, uint32 BlockedAmount)
void SendSpellNonMeleeDamageLog (SpellNonMeleeDamage const *log)
void SendPeriodicAuraLog (SpellPeriodicAuraLogInfo *pInfo)
void SendSpellDamageResist (Unit *target, uint32 spellId)
void SendSpellDamageImmune (Unit *target, uint32 spellId, bool isPeriodic)
void NearTeleportTo (Position const &pos, bool casting=false)
void NearTeleportTo (float x, float y, float z, float orientation, bool casting=false)
void SendTeleportPacket (Position const &pos)
virtual bool UpdatePosition (float x, float y, float z, float ang, bool teleport=false)
virtual bool UpdatePosition (Position const &pos, bool teleport=false)
void UpdateOrientation (float orientation)
 Only server-side orientation update, does not broadcast to client. More...
void UpdateHeight (float newZ)
 Only server-side height update, does not broadcast to client. More...
void SendMoveKnockBack (Player *player, float speedXY, float speedZ, float vcos, float vsin)
void KnockbackFrom (Position const &origin, float speedXY, float speedZ, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void JumpTo (float speedXY, float speedZ, float angle, Optional< Position > dest={})
void JumpTo (WorldObject *obj, float speedZ, bool withOrientation=false)
void MonsterMoveWithSpeed (float x, float y, float z, float speed, bool generatePath=false, bool forceDestination=false)
bool IsPlayingHoverAnim () const
void SetPlayHoverAnim (bool enable)
void SetHoverHeight (float hoverHeight)
bool IsGravityDisabled () const
bool IsWalking () const
bool IsHovering () const
bool SetWalk (bool enable)
bool SetDisableGravity (bool disable, bool updateAnimTier=true)
bool SetFall (bool enable)
bool SetSwim (bool enable)
bool SetCanFly (bool enable)
bool SetWaterWalking (bool enable)
bool SetFeatherFall (bool enable)
bool SetHover (bool enable, bool updateAnimTier=true)
bool SetCollision (bool disable)
bool SetCanTransitionBetweenSwimAndFly (bool enable)
bool SetCanTurnWhileFalling (bool enable)
bool SetCanDoubleJump (bool enable)
bool SetDisableInertia (bool disable)
void SendSetVehicleRecId (uint32 vehicleId)
MovementForces const * GetMovementForces () const
void ApplyMovementForce (ObjectGuid id, Position origin, float magnitude, MovementForceType type, Position direction={}, ObjectGuid transportGuid=ObjectGuid::Empty)
void RemoveMovementForce (ObjectGuid id)
bool SetIgnoreMovementForces (bool ignore)
void UpdateMovementForcesModMagnitude ()
void SetInFront (WorldObject const *target)
void SetFacingTo (float const ori, bool force=true)
void SetFacingToObject (WorldObject const *object, bool force=true)
bool IsAlive () const
bool isDying () const
bool isDead () const
DeathState getDeathState () const
ObjectGuid GetOwnerGUID () const override
void SetOwnerGUID (ObjectGuid owner)
ObjectGuid GetCreatorGUID () const
void SetCreatorGUID (ObjectGuid creator)
ObjectGuid GetMinionGUID () const
void SetMinionGUID (ObjectGuid guid)
ObjectGuid GetPetGUID () const
void SetPetGUID (ObjectGuid guid)
ObjectGuid GetCritterGUID () const
void SetCritterGUID (ObjectGuid guid)
ObjectGuid GetBattlePetCompanionGUID () const
void SetBattlePetCompanionGUID (ObjectGuid guid)
ObjectGuid GetDemonCreatorGUID () const
void SetDemonCreatorGUID (ObjectGuid guid)
ObjectGuid GetCharmerGUID () const
UnitGetCharmer () const
ObjectGuid GetCharmedGUID () const
UnitGetCharmed () const
bool IsControlledByPlayer () const
PlayerGetControllingPlayer () const
ObjectGuid GetCharmerOrOwnerGUID () const override
bool IsCharmedOwnedByPlayerOrPlayer () const
GuardianGetGuardianPet () const
MinionGetFirstMinion () const
UnitGetCharmerOrOwner () const
void SetMinion (Minion *minion, bool apply)
void GetAllMinionsByEntry (std::list< TempSummon *> &Minions, uint32 entry)
void RemoveAllMinionsByEntry (uint32 entry)
void SetCharm (Unit *target, bool apply)
UnitGetNextRandomRaidMemberOrPet (float radius)
bool SetCharmedBy (Unit *charmer, CharmType type, AuraApplication const *aurApp=nullptr)
void RemoveCharmedBy (Unit *charmer)
void RestoreFaction ()
UnitGetFirstControlled () const
void RemoveAllControlled ()
bool IsCharmed () const
bool isPossessed () const
bool isPossessedByPlayer () const
bool isPossessing () const
bool isPossessing (Unit *u) const
CharmInfoGetCharmInfo ()
CharmInfoInitCharmInfo ()
void DeleteCharmInfo ()
void SetPetNumberForClient (uint32 petNumber)
void SetPetNameTimestamp (uint32 timestamp)
void SetMovedUnit (Unit *target)
UnitGetUnitBeingMoved () const
PlayerGetPlayerMovingMe () const
SharedVisionList const & GetSharedVisionList ()
void AddPlayerToVision (Player *player)
void RemovePlayerFromVision (Player *player)
bool HasSharedVision () const
void RemoveBindSightAuras ()
void RemoveCharmAuras ()
PetCreateTamedPetFrom (Creature *creatureTarget, uint32 spell_id=0)
PetCreateTamedPetFrom (uint32 creatureEntry, uint32 spell_id=0)
bool InitTamedPet (Pet *pet, uint8 level, uint32 spell_id)
uint32 GetBattlePetCompanionNameTimestamp () const
void SetBattlePetCompanionNameTimestamp (uint32 timestamp)
uint32 GetBattlePetCompanionExperience () const
void SetBattlePetCompanionExperience (uint32 experience)
uint32 GetWildBattlePetLevel () const
void SetWildBattlePetLevel (uint32 wildBattlePetLevel)
Aura_TryStackingOrRefreshingExistingAura (AuraCreateInfo &createInfo)
void _AddAura (UnitAura *aura, Unit *caster)
AuraApplication_CreateAuraApplication (Aura *aura, uint32 effMask)
void _ApplyAuraEffect (Aura *aura, uint8 effIndex)
void _ApplyAura (AuraApplication *aurApp, uint32 effMask)
void _UnapplyAura (AuraApplicationMap::iterator &i, AuraRemoveMode removeMode)
void _UnapplyAura (AuraApplication *aurApp, AuraRemoveMode removeMode)
void _RemoveNoStackAurasDueToAura (Aura *aura)
void _RegisterAuraEffect (AuraEffect *aurEff, bool apply)
AuraMapGetOwnedAuras ()
AuraMap const & GetOwnedAuras () const
void RemoveOwnedAura (AuraMap::iterator &i, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveOwnedAura (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveOwnedAura (Aura *aura, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
AuraGetOwnedAura (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, Aura *except=nullptr) const
AuraApplicationMapGetAppliedAuras ()
AuraApplicationMap const & GetAppliedAuras () const
void RemoveAura (AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void RemoveAura (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveAura (AuraApplication *aurApp, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void RemoveAura (Aura *aur, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void RemoveAppliedAuras (std::function< bool(AuraApplication const *)> const &check)
void RemoveOwnedAuras (std::function< bool(Aura const *)> const &check)
void RemoveAppliedAuras (uint32 spellId, std::function< bool(AuraApplication const *)> const &check)
void RemoveOwnedAuras (uint32 spellId, std::function< bool(Aura const *)> const &check)
void RemoveAurasByType (AuraType auraType, std::function< bool(AuraApplication const *)> const &check)
void RemoveAurasDueToSpell (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveAuraFromStack (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT, uint16 num=1)
void RemoveAurasDueToSpellByDispel (uint32 spellId, uint32 dispellerSpellId, ObjectGuid casterGUID, WorldObject *dispeller, uint8 chargesRemoved=1)
void RemoveAurasDueToSpellBySteal (uint32 spellId, ObjectGuid casterGUID, WorldObject *stealer, int32 stolenCharges=1)
void RemoveAurasDueToItemSpell (uint32 spellId, ObjectGuid castItemGuid)
void RemoveAurasByType (AuraType auraType, ObjectGuid casterGUID=ObjectGuid::Empty, Aura *except=nullptr, bool negative=true, bool positive=true)
void RemoveNotOwnSingleTargetAuras (bool onPhaseChange=false)
template<typename InterruptFlags >
void RemoveAurasWithInterruptFlags (InterruptFlags flag, SpellInfo const *source=nullptr)
void RemoveAurasWithAttribute (uint32 flags)
void RemoveAurasWithFamily (SpellFamilyNames family, flag128 const &familyFlag, ObjectGuid casterGUID)
void RemoveAurasWithMechanic (uint32 mechanic_mask, AuraRemoveMode removemode=AURA_REMOVE_BY_DEFAULT, uint32 except=0)
void RemoveMovementImpairingAuras (bool withRoot)
void RemoveAurasByShapeShift ()
void RemoveAreaAurasDueToLeaveWorld ()
void RemoveAllAuras ()
void RemoveArenaAuras ()
void RemoveAurasOnEvade ()
void RemoveAllAurasOnDeath ()
void RemoveAllAurasRequiringDeadTarget ()
void RemoveAllAurasExceptType (AuraType type)
void RemoveAllAurasExceptType (AuraType type1, AuraType type2)
void RemoveAllGroupBuffsFromCaster (ObjectGuid casterGUID)
void DelayOwnedAuras (uint32 spellId, ObjectGuid caster, int32 delaytime)
void _RemoveAllAuraStatMods ()
void _ApplyAllAuraStatMods ()
AuraEffectList const & GetAuraEffectsByType (AuraType type) const
AuraEffectListGetAuraEffectsByType (AuraType type)
AuraListGetSingleCastAuras ()
AuraList const & GetSingleCastAuras () const
AuraEffectGetAuraEffect (uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
AuraEffectGetAuraEffectOfRankedSpell (uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
AuraEffectGetAuraEffect (AuraType type, SpellFamilyNames family, flag128 const &familyFlag, ObjectGuid casterGUID=ObjectGuid::Empty) const
AuraApplicationGetAuraApplication (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraApplication *except=nullptr) const
AuraApplicationGetAuraApplication (uint32 spellId, std::function< bool(AuraApplication const *)> const &predicate) const
AuraApplicationGetAuraApplication (uint32 spellId, std::function< bool(Aura const *)> const &predicate) const
AuraApplicationGetAuraApplication (std::function< bool(AuraApplication const *)> const &predicate) const
AuraApplicationGetAuraApplication (std::function< bool(Aura const *)> const &predicate) const
AuraGetAura (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
AuraGetAura (uint32 spellId, std::function< bool(Aura const *)> const &predicate) const
AuraGetAura (std::function< bool(Aura const *)> const &predicate) const
AuraApplicationGetAuraApplicationOfRankedSpell (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraApplication *except=nullptr) const
AuraGetAuraOfRankedSpell (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void GetDispellableAuraList (WorldObject const *caster, uint32 dispelMask, DispelChargesList &dispelList, bool isReflect=false) const
bool HasAuraEffect (uint32 spellId, uint8 effIndex, ObjectGuid caster=ObjectGuid::Empty) const
uint32 GetAuraCount (uint32 spellId) const
bool HasAura (uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HasAura (std::function< bool(Aura const *)> const &predicate) const
bool HasAuraType (AuraType auraType) const
bool HasAuraTypeWithCaster (AuraType auraType, ObjectGuid caster) const
bool HasAuraTypeWithMiscvalue (AuraType auraType, int32 miscValue) const
bool HasAuraTypeWithAffectMask (AuraType auraType, SpellInfo const *affectedSpell) const
bool HasAuraTypeWithValue (AuraType auraType, int32 value) const
bool HasAuraTypeWithTriggerSpell (AuraType auratype, uint32 triggerSpell) const
template<typename InterruptFlags >
bool HasNegativeAuraWithInterruptFlag (InterruptFlags flag, ObjectGuid guid=ObjectGuid::Empty) const
bool HasAuraWithMechanic (uint32 mechanicMask) const
bool HasStrongerAuraWithDR (SpellInfo const *auraSpellInfo, Unit *caster) const
AuraEffectIsScriptOverriden (SpellInfo const *spell, int32 script) const
uint32 GetDiseasesByCaster (ObjectGuid casterGUID, bool remove=false)
uint32 GetDoTsByCaster (ObjectGuid casterGUID) const
int32 GetTotalAuraModifier (AuraType auraType) const
float GetTotalAuraMultiplier (AuraType auraType) const
int32 GetMaxPositiveAuraModifier (AuraType auraType) const
int32 GetMaxNegativeAuraModifier (AuraType auraType) const
int32 GetTotalAuraModifier (AuraType auraType, std::function< bool(AuraEffect const *)> const &predicate) const
float GetTotalAuraMultiplier (AuraType auraType, std::function< bool(AuraEffect const *)> const &predicate) const
int32 GetMaxPositiveAuraModifier (AuraType auraType, std::function< bool(AuraEffect const *)> const &predicate) const
int32 GetMaxNegativeAuraModifier (AuraType auraType, std::function< bool(AuraEffect const *)> const &predicate) const
int32 GetTotalAuraModifierByMiscMask (AuraType auraType, uint32 misc_mask) const
float GetTotalAuraMultiplierByMiscMask (AuraType auraType, uint32 misc_mask) const
int32 GetMaxPositiveAuraModifierByMiscMask (AuraType auraType, uint32 misc_mask, AuraEffect const *except=nullptr) const
int32 GetMaxNegativeAuraModifierByMiscMask (AuraType auraType, uint32 misc_mask) const
int32 GetTotalAuraModifierByMiscValue (AuraType auraType, int32 misc_value) const
float GetTotalAuraMultiplierByMiscValue (AuraType auraType, int32 misc_value) const
int32 GetMaxPositiveAuraModifierByMiscValue (AuraType auraType, int32 misc_value) const
int32 GetMaxNegativeAuraModifierByMiscValue (AuraType auraType, int32 misc_value) const
int32 GetTotalAuraModifierByAffectMask (AuraType auraType, SpellInfo const *affectedSpell) const
float GetTotalAuraMultiplierByAffectMask (AuraType auraType, SpellInfo const *affectedSpell) const
int32 GetMaxPositiveAuraModifierByAffectMask (AuraType auraType, SpellInfo const *affectedSpell) const
int32 GetMaxNegativeAuraModifierByAffectMask (AuraType auraType, SpellInfo const *affectedSpell) const
void InitStatBuffMods ()
void UpdateStatBuffMod (Stats stat)
void UpdateStatBuffModForClient (Stats stat)
void SetCreateStat (Stats stat, float val)
void SetCreateHealth (uint32 val)
uint32 GetCreateHealth () const
void SetCreateMana (uint32 val)
uint32 GetCreateMana () const
int32 GetCreatePowerValue (Powers power) const
float GetPosStat (Stats stat) const
float GetNegStat (Stats stat) const
float GetCreateStat (Stats stat) const
uint32 GetChannelSpellId () const
void SetChannelSpellId (uint32 channelSpellId)
uint32 GetChannelSpellXSpellVisualId () const
uint32 GetChannelScriptVisualId () const
void SetChannelVisual (SpellCastVisual channelVisual)
void AddChannelObject (ObjectGuid guid)
void SetChannelObject (uint32 slot, ObjectGuid guid)
void RemoveChannelObject (ObjectGuid guid)
void ClearChannelObjects ()
void SetCurrentCastSpell (Spell *pSpell)
void InterruptSpell (CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true)
void FinishSpell (CurrentSpellTypes spellType, bool ok=true)
bool IsNonMeleeSpellCast (bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
void InterruptNonMeleeSpells (bool withDelayed, uint32 spellid=0, bool withInstant=true)
SpellGetCurrentSpell (CurrentSpellTypes spellType) const
SpellGetCurrentSpell (uint32 spellType) const
SpellFindCurrentSpellBySpellId (uint32 spell_id) const
int32 GetCurrentSpellCastTime (uint32 spell_id) const
virtual SpellInfo const * GetCastSpellInfo (SpellInfo const *spellInfo) const
uint32 GetCastSpellXSpellVisualId (SpellInfo const *spellInfo) const override
bool CanCastSpellWhileMoving (SpellInfo const *spellInfo) const
SpellHistoryGetSpellHistory ()
SpellHistory const * GetSpellHistory () const
ShapeshiftForm GetShapeshiftForm () const
void SetShapeshiftForm (ShapeshiftForm form)
bool IsInFeralForm () const
bool IsInDisallowedMountForm () const
bool IsDisallowedMountForm (uint32 spellId, ShapeshiftForm form, uint32 displayId) const
void HandleStatFlatModifier (UnitMods unitMod, UnitModifierFlatType modifierType, float amount, bool apply)
void ApplyStatPctModifier (UnitMods unitMod, UnitModifierPctType modifierType, float amount)
void SetStatFlatModifier (UnitMods unitMod, UnitModifierFlatType modifierType, float val)
void SetStatPctModifier (UnitMods unitMod, UnitModifierPctType modifierType, float val)
float GetFlatModifierValue (UnitMods unitMod, UnitModifierFlatType modifierType) const
float GetPctModifierValue (UnitMods unitMod, UnitModifierPctType modifierType) const
void UpdateUnitMod (UnitMods unitMod)
virtual bool CheckAttackFitToAuraRequirement (WeaponAttackType, AuraEffect const *) const
virtual void UpdateDamageDoneMods (WeaponAttackType attackType, int32 skipEnchantSlot=-1)
void UpdateAllDamageDoneMods ()
void UpdateDamagePctDoneMods (WeaponAttackType attackType)
void UpdateAllDamagePctDoneMods ()
float GetTotalStatValue (Stats stat) const
float GetTotalAuraModValue (UnitMods unitMod) const
SpellSchools GetSpellSchoolByAuraGroup (UnitMods unitMod) const
Stats GetStatByAuraGroup (UnitMods unitMod) const
bool CanModifyStats () const
void SetCanModifyStats (bool modifyStats)
virtual void UpdateAllResistances ()
void SetAttackPower (int32 attackPower)
void SetAttackPowerModPos (int32 attackPowerMod)
void SetAttackPowerModNeg (int32 attackPowerMod)
void SetAttackPowerMultiplier (float attackPowerMult)
void SetRangedAttackPower (int32 attackPower)
void SetRangedAttackPowerModPos (int32 attackPowerMod)
void SetRangedAttackPowerModNeg (int32 attackPowerMod)
void SetRangedAttackPowerMultiplier (float attackPowerMult)
void SetMainHandWeaponAttackPower (int32 attackPower)
void SetOffHandWeaponAttackPower (int32 attackPower)
void SetRangedWeaponAttackPower (int32 attackPower)
float GetTotalAttackPowerValue (WeaponAttackType attType, bool includeWeapon=true) const
float GetWeaponDamageRange (WeaponAttackType attType, WeaponDamageRange type) const
void SetBaseWeaponDamage (WeaponAttackType attType, WeaponDamageRange damageRange, float value)
uint32 CalculateDamage (WeaponAttackType attType, bool normalized, bool addTotalPct) const
float GetAPMultiplier (WeaponAttackType attType, bool normalized) const
bool isInFrontInMap (Unit const *target, float distance, float arc=float(M_PI)) const
bool isInBackInMap (Unit const *target, float distance, float arc=float(M_PI)) const
bool IsVisible () const
void SetVisible (bool x)
virtual void OnPhaseChange ()
void UpdateObjectVisibility (bool forced=true) override
VisibleAuraContainer const & GetVisibleAuras () const
bool HasVisibleAura (AuraApplication *aurApp) const
void SetVisibleAura (AuraApplication *aurApp)
void SetVisibleAuraUpdate (AuraApplication *aurApp)
void RemoveVisibleAura (AuraApplication *aurApp)
bool HasInterruptFlag (SpellAuraInterruptFlags flags) const
bool HasInterruptFlag (SpellAuraInterruptFlags2 flags) const
void AddInterruptMask (SpellAuraInterruptFlags flags, SpellAuraInterruptFlags2 flags2)
void UpdateInterruptMask ()
virtual void RecalculateObjectScale ()
uint32 GetDisplayId () const
uint32 GetNativeDisplayId () const
float GetNativeDisplayScale () const
void RestoreDisplayId (bool ignorePositiveAurasPreventingMounting=false)
void SetNativeDisplayId (uint32 displayId, float displayScale=1.f)
void SetTransformSpell (uint32 spellid)
uint32 GetTransformSpell () const
void _RegisterDynObject (DynamicObject *dynObj)
void _UnregisterDynObject (DynamicObject *dynObj)
DynamicObjectGetDynObject (uint32 spellId) const
std::vector< DynamicObject * > GetDynObjects (uint32 spellId) const
void RemoveDynObject (uint32 spellId)
void RemoveAllDynObjects ()
GameObjectGetGameObject (uint32 spellId) const
std::vector< GameObject * > GetGameObjects (uint32 spellId) const
void AddGameObject (GameObject *gameObj)
void RemoveGameObject (GameObject *gameObj, bool del)
void RemoveGameObject (uint32 spellid, bool del)
void RemoveAllGameObjects ()
void _RegisterAreaTrigger (AreaTrigger *areaTrigger)
void _UnregisterAreaTrigger (AreaTrigger *areaTrigger)
AreaTriggerGetAreaTrigger (uint32 spellId) const
std::vector< AreaTrigger * > GetAreaTriggers (uint32 spellId) const
void RemoveAreaTrigger (uint32 spellId)
void RemoveAreaTrigger (AuraEffect const *aurEff)
void RemoveAllAreaTriggers ()
void ModifyAuraState (AuraStateType flag, bool apply)
uint32 BuildAuraStateUpdateForTarget (Unit const *target) const
bool HasAuraState (AuraStateType flag, SpellInfo const *spellProto=nullptr, Unit const *Caster=nullptr) const
void UnsummonAllTotems ()
bool IsMagnet () const
UnitGetMeleeHitRedirectTarget (Unit *victim, SpellInfo const *spellInfo=nullptr)
int32 SpellBaseDamageBonusDone (SpellSchoolMask schoolMask) const
uint32 SpellDamageBonusDone (Unit *victim, SpellInfo const *spellProto, uint32 pdamage, DamageEffectType damagetype, SpellEffectInfo const &spellEffectInfo, uint32 stack=1) const
float SpellDamagePctDone (Unit *victim, SpellInfo const *spellProto, DamageEffectType damagetype, SpellEffectInfo const &spellEffectInfo) const
uint32 SpellDamageBonusTaken (Unit *caster, SpellInfo const *spellProto, uint32 pdamage, DamageEffectType damagetype) const
int32 SpellBaseHealingBonusDone (SpellSchoolMask schoolMask) const
uint32 SpellHealingBonusDone (Unit *victim, SpellInfo const *spellProto, uint32 healamount, DamageEffectType damagetype, SpellEffectInfo const &spellEffectInfo, uint32 stack=1) const
float SpellHealingPctDone (Unit *victim, SpellInfo const *spellProto) const
uint32 SpellHealingBonusTaken (Unit *caster, SpellInfo const *spellProto, uint32 healamount, DamageEffectType damagetype) const
uint32 MeleeDamageBonusDone (Unit *pVictim, uint32 damage, WeaponAttackType attType, DamageEffectType damagetype, SpellInfo const *spellProto=nullptr, SpellEffectInfo const *spellEffectInfo=nullptr, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL)
uint32 MeleeDamageBonusTaken (Unit *attacker, uint32 pdamage, WeaponAttackType attType, DamageEffectType damagetype, SpellInfo const *spellProto=nullptr, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL)
bool isSpellBlocked (Unit *victim, SpellInfo const *spellProto, WeaponAttackType attackType=BASE_ATTACK)
bool isBlockCritical ()
float SpellCritChanceDone (Spell *spell, AuraEffect const *aurEff, SpellSchoolMask schoolMask, WeaponAttackType attackType=BASE_ATTACK) const
float SpellCritChanceTaken (Unit const *caster, Spell *spell, AuraEffect const *aurEff, SpellSchoolMask schoolMask, float doneChance, WeaponAttackType attackType=BASE_ATTACK) const
void ApplySpellImmune (uint32 spellId, uint32 op, uint32 type, bool apply)
bool IsImmunedToSpell (SpellInfo const *spellInfo, WorldObject const *caster) const
uint32 GetSchoolImmunityMask () const
uint32 GetDamageImmunityMask () const
uint32 GetMechanicImmunityMask () const
bool IsImmunedToDamage (SpellSchoolMask meleeSchoolMask) const
bool IsImmunedToDamage (SpellInfo const *spellInfo) const
void UpdateSpeed (UnitMoveType mtype)
float GetSpeed (UnitMoveType mtype) const
float GetSpeedRate (UnitMoveType mtype) const
void SetSpeed (UnitMoveType mtype, float newValue)
void SetSpeedRate (UnitMoveType mtype, float rate)
void FollowerAdded (AbstractFollower *f)
void FollowerRemoved (AbstractFollower *f)
void RemoveAllFollowers ()
MotionMasterGetMotionMaster ()
MotionMaster const * GetMotionMaster () const
bool IsStopped () const
void StopMoving ()
void PauseMovement (uint32 timer=0, uint8 slot=0, bool forced=true)
void ResumeMovement (uint32 timer=0, uint8 slot=0)
void AddUnitMovementFlag (uint32 f)
void RemoveUnitMovementFlag (uint32 f)
bool HasUnitMovementFlag (uint32 f) const
uint32 GetUnitMovementFlags () const
void SetUnitMovementFlags (uint32 f)
void AddExtraUnitMovementFlag (uint32 f)
void RemoveExtraUnitMovementFlag (uint32 f)
bool HasExtraUnitMovementFlag (uint32 f) const
uint32 GetExtraUnitMovementFlags () const
void SetExtraUnitMovementFlags (uint32 f)
void AddExtraUnitMovementFlag2 (uint32 f)
void RemoveExtraUnitMovementFlag2 (uint32 f)
bool HasExtraUnitMovementFlag2 (uint32 f) const
uint32 GetExtraUnitMovementFlags2 () const
void SetExtraUnitMovementFlags2 (uint32 f)
bool IsSplineEnabled () const
void SetControlled (bool apply, UnitState state)
void ApplyControlStatesIfNeeded ()
uint32 GetComboPoints () const
 --------—Combo point system----------------— More...
void AddComboPoints (int8 count, Spell *spell=nullptr)
void GainSpellComboPoints (int8 count)
void ClearComboPoints ()
void SendPetActionFeedback (PetActionFeedback msg, uint32 spellId)
 -------—Pet responses methods--------------— More...
void SendPetTalk (uint32 pettalk)
void SendPetAIReaction (ObjectGuid guid)
void PropagateSpeedChange ()
 -------—End of Pet responses methods-------— More...
void ClearAllReactives ()
void StartReactiveTimer (ReactiveType reactive)
void UpdateReactives (uint32 p_time)
void UpdateAuraForGroup ()
bool CanProc () const
void SetCantProc (bool apply)
uint32 GetModelForForm (ShapeshiftForm form, uint32 spellId) const
bool CreateVehicleKit (uint32 id, uint32 creatureEntry, bool loading=false)
void RemoveVehicleKit (bool onRemoveFromWorld=false)
VehicleGetVehicleKit () const
VehicleGetVehicle () const
void SetVehicle (Vehicle *vehicle)
bool IsOnVehicle (Unit const *vehicle) const
UnitGetVehicleBase () const
UnitGetVehicleRoot () const
CreatureGetVehicleCreatureBase () const
ObjectGuid GetTransGUID () const override
TransportBaseGetDirectTransport () const
 Returns the transport this unit is on directly (if on vehicle and transport, return vehicle) More...
void HandleSpellClick (Unit *clicker, int8 seatId=-1)
void EnterVehicle (Unit *base, int8 seatId=-1)
void ChangeSeat (int8 seatId, bool next=true)
void _ExitVehicle (Position const *exitPosition=nullptr)
void _EnterVehicle (Vehicle *vehicle, int8 seatId, AuraApplication const *aurApp=nullptr)
bool isMoving () const
bool isTurning () const
bool IsFlying () const
bool IsFalling () const
float GetHoverOffset () const
void RewardRage (uint32 baseRage)
void OutDebugInfo () const
bool IsDuringRemoveFromWorld () const
PetToPet ()
Pet const * ToPet () const
TotemToTotem ()
Totem const * ToTotem () const
TempSummonToTempSummon ()
TempSummon const * ToTempSummon () const
ObjectGuid GetTarget () const
void SetInstantCast (bool set)
bool CanInstantCast () const
int32 GetHighestExclusiveSameEffectSpellGroupValue (AuraEffect const *aurEff, AuraType auraType, bool checkMiscValue=false, int32 miscValue=0) const
bool IsHighestExclusiveAura (Aura const *aura, bool removeOtherAuraApplications=false)
bool IsHighestExclusiveAuraEffect (SpellInfo const *spellInfo, AuraType auraType, int32 effectAmount, uint32 auraEffectMask, bool removeOtherAuraApplications=false)
virtual void Talk (std::string_view text, ChatMsg msgType, Language language, float textRange, WorldObject const *target)
virtual void Say (std::string_view text, Language language, WorldObject const *target=nullptr)
virtual void Yell (std::string_view text, Language language, WorldObject const *target=nullptr)
virtual void TextEmote (std::string_view text, WorldObject const *target=nullptr, bool isBossEmote=false)
virtual void Whisper (std::string_view text, Language language, Player *target, bool isBossWhisper=false)
virtual void Talk (uint32 textId, ChatMsg msgType, float textRange, WorldObject const *target)
virtual void Say (uint32 textId, WorldObject const *target=nullptr)
virtual void Yell (uint32 textId, WorldObject const *target=nullptr)
virtual void TextEmote (uint32 textId, WorldObject const *target=nullptr, bool isBossEmote=false)
virtual void Whisper (uint32 textId, Player *target, bool isBossWhisper=false)
float GetCollisionHeight () const override
uint32 GetVirtualItemId (uint32 slot) const
uint16 GetVirtualItemAppearanceMod (uint32 slot) const
void SetVirtualItem (uint32 slot, uint32 itemId, uint16 appearanceModId=0, uint16 itemVisual=0)
bool IsCombatDisallowed () const
void SetIsCombatDisallowed (bool apply)
std::string GetDebugInfo () const override
void BuildValuesUpdateWithFlag (ByteBuffer *data, UF::UpdateFieldFlag flags, Player const *target) const override
void BuildValuesUpdateForPlayerWithMask (UpdateData *data, UF::ObjectData::Mask const &requestedObjectMask, UF::UnitData::Mask const &requestedUnitMask, Player const *target) const
- Public Member Functions inherited from WorldObject
virtual ~WorldObject ()
void GetNearPoint2D (WorldObject const *searcher, float &x, float &y, float distance, float absAngle) const
void GetNearPoint (WorldObject const *searcher, float &x, float &y, float &z, float distance2d, float absAngle) const
void GetClosePoint (float &x, float &y, float &z, float size, float distance2d=0, float relAngle=0) const
void MovePosition (Position &pos, float dist, float angle)
Position GetNearPosition (float dist, float angle)
void MovePositionToFirstCollision (Position &pos, float dist, float angle)
Position GetFirstCollisionPosition (float dist, float angle)
Position GetRandomNearPosition (float radius)
void GetContactPoint (WorldObject const *obj, float &x, float &y, float &z, float distance2d=CONTACT_DISTANCE) const
void UpdateGroundPositionZ (float x, float y, float &z) const
void UpdateAllowedPositionZ (float x, float y, float &z, float *groundZ=nullptr) const
void GetRandomPoint (Position const &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
Position GetRandomPoint (Position const &srcPos, float distance) const
uint32 GetInstanceId () const
bool IsInPhase (WorldObject const *obj) const
PhaseShiftGetPhaseShift ()
PhaseShift const & GetPhaseShift () const
PhaseShiftGetSuppressedPhaseShift ()
PhaseShift const & GetSuppressedPhaseShift () const
int32 GetDBPhase () const
void SetDBPhase (int32 p)
uint32 GetZoneId () const
uint32 GetAreaId () const
void GetZoneAndAreaId (uint32 &zoneid, uint32 &areaid) const
bool IsInWorldPvpZone () const
bool IsOutdoors () const
ZLiquidStatus GetLiquidStatus () const
InstanceScriptGetInstanceScript () const
std::string const & GetName () const
void SetName (std::string newname)
std::string GetNameForLocaleIdx (LocaleConstant) const override
float GetDistance (WorldObject const *obj) const
float GetDistance (Position const &pos) const
float GetDistance (float x, float y, float z) const
float GetDistance2d (WorldObject const *obj) const
float GetDistance2d (float x, float y) const
float GetDistanceZ (WorldObject const *obj) const
bool IsSelfOrInSameMap (WorldObject const *obj) const
bool IsInMap (WorldObject const *obj) const
bool IsWithinDist3d (float x, float y, float z, float dist) const
bool IsWithinDist3d (Position const *pos, float dist) const
bool IsWithinDist2d (float x, float y, float dist) const
bool IsWithinDist2d (Position const *pos, float dist) const
bool IsWithinDist (WorldObject const *obj, float dist2compare, bool is3D=true) const
bool IsWithinDistInMap (WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
bool IsWithinLOS (float x, float y, float z, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
bool IsWithinLOSInMap (WorldObject const *obj, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
Position GetHitSpherePointFor (Position const &dest) const
void GetHitSpherePointFor (Position const &dest, float &x, float &y, float &z) const
bool GetDistanceOrder (WorldObject const *obj1, WorldObject const *obj2, bool is3D=true) const
bool IsInRange (WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
bool IsInRange2d (float x, float y, float minRange, float maxRange) const
bool IsInRange3d (float x, float y, float z, float minRange, float maxRange) const
bool isInFront (WorldObject const *target, float arc=float(M_PI)) const
bool isInBack (WorldObject const *target, float arc=float(M_PI)) const
bool IsInBetween (Position const &pos1, Position const &pos2, float size=0) const
bool IsInBetween (WorldObject const *obj1, WorldObject const *obj2, float size=0) const
virtual void SendMessageToSet (WorldPacket const *data, bool self) const
virtual void SendMessageToSetInRange (WorldPacket const *data, float dist, bool self) const
virtual void SendMessageToSet (WorldPacket const *data, Player const *skipped_rcvr) const
void SendCombatLogMessage (WorldPackets::CombatLog::CombatLogServerPacket *combatLog) const
void PlayDistanceSound (uint32 soundId, Player *target=nullptr)
void PlayDirectSound (uint32 soundId, Player *target=nullptr, uint32 broadcastTextId=0)
void PlayDirectMusic (uint32 musicId, Player *target=nullptr)
void AddObjectToRemoveList ()
float GetGridActivationRange () const
float GetVisibilityRange () const
float GetSightRange (WorldObject const *target=nullptr) const
bool CanSeeOrDetect (WorldObject const *obj, bool ignoreStealth=false, bool distanceCheck=false, bool checkAlert=false) const
virtual void SetMap (Map *map)
virtual void ResetMap ()
MapGetMap () const
MapFindMap () const
void SetZoneScript ()
ZoneScriptFindZoneScript () const
ZoneScriptGetZoneScript () const
ScenarioGetScenario () const
TempSummonSummonCreature (uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
TempSummonSummonCreature (uint32 entry, float x, float y, float z, float o=0, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
TempSummonSummonPersonalClone (Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, Player *privateObjectOwner=nullptr)
GameObjectSummonGameObject (uint32 entry, Position const &pos, QuaternionData const &rot, Seconds respawnTime, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
GameObjectSummonGameObject (uint32 entry, float x, float y, float z, float ang, QuaternionData const &rot, Seconds respawnTime, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
CreatureSummonTrigger (float x, float y, float z, float ang, Milliseconds despawnTime, CreatureAI *(*GetAI)(Creature *)=nullptr)
void SummonCreatureGroup (uint8 group, std::list< TempSummon *> *list=nullptr)
CreatureFindNearestCreature (uint32 entry, float range, bool alive=true) const
GameObjectFindNearestGameObject (uint32 entry, float range, bool spawnedOnly=true) const
GameObjectFindNearestUnspawnedGameObject (uint32 entry, float range) const
GameObjectFindNearestGameObjectOfType (GameobjectTypes type, float range) const
PlayerSelectNearestPlayer (float distance) const
ObjectGuid GetCharmerOrOwnerOrOwnGUID () const
UnitGetOwner () const
UnitGetCharmerOrOwner () const
UnitGetCharmerOrOwnerOrSelf () const
PlayerGetCharmerOrOwnerPlayerOrPlayerItself () const
PlayerGetAffectingPlayer () const
PlayerGetSpellModOwner () const
int32 CalculateSpellDamage (Unit const *target, SpellEffectInfo const &spellEffectInfo, int32 const *basePoints=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
float GetSpellMaxRangeForTarget (Unit const *target, SpellInfo const *spellInfo) const
float GetSpellMinRangeForTarget (Unit const *target, SpellInfo const *spellInfo) const
float ApplyEffectModifiers (SpellInfo const *spellInfo, uint8 effIndex, float value) const
int32 CalcSpellDuration (SpellInfo const *spellInfo) const
int32 ModSpellDuration (SpellInfo const *spellInfo, WorldObject const *target, int32 duration, bool positive, uint32 effectMask) const
void ModSpellCastTime (SpellInfo const *spellInfo, int32 &castTime, Spell *spell=nullptr) const
void ModSpellDurationTime (SpellInfo const *spellInfo, int32 &durationTime, Spell *spell=nullptr) const
SpellMissInfo MagicSpellHitResult (Unit *victim, SpellInfo const *spellInfo) const
SpellMissInfo SpellHitResult (Unit *victim, SpellInfo const *spellInfo, bool canReflect=false) const
void SendSpellMiss (Unit *target, uint32 spellID, SpellMissInfo missInfo)
FactionTemplateEntry const * GetFactionTemplateEntry () const
ReputationRank GetReactionTo (WorldObject const *target) const
bool IsHostileTo (WorldObject const *target) const
bool IsHostileToPlayers () const
bool IsFriendlyTo (WorldObject const *target) const
bool IsNeutralToAll () const
SpellCastResult CastSpell (CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void SendPlayOrphanSpellVisual (ObjectGuid const &target, uint32 spellVisualId, float travelSpeed, bool speedAsTime=false, bool withSourceOrientation=false)
void SendPlayOrphanSpellVisual (Position const &targetLocation, uint32 spellVisualId, float travelSpeed, bool speedAsTime=false, bool withSourceOrientation=false)
void SendCancelOrphanSpellVisual (uint32 id)
void SendPlaySpellVisual (WorldObject *target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime=false)
void SendPlaySpellVisual (Position const &targetPosition, float o, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime=false)
void SendCancelSpellVisual (uint32 id)
void SendPlaySpellVisualKit (uint32 id, uint32 type, uint32 duration) const
void SendCancelSpellVisualKit (uint32 id)
bool IsValidAttackTarget (WorldObject const *target, SpellInfo const *bySpell=nullptr) const
bool IsValidAssistTarget (WorldObject const *target, SpellInfo const *bySpell=nullptr) const
UnitGetMagicHitRedirectTarget (Unit *victim, SpellInfo const *spellInfo)
template<typename Container >
void GetGameObjectListWithEntryInGrid (Container &gameObjectContainer, uint32 entry, float maxSearchRange=250.0f) const
template<typename Container >
void GetCreatureListWithEntryInGrid (Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
template<typename Container >
void GetPlayerListInGrid (Container &playerContainer, float maxSearchRange, bool alive=true) const
void DestroyForNearbyPlayers ()
void UpdatePositionData ()
void BuildUpdate (UpdateDataMapType &) override
bool AddToObjectUpdate () override
void RemoveFromObjectUpdate () override
void AddToNotify (uint16 f)
bool isNeedNotify (uint16 f) const
uint16 GetNotifyFlags () const
void ResetAllNotifies ()
bool isActiveObject () const
void setActive (bool isActiveObject)
bool IsFarVisible () const
void SetFarVisible (bool on)
bool IsVisibilityOverridden () const
void SetVisibilityDistanceOverride (VisibilityDistanceType type)
void SetWorldObject (bool apply)
bool IsPermanentWorldObject () const
bool IsWorldObject () const
TransportBaseGetTransport () const
float GetTransOffsetX () const
float GetTransOffsetY () const
float GetTransOffsetZ () const
float GetTransOffsetO () const
Position const & GetTransOffset () const
uint32 GetTransTime () const
int8 GetTransSeat () const
void SetTransport (TransportBase *t)
virtual float GetStationaryX () const
virtual float GetStationaryY () const
virtual float GetStationaryZ () const
virtual float GetStationaryO () const
float GetFloorZ () const
float GetMapWaterOrGroundLevel (float x, float y, float z, float *ground=nullptr) const
float GetMapHeight (float x, float y, float z, bool vmap=true, float distanceToSearch=50.0f) const
bool IsPrivateObject () const
ObjectGuid GetPrivateObjectOwner () const
void SetPrivateObjectOwner (ObjectGuid const &owner)
bool CheckPrivateObjectOwnerVisibility (WorldObject const *seer) const
SmoothPhasingGetOrCreateSmoothPhasing ()
SmoothPhasingGetSmoothPhasing ()
SmoothPhasing const * GetSmoothPhasing () const
- Public Member Functions inherited from Object
virtual ~Object ()
bool IsInWorld () const
ObjectGuid const & GetGUID () const
uint32 GetEntry () const
void SetEntry (uint32 entry)
float GetObjectScale () const
uint32 GetDynamicFlags () const
bool HasDynamicFlag (uint32 flag) const
void SetDynamicFlag (uint32 flag)
void RemoveDynamicFlag (uint32 flag)
void ReplaceAllDynamicFlags (uint32 flag)
TypeID GetTypeId () const
bool isType (uint16 mask) const
virtual void BuildCreateUpdateBlockForPlayer (UpdateData *data, Player *target) const
void SendUpdateToPlayer (Player *player)
void BuildValuesUpdateBlockForPlayer (UpdateData *data, Player const *target) const
void BuildValuesUpdateBlockForPlayerWithFlag (UpdateData *data, UF::UpdateFieldFlag flags, Player const *target) const
void BuildDestroyUpdateBlock (UpdateData *data) const
void BuildOutOfRangeUpdateBlock (UpdateData *data) const
ByteBuffer PrepareValuesUpdateBuffer () const
void SendOutOfRangeForPlayer (Player *target) const
void SetIsNewObject (bool enable)
bool IsDestroyedObject () const
void SetDestroyedObject (bool destroyed)
void BuildFieldsUpdate (Player *, UpdateDataMapType &) const
bool IsPlayer () const
PlayerToPlayer ()
Player const * ToPlayer () const
bool IsCreature () const
CreatureToCreature ()
Creature const * ToCreature () const
bool IsUnit () const
UnitToUnit ()
Unit const * ToUnit () const
bool IsGameObject () const
GameObjectToGameObject ()
GameObject const * ToGameObject () const
bool IsCorpse () const
CorpseToCorpse ()
Corpse const * ToCorpse () const
bool IsDynObject () const
DynamicObjectToDynObject ()
DynamicObject const * ToDynObject () const
bool IsAreaTrigger () const
AreaTriggerToAreaTrigger ()
AreaTrigger const * ToAreaTrigger () const
bool IsSceneObject () const
SceneObjectToSceneObject ()
SceneObject const * ToSceneObject () const
bool IsConversation () const
ConversationToConversation ()
Conversation const * ToConversation () const
template<typename T >
void ForceUpdateFieldChange (UF::UpdateFieldSetter< T > const &)
- Public Member Functions inherited from WorldLocation
 WorldLocation (uint32 mapId=MAPID_INVALID, float x=0.f, float y=0.f, float z=0.f, float o=0.f)
 WorldLocation (uint32 mapId, Position const &position)
void WorldRelocate (WorldLocation const &loc)
void WorldRelocate (WorldLocation const *loc)
void WorldRelocate (uint32 mapId, Position const &pos)
void WorldRelocate (uint32 mapId=MAPID_INVALID, float x=0.f, float y=0.f, float z=0.f, float o=0.f)
WorldLocation GetWorldLocation () const
uint32 GetMapId () const
std::string GetDebugInfo () const
- Public Member Functions inherited from Position
 Position (float x=0, float y=0, float z=0, float o=0)
bool operator== (Position const &a) const
bool operator!= (Position const &a) const
void Relocate (float x, float y)
void Relocate (float x, float y, float z)
void Relocate (float x, float y, float z, float o)
void Relocate (Position const &pos)
void Relocate (Position const *pos)
void RelocateOffset (Position const &offset)
void SetOrientation (float orientation)
float GetPositionX () const
float GetPositionY () const
float GetPositionZ () const
float GetOrientation () const
void GetPosition (float &x, float &y) const
void GetPosition (float &x, float &y, float &z) const
void GetPosition (float &x, float &y, float &z, float &o) const
Position GetPosition () const
Streamer< XY > PositionXYStream ()
ConstStreamer< XY > PositionXYStream () const
Streamer< XYZ > PositionXYZStream ()
ConstStreamer< XYZ > PositionXYZStream () const
Streamer< XYZO > PositionXYZOStream ()
ConstStreamer< XYZO > PositionXYZOStream () const
Streamer< PackedXYZ > PositionPackedXYZStream ()
ConstStreamer< PackedXYZ > PositionPackedXYZStream () const
bool IsPositionValid () const
float GetExactDist2dSq (const float x, const float y) const
float GetExactDist2dSq (Position const &pos) const
float GetExactDist2dSq (Position const *pos) const
float GetExactDist2d (const float x, const float y) const
float GetExactDist2d (Position const &pos) const
float GetExactDist2d (Position const *pos) const
float GetExactDistSq (float x, float y, float z) const
float GetExactDistSq (Position const &pos) const
float GetExactDistSq (Position const *pos) const
float GetExactDist (float x, float y, float z) const
float GetExactDist (Position const &pos) const
float GetExactDist (Position const *pos) const
void GetPositionOffsetTo (Position const &endPos, Position &retOffset) const
Position GetPositionWithOffset (Position const &offset) const
float GetAbsoluteAngle (float x, float y) const
float GetAbsoluteAngle (Position const &pos) const
float GetAbsoluteAngle (Position const *pos) const
float ToAbsoluteAngle (float relAngle) const
float ToRelativeAngle (float absAngle) const
float GetRelativeAngle (float x, float y) const
float GetRelativeAngle (Position const &pos) const
float GetRelativeAngle (Position const *pos) const
bool IsInDist2d (float x, float y, float dist) const
bool IsInDist2d (Position const *pos, float dist) const
bool IsInDist (float x, float y, float z, float dist) const
bool IsInDist (Position const &pos, float dist) const
bool IsInDist (Position const *pos, float dist) const
bool IsWithinBox (Position const &center, float xradius, float yradius, float zradius) const
bool IsWithinDoubleVerticalCylinder (Position const *center, float radius, float height) const
bool HasInArc (float arcangle, Position const *pos, float border=2.0f) const
bool HasInLine (Position const *pos, float objSize, float width) const
std::string ToString () const
- Public Member Functions inherited from GridObject< Creature >
virtual ~GridObject ()
bool IsInGrid () const
void AddToGrid (GridRefManager< Creature > &m)
void RemoveFromGrid ()

Static Public Member Functions

static std::pair< PetStable::PetInfo const *, PetSaveModeGetLoadPetInfo (PetStable const &stable, uint32 petEntry, uint32 petnumber, Optional< PetSaveMode > slot)
static void DeleteFromDB (uint32 petNumber)
- Static Public Member Functions inherited from Creature
static CreatureCreateCreature (uint32 entry, Map *map, Position const &pos, uint32 vehId=0)
static CreatureCreateCreatureFromDB (ObjectGuid::LowType spawnId, Map *map, bool addToMap=true, bool allowDuplicate=false)
static bool DeleteFromDB (ObjectGuid::LowType spawnId)
static float _GetDamageMod (int32 Rank)
- Static Public Member Functions inherited from Unit
static float CalculateAverageResistReduction (WorldObject const *caster, SpellSchoolMask schoolMask, Unit const *victim, SpellInfo const *spellInfo=nullptr)
static void DealDamageMods (Unit const *attacker, Unit const *victim, uint32 &damage, uint32 *absorb)
static uint32 DealDamage (Unit *attacker, Unit *victim, uint32 damage, CleanDamage const *cleanDamage=nullptr, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=nullptr, bool durabilityLoss=true)
static void Kill (Unit *attacker, Unit *victim, bool durabilityLoss=true, bool skipSettingDeathState=false)
static void DealHeal (HealInfo &healInfo)
static void ProcSkillsAndAuras (Unit *actor, Unit *actionTarget, ProcFlagsInit const &typeMaskActor, ProcFlagsInit const &typeMaskActionTarget, ProcFlagsSpellType spellTypeMask, ProcFlagsSpellPhase spellPhaseMask, ProcFlagsHit hitMask, Spell *spell, DamageInfo *damageInfo, HealInfo *healInfo)
static void ApplyResilience (Unit const *victim, int32 *damage)
static uint32 SpellCriticalDamageBonus (Unit const *caster, SpellInfo const *spellProto, uint32 damage, Unit *victim)
static uint32 SpellCriticalHealingBonus (Unit const *caster, SpellInfo const *spellProto, uint32 damage, Unit *victim)
static bool IsDamageReducedByArmor (SpellSchoolMask damageSchoolMask, SpellInfo const *spellInfo=nullptr)
static uint32 CalcArmorReducedDamage (Unit const *attacker, Unit *victim, uint32 damage, SpellInfo const *spellInfo, WeaponAttackType attackType=MAX_ATTACK, uint8 attackerLevel=0)
static uint32 CalcSpellResistedDamage (Unit const *attacker, Unit *victim, uint32 damage, SpellSchoolMask schoolMask, SpellInfo const *spellInfo)
static void CalcAbsorbResist (DamageInfo &damageInfo, Spell *spell=nullptr)
static void CalcHealAbsorb (HealInfo &healInfo)
- Static Public Member Functions inherited from WorldObject
static bool InSamePhase (WorldObject const *a, WorldObject const *b)
static ReputationRank GetFactionReactionTo (FactionTemplateEntry const *factionTemplateEntry, WorldObject const *target)
- Static Public Member Functions inherited from Object
static ObjectGuid GetGUID (Object const *o)
static PlayerToPlayer (Object *o)
static Player const * ToPlayer (Object const *o)
static CreatureToCreature (Object *o)
static Creature const * ToCreature (Object const *o)
static UnitToUnit (Object *o)
static Unit const * ToUnit (Object const *o)
static GameObjectToGameObject (Object *o)
static GameObject const * ToGameObject (Object const *o)
static CorpseToCorpse (Object *o)
static Corpse const * ToCorpse (Object const *o)
static DynamicObjectToDynObject (Object *o)
static DynamicObject const * ToDynObject (Object const *o)
static AreaTriggerToAreaTrigger (Object *o)
static AreaTrigger const * ToAreaTrigger (Object const *o)
static SceneObjectToSceneObject (Object *o)
static SceneObject const * ToSceneObject (Object const *o)
static ConversationToConversation (Object *o)
static Conversation const * ToConversation (Object const *o)
- Static Public Member Functions inherited from Position
static float NormalizeOrientation (float o)

Public Attributes

PetSpellMap m_spells
AutoSpellList m_autospells
bool m_removed
- Public Attributes inherited from TempSummon
SummonPropertiesEntry const *const m_Properties
- Public Attributes inherited from Creature
Loot loot
uint32 m_spells [MAX_CREATURE_SPELLS]
uint32 m_groupLootTimer
ObjectGuid lootingGroupLowGUID
uint64 m_PlayerDamageReq
float m_SightDistance
float m_CombatDistance
bool m_isTempWorldObject
- Public Attributes inherited from Unit
bool m_canDualWield
ControlList m_Controlled
ObjectGuid m_SummonSlot [MAX_SUMMON_SLOT]
ObjectGuid m_ObjectSlot [MAX_GAMEOBJECT_SLOT]
float m_modMeleeHitChance
float m_modRangedHitChance
float m_modSpellHitChance
int32 m_baseSpellCritChance
uint32 m_baseAttackSpeed [MAX_ATTACK]
float m_modAttackSpeedPct [MAX_ATTACK]
uint32 m_attackTimer [MAX_ATTACK]
SpellImmuneContainer m_spellImmune [MAX_SPELL_IMMUNITY]
uint32 m_lastSanctuaryTime
ObjectGuid LastCharmerGUID
UF::UpdateField< UF::UnitData, 0, TYPEID_UNITm_unitData
- Public Attributes inherited from WorldObject
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPESm_stealth
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPESm_stealthDetect
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPESm_invisibility
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPESm_invisibilityDetect
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPESm_serverSideVisibility
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPESm_serverSideVisibilityDetect
uint32 LastUsedScriptID
MovementInfo m_movementInfo
EventProcessor m_Events
- Public Attributes inherited from Object
UF::UpdateFieldHolder m_values
UF::UpdateField< UF::ObjectData, 0, TYPEID_OBJECTm_objectData
- Public Attributes inherited from WorldLocation
uint32 m_mapId
- Public Attributes inherited from Position
float m_positionX
float m_positionY
float m_positionZ

Protected Attributes

PetType m_petType
int32 m_duration
bool m_loading
uint32 m_focusRegenTimer
uint32 m_groupUpdateMask
std::unique_ptr< DeclinedNamem_declinedname
uint16 m_petSpecialization
- Protected Attributes inherited from Guardian
int32 m_bonusSpellDamage
float m_statFromOwner [MAX_STATS]
- Protected Attributes inherited from Minion
Unit *const m_owner
float m_followAngle
- Protected Attributes inherited from Creature
VendorItemCounts m_vendorItemCounts
ObjectGuid m_lootRecipient
ObjectGuid m_lootRecipientGroup
time_t _pickpocketLootRestore
 Timers. More...
time_t m_corpseRemoveTime
time_t m_respawnTime
uint32 m_respawnDelay
uint32 m_corpseDelay
bool m_ignoreCorpseDecayRatio
float m_wanderDistance
uint32 m_boundaryCheckTime
uint32 m_combatPulseTime
uint32 m_combatPulseDelay
ReactStates m_reactState
MovementGeneratorType m_defaultMovementType
ObjectGuid::LowType m_spawnId
 For new or temporary creatures is 0 for saved it is lowguid. More...
uint8 m_equipmentId
int8 m_originalEquipmentId
bool m_AlreadyCallAssistance
bool m_AlreadySearchedAssistance
bool m_cannotReachTarget
uint32 m_cannotReachTimer
SpellSchoolMask m_meleeDamageSchoolMask
uint32 m_originalEntry
Position m_homePosition
Position m_transportHomePosition
bool DisableReputationGain
CreatureTemplate const * m_creatureInfo
CreatureData const * m_creatureData
uint16 m_LootMode
- Protected Attributes inherited from Unit
bool m_ControlledByPlayer
float m_createStats [MAX_STATS]
float m_floatStatPosBuff [MAX_STATS]
float m_floatStatNegBuff [MAX_STATS]
AttackerSet m_attackers
DeathState m_deathState
int32 m_procDeep
DynObjectList m_dynObj
GameObjectList m_gameObj
AreaTriggerList m_areaTrigger
uint32 m_transformSpell
Spellm_currentSpells [CURRENT_MAX_SPELL]
AuraMap m_ownedAuras
AuraApplicationMap m_appliedAuras
AuraList m_removedAuras
AuraMap::iterator m_auraUpdateIterator
uint32 m_removedAurasCount
AuraEffectList m_modAuras [TOTAL_AURAS]
AuraList m_scAuras
AuraApplicationList m_interruptableAuras
AuraStateAurasMap m_auraStateAuras
EnumFlag< SpellAuraInterruptFlagsm_interruptMask
EnumFlag< SpellAuraInterruptFlags2m_interruptMask2
float m_auraFlatModifiersGroup [UNIT_MOD_END][MODIFIER_TYPE_FLAT_END]
float m_auraPctModifiersGroup [UNIT_MOD_END][MODIFIER_TYPE_PCT_END]
float m_weaponDamage [MAX_ATTACK][2]
bool m_canModifyStats
VisibleAuraContainer m_visibleAuras
boost::container::flat_set< AuraApplication *, VisibleAuraSlotComparem_visibleAurasToUpdate
float m_speed_rate [MAX_MOVE_TYPE]
SharedVisionList m_sharedVision
uint32 m_reactiveTimer [MAX_REACTIVE]
uint32 m_regenTimer
uint32 m_unitTypeMask
LiquidTypeEntry const * _lastLiquid
uint32 m_movementCounter
 Incrementing counter used in movement packets. More...
- Protected Attributes inherited from WorldObject
std::string m_name
bool m_isActive
bool m_isFarVisible
Optional< float > m_visibilityDistanceOverride
bool const m_isWorldObject
uint32 m_zoneId
uint32 m_areaId
float m_staticFloorZ
bool m_outdoors
ZLiquidStatus m_liquidStatus
- Protected Attributes inherited from Object
uint16 m_objectType
TypeID m_objectTypeId
CreateObjectBits m_updateFlag
bool m_objectUpdated

Private Member Functions

void SaveToDB (uint32, std::vector< Difficulty > const &) override

Additional Inherited Members

- Public Types inherited from Unit
typedef std::set< Unit * > AttackerSet
typedef std::set< Unit * > ControlList
typedef std::vector< Unit * > UnitVector
typedef std::multimap< uint32, Aura * > AuraMap
typedef std::pair< AuraMap::const_iterator, AuraMap::const_iterator > AuraMapBounds
typedef std::pair< AuraMap::iterator, AuraMap::iterator > AuraMapBoundsNonConst
typedef std::multimap< uint32, AuraApplication * > AuraApplicationMap
typedef std::pair< AuraApplicationMap::const_iterator, AuraApplicationMap::const_iterator > AuraApplicationMapBounds
typedef std::pair< AuraApplicationMap::iterator, AuraApplicationMap::iterator > AuraApplicationMapBoundsNonConst
typedef std::multimap< AuraStateType, AuraApplication * > AuraStateAurasMap
typedef std::pair< AuraStateAurasMap::const_iterator, AuraStateAurasMap::const_iterator > AuraStateAurasMapBounds
typedef std::list< AuraEffect * > AuraEffectList
typedef std::list< Aura * > AuraList
typedef std::list< AuraApplication * > AuraApplicationList
typedef std::array< DiminishingReturn, DIMINISHING_MAXDiminishing
typedef std::vector< std::pair< uint32, AuraApplication * > > AuraApplicationProcContainer
typedef std::set< AuraApplication *, VisibleAuraSlotCompareVisibleAuraContainer
- Protected Types inherited from Unit
typedef std::list< DynamicObject * > DynObjectList
typedef std::list< GameObject * > GameObjectList
typedef std::vector< AreaTrigger * > AreaTriggerList
- Protected Member Functions inherited from Creature
bool CreateFromProto (ObjectGuid::LowType guidlow, uint32 entry, CreatureData const *data=nullptr, uint32 vehId=0)
bool InitEntry (uint32 entry, CreatureData const *data=nullptr)
void RegenerateHealth ()
void Regenerate (Powers power)
bool IsInvisibleDueToDespawn () const override
bool CanAlwaysSee (WorldObject const *obj) const override
- Protected Member Functions inherited from Unit
void SetAI (UnitAI *newAI)
UnitAIGetTopAI () const
void RefreshAI ()
UnitAIGetScheduledChangeAI ()
bool HasScheduledAIChange () const
 Unit (bool isWorldObject)
UF::UpdateFieldFlag GetUpdateFieldFlagsFor (Player const *target) const override
void BuildValuesCreate (ByteBuffer *data, Player const *target) const override
void BuildValuesUpdate (ByteBuffer *data, Player const *target) const override
void DestroyForPlayer (Player *target) const override
void ClearUpdateMask (bool remove) override
void _UpdateSpells (uint32 time)
void _DeleteRemovedAuras ()
void _UpdateAutoRepeatSpell ()
bool IsAlwaysVisibleFor (WorldObject const *seer) const override
bool IsAlwaysDetectableFor (WorldObject const *seer) const override
void DisableSpline ()
void ProcessPositionDataChanged (PositionFullTerrainStatus const &data) override
virtual void ProcessTerrainStatusUpdate (ZLiquidStatus oldLiquidStatus, Optional< LiquidData > const &newLiquidData)
virtual void AtEnterCombat ()
virtual void AtExitCombat ()
void SetFeared (bool apply)
void SetConfused (bool apply)
void SetStunned (bool apply)
void SetRooted (bool apply, bool packetOnly=false)
- Protected Member Functions inherited from WorldObject
 WorldObject (bool isWorldObject)
void SetLocationMapId (uint32 _mapId)
void SetLocationInstanceId (uint32 _instanceId)
virtual bool CanNeverSee (WorldObject const *obj) const
virtual bool IsNeverVisibleFor (WorldObject const *) const
- Protected Member Functions inherited from Object
 Object ()
void _Create (ObjectGuid const &guid)
template<typename T >
void SetUpdateFieldValue (UF::UpdateFieldSetter< T > setter, typename UF::UpdateFieldSetter< T >::value_type value)
template<typename T >
void SetUpdateFieldFlagValue (UF::UpdateFieldSetter< T > setter, typename UF::UpdateFieldSetter< T >::value_type flag)
template<typename T >
void RemoveUpdateFieldFlagValue (UF::UpdateFieldSetter< T > setter, typename UF::UpdateFieldSetter< T >::value_type flag)
template<typename T >
UF::DynamicUpdateFieldSetter< T >::insert_result AddDynamicUpdateFieldValue (UF::DynamicUpdateFieldSetter< T > setter)
template<typename T >
UF::DynamicUpdateFieldSetter< T >::insert_result InsertDynamicUpdateFieldValue (UF::DynamicUpdateFieldSetter< T > setter, uint32 index)
template<typename T >
void RemoveDynamicUpdateFieldValue (UF::DynamicUpdateFieldSetter< T > setter, uint32 index)
template<typename T >
void ClearDynamicUpdateFieldValues (UF::DynamicUpdateFieldSetter< T > setter)
template<typename T >
void RemoveOptionalUpdateFieldValue (UF::OptionalUpdateFieldSetter< T > setter)
template<typename T >
void SetUpdateFieldStatValue (UF::UpdateFieldSetter< T > setter, typename UF::UpdateFieldSetter< T >::value_type value)
template<typename T >
void ApplyModUpdateFieldValue (UF::UpdateFieldSetter< T > setter, typename UF::UpdateFieldSetter< T >::value_type mod, bool apply)
template<typename T >
void ApplyPercentModUpdateFieldValue (UF::UpdateFieldSetter< T > setter, float percent, bool apply)
template<typename Action >
void DoWithSuppressingObjectUpdates (Action &&action)
void BuildMovementUpdate (ByteBuffer *data, CreateObjectBits flags, Player *target) const
void AddToObjectUpdateIfNeeded ()
- Protected Member Functions inherited from MapObject
 MapObject ()
- Static Protected Member Functions inherited from Creature
static float _GetHealthMod (int32 Rank)

Constructor & Destructor Documentation

◆ Pet()

Pet::Pet ( Player owner,
PetType  type = MAX_PET_TYPE 
45  :
46  Guardian(nullptr, owner, true), m_removed(false),
47  m_petType(type), m_duration(0), m_loading(false), m_groupUpdateMask(0),
49 {
50  ASSERT(GetOwner());
53  if (type == HUNTER_PET)
57  {
59  InitCharmInfo();
60  }
62  m_name = "Pet";
64 }
Definition: Unit.h:354
Guardian(SummonPropertiesEntry const *properties, Unit *owner, bool isWorldObject)
Definition: TemporarySummon.cpp:433
std::string m_name
Definition: Object.h:724
int32 m_duration
Definition: Pet.h:157
uint32 m_groupUpdateMask
Definition: Pet.h:160
bool m_loading
Definition: Pet.h:158
Definition: Unit.h:355
Player * GetOwner() const
Definition: Pet.cpp:1811
bool m_removed
Definition: Pet.h:149
PetType m_petType
Definition: Pet.h:156
uint32 m_focusRegenTimer
Definition: Pet.h:159
uint32 m_unitTypeMask
Definition: Unit.h:1984
CharmInfo * InitCharmInfo()
Definition: Unit.cpp:9423
#define ASSERT
Definition: Errors.h:68
uint16 m_petSpecialization
Definition: Pet.h:164
Definition: Unit.h:351
Definition: CreatureData.h:364
Definition: PetDefines.h:32
+ Here is the call graph for this function:

◆ ~Pet()

Pet::~Pet ( )
+ Here is the caller graph for this function:

Member Function Documentation

◆ _LoadAuras()

void Pet::_LoadAuras ( PreparedQueryResult  auraResult,
PreparedQueryResult  effectResult,
uint32  timediff 
1192 {
1193  TC_LOG_DEBUG("", "Loading auras for pet %s", GetGUID().ToString().c_str());
1195  ObjectGuid casterGuid, itemGuid;
1196  std::map<AuraKey, AuraLoadEffectInfo> effectInfo;
1198  /*
1199  0 1 2 3 4 5
1200  SELECT casterGuid, spell, effectMask, effectIndex, amount, baseAmount FROM pet_aura_effect WHERE guid = ?
1201  */
1202  if (effectResult)
1203  {
1204  do
1205  {
1206  Field* fields = effectResult->Fetch();
1207  uint32 effectIndex = fields[3].GetUInt8();
1208  if (effectIndex < MAX_SPELL_EFFECTS)
1209  {
1210  casterGuid.SetRawValue(fields[0].GetBinary());
1211  if (casterGuid.IsEmpty())
1212  casterGuid = GetGUID();
1214  AuraKey key{ casterGuid, itemGuid, fields[1].GetUInt32(), fields[2].GetUInt32() };
1215  AuraLoadEffectInfo& info = effectInfo[key];
1216  info.Amounts[effectIndex] = fields[4].GetInt32();
1217  info.BaseAmounts[effectIndex] = fields[5].GetInt32();
1218  }
1219  } while (effectResult->NextRow());
1220  }
1222  /*
1223  0 1 2 3 4 5 6 7 8
1224  SELECT casterGuid, spell, effectMask, recalculateMask, difficulty, stackCount, maxDuration, remainTime, remainCharges FROM pet_aura WHERE guid = ?
1225  */
1226  if (auraResult)
1227  {
1228  do
1229  {
1230  Field* fields = auraResult->Fetch();
1231  // NULL guid stored - pet is the caster of the spell - see Pet::_SaveAuras
1232  casterGuid.SetRawValue(fields[0].GetBinary());
1233  if (casterGuid.IsEmpty())
1234  casterGuid = GetGUID();
1236  AuraKey key{ casterGuid, itemGuid, fields[1].GetUInt32(), fields[2].GetUInt32() };
1237  uint32 recalculateMask = fields[3].GetUInt32();
1238  Difficulty difficulty = Difficulty(fields[4].GetUInt8());
1239  uint8 stackCount = fields[5].GetUInt8();
1240  int32 maxDuration = fields[6].GetInt32();
1241  int32 remainTime = fields[7].GetInt32();
1242  uint8 remainCharges = fields[8].GetUInt8();
1244  SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(key.SpellId, difficulty);
1245  if (!spellInfo)
1246  {
1247  TC_LOG_ERROR("", "Pet::_LoadAuras: Unknown aura (spellid %u), ignore.", key.SpellId);
1248  continue;
1249  }
1251  if (difficulty != DIFFICULTY_NONE && !sDifficultyStore.LookupEntry(difficulty))
1252  {
1253  TC_LOG_ERROR("", "Pet::_LoadAuras: Unknown difficulty %u (spellid %u), ignore.", uint32(difficulty), key.SpellId);
1254  continue;
1255  }
1257  // negative effects should continue counting down after logout
1258  if (remainTime != -1 && (!spellInfo->IsPositive() || spellInfo->HasAttribute(SPELL_ATTR4_AURA_EXPIRES_OFFLINE)))
1259  {
1260  if (remainTime/IN_MILLISECONDS <= int32(timediff))
1261  continue;
1263  remainTime -= timediff*IN_MILLISECONDS;
1264  }
1266  // prevent wrong values of remainCharges
1267  if (spellInfo->ProcCharges)
1268  {
1269  // we have no control over the order of applying auras and modifiers allow auras
1270  // to have more charges than value in SpellInfo
1271  if (remainCharges <= 0/* || remainCharges > spellproto->procCharges*/)
1272  remainCharges = spellInfo->ProcCharges;
1273  }
1274  else
1275  remainCharges = 0;
1277  AuraLoadEffectInfo& info = effectInfo[key];
1278  ObjectGuid castId = ObjectGuid::Create<HighGuid::Cast>(SPELL_CAST_SOURCE_NORMAL, GetMapId(), spellInfo->Id, GetMap()->GenerateLowGuid<HighGuid::Cast>());
1279  AuraCreateInfo createInfo(castId, spellInfo, difficulty, key.EffectMask, this);
1280  createInfo
1281  .SetCasterGUID(casterGuid)
1282  .SetBaseAmount(;
1284  if (Aura* aura = Aura::TryCreate(createInfo))
1285  {
1286  if (!aura->CanBeSaved())
1287  {
1288  aura->Remove();
1289  continue;
1290  }
1292  aura->SetLoadedState(maxDuration, remainTime, remainCharges, stackCount, recalculateMask,;
1293  aura->ApplyForTargets();
1294  TC_LOG_DEBUG("", "Added aura spellid %u, effectmask %u", spellInfo->Id, key.EffectMask);
1295  }
1296  }
1297  while (auraResult->NextRow());
1298  }
1299 }
Definition: DBCEnums.h:666
Definition: DBCEnums.h:664
Definition: SpellInfo.h:342
uint32 ProcCharges
Definition: SpellInfo.h:395
Class used to access individual fields of database query result.
Definition: Field.h:83
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:185
Definition: SpellAuras.h:115
Definition: DBCEnums.h:1512
DB2Storage< DifficultyEntry > sDifficultyStore("Difficulty.db2", DifficultyLoadInfo::Instance())
static Aura * TryCreate(AuraCreateInfo &createInfo)
Definition: SpellAuras.cpp:377
uint32 GetUInt32() const
Definition: Field.cpp:105
Map * GetMap() const
Definition: Object.h:555
uint32 const Id
Definition: SpellInfo.h:347
ObjectGuid const & GetGUID() const
Definition: Object.h:157
bool HasAttribute(SpellAttr0 attribute) const
Definition: SpellInfo.h:461
Definition: SpellAuraDefines.h:662
Definition: Common.h:68
#define sSpellMgr
Definition: SpellMgr.h:825
int32_t int32
Definition: Define.h:139
void SetRawValue(std::vector< uint8 > const &guid)
Definition: ObjectGuid.cpp:561
uint32_t uint32
Definition: Define.h:143
bool IsPositive() const
Definition: SpellInfo.cpp:1635
int32 GetInt32() const
Definition: Field.cpp:123
bool IsEmpty() const
Definition: ObjectGuid.h:310
Definition: SharedDefines.h:557
std::array< int32, MAX_SPELL_EFFECTS > Amounts
Definition: SpellAuras.h:117
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:176
uint32 GetMapId() const
Definition: Position.h:186
uint8 GetUInt8() const
Definition: Field.cpp:33
uint8_t uint8
Definition: Define.h:145
std::array< int32, MAX_SPELL_EFFECTS > BaseAmounts
Definition: SpellAuras.h:118
std::string ToString() const
Definition: Position.cpp:128
Definition: SpellAuras.h:100
Definition: ObjectGuid.h:258
Definition: Spell.h:140
ObjectGuid::LowType GenerateLowGuid()
Definition: Map.h:600
Definition: SpellAuras.h:121
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _LoadSpells()

void Pet::_LoadSpells ( PreparedQueryResult  result)
1129 {
1130  if (result)
1131  {
1132  do
1133  {
1134  Field* fields = result->Fetch();
1136  addSpell(fields[0].GetUInt32(), ActiveStates(fields[1].GetUInt8()), PETSPELL_UNCHANGED);
1137  }
1138  while (result->NextRow());
1139  }
1140 }
Class used to access individual fields of database query result.
Definition: Field.h:83
Definition: PetDefines.h:63
bool addSpell(uint32 spellId, ActiveStates active=ACT_DECIDE, PetSpellState state=PETSPELL_NEW, PetSpellType type=PETSPELL_NORMAL)
Definition: Pet.cpp:1359
Definition: UnitDefines.h:460
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _SaveAuras()

void Pet::_SaveAuras ( CharacterDatabaseTransaction  trans)
1302 {
1304  stmt->setUInt32(0, m_charmInfo->GetPetNumber());
1305  trans->Append(stmt);
1307  stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_AURAS);
1308  stmt->setUInt32(0, m_charmInfo->GetPetNumber());
1309  trans->Append(stmt);
1311  uint8 index;
1312  for (AuraMap::const_iterator itr = m_ownedAuras.begin(); itr != m_ownedAuras.end(); ++itr)
1313  {
1314  // check if the aura has to be saved
1315  if (!itr->second->CanBeSaved() || IsPetAura(itr->second))
1316  continue;
1318  Aura* aura = itr->second;
1319  uint32 recalculateMask = 0;
1320  AuraKey key = aura->GenerateKey(recalculateMask);
1322  // don't save guid of caster in case we are caster of the spell - guid for pet is generated every pet load, so it won't match saved guid anyways
1323  if (key.Caster == GetGUID())
1324  key.Caster.Clear();
1326  index = 0;
1327  stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_AURA);
1328  stmt->setUInt32(index++, m_charmInfo->GetPetNumber());
1329  stmt->setBinary(index++, key.Caster.GetRawValue());
1330  stmt->setUInt32(index++, key.SpellId);
1331  stmt->setUInt32(index++, key.EffectMask);
1332  stmt->setUInt32(index++, recalculateMask);
1333  stmt->setUInt8(index++, aura->GetCastDifficulty());
1334  stmt->setUInt8(index++, aura->GetStackAmount());
1335  stmt->setInt32(index++, aura->GetMaxDuration());
1336  stmt->setInt32(index++, aura->GetDuration());
1337  stmt->setUInt8(index++, aura->GetCharges());
1338  trans->Append(stmt);
1340  for (AuraEffect const* effect : aura->GetAuraEffects())
1341  {
1342  if (effect)
1343  {
1344  index = 0;
1345  stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_AURA_EFFECT);
1346  stmt->setUInt32(index++, m_charmInfo->GetPetNumber());
1347  stmt->setBinary(index++, key.Caster.GetRawValue());
1348  stmt->setUInt32(index++, key.SpellId);
1349  stmt->setUInt32(index++, key.EffectMask);
1350  stmt->setUInt8(index++, effect->GetEffIndex());
1351  stmt->setInt32(index++, effect->GetAmount());
1352  stmt->setInt32(index++, effect->GetBaseAmount());
1353  trans->Append(stmt);
1354  }
1355  }
1356  }
1357 }
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
Definition: SpellAuraEffects.h:28
void setBinary(const uint8 index, const std::vector< uint8 > &value)
Definition: PreparedStatement.cpp:108
AuraMap m_ownedAuras
Definition: Unit.h:1946
int32 GetDuration() const
Definition: SpellAuras.h:176
uint32 EffectMask
Definition: SpellAuras.h:105
uint8 GetStackAmount() const
Definition: SpellAuras.h:192
CharmInfo * m_charmInfo
Definition: Unit.h:1973
Definition: CharacterDatabase.h:589
void setUInt8(const uint8 index, const uint8 value)
Definition: PreparedStatement.cpp:36
Definition: DatabaseEnvFwd.h:40
void setInt32(const uint8 index, const int32 value)
Definition: PreparedStatement.cpp:72
bool IsPetAura(Aura const *aura)
Definition: Pet.cpp:1775
ObjectGuid const & GetGUID() const
Definition: Object.h:157
void setUInt32(const uint8 index, const uint32 value)
Definition: PreparedStatement.cpp:48
AuraEffectVector const & GetAuraEffects() const
Definition: SpellAuras.h:308
uint32_t uint32
Definition: Define.h:143
ObjectGuid Caster
Definition: SpellAuras.h:102
uint32 GetPetNumber() const
Definition: Unit.h:658
uint8 GetCharges() const
Definition: SpellAuras.h:183
AuraKey GenerateKey(uint32 &recalculateMask) const
Fills a helper structure containing aura primary key for character_aura, character_aura_effect, pet_aura, pet_aura_effect tables.
Definition: SpellAuras.cpp:1205
Definition: CharacterDatabase.h:581
Definition: CharacterDatabase.h:590
void Clear()
Definition: ObjectGuid.h:277
Difficulty GetCastDifficulty() const
Definition: SpellAuras.h:139
Definition: CharacterDatabase.h:580
uint32 SpellId
Definition: SpellAuras.h:104
uint64 GetRawValue(std::size_t i) const
Definition: ObjectGuid.h:273
uint8_t uint8
Definition: Define.h:145
Definition: SpellAuras.h:100
int32 GetMaxDuration() const
Definition: SpellAuras.h:171
Definition: SpellAuras.h:121
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _SaveSpells()

void Pet::_SaveSpells ( CharacterDatabaseTransaction  trans)
1143 {
1144  for (PetSpellMap::iterator itr = m_spells.begin(), next = m_spells.begin(); itr != m_spells.end(); itr = next)
1145  {
1146  ++next;
1148  // prevent saving family passives to DB
1149  if (itr->second.type == PETSPELL_FAMILY)
1150  continue;
1154  switch (itr->second.state)
1155  {
1157  stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELL_BY_SPELL);
1158  stmt->setUInt32(0, m_charmInfo->GetPetNumber());
1159  stmt->setUInt32(1, itr->first);
1160  trans->Append(stmt);
1162  m_spells.erase(itr);
1163  continue;
1165  stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELL_BY_SPELL);
1166  stmt->setUInt32(0, m_charmInfo->GetPetNumber());
1167  stmt->setUInt32(1, itr->first);
1168  trans->Append(stmt);
1170  stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_SPELL);
1171  stmt->setUInt32(0, m_charmInfo->GetPetNumber());
1172  stmt->setUInt32(1, itr->first);
1173  stmt->setUInt8(2, itr->;
1174  trans->Append(stmt);
1176  break;
1177  case PETSPELL_NEW:
1178  stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_SPELL);
1179  stmt->setUInt32(0, m_charmInfo->GetPetNumber());
1180  stmt->setUInt32(1, itr->first);
1181  stmt->setUInt8(2, itr->;
1182  trans->Append(stmt);
1183  break;
1185  continue;
1186  }
1187  itr->second.state = PETSPELL_UNCHANGED;
1188  }
1189 }
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
Definition: PetDefines.h:65
CharmInfo * m_charmInfo
Definition: Unit.h:1973
void setUInt8(const uint8 index, const uint8 value)
Definition: PreparedStatement.cpp:36
Definition: DatabaseEnvFwd.h:40
Definition: CharacterDatabase.h:588
Definition: CharacterDatabase.h:587
void setUInt32(const uint8 index, const uint32 value)
Definition: PreparedStatement.cpp:48
uint32 GetPetNumber() const
Definition: Unit.h:658
Definition: PetDefines.h:64
Definition: PetDefines.h:66
Definition: PetDefines.h:72
Definition: PetDefines.h:63
PetSpellMap m_spells
Definition: Pet.h:133
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addSpell()

bool Pet::addSpell ( uint32  spellId,
ActiveStates  active = ACT_DECIDE,
PetSpellState  state = PETSPELL_NEW,
PetSpellType  type = PETSPELL_NORMAL 
1360 {
1361  SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, DIFFICULTY_NONE);
1362  if (!spellInfo)
1363  {
1364  // do pet spell book cleanup
1365  if (state == PETSPELL_UNCHANGED) // spell load case
1366  {
1367  TC_LOG_ERROR("", "Pet::addSpell: Non-existed in SpellStore spell #%u request, deleting for all pets in `pet_spell`.", spellId);
1371  stmt->setUInt32(0, spellId);
1373  CharacterDatabase.Execute(stmt);
1374  }
1375  else
1376  TC_LOG_ERROR("", "Pet::addSpell: Non-existed in SpellStore spell #%u request.", spellId);
1378  return false;
1379  }
1381  PetSpellMap::iterator itr = m_spells.find(spellId);
1382  if (itr != m_spells.end())
1383  {
1384  if (itr->second.state == PETSPELL_REMOVED)
1385  state = PETSPELL_CHANGED;
1386  else
1387  {
1388  if (state == PETSPELL_UNCHANGED && itr->second.state != PETSPELL_UNCHANGED)
1389  {
1390  // can be in case spell loading but learned at some previous spell loading
1391  itr->second.state = PETSPELL_UNCHANGED;
1393  if (active == ACT_ENABLED)
1394  ToggleAutocast(spellInfo, true);
1395  else if (active == ACT_DISABLED)
1396  ToggleAutocast(spellInfo, false);
1397  }
1399  return false;
1400  }
1401  }
1403  PetSpell newspell;
1404  newspell.state = state;
1405  newspell.type = type;
1407  if (active ==