AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
WorldObject Class Reference

#include "Object.h"

Inheritance diagram for WorldObject:
Object WorldLocation Position Corpse DynamicObject GameObject Unit Transport Creature Player MotionTransport StaticTransport TempSummon Minion Guardian Puppet Totem Pet

Public Member Functions

 ~WorldObject () override
 
virtual void Update (uint32 diff)
 
void _Create (ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 phaseMask)
 
void AddToWorld () override
 
void RemoveFromWorld () override
 
void GetNearPoint2D (WorldObject const *searcher, float &x, float &y, float distance, float absAngle, Position const *startPos=nullptr) const
 
void GetNearPoint2D (float &x, float &y, float distance, float absAngle, Position const *startPos=nullptr) const
 
void GetNearPoint (WorldObject const *searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle, float controlZ=0, Position const *startPos=nullptr) const
 
void GetVoidClosePoint (float &x, float &y, float &z, float size, float distance2d=0, float relAngle=0, float controlZ=0) const
 
bool GetClosePoint (float &x, float &y, float &z, float size, float distance2d=0, float angle=0, WorldObject const *forWho=nullptr, bool force=false) 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 startX, float startY, float startZ, float destX, float destY)
 
Position GetFirstCollisionPosition (float destX, float destY, float destZ)
 
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 GetChargeContactPoint (WorldObject const *obj, float &x, float &y, float &z, float distance2d=CONTACT_DISTANCE) const
 
float GetObjectSize () const
 
virtual float GetCombatReach () const
 
void UpdateGroundPositionZ (float x, float y, float &z) const
 
void UpdateAllowedPositionZ (float x, float y, float &z, float *groundZ=nullptr) const
 
void GetRandomPoint (const Position &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
 
Position GetRandomPoint (const Position &srcPos, float distance) const
 
uint32 GetInstanceId () const
 
virtual void SetPhaseMask (uint32 newPhaseMask, bool update)
 
uint32 GetPhaseMask () const
 
bool InSamePhase (WorldObject const *obj) const
 
bool InSamePhase (uint32 phasemask) const
 
uint32 GetZoneId () const
 
uint32 GetAreaId () const
 
void GetZoneAndAreaId (uint32 &zoneid, uint32 &areaid) const
 
bool IsOutdoors () const
 
LiquidData const & GetLiquidData () const
 
InstanceScriptGetInstanceScript () const
 
std::string const & GetName () const
 
void SetName (std::string const &newname)
 
virtual std::string const & GetNameForLocaleIdx (LocaleConstant) const
 
float GetDistance (WorldObject const *obj) const
 
float GetDistance (const Position &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 (const Position *pos, float dist) const
 
bool IsWithinDist2d (float x, float y, float dist) const
 
bool IsWithinDist2d (const Position *pos, float dist) const
 
bool IsWithinDist (WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
 
bool IsWithinDistInMap (WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
 
bool IsWithinLOS (float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS) const
 
bool IsWithinLOSInMap (WorldObject const *obj, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
 
Position GetHitSpherePointFor (Position const &dest, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
 
void GetHitSpherePointFor (Position const &dest, float &x, float &y, float &z, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) 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=M_PI) const
 
bool isInBack (WorldObject const *target, float arc=M_PI) const
 
bool IsInBetween (WorldObject const *obj1, WorldObject const *obj2, float size=0) const
 
virtual void CleanupsBeforeDelete (bool finalCleanup=true)
 
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
 
virtual uint8 getLevelForTarget (WorldObject const *) const
 
void PlayDistanceSound (uint32 sound_id, Player *target=nullptr)
 
void PlayDirectSound (uint32 sound_id, Player *target=nullptr)
 
void PlayRadiusSound (uint32 sound_id, float radius)
 
void PlayDirectMusic (uint32 music_id, Player *target=nullptr)
 
void PlayRadiusMusic (uint32 music_id, float radius)
 
template<typename Worker >
void DoForAllVisiblePlayers (Worker &&worker)
 
template<typename Worker >
void DoForAllVisibleWorldObjects (Worker &&worker)
 
void DestroyForVisiblePlayers ()
 
void SendObjectDeSpawnAnim (ObjectGuid guid)
 
virtual void SaveRespawnTime ()
 
void AddObjectToRemoveList ()
 
float GetGridActivationRange () const
 
float GetVisibilityRange () const
 
virtual float GetSightRange (WorldObject const *target=nullptr) const
 
bool CanSeeOrDetect (WorldObject const *obj, bool ignoreStealth=false, bool distanceCheck=false, bool checkAlert=false) const
 
void SendPlayMusic (uint32 Music, bool OnlySelf)
 
virtual void SetMap (Map *map)
 
virtual void ResetMap ()
 
MapGetMap () const
 
MapFindMap () const
 
void SetZoneScript ()
 
void ClearZoneScript ()
 
ZoneScriptGetZoneScript () const
 
TempSummonSummonCreature (uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
 
TempSummonSummonCreature (uint32 id, float x, float y, float z, float ang=0, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false)
 
GameObjectSummonGameObject (uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime, bool checkTransport=true, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
 
CreatureSummonTrigger (float x, float y, float z, float ang, uint32 dur, bool setLevel=false, 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 onlySpawned=false) const
 
GameObjectFindNearestGameObjectOfType (GameobjectTypes type, float range) const
 
PlayerSelectNearestPlayer (float distance=0) const
 
void GetGameObjectListWithEntryInGrid (std::list< GameObject * > &lList, uint32 uiEntry, float fMaxSearchRange) const
 
void GetGameObjectListWithEntryInGrid (std::list< GameObject * > &gameobjectList, std::vector< uint32 > const &entries, float maxSearchRange) const
 
void GetCreatureListWithEntryInGrid (std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
 
void GetCreatureListWithEntryInGrid (std::list< Creature * > &creatureList, std::vector< uint32 > const &entries, float maxSearchRange) const
 
void GetDeadCreatureListInGrid (std::list< Creature * > &lList, float maxSearchRange, bool alive=false) const
 
virtual void UpdateObjectVisibility (bool forced=true, bool fromUpdate=false)
 
virtual void UpdateObjectVisibilityOnCreate ()
 
void BuildUpdate (UpdateDataMapType &data_map) override
 
void GetCreaturesWithEntryInRange (std::list< Creature * > &creatureList, float radius, uint32 entry)
 
void SetPositionDataUpdate ()
 
void UpdatePositionData ()
 
void AddToObjectUpdate () override
 
void RemoveFromObjectUpdate () override
 
void AddToNotify (uint16 f)
 
void RemoveFromNotify (uint16 f)
 
bool isNeedNotify (uint16 f) const
 
uint16 GetNotifyFlags () const
 
bool NotifyExecuted (uint16 f) const
 
void SetNotified (uint16 f)
 
void ResetAllNotifies ()
 
bool isActiveObject () const
 
void setActive (bool isActiveObject)
 
VisibilityDistanceType GetVisibilityOverrideType () const
 
bool IsVisibilityOverridden () const
 
bool IsZoneWideVisible () const
 
bool IsFarVisible () const
 
float GetVisibilityOverrideDistance () const
 
void SetVisibilityDistanceOverride (VisibilityDistanceType type)
 
bool IsInWintergrasp () const
 
TransportGetTransport () const
 
float GetTransOffsetX () const
 
float GetTransOffsetY () const
 
float GetTransOffsetZ () const
 
float GetTransOffsetO () const
 
uint32 GetTransTime () const
 
int8 GetTransSeat () const
 
virtual ObjectGuid GetTransGUID () const
 
void SetTransport (Transport *t)
 
virtual float GetStationaryX () const
 
virtual float GetStationaryY () const
 
virtual float GetStationaryZ () const
 
virtual float GetStationaryO () const
 
float GetMapWaterOrGroundLevel (Position pos, float *ground=nullptr) 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
 
float GetFloorZ () const
 
float GetMinHeightInWater () const
 Get the minimum height of a object that should be in water to start floating/swim.
 
virtual float GetCollisionHeight () const
 
virtual float GetCollisionWidth () const
 
virtual float GetCollisionRadius () const
 
void AddAllowedLooter (ObjectGuid guid)
 
void ResetAllowedLooters ()
 
void SetAllowedLooters (GuidUnorderedSet const looters)
 
bool HasAllowedLooter (ObjectGuid guid) const
 
GuidUnorderedSet const & GetAllowedLooters () const
 
void RemoveAllowedLooter (ObjectGuid guid)
 
virtual bool IsUpdateNeeded ()
 
bool CanBeAddedToMapUpdateList ()
 
std::string GetDebugInfo () const override
 
ObjectVisibilityContainerGetObjectVisibilityContainer ()
 
ObjectVisibilityContainer const & GetObjectVisibilityContainer () const
 
- Public Member Functions inherited from Object
virtual ~Object ()
 
bool IsInWorld () const
 
ObjectGuid GetGUID () const
 
PackedGuid const & GetPackGUID () const
 
uint32 GetEntry () const
 
void SetEntry (uint32 entry)
 
float GetObjectScale () const
 
virtual void SetObjectScale (float scale)
 
virtual uint32 GetDynamicFlags () const
 
bool HasDynamicFlag (uint32 flag) const
 
virtual void SetDynamicFlag (uint32 flag)
 
virtual void RemoveDynamicFlag (uint32 flag)
 
virtual void ReplaceAllDynamicFlags (uint32 flag)
 
TypeID GetTypeId () const
 
bool isType (uint16 mask) const
 
virtual void BuildCreateUpdateBlockForPlayer (UpdateData *data, Player *target)
 
void SendUpdateToPlayer (Player *player)
 
void BuildValuesUpdateBlockForPlayer (UpdateData *data, Player *target)
 
void BuildOutOfRangeUpdateBlock (UpdateData *data) const
 
void BuildMovementUpdateBlock (UpdateData *data, uint32 flags=0) const
 
virtual void DestroyForPlayer (Player *target, bool onDeath=false) const
 
int32 GetInt32Value (uint16 index) const
 
uint32 GetUInt32Value (uint16 index) const
 
uint64 GetUInt64Value (uint16 index) const
 
float GetFloatValue (uint16 index) const
 
uint8 GetByteValue (uint16 index, uint8 offset) const
 
uint16 GetUInt16Value (uint16 index, uint8 offset) const
 
ObjectGuid GetGuidValue (uint16 index) const
 
void SetInt32Value (uint16 index, int32 value)
 
void SetUInt32Value (uint16 index, uint32 value)
 
void UpdateUInt32Value (uint16 index, uint32 value)
 
void SetUInt64Value (uint16 index, uint64 value)
 
void SetFloatValue (uint16 index, float value)
 
void SetByteValue (uint16 index, uint8 offset, uint8 value)
 
void SetUInt16Value (uint16 index, uint8 offset, uint16 value)
 
void SetInt16Value (uint16 index, uint8 offset, int16 value)
 
void SetGuidValue (uint16 index, ObjectGuid value)
 
void SetStatFloatValue (uint16 index, float value)
 
void SetStatInt32Value (uint16 index, int32 value)
 
bool AddGuidValue (uint16 index, ObjectGuid value)
 
bool RemoveGuidValue (uint16 index, ObjectGuid value)
 
void ApplyModUInt32Value (uint16 index, int32 val, bool apply)
 
void ApplyModInt32Value (uint16 index, int32 val, bool apply)
 
void ApplyModUInt64Value (uint16 index, int32 val, bool apply)
 
void ApplyModPositiveFloatValue (uint16 index, float val, bool apply)
 
void ApplyModSignedFloatValue (uint16 index, float val, bool apply)
 
void ApplyPercentModFloatValue (uint16 index, float val, bool apply)
 
void SetFlag (uint16 index, uint32 newFlag)
 
void RemoveFlag (uint16 index, uint32 oldFlag)
 
void ToggleFlag (uint16 index, uint32 flag)
 
bool HasFlag (uint16 index, uint32 flag) const
 
void ApplyModFlag (uint16 index, uint32 flag, bool apply)
 
void SetByteFlag (uint16 index, uint8 offset, uint8 newFlag)
 
void RemoveByteFlag (uint16 index, uint8 offset, uint8 newFlag)
 
bool HasByteFlag (uint16 index, uint8 offset, uint8 flag) const
 
void SetFlag64 (uint16 index, uint64 newFlag)
 
void RemoveFlag64 (uint16 index, uint64 oldFlag)
 
void ToggleFlag64 (uint16 index, uint64 flag)
 
bool HasFlag64 (uint16 index, uint64 flag) const
 
void ApplyModFlag64 (uint16 index, uint64 flag, bool apply)
 
void ClearUpdateMask (bool remove)
 
uint16 GetValuesCount () const
 
virtual bool hasQuest (uint32) const
 
virtual bool hasInvolvedQuest (uint32) const
 
void BuildFieldsUpdate (Player *, UpdateDataMapType &)
 
void SetFieldNotifyFlag (uint16 flag)
 
void RemoveFieldNotifyFlag (uint16 flag)
 
void ForceValuesUpdateAtIndex (uint32)
 
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 IsDynamicObject () const
 
DynamicObjectToDynObject ()
 
DynamicObject const * ToDynObject () const
 
bool IsItem () const
 
virtual void Heartbeat ()
 
template<typename... T>
bool EntryEquals (T... entries) 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 (const WorldLocation &loc)
 
void WorldRelocate (uint32 mapId=MAPID_INVALID, float x=0.f, float y=0.f, float z=0.f, float o=0.f)
 
void SetMapId (uint32 mapId)
 
uint32 GetMapId () const
 
void GetWorldLocation (uint32 &mapId, float &x, float &y) const
 
void GetWorldLocation (uint32 &mapId, float &x, float &y, float &z) const
 
void GetWorldLocation (uint32 &mapId, float &x, float &y, float &z, float &o) const
 
void GetWorldLocation (WorldLocation *location) const
 
WorldLocation GetWorldLocation () const
 
std::string GetDebugInfo () const
 
- Public Member Functions inherited from Position
 Position (float x=0, float y=0, float z=0, float o=0)
 
 Position (Position const &loc)
 
 Position (Position &&)=default
 
Positionoperator= (const Position &)=default
 
Positionoperator= (Position &&)=default
 
bool operator== (Position const &a) const
 
bool operator!= (Position const &a)
 
bool operator!= (Position const &a) const
 
 operator G3D::Vector3 () const
 
void Relocate (float x, float y)
 
void Relocate (float x, float y, float z)
 
void Relocate (float x, float y, float z, float orientation)
 
void Relocate (const Position &pos)
 
void Relocate (const Position *pos)
 
void RelocatePolarOffset (float angle, float dist, float z=0.0f)
 
void RelocateOffset (const Position &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
 
Position::PositionXYZStreamer PositionXYZStream ()
 
Position::PositionXYZOStreamer PositionXYZOStream ()
 
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 (const Position &endPos, Position &retOffset) const
 
Position GetPositionWithOffset (Position const &offset) const
 
float GetAngle (const Position *pos) const
 
float GetAngle (float x, float y) const
 
float GetAbsoluteAngle (float x, float y) const
 
float GetAbsoluteAngle (Position const &pos) const
 
float GetAbsoluteAngle (Position const *pos) const
 
float GetRelativeAngle (const Position *pos) const
 
float GetRelativeAngle (float x, float y) const
 
float ToAbsoluteAngle (float relAngle) const
 
void GetSinCos (float x, float y, float &vsin, float &vcos) const
 
bool IsInDist2d (float x, float y, float dist) const
 
bool IsInDist2d (const Position *pos, float dist) const
 
bool IsInDist (float x, float y, float z, float dist) const
 
bool IsInDist (const Position *pos, float dist) const
 
bool IsWithinBox (const Position &center, float xradius, float yradius, float zradius) const
 
bool HasInArc (float arcangle, const Position *pos, float targetRadius=0.0f) const
 
bool HasInLine (Position const *pos, float width) const
 
bool HasInLine (Position const *pos, float objSize, float width) const
 
std::string ToString () const
 

Public Attributes

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
 
ElunaEventProcessor * elunaEvents
 
EventProcessor m_Events
 
- Public Attributes inherited from Object
DataMap CustomData
 
- Public Attributes inherited from WorldLocation
uint32 m_mapId
 
- Public Attributes inherited from Position
float m_positionX = 0
 
float m_positionY = 0
 
float m_positionZ = 0
 
float m_orientation = 0
 

Protected Member Functions

 WorldObject ()
 
virtual void ProcessPositionDataChanged (PositionFullTerrainStatus const &data)
 
void SetLocationMapId (uint32 _mapId)
 
void SetLocationInstanceId (uint32 _instanceId)
 
virtual bool IsNeverVisible () const
 
virtual bool IsAlwaysVisibleFor (WorldObject const *) const
 
virtual bool IsInvisibleDueToDespawn () const
 
virtual bool IsAlwaysDetectableFor (WorldObject const *) const
 
- Protected Member Functions inherited from Object
 Object ()
 
void _InitValues ()
 
void _Create (ObjectGuid::LowType guidlow, uint32 entry, HighGuid guidhigh)
 
std::string _ConcatFields (uint16 startIndex, uint16 size) const
 
bool _LoadIntoDataField (std::string const &data, uint32 startOffset, uint32 count)
 
uint32 GetUpdateFieldData (Player const *target, uint32 *&flags) const
 
void BuildMovementUpdate (ByteBuffer *data, uint16 flags) const
 
virtual void BuildValuesUpdate (uint8 updateType, ByteBuffer *data, Player *target)
 
void AddToObjectUpdateIfNeeded ()
 

Protected Attributes

std::string m_name
 
bool m_isActive
 
VisibilityDistanceType _visibilityDistanceOverrideType
 
ZoneScriptm_zoneScript
 
uint32 _zoneId
 
uint32 _areaId
 
float _floorZ
 
bool _outdoors
 
LiquidData _liquidData
 
bool _updatePositionData
 
Transportm_transport
 
- Protected Attributes inherited from Object
uint16 m_objectType
 
TypeID m_objectTypeId
 
uint16 m_updateFlag
 
union { 
 
   int32 *   m_int32Values 
 
   uint32 *   m_uint32Values 
 
   float *   m_floatValues 
 
};  
 
UpdateMask _changesMask
 
uint16 m_valuesCount
 
uint16 _fieldNotifyFlags
 
bool m_objectUpdated
 

Private Member Functions

virtual bool _IsWithinDist (WorldObject const *obj, float dist2compare, bool is3D, bool useBoundingRadius=true) const
 
bool CanNeverSee (WorldObject const *obj) const
 
virtual bool CanAlwaysSee (WorldObject const *) const
 
bool CanDetect (WorldObject const *obj, bool ignoreStealth, bool checkClient, bool checkAlert=false) const
 
bool CanDetectInvisibilityOf (WorldObject const *obj) const
 
bool CanDetectStealthOf (WorldObject const *obj, bool checkAlert=false) const
 
void RemoveFromMapVisibilityOverrideContainers ()
 
void AddToMapVisibilityOverrideContainers ()
 

Private Attributes

Mapm_currMap
 
Milliseconds _heartbeatTimer
 
uint32 m_InstanceId
 
uint32 m_phaseMask
 
bool m_useCombinedPhases
 
uint16 m_notifyflags
 
uint16 m_executed_notifies
 
GuidUnorderedSet _allowedLooters
 
ObjectVisibilityContainer _objectVisibilityContainer
 

Additional Inherited Members

- Static Public Member Functions inherited from Object
static ObjectGuid GetGUID (Object const *o)
 
- Static Public Member Functions inherited from Position
static float NormalizeOrientation (float o)
 

Detailed Description

Constructor & Destructor Documentation

◆ WorldObject()

WorldObject::WorldObject ( )
explicitprotected
1039 : WorldLocation(),
1044{
1047
1048 sScriptMgr->OnWorldObjectCreate(this);
1049}
#define INVALID_HEIGHT
Definition GridTerrainData.h:27
@ PHASEMASK_NORMAL
Definition Object.h:62
static constexpr Milliseconds HEARTBEAT_INTERVAL
Definition Object.h:101
#define sScriptMgr
Definition ScriptMgr.h:728
@ SERVERSIDE_VISIBILITY_GHOST
Definition SharedDefines.h:1285
@ GHOST_VISIBILITY_ALIVE
Definition SharedDefines.h:1292
@ GHOST_VISIBILITY_GHOST
Definition SharedDefines.h:1293
void SetValue(FLAG_TYPE flag, T_VALUES value)
Definition Object.h:395
Definition Position.h:256
bool _updatePositionData
Definition Object.h:745
std::string m_name
Definition Object.h:734
uint16 m_executed_notifies
Definition Object.h:771
bool _outdoors
Definition Object.h:743
uint16 m_notifyflags
Definition Object.h:770
uint32 m_InstanceId
Definition Object.h:765
uint32 _zoneId
Definition Object.h:740
uint32 LastUsedScriptID
Definition Object.h:680
float _floorZ
Definition Object.h:742
ZoneScript * m_zoneScript
Definition Object.h:737
bool m_useCombinedPhases
Definition Object.h:767
uint32 m_phaseMask
Definition Object.h:766
LiquidData _liquidData
Definition Object.h:744
uint32 _areaId
Definition Object.h:741
bool m_isActive
Definition Object.h:735
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibilityDetect
Definition Object.h:614
Milliseconds _heartbeatTimer
Definition Object.h:763
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibility
Definition Object.h:613
VisibilityDistanceType _visibilityDistanceOverrideType
Definition Object.h:736
Map * m_currMap
Definition Object.h:762
ObjectVisibilityContainer _objectVisibilityContainer
Definition Object.h:788
Transport * m_transport
Definition Object.h:748

References GHOST_VISIBILITY_ALIVE, GHOST_VISIBILITY_GHOST, m_serverSideVisibility, m_serverSideVisibilityDetect, SERVERSIDE_VISIBILITY_GHOST, FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::SetValue(), and sScriptMgr.

◆ ~WorldObject()

WorldObject::~WorldObject ( )
override
87{
88 sScriptMgr->OnWorldObjectDestroy(this);
89}

References sScriptMgr.

Member Function Documentation

◆ _Create()

void WorldObject::_Create ( ObjectGuid::LowType  guidlow,
HighGuid  guidhigh,
uint32  phaseMask 
)
1148{
1149 Object::_Create(guidlow, 0, guidhigh);
1150 SetPhaseMask(phaseMask, false);
1151}
void _Create(ObjectGuid::LowType guidlow, uint32 entry, HighGuid guidhigh)
Definition Object.cpp:123
virtual void SetPhaseMask(uint32 newPhaseMask, bool update)
Definition Object.cpp:2887

References Object::_Create(), and SetPhaseMask().

Referenced by Corpse::Create(), and DynamicObject::CreateDynamicObject().

◆ _IsWithinDist()

bool WorldObject::_IsWithinDist ( WorldObject const *  obj,
float  dist2compare,
bool  is3D,
bool  useBoundingRadius = true 
) const
privatevirtual

Reimplemented in GameObject.

1236{
1237 float sizefactor = useBoundingRadius ? GetObjectSize() + obj->GetObjectSize() : 0.0f;
1238 float maxdist = dist2compare + sizefactor;
1239
1240 if (m_transport && obj->GetTransport() && obj->GetTransport()->GetGUID() == m_transport->GetGUID())
1241 {
1242 float dtx = m_movementInfo.transport.pos.m_positionX - obj->m_movementInfo.transport.pos.m_positionX;
1243 float dty = m_movementInfo.transport.pos.m_positionY - obj->m_movementInfo.transport.pos.m_positionY;
1244 float disttsq = dtx * dtx + dty * dty;
1245 if (is3D)
1246 {
1247 float dtz = m_movementInfo.transport.pos.m_positionZ - obj->m_movementInfo.transport.pos.m_positionZ;
1248 disttsq += dtz * dtz;
1249 }
1250 return disttsq < (maxdist * maxdist);
1251 }
1252
1253 float dx = GetPositionX() - obj->GetPositionX();
1254 float dy = GetPositionY() - obj->GetPositionY();
1255 float distsq = dx * dx + dy * dy;
1256 if (is3D)
1257 {
1258 float dz = GetPositionZ() - obj->GetPositionZ();
1259 distsq += dz * dz;
1260 }
1261
1262 return distsq < maxdist * maxdist;
1263}
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
Transport * GetTransport() const
Definition Object.h:683
MovementInfo m_movementInfo
Definition Object.h:693
float GetObjectSize() const
Definition Object.cpp:2785
Position pos
Definition Object.h:309
struct MovementInfo::TransportInfo transport
float m_positionZ
Definition Position.h:57
float m_positionX
Definition Position.h:55
float GetPositionZ() const
Definition Position.h:123
float m_positionY
Definition Position.h:56
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References Object::GetGUID(), GetObjectSize(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GetTransport(), m_movementInfo, Position::m_positionX, Position::m_positionY, Position::m_positionZ, m_transport, MovementInfo::TransportInfo::pos, and MovementInfo::transport.

Referenced by IsWithinDist(), and IsWithinDistInMap().

◆ AddAllowedLooter()

void WorldObject::AddAllowedLooter ( ObjectGuid  guid)
3101{
3102 _allowedLooters.insert(guid);
3103}
GuidUnorderedSet _allowedLooters
Definition Object.h:786

References _allowedLooters.

Referenced by GameObject::SetLootRecipient(), and Creature::SetLootRecipient().

◆ AddObjectToRemoveList()

void WorldObject::AddObjectToRemoveList ( )
2148{
2150
2151 Map* map = FindMap();
2152 if (!map)
2153 {
2154 LOG_ERROR("entities.object", "Object {} at attempt add to move list not have valid map (Id: {}).", GetGUID().ToString(), GetMapId());
2155 return;
2156 }
2157
2158 map->AddObjectToRemoveList(this);
2159}
#define ASSERT
Definition Errors.h:68
#define LOG_ERROR(filterType__,...)
Definition Log.h:158
Definition Map.h:163
void AddObjectToRemoveList(WorldObject *obj)
Definition Map.cpp:1790
uint32 * m_uint32Values
Definition Object.h:260
ObjectGuid GetGUID() const
Definition Object.h:114
uint32 GetMapId() const
Definition Position.h:281
Map * FindMap() const
Definition Object.h:622
std::string ToString() const
Definition Position.cpp:59

References Map::AddObjectToRemoveList(), ASSERT, FindMap(), Object::GetGUID(), WorldLocation::GetMapId(), LOG_ERROR, Object::m_uint32Values, and Position::ToString().

Referenced by MotionTransport::DelayedTeleportTransport(), Battleground::DelCreature(), OPvPCapturePoint::DelCreature(), GameObject::Delete(), OPvPCapturePointNA::DespawnCreatures(), CinematicMgr::EndCinematic(), ResetEncounterEvent::Execute(), npc_commandscript::HandleNpcDeleteCommand(), SmartScript::ProcessAction(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ProcessEvent(), DynamicObject::Remove(), Player::RemovePet(), go_firework_show::SpawnNextFirework(), npc_midsummer_bonfire::StampOut(), MotionTransport::UnloadStaticPassengers(), TempSummon::UnSummon(), Totem::UnSummon(), and outdoorpvp_na_halaa_creatures::UpdateAI().

◆ AddToMapVisibilityOverrideContainers()

void WorldObject::AddToMapVisibilityOverrideContainers ( )
private
1126{
1128 return;
1129
1130 if (!IsInWorld())
1131 return;
1132
1133 if (IsFarVisible())
1135 else if (IsZoneWideVisible())
1137}
void AddWorldObjectToFarVisibleMap(WorldObject *obj)
Definition Map.cpp:614
void AddWorldObjectToZoneWideVisibleMap(uint32 zoneId, WorldObject *obj)
Definition Map.cpp:653
bool IsInWorld() const
Definition Object.h:108
Map * GetMap() const
Definition Object.h:621
bool IsVisibilityOverridden() const
Definition Object.h:669
bool IsFarVisible() const
Definition Object.h:671
bool IsZoneWideVisible() const
Definition Object.h:670

References _zoneId, Map::AddWorldObjectToFarVisibleMap(), Map::AddWorldObjectToZoneWideVisibleMap(), GetMap(), IsFarVisible(), Object::IsInWorld(), IsVisibilityOverridden(), and IsZoneWideVisible().

Referenced by SetVisibilityDistanceOverride().

◆ AddToNotify()

void WorldObject::AddToNotify ( uint16  f)
2968{
2969 if (!(m_notifyflags & f))
2970 if (Unit* u = ToUnit())
2971 {
2973 {
2974 uint32 EVENT_VISIBILITY_DELAY = u->FindMap() ? DynamicVisibilityMgr::GetVisibilityNotifyDelay(u->FindMap()->GetEntry()->map_type) : 1000;
2975
2976 uint32 diff = getMSTimeDiff(u->m_last_notify_mstime, GameTime::GetGameTimeMS().count());
2977 if (diff >= EVENT_VISIBILITY_DELAY / 2)
2978 EVENT_VISIBILITY_DELAY /= 2;
2979 else
2980 EVENT_VISIBILITY_DELAY -= diff;
2981 u->m_delayed_unit_relocation_timer = EVENT_VISIBILITY_DELAY;
2982 u->m_last_notify_mstime = GameTime::GetGameTimeMS().count() + EVENT_VISIBILITY_DELAY - 1;
2983 }
2984 else if (f & NOTIFY_AI_RELOCATION)
2985 {
2986 u->m_delayed_unit_ai_notify_timer = u->FindMap() ? DynamicVisibilityMgr::GetAINotifyDelay(u->FindMap()->GetEntry()->map_type) : 500;
2987 }
2988
2989 m_notifyflags |= f;
2990 }
2991}
std::uint32_t uint32
Definition Define.h:107
@ NOTIFY_AI_RELOCATION
Definition Object.h:69
@ NOTIFY_VISIBILITY_CHANGED
Definition Object.h:70
uint32 getMSTimeDiff(uint32 oldMSTime, uint32 newMSTime)
Definition Timer.h:110
static uint32 GetAINotifyDelay(uint32 map_type)
Definition DynamicVisibility.h:52
static uint32 GetVisibilityNotifyDelay(uint32 map_type)
Definition DynamicVisibility.h:51
Unit * ToUnit()
Definition Object.h:210
Definition Unit.h:628
Milliseconds GetGameTimeMS()
Definition GameTime.cpp:43

References DynamicVisibilityMgr::GetAINotifyDelay(), GameTime::GetGameTimeMS(), getMSTimeDiff(), DynamicVisibilityMgr::GetVisibilityNotifyDelay(), m_notifyflags, NOTIFY_AI_RELOCATION, NOTIFY_VISIBILITY_CHANGED, and Object::ToUnit().

Referenced by Unit::ExecuteDelayedUnitRelocationEvent(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureCreate(), Unit::SetContestedPvP(), Player::UpdateObjectVisibility(), and Unit::UpdateObjectVisibility().

◆ AddToObjectUpdate()

void WorldObject::AddToObjectUpdate ( )
overridevirtual

Implements Object.

3016{
3017 GetMap()->AddUpdateObject(this);
3018}
void AddUpdateObject(Object *obj)
Definition Map.h:486

References Map::AddUpdateObject(), and GetMap().

◆ AddToWorld()

void WorldObject::AddToWorld ( )
overridevirtual

Reimplemented from Object.

1198{
1202
1203 if (IsZoneWideVisible())
1205}
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, float x, float y, float z) const
Definition Map.cpp:1294
void AddObjectToPendingUpdateList(WorldObject *obj)
Definition Map.cpp:561
virtual void AddToWorld()
Definition Object.cpp:141
uint32 GetPhaseMask() const
Definition Object.h:513

References _areaId, _zoneId, Map::AddObjectToPendingUpdateList(), Object::AddToWorld(), Map::AddWorldObjectToZoneWideVisibleMap(), GetMap(), GetPhaseMask(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Map::GetZoneAndAreaId(), and IsZoneWideVisible().

Referenced by DynamicObject::AddToWorld(), GameObject::AddToWorld(), and Unit::AddToWorld().

◆ BuildUpdate()

void WorldObject::BuildUpdate ( UpdateDataMapType data_map)
overridevirtual

Reimplemented from Object.

2994{
2995 // Build update for self
2996 if (IsPlayer())
2997 BuildFieldsUpdate(ToPlayer(), data_map);
2998
2999 // Build update for visible players
3000 DoForAllVisiblePlayers([this, &data_map](Player* player)
3001 {
3002 BuildFieldsUpdate(player, data_map);
3003 });
3004
3005 ClearUpdateMask(false);
3006}
bool IsPlayer() const
Definition Object.h:201
Player * ToPlayer()
Definition Object.h:202
void BuildFieldsUpdate(Player *, UpdateDataMapType &)
Definition Object.cpp:534
void ClearUpdateMask(bool remove)
Definition Object.cpp:522
Definition Player.h:1071
void DoForAllVisiblePlayers(Worker &&worker)
Definition Object.h:575

References Object::BuildFieldsUpdate(), Object::ClearUpdateMask(), DoForAllVisiblePlayers(), Object::IsPlayer(), and Object::ToPlayer().

◆ CanAlwaysSee()

virtual bool WorldObject::CanAlwaysSee ( WorldObject const *  ) const
inlineprivatevirtual

Reimplemented in Creature, and Player.

776{ return false; }

Referenced by CanSeeOrDetect().

◆ CanBeAddedToMapUpdateList()

bool WorldObject::CanBeAddedToMapUpdateList ( )
3144{
3145 switch (GetTypeId())
3146 {
3147 case TYPEID_UNIT:
3148 return IsCreature();
3150 case TYPEID_GAMEOBJECT:
3151 return true;
3152 default:
3153 return false;
3154 }
3155
3156 return false;
3157}
@ TYPEID_DYNAMICOBJECT
Definition ObjectGuid.h:38
@ TYPEID_GAMEOBJECT
Definition ObjectGuid.h:37
@ TYPEID_UNIT
Definition ObjectGuid.h:35
TypeID GetTypeId() const
Definition Object.h:128
bool IsCreature() const
Definition Object.h:205

References Object::GetTypeId(), Object::IsCreature(), TYPEID_DYNAMICOBJECT, TYPEID_GAMEOBJECT, and TYPEID_UNIT.

Referenced by Map::AddObjectToPendingUpdateList(), and Map::RemoveObjectFromMapUpdateList().

◆ CanDetect()

bool WorldObject::CanDetect ( WorldObject const *  obj,
bool  ignoreStealth,
bool  checkClient,
bool  checkAlert = false 
) const
private
1887{
1888 WorldObject const* seer = this;
1889
1890 // Pets don't have detection, they use the detection of their masters
1891 if (Unit const* thisUnit = ToUnit())
1892 if (Unit* controller = thisUnit->GetCharmerOrOwner())
1893 seer = controller;
1894
1895 if (obj->IsAlwaysDetectableFor(seer) || GetEntry() == WORLD_TRIGGER) // xinef: World Trigger can detect all objects, used for wild gameobjects without owner!
1896 return true;
1897
1898 if (!ignoreStealth)
1899 {
1900 if (!seer->CanDetectInvisibilityOf(obj)) // xinef: added ignoreStealth, allow AoE spells to hit invisible targets!
1901 {
1902 return false;
1903 }
1904
1905 if (!seer->CanDetectStealthOf(obj, checkAlert))
1906 {
1907 // xinef: ignore units players have at client, this cant be cheated!
1908 if (checkClient)
1909 {
1910 if (!IsPlayer() || !ToPlayer()->HaveAtClient(obj))
1911 return false;
1912 }
1913 else
1914 return false;
1915 }
1916 }
1917
1918 return true;
1919}
#define WORLD_TRIGGER
Definition Unit.h:39
uint32 GetEntry() const
Definition Object.h:116
Unit * GetCharmerOrOwner() const
Definition Unit.h:1231
Definition Object.h:472
bool CanDetectStealthOf(WorldObject const *obj, bool checkAlert=false) const
Definition Object.cpp:1984
bool CanDetectInvisibilityOf(WorldObject const *obj) const
Definition Object.cpp:1921

References CanDetectInvisibilityOf(), CanDetectStealthOf(), Unit::GetCharmerOrOwner(), Object::GetEntry(), IsAlwaysDetectableFor(), Object::IsPlayer(), Object::ToPlayer(), Object::ToUnit(), and WORLD_TRIGGER.

Referenced by CanSeeOrDetect().

◆ CanDetectInvisibilityOf()

bool WorldObject::CanDetectInvisibilityOf ( WorldObject const *  obj) const
private
1922{
1923 uint32 mask = obj->m_invisibility.GetFlags() & m_invisibilityDetect.GetFlags();
1924 // xinef: include invisible flags of caster in the mask, 2 invisible objects should be able to detect eachother
1925 mask |= obj->m_invisibility.GetFlags() & m_invisibility.GetFlags();
1926
1927 // Check for not detected types
1928 if (mask != obj->m_invisibility.GetFlags())
1929 return false;
1930
1931 // It isn't possible in invisibility to detect something that can't detect the invisible object
1932 // (it's at least true for spell: 66)
1933 // It seems like that only Units are affected by this check (couldn't see arena doors with preparation invisibility)
1934 if (obj->ToUnit())
1935 {
1936 // Permanently invisible creatures should be able to engage non-invisible targets.
1937 // ex. Skulking Witch (20882) / Greater Invisibility (16380)
1938 bool isPermInvisibleCreature = false;
1939 if (Creature const* baseObj = ToCreature())
1940 {
1941 Unit::AuraEffectList const& auraEffects = baseObj->GetAuraEffectsByType(SPELL_AURA_MOD_INVISIBILITY);
1942 for (AuraEffect* const effect : auraEffects)
1943 {
1944 if (SpellInfo const* spell = effect->GetSpellInfo())
1945 {
1946 if (spell->GetMaxDuration() == -1)
1947 {
1948 isPermInvisibleCreature = true;
1949 }
1950 }
1951 }
1952 }
1953
1954 if (!isPermInvisibleCreature)
1955 {
1956 uint32 objMask = m_invisibility.GetFlags() & obj->m_invisibilityDetect.GetFlags();
1957 // xinef: include invisible flags of caster in the mask, 2 invisible objects should be able to detect eachother
1958 objMask |= m_invisibility.GetFlags() & obj->m_invisibility.GetFlags();
1959 if (objMask != m_invisibility.GetFlags())
1960 return false;
1961 }
1962 }
1963
1964 for (uint32 i = 0; i < TOTAL_INVISIBILITY_TYPES; ++i)
1965 {
1966 if (!(mask & (1 << i)))
1967 continue;
1968
1969 // xinef: visible for the same invisibility type:
1970 if (m_invisibility.GetValue(InvisibilityType(i)) && obj->m_invisibility.GetValue(InvisibilityType(i)))
1971 continue;
1972
1973 int32 objInvisibilityValue = obj->m_invisibility.GetValue(InvisibilityType(i));
1974 int32 ownInvisibilityDetectValue = m_invisibilityDetect.GetValue(InvisibilityType(i));
1975
1976 // Too low value to detect
1977 if (ownInvisibilityDetectValue < objInvisibilityValue)
1978 return false;
1979 }
1980
1981 return true;
1982}
std::int32_t int32
Definition Define.h:103
InvisibilityType
Definition SharedDefines.h:1265
@ TOTAL_INVISIBILITY_TYPES
Definition SharedDefines.h:1279
@ SPELL_AURA_MOD_INVISIBILITY
Definition SpellAuraDefines.h:81
Definition SpellAuraEffects.h:39
Definition Creature.h:47
T_FLAGS GetFlags() const
Definition Object.h:389
T_VALUES GetValue(FLAG_TYPE flag) const
Definition Object.h:394
Creature * ToCreature()
Definition Object.h:206
Definition SpellInfo.h:316
std::vector< AuraEffect * > AuraEffectList
Definition Unit.h:644
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibility
Definition Object.h:610
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibilityDetect
Definition Object.h:611

References FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetFlags(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetValue(), m_invisibility, m_invisibilityDetect, SPELL_AURA_MOD_INVISIBILITY, Object::ToCreature(), TOTAL_INVISIBILITY_TYPES, and Object::ToUnit().

Referenced by CanDetect().

◆ CanDetectStealthOf()

bool WorldObject::CanDetectStealthOf ( WorldObject const *  obj,
bool  checkAlert = false 
) const
private
1985{
1986 // Combat reach is the minimal distance (both in front and behind),
1987 // and it is also used in the range calculation.
1988 // One stealth point increases the visibility range by 0.3 yard.
1989
1990 if (!obj->m_stealth.GetFlags())
1991 return true;
1992
1993 // dead players shouldnt be able to detect stealth on arenas
1995 if (!ToPlayer()->IsAlive())
1996 return false;
1997
1998 float distance = GetExactDist(obj);
1999 float combatReach = 0.0f;
2000
2001 if (IsUnit())
2002 combatReach = ((Unit*)this)->GetCombatReach();
2003
2004 if (distance < combatReach)
2005 return true;
2006
2007 if (!HasInArc(M_PI, obj))
2008 return false;
2009
2010 for (uint32 i = 0; i < TOTAL_STEALTH_TYPES; ++i)
2011 {
2012 if (!(obj->m_stealth.GetFlags() & (1 << i)))
2013 continue;
2014
2015 if (IsUnit())
2016 if (((Unit*)this)->HasAuraTypeWithMiscvalue(SPELL_AURA_DETECT_STEALTH, i))
2017 return true;
2018
2019 // Starting points
2020 int32 detectionValue = 30;
2021
2022 // Level difference: 5 point / level, starting from level 1.
2023 // There may be spells for this and the starting points too, but
2024 // not in the DBCs of the client.
2025 detectionValue += int32(getLevelForTarget(obj) - 1) * 5;
2026
2027 // Apply modifiers
2028 detectionValue += m_stealthDetect.GetValue(StealthType(i));
2029 if (obj->isType(TYPEMASK_GAMEOBJECT))
2030 {
2031 detectionValue += 30; // pussywizard: increase detection range for gameobjects (ie. traps)
2032 if (Unit* owner = ((GameObject*)obj)->GetOwner())
2033 detectionValue -= int32(owner->getLevelForTarget(this) - 1) * 5;
2034 }
2035
2036 detectionValue -= obj->m_stealth.GetValue(StealthType(i));
2037
2038 // Calculate max distance
2039 float visibilityRange = float(detectionValue) * 0.3f + combatReach;
2040
2041 Unit const* unit = ToUnit();
2042
2043 // If this unit is an NPC then player detect range doesn't apply
2044 if (unit && unit->IsPlayer() && visibilityRange > MAX_PLAYER_STEALTH_DETECT_RANGE)
2045 visibilityRange = MAX_PLAYER_STEALTH_DETECT_RANGE;
2046
2047 if (checkAlert)
2048 visibilityRange += (visibilityRange * 0.08f) + 1.5f;
2049
2050 Unit const* targetUnit = obj->ToUnit();
2051
2052 // If checking for alert, and creature's visibility range is greater than aggro distance, No alert
2053 if (checkAlert && unit && unit->ToCreature() && visibilityRange >= unit->ToCreature()->GetAttackDistance(targetUnit) + unit->ToCreature()->m_CombatDistance)
2054 return false;
2055
2056 if (distance > visibilityRange)
2057 return false;
2058 }
2059
2060 return true;
2061}
@ TYPEMASK_GAMEOBJECT
Definition ObjectGuid.h:51
@ TYPEMASK_PLAYER
Definition ObjectGuid.h:50
StealthType
Definition SharedDefines.h:1257
@ TOTAL_STEALTH_TYPES
Definition SharedDefines.h:1261
@ SPELL_AURA_DETECT_STEALTH
Definition SpellAuraDefines.h:291
#define MAX_PLAYER_STEALTH_DETECT_RANGE
Definition Unit.h:623
float GetAttackDistance(Unit const *player) const
Definition Creature.cpp:3527
float m_CombatDistance
Definition Creature.h:377
Definition GameObject.h:120
bool IsUnit() const
Definition Object.h:209
bool isType(uint16 mask) const
Definition Object.h:129
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealthDetect
Definition Object.h:608
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealth
Definition Object.h:607
virtual uint8 getLevelForTarget(WorldObject const *) const
Definition Object.h:565
float GetExactDist(float x, float y, float z) const
Definition Position.h:182
bool HasInArc(float arcangle, const Position *pos, float targetRadius=0.0f) const
Definition Position.cpp:148

References Creature::GetAttackDistance(), Position::GetExactDist(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetFlags(), getLevelForTarget(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetValue(), Position::HasInArc(), Object::IsPlayer(), Object::isType(), Object::IsUnit(), Creature::m_CombatDistance, m_stealth, m_stealthDetect, MAX_PLAYER_STEALTH_DETECT_RANGE, SPELL_AURA_DETECT_STEALTH, Object::ToCreature(), Object::ToPlayer(), TOTAL_STEALTH_TYPES, Object::ToUnit(), TYPEMASK_GAMEOBJECT, and TYPEMASK_PLAYER.

Referenced by CanDetect().

◆ CanNeverSee()

bool WorldObject::CanNeverSee ( WorldObject const *  obj) const
private
1874{
1875 if (!IsInWorld())
1876 return true;
1877
1878 if (obj->IsNeverVisible())
1879 return true;
1880
1881 if (IsCreature() && obj->IsCreature())
1882 return GetMap() != obj->GetMap() || (!InSamePhase(obj) && ToUnit()->GetVehicleBase() != obj && this != obj->ToUnit()->GetVehicleBase());
1883 return GetMap() != obj->GetMap() || !InSamePhase(obj);
1884}
Unit * GetVehicleBase() const
Definition Unit.cpp:18823
bool InSamePhase(WorldObject const *obj) const
Definition Object.h:514

References GetMap(), Unit::GetVehicleBase(), InSamePhase(), Object::IsCreature(), Object::IsInWorld(), IsNeverVisible(), and Object::ToUnit().

Referenced by CanSeeOrDetect().

◆ CanSeeOrDetect()

bool WorldObject::CanSeeOrDetect ( WorldObject const *  obj,
bool  ignoreStealth = false,
bool  distanceCheck = false,
bool  checkAlert = false 
) const
1730{
1731 if (this == obj)
1732 return true;
1733
1734 if (CanNeverSee(obj))
1735 return false;
1736
1737 if (obj->IsAlwaysVisibleFor(this) || CanAlwaysSee(obj))
1738 return true;
1739
1740 // Creature scripts
1741 if (Creature const* cObj = obj->ToCreature())
1742 {
1743 if (Player const* player = ToPlayer())
1744 {
1745 if (cObj->IsAIEnabled && !cObj->AI()->CanBeSeen(player))
1746 {
1747 return false;
1748 }
1749
1750 ConditionList conditions = sConditionMgr->GetConditionsForNotGroupedEntry(CONDITION_SOURCE_TYPE_CREATURE_VISIBILITY, cObj->GetEntry());
1751 if (!sConditionMgr->IsObjectMeetToConditions((WorldObject*)this, (WorldObject*)obj, conditions))
1752 {
1753 return false;
1754 }
1755 }
1756 }
1757
1758 // Gameobject scripts
1759 if (GameObject const* goObj = obj->ToGameObject())
1760 {
1761 if (ToPlayer() && !goObj->AI()->CanBeSeen(ToPlayer()))
1762 {
1763 return false;
1764 }
1765 }
1766
1767 // pussywizard: arena spectator
1768 if (obj->IsPlayer())
1769 if (((Player const*)obj)->IsSpectator() && ((Player const*)obj)->FindMap()->IsBattleArena())
1770 return false;
1771
1772 bool corpseVisibility = false;
1773 if (distanceCheck)
1774 {
1775 bool corpseCheck = false;
1776 WorldObject const* viewpoint = this;
1777 if (Player const* thisPlayer = ToPlayer())
1778 {
1779 viewpoint = thisPlayer->GetSeer();
1780
1781 if (Creature const* creature = obj->ToCreature())
1782 {
1783 if (TempSummon const* tempSummon = creature->ToTempSummon())
1784 {
1785 if (tempSummon->IsVisibleBySummonerOnly() && GetGUID() != tempSummon->GetSummonerGUID())
1786 {
1787 return false;
1788 }
1789 }
1790 }
1791
1792 if (thisPlayer->isDead() && thisPlayer->GetHealth() > 0 && // Cheap way to check for ghost state
1794 {
1795 if (Corpse* corpse = thisPlayer->GetCorpse())
1796 {
1797 corpseCheck = true;
1798 if (corpse->IsWithinDist(thisPlayer, GetSightRange(obj), false))
1799 if (corpse->IsWithinDist(obj, GetSightRange(obj), false))
1800 corpseVisibility = true;
1801 }
1802 }
1803
1804 // our additional checks
1805 if (Unit const* target = obj->ToUnit())
1806 {
1807 // xinef: don't allow to detect vehicle accessory if you can't see vehicle base!
1808 if (Unit const* vehicle = target->GetVehicleBase())
1809 if (!thisPlayer->HaveAtClient(vehicle))
1810 return false;
1811
1812 // pussywizard: during arena preparation, don't allow to detect pets if can't see its owner (spoils enemy arena frames)
1813 if (target->IsPet() && target->GetOwnerGUID() && target->FindMap()->IsBattleArena() && GetGUID() != target->GetOwnerGUID())
1814 if (BattlegroundMap* bgmap = target->FindMap()->ToBattlegroundMap())
1815 if (Battleground* bg = bgmap->GetBG())
1816 if (bg->GetStatus() < STATUS_IN_PROGRESS && !thisPlayer->HaveAtClient(target->GetOwnerGUID()))
1817 return false;
1818 }
1819
1820 if (thisPlayer->GetFarSightDistance() && !thisPlayer->isInFront(obj))
1821 return false;
1822 }
1823
1824 // Xinef: check reversely obj vs viewpoint, object could be a gameObject which overrides _IsWithinDist function to include gameobject size
1825 if (!corpseCheck && !viewpoint->IsWithinDist(obj, GetSightRange(obj), false))
1826 return false;
1827 }
1828
1829 // GM visibility off or hidden NPC
1831 {
1832 // Stop checking other things for GMs
1834 return true;
1835 }
1836 else
1838
1839 // Ghost players, Spirit Healers, and some other NPCs
1841 {
1842 // Alive players can see dead players in some cases, but other objects can't do that
1843 if (Player const* thisPlayer = ToPlayer())
1844 {
1845 if (Player const* objPlayer = obj->ToPlayer())
1846 {
1847 if (thisPlayer->GetTeamId() != objPlayer->GetTeamId() || !thisPlayer->IsGroupVisibleFor(objPlayer))
1848 return false;
1849 }
1850 else
1851 return false;
1852 }
1853 else
1854 return false;
1855 }
1856
1857 if (obj->IsInvisibleDueToDespawn())
1858 return false;
1859
1860 // pussywizard: arena spectator
1861 if (this->IsPlayer())
1862 if (((Player const*)this)->IsSpectator() && ((Player const*)this)->FindMap()->IsBattleArena() && (obj->m_invisibility.GetFlags() || obj->m_stealth.GetFlags()))
1863 return false;
1864
1865 if (!CanDetect(obj, ignoreStealth, !distanceCheck, checkAlert))
1866 {
1867 return false;
1868 }
1869
1870 return true;
1871}
@ STATUS_IN_PROGRESS
Definition Battleground.h:193
#define sConditionMgr
Definition ConditionMgr.h:291
@ CONDITION_SOURCE_TYPE_CREATURE_VISIBILITY
Definition ConditionMgr.h:154
std::list< Condition * > ConditionList
Definition ConditionMgr.h:238
@ SERVERSIDE_VISIBILITY_GM
Definition SharedDefines.h:1284
Definition Map.h:680
Definition Battleground.h:294
Definition Corpse.h:49
BattlegroundMap * ToBattlegroundMap()
Definition Map.h:380
GameObject * ToGameObject()
Definition Object.h:214
Definition TemporarySummon.h:40
TempSummon * ToTempSummon()
Definition Unit.h:694
virtual bool IsInvisibleDueToDespawn() const
Definition Object.h:758
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
Definition Object.cpp:1345
virtual float GetSightRange(WorldObject const *target=nullptr) const
Definition Object.cpp:1691
bool CanNeverSee(WorldObject const *obj) const
Definition Object.cpp:1873
bool CanDetect(WorldObject const *obj, bool ignoreStealth, bool checkClient, bool checkAlert=false) const
Definition Object.cpp:1886
virtual bool CanAlwaysSee(WorldObject const *) const
Definition Object.h:776

References CanAlwaysSee(), CanDetect(), CanNeverSee(), CONDITION_SOURCE_TYPE_CREATURE_VISIBILITY, FindMap(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetFlags(), Object::GetGUID(), GetSightRange(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetValue(), Unit::GetVehicleBase(), GHOST_VISIBILITY_GHOST, IsAlwaysVisibleFor(), IsInvisibleDueToDespawn(), Object::IsPlayer(), IsWithinDist(), m_invisibility, m_serverSideVisibility, m_serverSideVisibilityDetect, m_stealth, sConditionMgr, SERVERSIDE_VISIBILITY_GHOST, SERVERSIDE_VISIBILITY_GM, STATUS_IN_PROGRESS, Map::ToBattlegroundMap(), Object::ToCreature(), Object::ToGameObject(), Object::ToPlayer(), Unit::ToTempSummon(), and Object::ToUnit().

Referenced by Unit::_IsValidAssistTarget(), Unit::_IsValidAttackTarget(), Creature::CanAssistTo(), SpellInfo::CheckTarget(), CreatureUnitRelocationWorker(), npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI::MoveInLineOfSight(), npc_pet_dk_ebon_gargoyle::MySelectNextTarget(), Acore::NearestAttackableUnitInObjectRangeCheck::operator()(), Acore::NearestVisibleDetectableContestedGuardUnitCheck::operator()(), Acore::VisibleNotifier::SendToSelf(), TotemAI::UpdateAI(), Player::UpdateVisibilityOf(), and Player::UpdateVisibilityOf().

◆ CleanupsBeforeDelete()

void WorldObject::CleanupsBeforeDelete ( bool  finalCleanup = true)
virtual

Reimplemented in DynamicObject, GameObject, Player, MotionTransport, StaticTransport, and Unit.

1140{
1141 if (IsInWorld())
1143
1144 m_Events.KillAllEvents(false); // non-delatable (currently cast spells) will not deleted now but it will deleted at call in Map::RemoveAllObjectsInRemoveList
1145}
void KillAllEvents(bool force)
Definition EventProcessor.cpp:82
void RemoveFromWorld() override
Definition Object.cpp:1207
EventProcessor m_Events
Definition Object.h:731

References Object::IsInWorld(), EventProcessor::KillAllEvents(), m_Events, and RemoveFromWorld().

Referenced by Map::AddObjectToRemoveList(), and DynamicObject::CleanupsBeforeDelete().

◆ ClearZoneScript()

void WorldObject::ClearZoneScript ( )
2351{
2352 m_zoneScript = nullptr;
2353}

References m_zoneScript.

◆ DestroyForVisiblePlayers()

void WorldObject::DestroyForVisiblePlayers ( )
2944{
2945 if (!IsInWorld())
2946 return;
2947
2949 for (VisiblePlayersMap::iterator itr = visiblePlayerMap.begin(); itr != visiblePlayerMap.end();)
2950 {
2951 Player* player = itr->second;
2952
2953 DestroyForPlayer(player);
2954
2955 // Clean up visibility references now
2957 }
2958}
std::unordered_map< ObjectGuid, Player * > VisiblePlayersMap
Definition ObjectVisibilityContainer.h:30
VisiblePlayersMap::iterator UnlinkVisibilityFromWorldObject(Player *player, VisiblePlayersMap::iterator itr)
Definition ObjectVisibilityContainer.cpp:98
VisiblePlayersMap & GetVisiblePlayersMap()
Definition ObjectVisibilityContainer.h:54
virtual void DestroyForPlayer(Player *target, bool onDeath=false) const
Definition Object.cpp:263
ObjectVisibilityContainer & GetObjectVisibilityContainer()
Definition Object.h:726

References Object::DestroyForPlayer(), GetObjectVisibilityContainer(), ObjectVisibilityContainer::GetVisiblePlayersMap(), Object::IsInWorld(), and ObjectVisibilityContainer::UnlinkVisibilityFromWorldObject().

Referenced by Creature::DisappearAndDie(), boss_cyanigosa::boss_cyanigosaAI::JustDied(), Creature::RemoveCorpse(), Map::RemoveCorpse(), RemoveFromWorld(), boss_urom::boss_uromAI::SpellHit(), GameObject::Update(), and go_witherbark_totem_bundle::go_witherbark_totem_bundleAI::UpdateAI().

◆ DoForAllVisiblePlayers()

template<typename Worker >
void WorldObject::DoForAllVisiblePlayers ( Worker &&  worker)
inline
576 {
577 for (auto const& kvPair : GetObjectVisibilityContainer().GetVisiblePlayersMap())
578 worker(kvPair.second);
579 }

References GetObjectVisibilityContainer(), and ObjectVisibilityContainer::GetVisiblePlayersMap().

Referenced by BuildUpdate().

◆ DoForAllVisibleWorldObjects()

template<typename Worker >
void WorldObject::DoForAllVisibleWorldObjects ( Worker &&  worker)
inline
584 {
585 // Not a player, no access to this map
587 if (!visibleWorldObjectsMap)
588 return;
589
590 for (auto const& kvPair : *visibleWorldObjectsMap)
591 worker(kvPair.second);
592 }
std::unordered_map< ObjectGuid, WorldObject * > VisibleWorldObjectsMap
Definition ObjectVisibilityContainer.h:29
VisibleWorldObjectsMap * GetVisibleWorldObjectsMap()
Definition ObjectVisibilityContainer.h:59

References GetObjectVisibilityContainer(), and ObjectVisibilityContainer::GetVisibleWorldObjectsMap().

Referenced by Player::SendQuestGiverStatusMultiple(), Player::SendTaxiNodeStatusMultiple(), Player::UpdateForQuestWorldObjects(), and Player::UpdateTriggerVisibility().

◆ FindMap()

Map * WorldObject::FindMap ( ) const
inline
622{ return m_currMap; }

References m_currMap.

Referenced by Player::_AddSpellCooldown(), Group::_cancelHomebindIfInstance(), Group::_homebindIfInstance(), Player::_SaveCharacter(), HomeMovementGenerator< Creature >::_setTargetLocation(), FormationMgr::AddCreatureToGroup(), AddObjectToRemoveList(), Pet::AddToWorld(), Vehicle::ApplyAllImmunities(), Spell::cancel(), CanSeeOrDetect(), Spell::CheckCast(), Group::CountTheRoll(), Spell::DoAllEffectOnTarget(), ScriptedAI::DoPlayMusic(), Spell::EffectPersistentAA(), AuraMunchingQueue::Execute(), EoEDrakeEnterVehicleEvent::Execute(), Spell::finish(), lfg::LFGMgr::FinishDungeon(), spell_dk_scourge_strike::HandleAfterHit(), WorldSession::HandleCastSpellOpcode(), WorldSession::HandleEnterPlayerVehicle(), WorldSession::HandlePlayerLoginOpcode(), spell_dk_blood_caked_blade::HandleProc(), ArenaSpectator::HandleResetCommand(), spell_temple_of_atal_hakkar_awaken_the_soulflayer::HandleSendEvent(), WorldSession::HandleSetDungeonDifficultyOpcode(), WorldSession::HandleSetRaidDifficultyOpcode(), misc_commandscript::HandleSkirmishCommand(), spectator_commandscript::HandleSpectatorLeaveCommand(), ArenaSpectator::HandleSpectatorSpectateCommand(), ArenaSpectator::HandleSpectatorWatchCommand(), Unit::HandleSpellClick(), IsInMap(), GameObject::IsInstanceGameobject(), boss_headless_horseman::JustDied(), Player::LoadFromDB(), Pet::LoadPetFromDB(), LogCommandUsage(), WorldSession::LogoutPlayer(), Map::MoveAllCreaturesInMoveList(), Map::MoveAllDynamicObjectsInMoveList(), Map::MoveAllGameObjectsInMoveList(), Player::NeedSendSpectatorData(), achievement_once_bitten_twice_shy::OnCheck(), Unit::PatchValuesUpdate(), spell_blood_queen_pact_of_the_darkfallen_dmg_aura::PeriodicTick(), SmartScript::ProcessAction(), FormationMgr::RemoveCreatureFromGroup(), Player::RemovePet(), Player::ResetInstances(), KillRewarder::Reward(), Spell::SendChannelStart(), Player::SendClearCooldown(), Spell::SendSpellStart(), setActive(), Player::setDeathState(), Unit::SetHealth(), Unit::SetMaxHealth(), Unit::SetMaxPower(), Player::SetMover(), Unit::SetPower(), Unit::setPowerType(), Player::SetSelection(), SetZoneScript(), SummonCreature(), Player::SummonPet(), OutdoorPvP::TeamCastSpell(), Player::Update(), and Unit::Update().

◆ FindNearestCreature()

Creature * WorldObject::FindNearestCreature ( uint32  entry,
float  range,
bool  alive = true 
) const
2447{
2448 Creature* creature = nullptr;
2449 Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck checker(*this, entry, alive, range);
2451 Cell::VisitObjects(this, searcher, range);
2452 return creature;
2453}
Definition GridNotifiers.h:449
static void VisitObjects(WorldObject const *obj, T &visitor, float radius)
Definition CellImpl.h:165

References Cell::VisitObjects().

Referenced by npc_thrall_bfu::npc_thrall_bfuAI::ActivateValimathrasPortal(), npc_commander_dawnforge::npc_commander_dawnforgeAI::CanStartEvent(), boss_murmur::CastSuppressionOOC(), spell_renew_skirmisher::CheckRequirement(), spell_challenge_veraku::CheckRequirement(), spell_disrupt_summoning_ritual::CheckRequirement(), spell_item_demon_broiled_surprise::CheckRequirement(), spell_q12943_shadow_vault_decree::CheckRequirement(), spell_item_map_of_the_geyser_fields::CheckSinkholes(), npc_q24545_lich_king::npc_q24545_lich_kingAI::CleanAll(), boss_grand_champion::boss_grand_championAI::DamageTaken(), npc_gunship::npc_gunshipAI::DamageTaken(), npc_terenas_menethil::npc_terenas_menethilAI::DamageTaken(), boss_the_lich_king::boss_the_lich_kingAI::DamageTaken(), boss_jarien::DoAction(), boss_sothos::DoAction(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::DoAction(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::DoAction(), npc_blade_of_azzinoth::DoAction(), boss_kelidan_the_breaker::DoAction(), go_transport_the_iron_eagle::EventInform(), go_transport_the_thundercaller::EventInform(), go_transport_the_purple_princess::EventInform(), UtherBatteredHiltEvent::Execute(), DelayedCastMincharEvent::Execute(), spell_the_lich_king_restore_soul::FilterTargets(), npc_dark_iron_guzzler::FindNextKeg(), npc_dark_iron_attack_generator::FinishAttackDueToWin(), npc_dark_iron_attack_generator::FinishEventDueToLoss(), GetClosestCreatureWithEntry(), npc_shattered_hand_scout::GetPorung(), npc_dark_iron_attack_generator::GetRandomBartender(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), spell_igb_on_gunship_deck_aura::HandleApply(), HandleBothDead(), npc_echo_of_medivh::HandleCellInitialData(), npc_echo_of_medivh::HandleCheat(), spell_panther_cage_key::HandleDummy(), spell_q12589_shoot_rjr::HandleDummy(), spell_valanar_kinetic_bomb_aura::HandleDummyTick(), spell_q11719_bloodspore_ruination_45997::HandleEffect(), spell_midsummer_ribbon_pole::HandleEffectPeriodic(), spell_pursuing_spikes_aura::HandleEffectPeriodic(), spell_gen_haunted_aura::HandleOnEffectRemove(), aura_class_call_siphon_blessing::HandlePeriodic(), spell_brewfest_toss_mug::HandleScriptEffect(), spell_q12943_shadow_vault_decree::HandleScriptEffect(), spell_q12620_the_lifewarden_wrath::HandleSendEvent(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::HideNozdormu(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::InstanceCleanup(), npc_flame_of_azzinoth::IsSummonedBy(), npc_vaelastrasz_the_red::npc_vaelastrasz_the_redAI::IsSummonedBy(), npc_oculus_drake::npc_oculus_drakeAI::IsSummonedBy(), npc_maiev_illidan::IsSummonedBy(), boss_rend_blackhand::boss_rend_blackhandAI::JustDied(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::JustDied(), npc_gunship::npc_gunshipAI::JustDied(), gunship_npc_AI::JustDied(), npc_q24545_vegard::npc_q24545_vegardAI::JustDied(), npc_enraged_spirit::npc_enraged_spiritAI::JustDied(), boss_jarien::JustDied(), boss_sothos::JustDied(), boss_cthun::JustDied(), boss_porung::JustDied(), npc_blackhand_incarcerator::npc_blackhand_incarceratorAI::JustEngagedWith(), boss_devourer_of_souls::boss_devourer_of_soulsAI::JustEngagedWith(), boss_eregos::boss_eregosAI::JustEngagedWith(), boss_razorscale::boss_razorscaleAI::JustEngagedWith(), boss_thorim_gauntlet_npcs::boss_thorim_gauntlet_npcsAI::JustEngagedWith(), npc_ulduar_storm_tempered_keeper::npc_ulduar_storm_tempered_keeperAI::JustEngagedWith(), boss_warlord_kalithresh::JustEngagedWith(), boss_thaddius_summon::boss_thaddius_summonAI::JustEngagedWith(), boss_festergut::boss_festergutAI::JustEngagedWith(), npc_sindragosa_trash::npc_sindragosa_trashAI::JustEngagedWith(), npc_kalecgos_kj::JustSummoned(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::MoveInLineOfSight(), npc_cw_area_trigger::npc_cw_area_triggerAI::MoveInLineOfSight(), npc_black_knight_graveyard::npc_black_knight_graveyardAI::MoveInLineOfSight(), npc_daranelle::npc_daranelleAI::MoveInLineOfSight(), npc_acherus_necromancer::npc_acherus_necromancerAI::MovementInform(), npc_gothik_the_harvester::npc_gothik_the_harvesterAI::MovementInform(), npc_sentinel_leader::MovementInform(), npc_sentinel_infiltrator::MovementInform(), boss_felmyst::MovementInform(), boss_ymiron::boss_ymironAI::MovementInform(), npc_janalai_hatcher::MovementInform(), npc_attracted_reef_bull::npc_attracted_reef_bullAI::MovementInform(), spell_q12987_read_pronouncement::OnApply(), go_ulduar_tower::OnDestroyed(), spell_bh_cleanse_quel_delar::OnEffect(), go_gong_of_bethekk::OnGossipHello(), go_resonite_cask::OnGossipHello(), go_duskwither_spire_power_source::OnGossipHello(), go_manticron_cube::OnGossipHello(), go_acherus_soul_prison::OnGossipHello(), go_ravager_cage::OnGossipHello(), go_bristlelimb_cage::OnGossipHello(), go_the_pearl_of_the_depths::OnGossipHello(), go_pressure_valve::OnGossipHello(), go_brazier::OnGossipHello(), go_finklestein_cauldron::OnGossipHello(), go_scourge_enclosure::OnGossipHello(), go_simon_cluster::OnGossipHello(), go_warmaul_prison::OnGossipHello(), go_scourge_cage::OnGossipHello(), go_arcane_prison::OnGossipHello(), go_jotunheim_cage::OnGossipHello(), go_dragonflayer_cage::OnGossipHello(), go_hive_pod::OnGossipHello(), go_mistwhisper_treasure::OnGossipHello(), npc_mcmanus::OnGossipSelect(), go_pumpkin_shrine::OnGossipSelect(), npc_mikhail::OnQuestAccept(), npc_tyrion::OnQuestAccept(), go_crystal_prison::OnQuestAccept(), go_crystalline_tear::OnQuestAccept(), go_loosely_turned_soil::OnQuestReward(), spell_item_instant_statue::OnRemove(), at_cthun_stomach_exit::OnTrigger(), at_q24545_frostmourne_cavern::OnTrigger(), AreaTrigger_at_scent_larkorwi::OnTrigger(), AreaTrigger_at_nats_landing::OnTrigger(), AreaTrigger_at_sentry_point::OnTrigger(), AreaTrigger_at_brewfest::OnTrigger(), at_blackrock_stadium::OnTrigger(), near_scarshield_infiltrator::OnTrigger(), at_scarshield_infiltrator::OnTrigger(), at_malfurion_stormrage::OnTrigger(), at_commander_dawnforge::OnTrigger(), item_incendiary_explosives::OnUse(), item_captured_frog::OnUse(), npc_akama_illidan::PathEndReached(), spell_quest_test_flight_charging::PerformKick(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ProcessEvent(), npc_blackhand_incarcerator::npc_blackhand_incarceratorAI::Reset(), boss_rend_blackhand::boss_rend_blackhandAI::Reset(), boss_victor_nefarius::boss_victor_nefariusAI::Reset(), boss_nefarian::Reset(), boss_jarien::Reset(), boss_sothos::Reset(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::Reset(), boss_eye_of_cthun::Reset(), boss_festergut::boss_festergutAI::Reset(), boss_thaddius_summon::boss_thaddius_summonAI::Reset(), npc_freya_ward::npc_freya_wardAI::Reset(), boss_thorim_start_npcs::boss_thorim_start_npcsAI::Reset(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::Reset(), npc_cosmetic_toy_plane::Reset(), npc_amberpine_woodsman::npc_amberpine_woodsmanAI::Reset(), npc_rodin_lightning_enabler::Reset(), boss_yoggsaron_lich_king::boss_yoggsaron_lich_kingAI::Say(), boss_yoggsaron_llane::boss_yoggsaron_llaneAI::Say(), boss_yoggsaron_neltharion::boss_yoggsaron_neltharionAI::Say(), boss_razuvious_minion::boss_razuvious_minionAI::ScheduleAttackDummy(), boss_rend_blackhand::boss_rend_blackhandAI::SetData(), npc_highlord_tirion_fordring_lh::npc_highlord_tirion_fordringAI::SetData(), npc_q24545_lich_king::npc_q24545_lich_kingAI::SetData(), npc_shandy_dalaran::npc_shandy_dalaranAI::SetData(), npc_tharnarian::npc_tharnarianAI::SetGUID(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::ShowNozdormu(), npc_midsummer_ribbon_pole_target::SpawnFireSpiralBunny(), npc_shadowmoon_tuber_node::npc_shadowmoon_tuber_nodeAI::SpellHit(), boss_thorim_pillar::boss_thorim_pillarAI::SpellHit(), npc_living_constellation::npc_living_constellationAI::SpellHit(), npc_enslaved_netherwing_drake::SpellHit(), npc_ulduar_flames_initial::npc_ulduar_flames_initialAI::SpreadFlame(), npc_commander_eligor_dawnbringer::npc_commander_eligor_dawnbringerAI::StoreTargets(), spell_midsummer_fling_torch::ThrowNextTorch(), instance_stratholme::instance_stratholme_InstanceMapScript::Update(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::Update(), go_bear_trap::go_bear_trapAI::UpdateAI(), SmartAI::UpdateAI(), npc_blackhand_incarcerator::npc_blackhand_incarceratorAI::UpdateAI(), npc_vaelastrasz_the_red::npc_vaelastrasz_the_redAI::UpdateAI(), boss_victor_nefarius::boss_victor_nefariusAI::UpdateAI(), npc_unworthy_initiate::npc_unworthy_initiateAI::UpdateAI(), npc_acherus_necromancer::npc_acherus_necromancerAI::UpdateAI(), npc_gothik_the_harvester::npc_gothik_the_harvesterAI::UpdateAI(), npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI::UpdateAI(), npc_cameron::UpdateAI(), npc_eastvale_peasent::UpdateAI(), npc_sentinel_leader::UpdateAI(), npc_sentinel_infiltrator::UpdateAI(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::UpdateAI(), npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), npc_alexstraza_the_lifebinder::UpdateAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI(), npc_medivh_bm::UpdateAI(), npc_murkdeep::npc_murkdeepAI::UpdateAI(), npc_giant_spotlight::npc_giant_spotlightAI::UpdateAI(), npc_qiraj_war_spawn::npc_qiraj_war_spawnAI::UpdateAI(), boss_elder_nadox::UpdateAI(), boss_grand_champion::boss_grand_championAI::UpdateAI(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::UpdateAI(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::UpdateAI(), boss_professor_putricide::boss_professor_putricideAI::UpdateAI(), boss_the_lich_king::boss_the_lich_kingAI::UpdateAI(), npc_tirion_fordring_tft::npc_tirion_fordringAI::UpdateAI(), npc_terenas_menethil::npc_terenas_menethilAI::UpdateAI(), npc_frostwing_vrykul::npc_frostwing_vrykulAI::UpdateAI(), boss_thaddius_summon::boss_thaddius_summonAI::UpdateAI(), boss_malygos::boss_malygosAI::UpdateAI(), boss_varos::boss_varosAI::UpdateAI(), boss_flame_leviathan::boss_flame_leviathanAI::UpdateAI(), npc_freya_ward::npc_freya_wardAI::UpdateAI(), npc_ulduar_iron_construct::npc_ulduar_iron_constructAI::UpdateAI(), boss_kologarn::boss_kologarnAI::UpdateAI(), npc_ulduar_emergency_fire_bot::npc_ulduar_emergency_fire_botAI::UpdateAI(), npc_ulduar_storm_tempered_keeper::npc_ulduar_storm_tempered_keeperAI::UpdateAI(), npc_sinkhole_kill_credit::npc_sinkhole_kill_creditAI::UpdateAI(), npc_thassarian::npc_thassarianAI::UpdateAI(), npc_thassarian2::npc_thassarian2AI::UpdateAI(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::UpdateAI(), npc_q24545_lich_king::npc_q24545_lich_kingAI::UpdateAI(), npc_lord_arete::npc_lord_areteAI::UpdateAI(), go_wg_vehicle_teleporter::go_wg_vehicle_teleporterAI::UpdateAI(), npc_drakuru_shackles::npc_drakuru_shacklesAI::UpdateAI(), npc_fel_guard_hound::npc_fel_guard_houndAI::UpdateAI(), npc_captain_saeed::npc_captain_saeedAI::UpdateAI(), npc_spring_rabbit::npc_spring_rabbitAI::UpdateAI(), npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI::UpdateAI(), npc_tyrion_spybot::npc_tyrion_spybotAI::UpdateAI(), npc_magwin::npc_magwinAI::UpdateEscortAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), npc_ranger_lilatha::WaypointReached(), npc_deathstalker_erland::npc_deathstalker_erlandAI::WaypointReached(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::WaypointReached(), npc_magwin::npc_magwinAI::WaypointReached(), npc_apothecary_hanes::npc_Apothecary_HanesAI::WaypointReached(), npc_ancestral_wolf::npc_ancestral_wolfAI::WaypointReached(), and npc_bessy::npc_bessyAI::WaypointReached().

◆ FindNearestGameObject()

GameObject * WorldObject::FindNearestGameObject ( uint32  entry,
float  range,
bool  onlySpawned = false 
) const
2456{
2457 GameObject* go = nullptr;
2458 Acore::NearestGameObjectEntryInObjectRangeCheck checker(*this, entry, range, onlySpawned);
2460 Cell::VisitObjects(this, searcher, range);
2461 return go;
2462}
Definition GridNotifiers.h:326

References Cell::VisitObjects().

Referenced by spell_q9452_cast_net::CheckCast(), npc_q24545_lich_king::npc_q24545_lich_kingAI::CleanAll(), boss_mimiron::boss_mimironAI::CloseDoorAndButton(), boss_hodir::boss_hodirAI::DamageTaken(), npc_ulduar_toasty_fire::npc_ulduar_toasty_fireAI::DoAction(), npc_thrall_warchief::npc_thrall_warchiefAI::DoAction(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::DoAction(), Spell::EffectScriptEffect(), boss_ouro::EnterEvadeMode(), npc_dirt_mound::EnterEvadeMode(), GetClosestGameObjectWithEntry(), spell_halion_twilight_division::HandleDummy(), npc_midsummer_bonfire::Ignite(), boss_vezax::boss_vezaxAI::JustDied(), boss_kologarn::boss_kologarnAI::JustDied(), boss_fathomlord_karathress::JustDied(), boss_hodir::boss_hodirAI::JustEngagedWith(), npc_midsummer_ribbon_pole_target::LocateRibbonPole(), npc_andorhal_tower::npc_andorhal_towerAI::MoveInLineOfSight(), npc_ulduar_snow_mound::MoveInLineOfSight(), npc_pos_leader_second::npc_pos_leader_secondAI::MovementInform(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::MovementInform(), go_thorim_lever::OnGossipHello(), npc_lurgglbr::OnQuestAccept(), npc_simon_bunny::npc_simon_bunnyAI::PrepareClusters(), instance_stratholme::instance_stratholme_InstanceMapScript::ProcessSlaughterEvent(), npc_ranger_lilatha::Reset(), npc_stillpine_capitive::npc_stillpine_capitiveAI::Reset(), boss_thaddius::boss_thaddiusAI::Reset(), boss_hodir::boss_hodirAI::Reset(), npc_wounded_blood_elf::npc_wounded_blood_elfAI::Reset(), boss_mimiron::boss_mimironAI::ResetGameObjects(), npc_simon_bunny::npc_simon_bunnyAI::ResetNode(), npc_shadowmoon_tuber_node::npc_shadowmoon_tuber_nodeAI::SetData(), npc_ulduar_harpoonfirestate::npc_ulduar_harpoonfirestateAI::SetData(), boss_rend_blackhand::boss_rend_blackhandAI::SetData(), npc_q24545_lich_king::npc_q24545_lich_kingAI::SetData(), npc_simon_bunny::npc_simon_bunnyAI::SetUpPreGame(), npc_crate_helper::npc_crate_helperAI::SpellHit(), npc_rabid_thistle_bear::npc_rabid_thistle_bearAI::SpellHit(), npc_rinji::npc_rinjiAI::sQuestAccept(), npc_simon_bunny::npc_simon_bunnyAI::StartGame(), boss_ouro::Submerge(), npc_grimstone::npc_grimstoneAI::SummonBoss(), boss_ambassador_flamelash::boss_ambassador_flamelashAI::TurnRunes(), boss_gyth::boss_gythAI::UpdateAI(), boss_victor_nefarius::boss_victor_nefariusAI::UpdateAI(), npc_unworthy_initiate::npc_unworthy_initiateAI::UpdateAI(), npc_scarlet_courier::npc_scarlet_courierAI::UpdateAI(), npc_partygoer::UpdateAI(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::UpdateAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI(), npc_giant_spotlight::npc_giant_spotlightAI::UpdateAI(), boss_thaddius::boss_thaddiusAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::UpdateAI(), npc_sinkhole_kill_credit::npc_sinkhole_kill_creditAI::UpdateAI(), npc_valiance_keep_cannoneer::npc_valiance_keep_cannoneerAI::UpdateAI(), npc_q24545_lich_king::npc_q24545_lich_kingAI::UpdateAI(), npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI::UpdateAI(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::UpdateAI(), npc_pet_gen_plump_turkey::UpdateAI(), npc_tallhorn_stag::npc_tallhorn_stagAI::UpdateAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), npc_ranger_lilatha::WaypointReached(), npc_wounded_blood_elf::npc_wounded_blood_elfAI::WaypointReached(), and npc_isla_starmane::npc_isla_starmaneAI::WaypointReached().

◆ FindNearestGameObjectOfType()

GameObject * WorldObject::FindNearestGameObjectOfType ( GameobjectTypes  type,
float  range 
) const
2465{
2466 GameObject* go = nullptr;
2467 Acore::NearestGameObjectTypeInObjectRangeCheck checker(*this, type, range);
2469 Cell::VisitObjects(this, searcher, range);
2470 return go;
2471}

References Cell::VisitObjects().

Referenced by Map::GetTransportForPos(), WorldSession::HandleAlterAppearance(), and misc_commandscript::HandleOpenDoorCommand().

◆ GetAllowedLooters()

GuidUnorderedSet const & WorldObject::GetAllowedLooters ( ) const
3126{
3127 return _allowedLooters;
3128}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient().

◆ GetAreaId()

uint32 WorldObject::GetAreaId ( ) const
3068{
3070 const_cast<WorldObject*>(this)->UpdatePositionData();
3071
3072 return _areaId;
3073}
void UpdatePositionData()
Definition Object.cpp:1162

References _areaId, _updatePositionData, and UpdatePositionData().

Referenced by Player::AddQuest(), Player::CheckAreaExploreAndOutdoor(), Spell::CheckCast(), Player::CompleteQuest(), ScriptedAI::DoPlayMusic(), Spell::EffectBind(), Spell::EffectDuel(), npc_costumed_orphan_matron::GetInitXYZ(), go_bells::go_bellsAI::go_bellsAI(), spell_item_socrethars_stone::HandleDummy(), WorldSession::HandleHearthAndResurrect(), OutdoorPvPNA::HandleKill(), misc_commandscript::HandlePInfoCommand(), WorldSession::HandlePlayerLoginFromDB(), spell_gen_teleporting::HandleScript(), spell_q12735_song_of_cleansing::HandleScript(), Player::IncompleteQuest(), DisableMgr::IsDisabledFor(), SpellArea::IsFitToRequirements(), npc_gilthares::npc_giltharesAI::JustEngagedWith(), LogCommandUsage(), npc_the_scourge_cauldron::npc_the_scourge_cauldronAI::MoveInLineOfSight(), npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight(), npc_guardian_pavilion::npc_guardian_pavilionAI::MoveInLineOfSight(), achievement_tilted::OnCheck(), BattlefieldWG::OnCreatureCreate(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnPlayerAreaUpdate(), instance_hyjal::instance_mount_hyjal_InstanceMapScript::OnPlayerInWaterStateUpdate(), instance_ulduar::instance_ulduar_InstanceMapScript::OnUnitDeath(), item_petrov_cluster_bombs::OnUse(), item_only_for_flight::OnUse(), FlameLeviathanPursuedTargetSelector::operator()(), SmartScript::ProcessAction(), Player::RemoveActiveQuest(), Player::RepopAtGraveyard(), Player::RewardHonor(), Player::RewardQuest(), CreatureTextMgr::SendChatPacket(), BattlefieldWG::SendInitWorldStatesTo(), CreatureTextMgr::SendNonChatPacket(), Creature::SendZoneUnderAttackMessage(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SetData(), npc_counselor_talbot::npc_counselor_talbotAI::UpdateAI(), npc_freed_protodrake::npc_freed_protodrakeAI::UpdateAI(), go_brewfest_music::go_brewfest_musicAI::UpdateAI(), and lfg::LFGMgr::UpdateRaidBrowser().

◆ GetChargeContactPoint()

void WorldObject::GetChargeContactPoint ( WorldObject const *  obj,
float &  x,
float &  y,
float &  z,
float  distance2d = CONTACT_DISTANCE 
) const
2772{
2773 // angle to face `obj` to `this` using distance includes size of `obj`
2774 GetNearPoint(obj, x, y, z, obj->GetObjectSize(), distance2d, GetAngle(obj));
2775
2776 if (std::fabs(this->GetPositionZ() - z) > 3.0f || !IsWithinLOS(x, y, z))
2777 {
2778 x = this->GetPositionX();
2779 y = this->GetPositionY();
2780 z = this->GetPositionZ();
2781 obj->UpdateGroundPositionZ(x, y, z);
2782 }
2783}
void GetNearPoint(WorldObject const *searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle, float controlZ=0, Position const *startPos=nullptr) const
Definition Object.cpp:2640
bool IsWithinLOS(float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS) const
Definition Object.cpp:1355
float GetAngle(const Position *pos) const
Definition Position.cpp:85

References Position::GetAngle(), GetNearPoint(), GetObjectSize(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), IsWithinLOS(), and UpdateGroundPositionZ().

◆ GetClosePoint()

bool WorldObject::GetClosePoint ( float &  x,
float &  y,
float &  z,
float  size,
float  distance2d = 0,
float  angle = 0,
WorldObject const *  forWho = nullptr,
bool  force = false 
) const
2714{
2715 // angle calculated from current orientation
2716 GetNearPoint(forWho, x, y, z, size, distance2d, GetOrientation() + angle);
2717
2718 if (std::fabs(this->GetPositionZ() - z) > 3.0f || !IsWithinLOS(x, y, z))
2719 {
2720 x = this->GetPositionX();
2721 y = this->GetPositionY();
2722 z = this->GetPositionZ();
2723 if (forWho)
2724 if (Unit const* u = forWho->ToUnit())
2725 u->UpdateAllowedPositionZ(x, y, z);
2726 }
2727 float maxDist = GetObjectSize() + size + distance2d + 1.0f;
2728 if (GetExactDistSq(x, y, z) >= maxDist * maxDist)
2729 {
2730 if (force)
2731 {
2732 x = this->GetPositionX();
2733 y = this->GetPositionY();
2734 z = this->GetPositionZ();
2735 return true;
2736 }
2737 return false;
2738 }
2739 return true;
2740}
float GetOrientation() const
Definition Position.h:124
float GetExactDistSq(float x, float y, float z) const
Definition Position.h:174

References Position::GetExactDistSq(), GetNearPoint(), GetObjectSize(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), IsWithinLOS(), and Object::ToUnit().

Referenced by Spell::EffectResurrectPet(), Spell::EffectSummonObject(), Spell::EffectSummonObjectWild(), Spell::EffectSummonPet(), Spell::EffectTransmitted(), cast_commandscript::HandleCastDistCommand(), debug_commandscript::HandleDebugSpawnVehicleCommand(), misc_commandscript::HandleGroupSummonCommand(), spell_item_draenic_pale_ale::HandleSummon(), misc_commandscript::HandleSummonCommand(), Pet::LoadPetFromDB(), MotionMaster::MoveJumpTo(), SmartScript::ProcessAction(), npc_released_offspring_harkoa::npc_released_offspring_harkoaAI::Reset(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::SpellHit(), SummonCreature(), npc_acherus_necromancer::npc_acherus_necromancerAI::UpdateAI(), npc_gothik_the_harvester::npc_gothik_the_harvesterAI::UpdateAI(), npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::UpdateAI(), and npc_toc_dk::npc_toc_dkAI::UpdateAI().

◆ GetCollisionHeight()

◆ GetCollisionRadius()

virtual float WorldObject::GetCollisionRadius ( ) const
inlinevirtual

Reimplemented in Unit.

712{ return GetObjectSize() / 2; }

References GetObjectSize().

◆ GetCollisionWidth()

virtual float WorldObject::GetCollisionWidth ( ) const
inlinevirtual

Reimplemented in Unit.

711{ return GetObjectSize(); }

References GetObjectSize().

Referenced by GetMinHeightInWater().

◆ GetCombatReach()

virtual float WorldObject::GetCombatReach ( ) const
inlinevirtual

Reimplemented in Unit.

503{ return 0.0f; } // overridden (only) in Unit

Referenced by GetHitSpherePointFor(), GetNearPoint2D(), Acore::WorldObjectSpellTrajTargetCheck::operator()(), SmartScript::ProcessAction(), and Cell::Visit().

◆ GetContactPoint()

void WorldObject::GetContactPoint ( WorldObject const *  obj,
float &  x,
float &  y,
float &  z,
float  distance2d = CONTACT_DISTANCE 
) const
2757{
2758 // angle to face `obj` to `this` using distance includes size of `obj`
2759 GetNearPoint(obj, x, y, z, obj->GetObjectSize(), distance2d, GetAngle(obj));
2760
2761 // Exclude gameobjects from LoS calculations
2762 if (std::fabs(this->GetPositionZ() - z) > 3.0f || (!IsGameObject() && !IsWithinLOS(x, y, z)))
2763 {
2764 x = this->GetPositionX();
2765 y = this->GetPositionY();
2766 z = this->GetPositionZ();
2767 obj->UpdateAllowedPositionZ(x, y, z);
2768 }
2769}
bool IsGameObject() const
Definition Object.h:213

References Position::GetAngle(), GetNearPoint(), GetObjectSize(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Object::IsGameObject(), IsWithinLOS(), and UpdateAllowedPositionZ().

Referenced by npc_unworthy_initiate::npc_unworthy_initiateAI::EventStart(), and Unit::JumpTo().

◆ GetCreatureListWithEntryInGrid() [1/2]

void WorldObject::GetCreatureListWithEntryInGrid ( std::list< Creature * > &  creatureList,
std::vector< uint32 > const &  entries,
float  maxSearchRange 
) const
2515{
2516 Acore::AllCreaturesMatchingOneEntryInRange check(this, entries, maxSearchRange);
2517 Acore::CreatureListSearcher searcher(this, creatureList, check);
2518 Cell::VisitObjects(this, searcher, maxSearchRange);
2519}
Definition GridNotifiers.h:1492
Definition GridNotifiers.h:464

References Cell::VisitObjects().

◆ GetCreatureListWithEntryInGrid() [2/2]

void WorldObject::GetCreatureListWithEntryInGrid ( std::list< Creature * > &  lList,
uint32  uiEntry,
float  fMaxSearchRange 
) const
2508{
2509 Acore::AllCreaturesOfEntryInRange check(this, entry, maxSearchRange);
2510 Acore::CreatureListSearcher<Acore::AllCreaturesOfEntryInRange> searcher(this, creatureList, check);
2511 Cell::VisitObjects(this, searcher, maxSearchRange);
2512}
Definition GridNotifiers.h:1474

References Cell::VisitObjects().

Referenced by at_hol_hall_of_watchers::_OnTrigger(), npc_anubisath_sentinel::aqsentinelAI::AddSentinelsNear(), npc_minion_spawner::CanSpawnRareMinion(), npc_akama_shade::DamageTaken(), npc_necrotic_shard::DespawnCultists(), npc_necrotic_shard::DespawnEventDoodads(), npc_necrotic_shard::DespawnShadowsOfDoom(), boss_apothecary_hummel::boss_apothecary_hummelAI::DoAction(), npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI::DoGuardsDisappearAndDie(), spell_the_lich_king_restore_soul::FilterTargets(), boss_the_beast::boss_thebeastAI::FindNearbyOrcs(), GetCreatureListWithEntryInGrid(), spell_apothecary_lingering_fumes::HandleAfterCast(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), spell_q12243_fire_upon_the_waters_aura::HandleApplyEffect(), BattlegroundIC::HandleCapturedNodes(), BattlegroundIC::HandleContestedNodes(), spell_warhead_detonate::HandleDummy(), spell_icc_sprit_alarm::HandleEvent(), spell_kiljaeden_armageddon_periodic_aura::HandlePeriodic(), spell_q12243_fire_upon_the_waters_aura::HandleRemoveEffect(), spell_q12620_the_lifewarden_wrath::HandleSendEvent(), npc_necrotic_shard::HasMinion(), boss_twilight_corrupter::InitializeAI(), boss_rajaxx::JustDied(), npc_lava_spawn::JustEngagedWith(), boss_elder_nadox::JustEngagedWith(), npc_akama_shade::MovementInform(), SmartScript::ProcessEvent(), boss_jaraxxus::boss_jaraxxusAI::Reset(), npc_necrotic_shard::ScheduleTasks(), npc_gothik_trigger::npc_gothik_triggerAI::SelectRandomSkullPile(), npc_harrison_jones::SpellHit(), boss_shade_of_akama::SpellHit(), go_firework_show::StopShow(), boss_ouro::Submerge(), npc_thrall_bfu::npc_thrall_bfuAI::SummonedCreatureDies(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), outdoorpvp_na_halaa_creatures::UpdateAI(), and npc_necrotic_shard::UpdateFindersAmount().

◆ GetCreaturesWithEntryInRange()

void WorldObject::GetCreaturesWithEntryInRange ( std::list< Creature * > &  creatureList,
float  radius,
uint32  entry 
)
3009{
3010 Acore::AllCreaturesOfEntryInRange check(this, entry, radius);
3011 Acore::CreatureListSearcher<Acore::AllCreaturesOfEntryInRange> searcher(this, creatureList, check);
3012 Cell::VisitObjects(this, searcher, radius);
3013}

References Cell::VisitObjects().

Referenced by boss_kelthuzad_minion::boss_kelthuzad_minionAI::AttackStart(), npc_midsummer_ribbon_pole_target::DoDancingFLameChecks(), npc_midsummer_ribbon_pole_target::DoGroundFlowerChecks(), FixOrientation::Execute(), boss_alyson_antille::GetNearbyFriendlies(), spell_black_template_harpooners_mark_aura::HandleEffectApply(), spell_botanica_call_of_the_falcon_aura::HandleEffectApply(), spell_mc_play_dead_aura::HandleEffectRemove(), spell_winter_veil_racer_rocket_slam::HandleTriggerSpell(), boss_janalai::HatchAllEggs(), boss_headless_horseman::JustDied(), boss_ignis::boss_ignisAI::JustDied(), boss_malchezaar::JustEngagedWith(), boss_ignis::boss_ignisAI::JustEngagedWith(), boss_razorscale::boss_razorscaleAI::JustEngagedWith(), boss_buru::ManipulateEggs(), boss_nalorakk::MoveInLineOfSight(), go_beacon::go_beaconAI::OnStateChanged(), spell_dreamwalker_summon_suppresser_aura::PeriodicTick(), spell_midsummer_ribbon_pole_visual::PrepareSpellScript(), boss_grobbulus::boss_grobbulusAI::PullChamberAdds(), npc_hallows_end_soh::Reset(), boss_watchkeeper_gargolmar::Reset(), npc_captain_saeed::npc_captain_saeedAI::SetGUID(), boss_hodir::boss_hodirAI::SpellHitTarget(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::UpdateAI(), boss_sjonnir_malformed_ooze::boss_sjonnir_malformed_oozeAI::UpdateAI(), npc_ulduar_hodir_mage::npc_ulduar_hodir_mageAI::UpdateAI(), boss_ignis::boss_ignisAI::UpdateAI(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::UpdateAI(), boss_svala::boss_svalaAI::UpdateAI(), and npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI().

◆ GetDeadCreatureListInGrid()

void WorldObject::GetDeadCreatureListInGrid ( std::list< Creature * > &  lList,
float  maxSearchRange,
bool  alive = false 
) const
2522{
2523 Acore::AllDeadCreaturesInRange check(this, maxSearchRange, alive);
2524 Acore::CreatureListSearcher<Acore::AllDeadCreaturesInRange> searcher(this, creaturedeadList, check);
2525 Cell::VisitObjects(this, searcher, maxSearchRange);
2526}
Definition GridNotifiers.h:1559

References Cell::VisitObjects().

Referenced by GetDeadCreatureListInGrid().

◆ GetDebugInfo()

std::string WorldObject::GetDebugInfo ( ) const
overridevirtual

Reimplemented from Object.

2485{
2486 std::stringstream sstr;
2487 sstr << WorldLocation::GetDebugInfo() << "\n"
2488 << Object::GetDebugInfo() << "\n"
2489 << "Name: " << GetName();
2490 return sstr.str();
2491}
virtual std::string GetDebugInfo() const
Definition Object.cpp:998
std::string GetDebugInfo() const
Definition Position.cpp:220
std::string const & GetName() const
Definition Object.h:525

References Object::GetDebugInfo(), WorldLocation::GetDebugInfo(), and GetName().

Referenced by Aura::GetDebugInfo(), GameObject::GetDebugInfo(), and Unit::GetDebugInfo().

◆ GetDistance() [1/3]

float WorldObject::GetDistance ( const Position pos) const
1281{
1282 float d = GetExactDist(&pos) - GetObjectSize();
1283 return d > 0.0f ? d : 0.0f;
1284}

References Position::GetExactDist(), and GetObjectSize().

◆ GetDistance() [2/3]

float WorldObject::GetDistance ( float  x,
float  y,
float  z 
) const
1287{
1288 float d = GetExactDist(x, y, z) - GetObjectSize();
1289 return d > 0.0f ? d : 0.0f;
1290}

References Position::GetExactDist(), and GetObjectSize().

◆ GetDistance() [3/3]

float WorldObject::GetDistance ( WorldObject const *  obj) const
1275{
1276 float d = GetExactDist(obj) - GetObjectSize() - obj->GetObjectSize();
1277 return d > 0.0f ? d : 0.0f;
1278}

References Position::GetExactDist(), and GetObjectSize().

Referenced by Spell::AddGOTarget(), Spell::AddUnitTarget(), boss_hadronox::boss_hadronoxAI::AnyPlayerValid(), boss_urom::boss_uromAI::AttackStart(), boss_attumen::CanMeleeHit(), boss_midnight::CanMeleeHit(), Spell::CheckCast(), boss_priestess_delrissa::CheckInRoom(), boss_kalecgos::CheckInRoom(), boss_isle_of_conquest::boss_isle_of_conquestAI::CheckRageBuff(), Spell::EffectChargeDest(), Spell::EffectPullTowards(), boss_sapphiron::boss_sapphironAI::EnterCombatSelfFunction(), boss_magmadar::boss_magmadarAI::ExecuteEvent(), boss_nightbane::FlyToClosestPreFlyWayPoint(), Unit::GetMagicHitRedirectTarget(), boss_urom::boss_uromAI::GetPhaseByCurrentPosition(), FleeingMovementGenerator< T >::GetPoint(), npc_wild_wyrm::npc_wild_wyrmAI::GetValidPlayer(), OutdoorPvPSI::HandleDropFlag(), Unit::HandleDummyAuraProc(), spell_image_of_drakuru_reagent_check::HandleDummyEffect(), spell_herald_volzaj_insanity::HandleDummyEffect(), spell_egg_explosion::HandleDummyHitTarget(), misc_commandscript::HandleGetDistanceCommand(), spell_yogg_saron_brain_link_aura::HandleOnEffectApply(), spell_garr_separation_anxiety_aura::HandlePeriodic(), spell_majordomo_separation_anxiety_aura::HandlePeriodic(), spell_entropius_black_hole_effect::HandlePull(), spell_boss_magus_telestra_gravity_well::HandlePull(), spell_gen_ds_flush_knockback::HandleScript(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::InformCloud(), Player::IsAtGroupRewardDistance(), Player::IsAtRecruitAFriendDistance(), SmartAI::IsEscortInvokerInRange(), Player::IsInAreaTriggerRadius(), boss_sartharion::boss_sartharionAI::IsTargetInBounds(), boss_shirrak_the_dead_watcher::JustEngagedWith(), boss_hadronox::boss_hadronoxAI::JustSummoned(), boss_gal_darah::boss_gal_darahAI::JustSummoned(), npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI::JustSummoned(), Condition::Meets(), npc_brewfest_keg_thrower::MoveInLineOfSight(), npc_brewfest_keg_reciver::MoveInLineOfSight(), npc_brewfest_bark_trigger::MoveInLineOfSight(), npc_love_in_air_supply_sentry::MoveInLineOfSight(), npc_love_in_air_snivel::MoveInLineOfSight(), boss_kelthuzad::boss_kelthuzadAI::MoveInLineOfSight(), npc_black_knight_graveyard::npc_black_knight_graveyardAI::MoveInLineOfSight(), npc_captain_saeed::npc_captain_saeedAI::MoveInLineOfSight(), boss_felmyst::MovementInform(), spell_yogg_saron_brain_link_aura::OnPeriodic(), Acore::NearestAssistCreatureInCreatureRangeCheck::operator()(), Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck::operator()(), Acore::NearestGameObjectFishingHole::operator()(), Acore::NearestGameObjectCheck::operator()(), Acore::NearestGameObjectEntryInObjectRangeCheck::operator()(), Acore::NearestGameObjectTypeInObjectRangeCheck::operator()(), Acore::NearestPlayerInObjectRangeCheck::operator()(), Acore::NearestAttackableUnitInObjectRangeCheck::operator()(), Acore::NearestHostileUnitCheck::operator()(), Acore::NearestHostileUnitInAttackDistanceCheck::operator()(), ManaVoidSelector::operator()(), LeechingThrowSelector::operator()(), Acore::WorldObjectSpellNearbyTargetCheck::operator()(), npc_vortex_ride::npc_vortex_rideAI::PassengerBoarded(), spell_quest_test_flight_charging::PerformKick(), SmartScript::ProcessAction(), Creature::reachWithSpellAttack(), Creature::reachWithSpellCure(), Map::ScriptsProcess(), boss_yoggsaron_constrictor_tentacle::boss_yoggsaron_constrictor_tentacleAI::SelectConstrictTarget(), boss_yoggsaron_corruptor_tentacle::boss_yoggsaron_corruptor_tentacleAI::SelectCorruptionTarget(), npc_enslaved_proto_drake::SetData(), Pet::Update(), boss_broodlord::boss_broodlordAI::UpdateAI(), npc_core_rager::npc_core_ragerAI::UpdateAI(), npc_kernobee::npc_kernobeeAI::UpdateAI(), npc_acherus_necromancer::npc_acherus_necromancerAI::UpdateAI(), npc_gothik_the_harvester::npc_gothik_the_harvesterAI::UpdateAI(), npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI::UpdateAI(), npc_highborne_lamenter::npc_highborne_lamenterAI::UpdateAI(), npc_black_knight_ghoul::npc_black_knight_ghoulAI::UpdateAI(), npc_dark_nucleus::npc_dark_nucleusAI::UpdateAI(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::UpdateAI(), npc_frostwing_vrykul::npc_frostwing_vrykulAI::UpdateAI(), npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI::UpdateAI(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::UpdateAI(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::UpdateAI(), boss_volkhan::UpdateAI(), boss_stormcaller_brundir::boss_stormcaller_brundirAI::UpdateAI(), npc_auriaya_sanctum_sentry::npc_auriaya_sanctum_sentryAI::UpdateAI(), boss_freya::boss_freyaAI::UpdateAI(), boss_vezax::boss_vezaxAI::UpdateAI(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::UpdateAI(), boss_thorim_start_npcs::boss_thorim_start_npcsAI::UpdateAI(), npc_ulduar_arachnopod_destroyer::npc_ulduar_arachnopod_destroyerAI::UpdateAI(), boss_xevozz::boss_xevozzAI::UpdateAI(), npc_battle_at_valhalas::npc_battle_at_valhalasAI::UpdateAI(), npc_pet_gen_target_following_bomb::UpdateAI(), Player::UpdateCharmedAI(), and brann_bronzebeard::brann_bronzebeardAI::UpdateEscortAI().

◆ GetDistance2d() [1/2]

float WorldObject::GetDistance2d ( float  x,
float  y 
) const
1299{
1300 float d = GetExactDist2d(x, y) - GetObjectSize();
1301 return d > 0.0f ? d : 0.0f;
1302}
float GetExactDist2d(const float x, const float y) const
Definition Position.h:170

References Position::GetExactDist2d(), and GetObjectSize().

◆ GetDistance2d() [2/2]

float WorldObject::GetDistance2d ( WorldObject const *  obj) const
1293{
1294 float d = GetExactDist2d(obj) - GetObjectSize() - obj->GetObjectSize();
1295 return d > 0.0f ? d : 0.0f;
1296}

References Position::GetExactDist2d(), and GetObjectSize().

Referenced by spell_krystallus_shatter_effect::CalculateDamage(), spell_gruul_shatter_effect::CalculateDamage(), spell_loken_pulsing_shockwave::CalculateDamage(), boss_shade_of_aran::CheckAranInRoom(), npc_cork_gizelton::npc_cork_gizeltonAI::CheckCaravan(), spell_baltharus_enervating_brand_trigger::CheckDistance(), boss_onyxia::CheckInRoom(), npc_argent_captainAI::DoAction(), Spell::EffectSummonType(), boss_faction_championsAI::EnemiesInRange(), BattlegroundAB::EventPlayerClickedOnFlag(), spell_blade_dance_targeting::FilterTargets(), BfGraveyard::GetDistance(), npc_spiritual_insight::npc_spiritual_insightAI::GetSpeachId(), GetVelocity(), spell_shadowblink::HandleDummy(), misc_commandscript::HandleGetDistanceCommand(), boss_balinda::JustEngagedWith(), boss_aeonus::JustReachedHome(), npc_winterfin_playmate::MoveInLineOfSight(), npc_snowfall_glade_playmate::MoveInLineOfSight(), npc_the_biggest_tree::MoveInLineOfSight(), npc_high_oracle_soo_roo::MoveInLineOfSight(), npc_elder_kekek::MoveInLineOfSight(), npc_the_etymidian::MoveInLineOfSight(), npc_alexstraza_the_lifebinder::MoveInLineOfSight(), npc_cw_area_trigger::npc_cw_area_triggerAI::MoveInLineOfSight(), npc_grizzlemaw_cw_trigger::npc_grizzlemaw_cw_triggerAI::MoveInLineOfSight(), npc_jungle_punch_target::npc_jungle_punch_targetAI::MoveInLineOfSight(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::MoveInLineOfSight(), instance_blackrock_depths::instance_blackrock_depths_InstanceMapScript::OnCreatureCreate(), ChargeTargetSelector::operator()(), spell_algalon_cosmic_smash_damage::RecalculateDamage(), boss_priestess_lackey_commonAI::RecalculateThreat(), boss_faction_championsAI::RecalculateThreat(), RevivePlayer(), boss_razuvious::boss_razuviousAI::ScheduleRP(), npc_kiljaeden_controller::SummonedCreatureDies(), Player::TeleportTo(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::UpdateAI(), boss_drekthar::boss_drektharAI::UpdateAI(), boss_galvangar::boss_galvangarAI::UpdateAI(), boss_vanndar::boss_vanndarAI::UpdateAI(), boss_gorosh_the_dervish::boss_gorosh_the_dervishAI::UpdateAI(), boss_grizzle::boss_grizzleAI::UpdateAI(), boss_hedrum::boss_hedrumAI::UpdateAI(), boss_okthor::boss_okthorAI::UpdateAI(), npc_rookery_hatcher::npc_rookery_hatcherAI::UpdateAI(), npc_unworthy_initiate::npc_unworthy_initiateAI::UpdateAI(), npc_eris_hevenfire::npc_eris_hevenfireAI::UpdateAI(), npc_rabid_thistle_bear::npc_rabid_thistle_bearAI::UpdateAI(), npc_twiggy_flathead::npc_twiggy_flatheadAI::UpdateAI(), npc_toc_hunter::npc_toc_hunterAI::UpdateAI(), npc_toc_warrior::npc_toc_warriorAI::UpdateAI(), npc_toc_dk::npc_toc_dkAI::UpdateAI(), npc_toc_rogue::npc_toc_rogueAI::UpdateAI(), npc_vortex_ride::npc_vortex_rideAI::UpdateAI(), npc_preparations_for_war_vehicle::UpdateAI(), npc_boneguard_footman::npc_boneguard_footmanAI::UpdateAI(), npc_pet_gen_fetch_ball::UpdateAI(), BattlefieldWG::UpdatedDestroyedTowerCount(), boss_netherspite::UpdatePortals(), and GameObject::Use().

◆ GetDistanceOrder()

bool WorldObject::GetDistanceOrder ( WorldObject const *  obj1,
WorldObject const *  obj2,
bool  is3D = true 
) const
1411{
1412 float dx1 = GetPositionX() - obj1->GetPositionX();
1413 float dy1 = GetPositionY() - obj1->GetPositionY();
1414 float distsq1 = dx1 * dx1 + dy1 * dy1;
1415 if (is3D)
1416 {
1417 float dz1 = GetPositionZ() - obj1->GetPositionZ();
1418 distsq1 += dz1 * dz1;
1419 }
1420
1421 float dx2 = GetPositionX() - obj2->GetPositionX();
1422 float dy2 = GetPositionY() - obj2->GetPositionY();
1423 float distsq2 = dx2 * dx2 + dy2 * dy2;
1424 if (is3D)
1425 {
1426 float dz2 = GetPositionZ() - obj2->GetPositionZ();
1427 distsq2 += dz2 * dz2;
1428 }
1429
1430 return distsq1 < distsq2;
1431}

References Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

Referenced by Acore::ObjectDistanceOrderPred::operator()(), and Spell::SearchChainTargets().

◆ GetDistanceZ()

float WorldObject::GetDistanceZ ( WorldObject const *  obj) const
1228{
1229 float dz = std::fabs(GetPositionZ() - obj->GetPositionZ());
1230 float sizefactor = GetObjectSize() + obj->GetObjectSize();
1231 float dist = dz - sizefactor;
1232 return (dist > 0 ? dist : 0);
1233}

References GetObjectSize(), and Position::GetPositionZ().

Referenced by Creature::CanStartAttack(), and npc_pet_hunter_snake_trap::MoveInLineOfSight().

◆ GetFirstCollisionPosition() [1/3]

Position WorldObject::GetFirstCollisionPosition ( float  destX,
float  destY,
float  destZ 
)
2851{
2852 Position pos = GetPosition();
2853 auto distance = GetExactDistSq(destX,destY,destZ);
2854
2855 auto dx = destX - pos.GetPositionX();
2856 auto dy = destY - pos.GetPositionY();
2857
2858 auto ang = std::atan2(dy, dx);
2859 ang = (ang >= 0) ? ang : 2 * M_PI + ang;
2860
2861 MovePositionToFirstCollision(pos, distance, ang);
2862 return pos;
2863}
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
Definition Object.cpp:2872
Definition Position.h:27
Position GetPosition() const
Definition Position.h:147

References Position::GetExactDistSq(), Position::GetPosition(), Position::GetPositionX(), Position::GetPositionY(), and MovePositionToFirstCollision().

◆ GetFirstCollisionPosition() [2/3]

Position WorldObject::GetFirstCollisionPosition ( float  dist,
float  angle 
)
2866{
2867 Position pos = GetPosition();
2868 MovePositionToFirstCollision(pos, dist, angle);
2869 return pos;
2870}

References Position::GetPosition(), and MovePositionToFirstCollision().

◆ GetFirstCollisionPosition() [3/3]

Position WorldObject::GetFirstCollisionPosition ( float  startX,
float  startY,
float  startZ,
float  destX,
float  destY 
)
2836{
2837 auto dx = destX - startX;
2838 auto dy = destY - startY;
2839
2840 auto ang = std::atan2(dy, dx);
2841 ang = (ang >= 0) ? ang : 2 * M_PI + ang;
2842 Position pos = Position(startX, startY, startZ, ang);
2843
2844 auto distance = pos.GetExactDist2d(destX,destY);
2845
2846 MovePositionToFirstCollision(pos, distance, ang);
2847 return pos;
2848}

References Position::GetExactDist2d(), and MovePositionToFirstCollision().

Referenced by Spell::EffectCharge(), Spell::EffectChargeDest(), and spell_class_call_handler::HandleOnHitRogue().

◆ GetFloorZ()

float WorldObject::GetFloorZ ( ) const
3049{
3051 const_cast<WorldObject*>(this)->UpdatePositionData();
3052
3053 if (!IsInWorld())
3054 return _floorZ;
3055
3056 return std::max<float>(_floorZ, GetMap()->GetGameObjectFloor(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ() + std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT)));
3057}
constexpr float Z_OFFSET_FIND_HEIGHT
Definition SharedDefines.h:27
virtual float GetCollisionHeight() const
Definition Object.h:710

References _floorZ, _updatePositionData, GetCollisionHeight(), GetMap(), GetPhaseMask(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Object::IsInWorld(), UpdatePositionData(), and Z_OFFSET_FIND_HEIGHT.

Referenced by npc_icc_nerubar_broodkeeper::npc_icc_nerubar_broodkeeperAI::MoveInLineOfSight(), and Creature::UpdateMovementFlags().

◆ GetGameObjectListWithEntryInGrid() [1/2]

void WorldObject::GetGameObjectListWithEntryInGrid ( std::list< GameObject * > &  gameobjectList,
std::vector< uint32 > const &  entries,
float  maxSearchRange 
) const
2501{
2502 Acore::AllGameObjectsMatchingOneEntryInRange check(this, entries, maxSearchRange);
2503 Acore::GameObjectListSearcher searcher(this, gameobjectList, check);
2504 Cell::VisitObjects(this, searcher, maxSearchRange);
2505}
Definition GridNotifiers.h:1456
Definition GridNotifiers.h:341

References Cell::VisitObjects().

◆ GetGameObjectListWithEntryInGrid() [2/2]

◆ GetGridActivationRange()

float WorldObject::GetGridActivationRange ( ) const
1653{
1654 if (ToPlayer())
1655 {
1656 if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
1657 {
1659 }
1661 }
1662 else if (ToCreature())
1663 {
1664 return ToCreature()->m_SightDistance;
1665 }
1666 else if (((IsGameObject() && ToGameObject()->IsTransport()) || IsDynamicObject()) && isActiveObject())
1667 {
1668 return GetMap()->GetVisibilityRange();
1669 }
1670
1671 return 0.0f;
1672}
#define VISIBILITY_DIST_WINTERGRASP
Definition ObjectDefines.h:41
#define DEFAULT_VISIBILITY_INSTANCE
Definition ObjectDefines.h:40
float m_SightDistance
Definition Creature.h:377
float GetVisibilityRange() const
Definition Map.h:195
bool IsDynamicObject() const
Definition Object.h:221
bool IsInWintergrasp() const
Definition Object.h:675
bool isActiveObject() const
Definition Object.h:666

References DEFAULT_VISIBILITY_INSTANCE, GetMap(), Map::GetVisibilityRange(), isActiveObject(), Object::IsDynamicObject(), Object::IsGameObject(), IsInWintergrasp(), Creature::m_SightDistance, Object::ToCreature(), Object::ToGameObject(), Object::ToPlayer(), and VISIBILITY_DIST_WINTERGRASP.

Referenced by misc_commandscript::HandleRespawnAllCommand(), and Map::MarkNearbyCellsOf().

◆ GetHitSpherePointFor() [1/2]

void WorldObject::GetHitSpherePointFor ( Position const &  dest,
float &  x,
float &  y,
float &  z,
Optional< float >  collisionHeight = { },
Optional< float >  combatReach = { } 
) const
1403{
1404 Position pos = GetHitSpherePointFor(dest, collisionHeight, combatReach);
1405 x = pos.GetPositionX();
1406 y = pos.GetPositionY();
1407 z = pos.GetPositionZ();
1408}
Position GetHitSpherePointFor(Position const &dest, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
Definition Object.cpp:1265

References GetHitSpherePointFor(), Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

◆ GetHitSpherePointFor() [2/2]

Position WorldObject::GetHitSpherePointFor ( Position const &  dest,
Optional< float >  collisionHeight = { },
Optional< float >  combatReach = { } 
) const
1266{
1267 G3D::Vector3 vThis(GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()));
1268 G3D::Vector3 vObj(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ());
1269 G3D::Vector3 contactPoint = vThis + (vObj - vThis).directionOrZero() * std::min(dest.GetExactDist(this), (combatReach ? *combatReach : GetCombatReach()));
1270
1271 return Position(contactPoint.x, contactPoint.y, contactPoint.z, GetAngle(contactPoint.x, contactPoint.y));
1272}
virtual float GetCombatReach() const
Definition Object.h:503

References Position::GetAngle(), GetCollisionHeight(), GetCombatReach(), Position::GetExactDist(), Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

Referenced by GetHitSpherePointFor(), IsWithinLOS(), IsWithinLOSInMap(), and PathGenerator::ShortenPathUntilDist().

◆ GetInstanceId()

◆ GetInstanceScript()

InstanceScript * WorldObject::GetInstanceScript ( ) const
1222{
1223 Map* map = GetMap();
1224 return map->IsDungeon() ? map->ToInstanceMap()->GetInstanceScript() : nullptr;
1225}
InstanceScript * GetInstanceScript()
Definition Map.h:658
bool IsDungeon() const
Definition Map.h:295
InstanceMap * ToInstanceMap()
Definition Map.h:377

References InstanceMap::GetInstanceScript(), GetMap(), Map::IsDungeon(), and Map::ToInstanceMap().

Referenced by CreatureAI::_EnterEvadeMode(), at_karazhan_side_entrance::_OnTrigger(), at_sunwell_madrigosa::_OnTrigger(), at_sunwell_eredar_twins::_OnTrigger(), at_rp_nethekurse::_OnTrigger(), at_icc_spire_frostwyrm::_OnTrigger(), at_zulgurub_entrance_speech::_OnTrigger(), at_zulgurub_bridge_speech::_OnTrigger(), at_zulgurub_temple_speech::_OnTrigger(), at_zulgurub_bloodfire_pit_speech::_OnTrigger(), at_zulgurub_edge_of_madness_speech::_OnTrigger(), at_twin_emperors::_OnTrigger(), at_underbog_ghazan::_OnTrigger(), Pet::AddToWorld(), boss_algalon_the_observer::boss_algalon_the_observerAI::boss_algalon_the_observerAI(), boss_anubarak_trial::boss_anubarak_trialAI::boss_anubarak_trialAI(), boss_archavon::boss_archavonAI::boss_archavonAI(), boss_auriaya::boss_auriayaAI::boss_auriayaAI(), boss_bigbadwolf::boss_bigbadwolf(), boss_bjarngrim::boss_bjarngrim(), boss_black_knight::boss_black_knightAI::boss_black_knightAI(), boss_blindeye_the_seer::boss_blindeye_the_seer(), boss_bronjahm::boss_bronjahmAI::boss_bronjahmAI(), boss_crone::boss_crone(), boss_cyanigosa::boss_cyanigosaAI::boss_cyanigosaAI(), boss_dalronn_the_controller::boss_dalronn_the_controller(), boss_devourer_of_souls::boss_devourer_of_soulsAI::boss_devourer_of_soulsAI(), boss_doomrel::boss_doomrelAI::boss_doomrelAI(), boss_dorothee::boss_dorothee(), boss_drakos::boss_drakosAI::boss_drakosAI(), boss_eadric::boss_eadricAI::boss_eadricAI(), boss_emalon::boss_emalonAI::boss_emalonAI(), boss_eregos::boss_eregosAI::boss_eregosAI(), boss_erekem::boss_erekemAI::boss_erekemAI(), boss_faction_championsAI::boss_faction_championsAI(), boss_falric::boss_falricAI::boss_falricAI(), boss_fathomguard_caribdis::boss_fathomguard_caribdis(), boss_fathomguard_sharkkis::boss_fathomguard_sharkkis(), boss_fathomguard_tidalvess::boss_fathomguard_tidalvess(), boss_flame_leviathan_defense_turret::boss_flame_leviathan_defense_turretAI::boss_flame_leviathan_defense_turretAI(), boss_flame_leviathan::boss_flame_leviathanAI::boss_flame_leviathanAI(), boss_freya_summons::boss_freya_summonsAI::boss_freya_summonsAI(), boss_freya::boss_freyaAI::boss_freyaAI(), boss_frostsworn_general::boss_frostsworn_generalAI::boss_frostsworn_generalAI(), boss_garfrost::boss_garfrostAI::boss_garfrostAI(), boss_gormok::boss_gormokAI::boss_gormokAI(), boss_grand_champion::boss_grand_championAI::boss_grand_championAI(), boss_hodir::boss_hodirAI::boss_hodirAI(), boss_icehowl::boss_icehowlAI::boss_icehowlAI(), boss_ichoron::boss_ichoronAI::boss_ichoronAI(), boss_ick::boss_ickAI::boss_ickAI(), boss_illidari_council_memberAI::boss_illidari_council_memberAI(), boss_ingvar_the_plunderer::boss_ingvar_the_plunderer(), boss_jaraxxus::boss_jaraxxusAI::boss_jaraxxusAI(), boss_jormungarAI::boss_jormungarAI(), boss_julianne::boss_julianne(), boss_kiggler_the_crazed::boss_kiggler_the_crazed(), boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI::boss_kirtonos_the_heraldAI(), boss_kologarn_eyebeam::boss_kologarn_eyebeamAI::boss_kologarn_eyebeamAI(), boss_kologarn::boss_kologarnAI::boss_kologarnAI(), boss_koralon::boss_koralonAI::boss_koralonAI(), boss_krick::boss_krickAI::boss_krickAI(), boss_krosh_firehand::boss_krosh_firehand(), boss_krystallus::boss_krystallusAI::boss_krystallusAI(), boss_lavanthor::boss_lavanthorAI::boss_lavanthorAI(), boss_maiden_of_grief::boss_maiden_of_griefAI::boss_maiden_of_griefAI(), boss_malygos::boss_malygosAI::boss_malygosAI(), boss_marwyn::boss_marwynAI::boss_marwynAI(), boss_mimiron::boss_mimironAI::boss_mimironAI(), boss_moragg::boss_moraggAI::boss_moraggAI(), boss_olm_the_summoner::boss_olm_the_summoner(), boss_palehoof::boss_palehoofAI::boss_palehoofAI(), boss_paletress::boss_paletressAI::boss_paletressAI(), boss_priestess_lackey_commonAI::boss_priestess_lackey_commonAI(), boss_razorscale::boss_razorscaleAI::boss_razorscaleAI(), boss_roar::boss_roar(), boss_romulo::boss_romulo(), boss_runemaster_molgeim::boss_runemaster_molgeimAI::boss_runemaster_molgeimAI(), boss_sathrovarr::boss_sathrovarr(), boss_sjonnir::boss_sjonnirAI::boss_sjonnirAI(), boss_skadi_grauf::boss_skadi_graufAI::boss_skadi_graufAI(), boss_skadi::boss_skadiAI::boss_skadiAI(), boss_skarvald_the_constructor::boss_skarvald_the_constructor(), boss_steelbreaker::boss_steelbreakerAI::boss_steelbreakerAI(), boss_stormcaller_brundir::boss_stormcaller_brundirAI::boss_stormcaller_brundirAI(), boss_strawman::boss_strawman(), boss_svala::boss_svalaAI::boss_svalaAI(), boss_thorim::boss_thorimAI::boss_thorimAI(), boss_tinhead::boss_tinhead(), boss_toravon::boss_toravonAI::boss_toravonAI(), boss_twin_valkyrAI::boss_twin_valkyrAI(), boss_tyrannus::boss_tyrannusAI::boss_tyrannusAI(), boss_urom::boss_uromAI::boss_uromAI(), boss_varos::boss_varosAI::boss_varosAI(), boss_vezax::boss_vezaxAI::boss_vezaxAI(), boss_xevozz::boss_xevozzAI::boss_xevozzAI(), boss_xt002::boss_xt002AI::boss_xt002AI(), boss_ymiron::boss_ymironAI::boss_ymironAI(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::boss_yoggsaron_saraAI(), boss_yoggsaron::boss_yoggsaronAI::boss_yoggsaronAI(), boss_zuramat::boss_zuramatAI::boss_zuramatAI(), brann_bronzebeard::brann_bronzebeardAI::brann_bronzebeardAI(), spell_serpentshrine_cavern_coilfang_water::CalcPeriodic(), spell_igb_rocket_pack_useable_aura::CheckAreaTarget(), Spell::CheckCast(), spell_putricide_mutation_init::CheckRequirementInternal(), GameObject::Create(), boss_kologarn_eyebeam::boss_kologarn_eyebeamAI::DamageDealt(), boss_illidari_council_memberAI::DamageTaken(), npc_ulduar_iron_construct::npc_ulduar_iron_constructAI::DamageTaken(), boss_thorim_start_npcs::boss_thorim_start_npcsAI::DamageTaken(), boss_mal_ganis::boss_mal_ganisAI::DamageTaken(), boss_kologarn_arms::boss_kologarn_armsAI::DamageTaken(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::DamageTaken(), boss_razuvious_minion::boss_razuvious_minionAI::DoAction(), boss_thorim_sif::boss_thorim_sifAI::DoAction(), npc_xt002_heart::npc_xt002_heartAI::DoAction(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::DoAction(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::DoAction(), Spell::EffectSanctuary(), Spell::EffectSendEvent(), boss_entropius::EnterEvadeMode(), npc_ghostly_priest::npc_ghostly_priestAI::EnterEvadeMode(), npc_phantom_mage::npc_phantom_mageAI::EnterEvadeMode(), npc_shadowy_mercenary::npc_shadowy_mercenaryAI::EnterEvadeMode(), npc_spectral_footman::npc_spectral_footmanAI::EnterEvadeMode(), npc_tortured_rifleman::npc_tortured_riflemanAI::EnterEvadeMode(), SendEncounterUnit::Execute(), UtherBatteredHiltEvent::Execute(), spell_blood_queen_pact_of_the_darkfallen::FilterTargets(), spell_igb_teleport_players_on_victory::FilterTargets(), SmartScript::GetTargets(), go_brazier_of_madness::GossipHello(), go_blood_drenched_door::go_blood_drenched_doorAI::GossipHello(), go_celestial_planetarium_access::go_celestial_planetarium_accessAI::GossipHello(), spell_felmyst_open_brutallus_back_doors::HandleAfterCast(), spell_thaddius_pos_neg_charge::HandleDamage(), spell_halion_twilight_division::HandleDummy(), spell_teron_gorefiend_shadow_of_death::HandleEffectRemove(), AuraEffect::HandleFeignDeath(), spell_hadronox_summon_periodic_aura::HandlePeriodic(), spell_serpentshrine_cavern_coilfang_water::HandlePeriodic(), spell_festergut_pungent_blight::HandleScript(), spell_putricide_unbound_plague::HandleScript(), spell_auto_repair::HandleScript(), spell_temple_of_atal_hakkar_awaken_the_soulflayer::HandleSendEvent(), spell_uldaman_boss_agro_archaedas::HandleSendEvent(), spell_illidari_council_circle_of_healing::HandleSharedRule(), spell_putricide_mutated_transformation::HandleSummon(), go_eredar_twins_blaze::InitializeAI(), npc_toxic_slime::InitializeAI(), SmartAI::IsEscortInvokerInRange(), npc_hyjal_jaina::hyjalJainaAI::IsSummonedBy(), npc_living_inferno::npc_living_infernoAI::IsSummonedBy(), npc_kinetic_bomb::npc_kinetic_bombAI::IsSummonedBy(), npc_putricide_oozeAI::IsSummonedBy(), boss_kalec::JustDied(), boss_entropius::JustDied(), boss_headless_horseman::JustDied(), npc_hyjal_jaina::hyjalJainaAI::JustDied(), npc_hyjal_thrall::hyjalThrallAI::JustDied(), npc_hyjal_tyrande::hyjalTyrandeAI::JustDied(), boss_infinite_corruptor::boss_infinite_corruptorAI::JustDied(), npc_hor_raging_ghoul::npc_hor_raging_ghoulAI::JustDied(), npc_hor_risen_witch_doctor::npc_hor_risen_witch_doctorAI::JustDied(), npc_hor_lumbering_abomination::npc_hor_lumbering_abominationAI::JustDied(), npc_stinky_icc::npc_stinky_iccAI::JustDied(), npc_precious_icc::npc_precious_iccAI::JustDied(), boss_kelthuzad_minion::boss_kelthuzad_minionAI::JustDied(), boss_thaddius_summon::boss_thaddius_summonAI::JustDied(), npc_mr_bigglesworth::JustDied(), boss_sjonnir_iron_sludge::boss_sjonnir_iron_sludgeAI::JustDied(), npc_auriaya_feral_defender::npc_auriaya_feral_defenderAI::JustDied(), npc_ulduar_iron_construct::npc_ulduar_iron_constructAI::JustDied(), boss_ignis::boss_ignisAI::JustDied(), boss_kologarn_arms::boss_kologarn_armsAI::JustDied(), boss_thorim_start_npcs::boss_thorim_start_npcsAI::JustDied(), boss_thorim_runic_colossus::boss_thorim_runic_colossusAI::JustDied(), boss_thorim_ancient_rune_giant::boss_thorim_ancient_rune_giantAI::JustDied(), npc_xt002_heart::npc_xt002_heartAI::JustDied(), boss_epoch_hunter::JustDied(), boss_freya_elder_stonebark::boss_freya_elder_stonebarkAI::JustDied(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::JustDied(), boss_freya_elder_ironbranch::boss_freya_elder_ironbranchAI::JustDied(), npc_xt002_scrapbot::npc_xt002_scrapbotAI::JustDied(), npc_frost_tomb::JustDied(), npc_crystalline_frayer::JustEngagedWith(), npc_auriaya_sanctum_sentry::npc_auriaya_sanctum_sentryAI::JustEngagedWith(), boss_ignis::boss_ignisAI::JustEngagedWith(), boss_thaddius_summon::boss_thaddius_summonAI::JustEngagedWith(), boss_razuvious_minion::boss_razuvious_minionAI::JustEngagedWith(), boss_headless_horseman::JustReachedHome(), boss_yoggsaron_cloud::boss_yoggsaron_cloudAI::JustSummoned(), npc_frozen_orb_stalker::npc_frozen_orb_stalkerAI::JustSummoned(), npc_warchief_portal::JustSummoned(), boss_captain_skarloc::JustSummoned(), npc_gluttonous_abomination::npc_gluttonous_abominationAI::JustSummoned(), npc_gothik_trigger::npc_gothik_triggerAI::JustSummoned(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::KilledUnit(), boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI::KilledUnit(), boss_kelthuzad_minion::boss_kelthuzad_minionAI::KilledUnit(), boss_razuvious_minion::boss_razuvious_minionAI::KilledUnit(), boss_thaddius_summon::boss_thaddius_summonAI::KilledUnit(), spell_felmyst_open_brutallus_back_doors::Load(), spell_igb_rocket_pack_useable_aura::Load(), spell_igb_gunship_fall_teleport::Load(), spell_igb_teleport_players_on_victory::Load(), spell_the_lich_king_quake::Load(), spell_the_lich_king_harvest_soul_aura::Load(), spell_the_lich_king_restore_soul::Load(), spell_dreamwalker_nightmare_cloud_aura::Load(), npc_ouro_spawner::MoveInLineOfSight(), npc_announcer_toc5::npc_announcer_toc5AI::MovementInform(), npc_xt002_scrapbot::npc_xt002_scrapbotAI::MovementInform(), npc_ahune_bunny::npc_ahune_bunny(), npc_akama_illidan::npc_akama_illidan(), npc_akama_shade::npc_akama_shade(), npc_ancient_wisp::npc_ancient_wisp(), npc_argent_soldier::npc_argent_soldierAI::npc_argent_soldierAI(), npc_arthas::npc_arthasAI::npc_arthasAI(), npc_azure_saboteur::npc_azure_saboteurAI::npc_azure_saboteurAI(), npc_barnes::npc_barnesAI::npc_barnesAI(), npc_belnistrasz::npc_belnistraszAI::npc_belnistraszAI(), npc_black_knight_ghoul::npc_black_knight_ghoulAI::npc_black_knight_ghoulAI(), npc_blood_queen_lana_thel::npc_blood_queen_lana_thelAI::npc_blood_queen_lana_thelAI(), npc_buru_egg::npc_buru_egg(), npc_chained_spirit::npc_chained_spirit(), npc_chesspiece::npc_chesspiece(), npc_creature_generator_akama::npc_creature_generator_akama(), npc_dirt_mound::npc_dirt_mound(), npc_dragonflayer_forge_master::npc_dragonflayer_forge_master(), npc_earthen_ring_flamecaller::npc_earthen_ring_flamecaller(), npc_echo_of_medivh::npc_echo_of_medivh(), npc_erekem_guard::npc_erekem_guardAI::npc_erekem_guardAI(), npc_ferocious_rhino::npc_ferocious_rhinoAI::npc_ferocious_rhinoAI(), npc_forest_frog::npc_forest_frog(), npc_fos_corrupted_soul_fragment::npc_fos_corrupted_soul_fragmentAI::npc_fos_corrupted_soul_fragmentAI(), npc_frenzied_worgen::npc_frenzied_worgenAI::npc_frenzied_worgenAI(), npc_frost_tomb::npc_frost_tomb(), npc_frozen_core::npc_frozen_core(), npc_general_andorov::npc_general_andorov(), npc_grimstone::npc_grimstoneAI::npc_grimstoneAI(), npc_harrison_jones::npc_harrison_jones(), npc_healing_ward::npc_healing_ward(), npc_high_overlord_saurfang_icc::npc_high_overlord_saurfangAI::npc_high_overlord_saurfangAI(), npc_hive_zara_larva::npc_hive_zara_larva(), npc_hor_leader_second::npc_hor_leader_secondAI::npc_hor_leader_secondAI(), npc_hor_leader::npc_hor_leaderAI::npc_hor_leaderAI(), npc_hor_lich_king::npc_hor_lich_kingAI::npc_hor_lich_kingAI(), npc_hover_disk::npc_hover_diskAI::npc_hover_diskAI(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::npc_icc_gauntlet_controllerAI(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::npc_icc_putricades_trapAI(), npc_ichor_globule::npc_ichor_globuleAI::npc_ichor_globuleAI(), npc_image_of_medivh::npc_image_of_medivhAI::npc_image_of_medivhAI(), npc_kalecgos_kj::npc_kalecgos_kj(), npc_kiljaeden_controller::npc_kiljaeden_controller(), npc_kilrek::npc_kilrek(), npc_madrigosa::npc_madrigosa(), npc_maiev_illidan::npc_maiev_illidan(), npc_massive_jormungar::npc_massive_jormungarAI::npc_massive_jormungarAI(), npc_medivh_bm::npc_medivh_bm(), npc_memory::npc_memoryAI::npc_memoryAI(), npc_millhouse_manastorm::npc_millhouse_manastormAI::npc_millhouse_manastormAI(), npc_molten_golem::npc_molten_golem(), npc_muradin_bronzebeard_icc::npc_muradin_bronzebeard_iccAI::npc_muradin_bronzebeard_iccAI(), npc_nerubian_burrower::npc_nerubian_burrowerAI::npc_nerubian_burrowerAI(), npc_nexus_lord::npc_nexus_lordAI::npc_nexus_lordAI(), npc_oculus_drake::npc_oculus_drakeAI::npc_oculus_drakeAI(), npc_oculus_drakegiver::npc_oculus_drakegiverAI::npc_oculus_drakegiverAI(), npc_pos_after_first_boss::npc_pos_after_first_bossAI::npc_pos_after_first_bossAI(), npc_pos_collapsing_icicle::npc_pos_collapsing_icicleAI::npc_pos_collapsing_icicleAI(), npc_pos_deathwhisper_necrolyte::npc_pos_deathwhisper_necrolyteAI::npc_pos_deathwhisper_necrolyteAI(), npc_pos_icicle_trigger::npc_pos_icicle_triggerAI::npc_pos_icicle_triggerAI(), npc_pos_leader_second::npc_pos_leader_secondAI::npc_pos_leader_secondAI(), npc_pos_leader::npc_pos_leaderAI::npc_pos_leaderAI(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::npc_pos_martin_or_gorkun_secondAI(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::npc_pos_tyrannus_eventsAI(), npc_power_spark::npc_power_sparkAI::npc_power_sparkAI(), npc_ravenous_furbolg::npc_ravenous_furbolgAI::npc_ravenous_furbolgAI(), npc_risen_guardian::npc_risen_guardianAI::npc_risen_guardianAI(), npc_rocknot::npc_rocknotAI::npc_rocknotAI(), npc_scholomance_occultist::npc_scholomance_occultistAI::npc_scholomance_occultistAI(), npc_scion_of_eternity::npc_scion_of_eternityAI::npc_scion_of_eternityAI(), npc_sergeant_bly::npc_sergeant_blyAI::npc_sergeant_blyAI(), npc_sindragosa_trash::npc_sindragosa_trashAI::npc_sindragosa_trashAI(), npc_snobold_vassal::npc_snobold_vassalAI::npc_snobold_vassalAI(), npc_taretha::npc_tarethaAI::npc_tarethaAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::npc_thrall_old_hillsbradAI(), npc_time_rift::npc_time_rift(), npc_tito::npc_tito(), npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI::npc_toc5_grand_champion_minionAI(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::npc_ulduar_aerial_command_unitAI(), npc_ulduar_expedition_commander::npc_ulduar_expedition_commanderAI::npc_ulduar_expedition_commanderAI(), npc_ulduar_expedition_engineer::npc_ulduar_expedition_engineerAI::npc_ulduar_expedition_engineerAI(), npc_ulduar_flash_freeze::npc_ulduar_flash_freezeAI::npc_ulduar_flash_freezeAI(), npc_ulduar_harpoonfirestate::npc_ulduar_harpoonfirestateAI::npc_ulduar_harpoonfirestateAI(), npc_ulduar_hodir_druid::npc_ulduar_hodir_druidAI::npc_ulduar_hodir_druidAI(), npc_ulduar_hodir_mage::npc_ulduar_hodir_mageAI::npc_ulduar_hodir_mageAI(), npc_ulduar_hodir_priest::npc_ulduar_hodir_priestAI::npc_ulduar_hodir_priestAI(), npc_ulduar_hodir_shaman::npc_ulduar_hodir_shamanAI::npc_ulduar_hodir_shamanAI(), npc_ulduar_leviathan_mkii::npc_ulduar_leviathan_mkiiAI::npc_ulduar_leviathan_mkiiAI(), npc_ulduar_magnetic_core::npc_ulduar_magnetic_coreAI::npc_ulduar_magnetic_coreAI(), npc_ulduar_saronite_animus::npc_ulduar_saronite_animusAI::npc_ulduar_saronite_animusAI(), npc_ulduar_saronite_vapors::npc_ulduar_saronite_vaporsAI::npc_ulduar_saronite_vaporsAI(), npc_ulduar_vx001::npc_ulduar_vx001AI::npc_ulduar_vx001AI(), npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::npc_vh_teleportation_portalAI(), npc_vh_void_sentry::npc_vh_void_sentryAI::npc_vh_void_sentryAI(), npc_vrykul_skeleton::npc_vrykul_skeleton(), npc_weegli_blastfuse::npc_weegli_blastfuseAI::npc_weegli_blastfuseAI(), npc_zealot_lorkhan::npc_zealot_lorkhan(), npc_zealot_zath::npc_zealot_zath(), spell_blood_queen_vampiric_bite::OnCast(), achievement_cant_do_that_while_stunned::OnCheck(), achievement_auriaya_crazy_cat_lady::OnCheck(), achievement_auriaya_nine_lives::OnCheck(), achievement_kologarn_looks_could_kill::OnCheck(), achievement_kologarn_rubble_and_roll::OnCheck(), achievement_kologarn_with_open_arms::OnCheck(), achievement_xt002_nerf_engineering::OnCheck(), achievement_xt002_nerf_gravity_bombs::OnCheck(), achievement_flame_leviathan_unbroken::OnCheck(), achievement_thorim_stand_in_the_lightning::OnCheck(), achievement_thorim_lose_your_illusion::OnCheck(), achievement_yogg_saron_darkness::OnCheck(), achievement_yogg_saron_he_waits_dreaming::OnCheck(), go_shadowforge_brazier::OnGossipHello(), go_blackened_urn::OnGossipHello(), go_gong_of_bethekk::OnGossipHello(), go_palehoof_sphere::OnGossipHello(), go_vh_activation_crystal::OnGossipHello(), go_main_chambers_access_panel::OnGossipHello(), go_broggok_lever::OnGossipHello(), npc_barnes::OnGossipHello(), npc_arthas::OnGossipHello(), npc_cos_chromie_middle::OnGossipHello(), npc_thrall_old_hillsbrad::OnGossipHello(), npc_announcer_toc5::OnGossipHello(), npc_announcer_toc10::OnGossipHello(), npc_hor_leader::OnGossipHello(), npc_high_overlord_saurfang_icc::OnGossipHello(), npc_muradin_bronzebeard_icc::OnGossipHello(), npc_alchemist_adrianna::OnGossipHello(), npc_oculus_drakegiver::OnGossipHello(), brann_bronzebeard::OnGossipHello(), npc_ulduar_expedition_commander::OnGossipHello(), npc_vh_sinclari::OnGossipHello(), go_orb_of_domination::OnGossipHello(), icecrown_citadel_teleport::OnGossipHello(), go_ulduar_do_not_push_this_button::OnGossipHello(), go_strange_pool::OnGossipHello(), go_ulduar_pure_saronite_deposit::OnGossipHello(), go_harpoon_canon::OnGossipHello(), go_the_focusing_iris::OnGossipHello(), go_ulduar_working_harpoon::OnGossipHello(), npc_hyjal_jaina::OnGossipSelect(), npc_hyjal_thrall::OnGossipSelect(), boss_gloomrel::OnGossipSelect(), boss_doomrel::OnGossipSelect(), npc_zulaman_hostage::OnGossipSelect(), npc_high_overlord_saurfang_icc::OnGossipSelect(), npc_muradin_bronzebeard_icc::OnGossipSelect(), npc_announcer_toc5::OnGossipSelect(), npc_announcer_toc10::OnGossipSelect(), npc_hor_leader::OnGossipSelect(), npc_ulduar_expedition_commander::OnGossipSelect(), npc_vh_sinclari::OnGossipSelect(), npc_cos_chromie_start::OnGossipSelect(), npc_cos_chromie_middle::OnGossipSelect(), npc_thrall_old_hillsbrad::OnGossipSelect(), npc_hor_leader_second::OnGossipSelect(), npc_icc_buff_switcher::OnGossipSelect(), go_pumpkin_shrine::OnGossipSelect(), go_father_flame::OnLootStateChanged(), npc_cos_chromie_start::OnQuestAccept(), npc_cos_chromie_middle::OnQuestAccept(), npc_rocknot::OnQuestReward(), spell_blood_queen_frenzied_bloodthirst_aura::OnRemove(), OnlyOnceAreaTriggerScript::OnTrigger(), at_trigger_the_beast_movement::OnTrigger(), at_the_beast_room::OnTrigger(), at_karazhan_atiesh_aran::OnTrigger(), at_karazhan_mirkblood_approach::OnTrigger(), at_karazhan_mirkblood_entrance::OnTrigger(), at_cthun_stomach_exit::OnTrigger(), at_cthun_center::OnTrigger(), at_baltharus_plateau::OnTrigger(), at_hor_battered_hilt_start::OnTrigger(), at_hor_battered_hilt_throw::OnTrigger(), at_lady_deathwhisper_entrance::OnTrigger(), at_sindragosa_lair::OnTrigger(), at_icc_saurfang_portal::OnTrigger(), at_icc_shutdown_traps::OnTrigger(), at_icc_start_blood_quickening::OnTrigger(), at_icc_start_frostwing_gauntlet::OnTrigger(), at_icc_gauntlet_event::OnTrigger(), at_icc_putricide_trap::OnTrigger(), at_frozen_throne_teleport::OnTrigger(), at_thaddius_entrance::OnTrigger(), at_naxxramas_hub_portal::OnTrigger(), at_quagmirran_lair::OnTrigger(), at_shattered_halls_execution::OnTrigger(), at_ring_of_law::OnTrigger(), at_dragonspire_hall::OnTrigger(), at_blackrock_stadium::OnTrigger(), at_malfurion_stormrage::OnTrigger(), at_battleguard_sartura::OnTrigger(), at_hor_shadow_throne::OnTrigger(), at_tyrannus_event_starter::OnTrigger(), ValithriaDespawner::operator()(), npc_hyjal_jaina::hyjalJainaAI::PathEndReached(), SmartScript::ProcessAction(), spell_igb_gunship_fall_teleport::RelocateDest(), npc_dark_fiend::Reset(), npc_hyjal_jaina::hyjalJainaAI::Reset(), npc_hyjal_thrall::hyjalThrallAI::Reset(), boss_infinite_corruptor::boss_infinite_corruptorAI::Reset(), go_sand_trap::Reset(), npc_xerestrasza::npc_xerestraszaAI::Reset(), npc_announcer_toc5::npc_announcer_toc5AI::Reset(), boss_ignis::boss_ignisAI::Reset(), npc_xt002_scrapbot::npc_xt002_scrapbotAI::Reset(), npc_xt002_boombot::npc_xt002_boombotAI::Reset(), OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(), GameObject::SaveStateToDB(), spell_the_lich_king_valkyr_target_search::SelectTarget(), spell_igb_gunship_fall_teleport::SelectTransport(), Player::SendInitWorldStates(), Player::SendLoot(), Unit::setDeathState(), Player::SetInWater(), boss_victor_nefarius::boss_victor_nefariusAI::sGossipSelect(), npc_ulduar_iron_construct::npc_ulduar_iron_constructAI::SpellHit(), npc_ulduar_keeper::npc_ulduar_keeperAI::SpellHit(), npc_living_constellation::npc_living_constellationAI::SpellHit(), npc_ulduar_proximity_mine::npc_ulduar_proximity_mineAI::SpellHitTarget(), npc_ulduar_rocket_strike_trigger::npc_ulduar_rocket_strike_triggerAI::SpellHitTarget(), boss_yoggsaron_voice::boss_yoggsaron_voiceAI::SpellHitTarget(), npc_gothik_trigger::npc_gothik_triggerAI::SummonedCreatureDespawn(), TriggerBurningPitch(), npc_bone_spike::npc_bone_spikeAI::UpdateAI(), npc_frost_freeze_trap::npc_frost_freeze_trapAI::UpdateAI(), boss_thaddius_summon::boss_thaddius_summonAI::UpdateAI(), npc_brann_bronzebeard_algalon::npc_brann_bronzebeard_algalonAI::UpdateAI(), npc_ulduar_flash_freeze::npc_ulduar_flash_freezeAI::UpdateAI(), npc_ulduar_bot_summon_trigger::npc_ulduar_bot_summon_triggerAI::UpdateAI(), npc_ulduar_flames_initial::npc_ulduar_flames_initialAI::UpdateAI(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::UpdateAI(), npc_xt002_scrapbot::npc_xt002_scrapbotAI::UpdateAI(), npc_xt002_boombot::npc_xt002_boombotAI::UpdateAI(), Player::UpdateArea(), Map::UpdateEncounterState(), violet_hold_trashAI::violet_hold_trashAI(), and npc_black_knight_skeletal_gryphon::npc_black_knight_skeletal_gryphonAI::WaypointReached().

◆ getLevelForTarget()

virtual uint8 WorldObject::getLevelForTarget ( WorldObject const *  ) const
inlinevirtual

Reimplemented in Unit, Creature, and GameObject.

565{ return 1; }

Referenced by CanDetectStealthOf().

◆ GetLiquidData()

◆ GetMap()

Map * WorldObject::GetMap ( ) const
inline
621{ ASSERT(m_currMap); return m_currMap; }

References ASSERT, and m_currMap.

Referenced by Map::_FindGameObject(), Battleground::_ProcessResurrect(), RandomMovementGenerator< T >::_setRandomLocation(), boss_sjonnir::boss_sjonnirAI::ActivatePipe(), Map::AddPlayerToMap(), AddToMapVisibilityOverrideContainers(), AddToObjectUpdate(), GameObject::AddToSkillupList(), Corpse::AddToWorld(), Creature::AddToWorld(), DynamicObject::AddToWorld(), GameObject::AddToWorld(), AddToWorld(), Pet::AddToWorld(), boss_hadronox::boss_hadronoxAI::AnyPlayerValid(), Map::ApplyDynamicModeRespawnScaling(), npc_ritual_channeler::npc_ritual_channelerAI::AttackStart(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::AttackStart(), boss_drekthar::boss_drektharAI::AttackStart(), boss_vanndar::boss_vanndarAI::AttackStart(), CinematicMgr::BeginCinematic(), boss_flame_leviathan::boss_flame_leviathanAI::BindPlayers(), DynamicObject::BindToCaster(), Player::BuildPlayerRepop(), PathGenerator::BuildPolyPath(), MotionTransport::BuildUpdate(), StaticTransport::BuildUpdate(), spell_svala_ritual_strike_aura::CalculateAmount(), spell_gen_consumption::CalculateDamage(), Creature::CanCreatureAttack(), Unit::CanHaveThreatList(), CanNeverSee(), Creature::CanPeriodicallyCallForAssistance(), Player::CanRollForItemInLFG(), boss_professor_putricide::boss_professor_putricideAI::ChangePhase(), Spell::CheckCast(), Map::CheckCollisionAndGetValidCoords(), Player::CheckDuelDistance(), Spell::CheckEffectTarget(), spell_sha_fire_nova::CheckFireTotem(), boss_gothik::boss_gothikAI::CheckGroupSplitted(), Player::CheckInstanceLoginValid(), boss_volazj::CheckPhaseMinions(), boss_skadi_grauf::boss_skadi_graufAI::CheckPlayers(), BattlegroundRV::CheckPositionForUnit(), Spell::CheckSpellFocus(), Creature::Create(), Pet::CreateBaseAtCreature(), Pet::CreateBaseAtCreatureInfo(), Player::CreateCorpse(), DynamicObject::CreateDynamicObject(), Creature::CreateFromProto(), MotionTransport::CreateGOPassenger(), MotionTransport::CreateNPCPassenger(), Player::CreatePet(), Player::CreatePet(), TransportMgr::CreateTransport(), boss_eregos::boss_eregosAI::DamageTaken(), boss_eadric::boss_eadricAI::DamageTaken(), boss_ick::boss_ickAI::DamageTaken(), boss_freya::boss_freyaAI::DamageTaken(), boss_the_lich_king::boss_the_lich_kingAI::DamageTaken(), boss_thorim::boss_thorimAI::DamageTaken(), MotionTransport::DelayedTeleportTransport(), Creature::DeleteFromDB(), GameObject::DeleteFromDB(), Creature::DespawnOnEvade(), boss_twin_valkyrAI::DoAction(), boss_nightbane::DoAction(), npc_harrison_jones::DoAction(), boss_ayamiss::DoAction(), npc_thrall_warchief::npc_thrall_warchiefAI::DoAction(), npc_orb_carrier::npc_orb_carrierAI::DoAction(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::DoAction(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::DoAction(), boss_the_lich_king::boss_the_lich_kingAI::DoAction(), npc_strangulate_vehicle::npc_strangulate_vehicleAI::DoAction(), brann_bronzebeard::brann_bronzebeardAI::DoAction(), npc_arthas::npc_arthasAI::DoAction(), npc_molten_golem::DoAction(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::DoAction(), boss_illidari_council::DoAction(), Spell::DoAllEffectOnTarget(), boss_algalon_the_observer::boss_algalon_the_observerAI::DoCheckHeraldOfTheTitans(), MotionTransport::DoEventIfAny(), FlightPathMovementGenerator::DoEventIfAny(), WorldSession::DoLootRelease(), ScriptedAI::DoPlayMusic(), npc_forest_frog::DoSpawnRandom(), ScriptedAI::DoTeleportAll(), boss_icehowl::boss_icehowlAI::DoTrampleIfValid(), CreatureAI::DoZoneInCombat(), Player::DuelComplete(), DynObjAura::DynObjAura(), Spell::EffectAddFarsight(), Spell::EffectCreateTamedPet(), Spell::EffectDestroyAllTotems(), Spell::EffectDuel(), Spell::EffectDummy(), Spell::EffectPersistentAA(), Spell::EffectScriptEffect(), Spell::EffectSendEvent(), Spell::EffectSummonObject(), Spell::EffectSummonObjectWild(), Spell::EffectSummonPet(), Spell::EffectSummonType(), Spell::EffectTameCreature(), Spell::EffectTeleportUnits(), Spell::EffectTransmitted(), boss_sapphiron::boss_sapphironAI::EnterCombatSelfFunction(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::EnterEvadeMode(), boss_drekthar::boss_drektharAI::EnterEvadeMode(), boss_vanndar::boss_vanndarAI::EnterEvadeMode(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::EnterEvadeMode(), boss_malygos::boss_malygosAI::EnterEvadeMode(), BattleExperienceEvent::Execute(), Unit::ExecuteDelayedUnitRelocationEvent(), SmartScript::FillScript(), npc_singularity::FindAndFollowTarget(), SmartScript::FindCreatureNear(), SmartScript::FindGameObjectNear(), Creature::ForcedDespawn(), Acore::XP::Gain(), boss_thorim::boss_thorimAI::GetArenaPlayer(), Player::GetCorpse(), ObjectAccessor::GetCorpse(), ObjectAccessor::GetCreature(), ChatHandler::GetCreatureFromPlayerMapByDbGuid(), ObjectAccessor::GetDynamicObject(), GetFloorZ(), ObjectAccessor::GetGameObject(), Player::GetGameObjectIfCanInteractWith(), GetGridActivationRange(), GetInstanceScript(), GetMapHeight(), GetMapWaterOrGroundLevel(), Unit::GetMeleeAttackPoint(), PathGenerator::GetNavTerrain(), Player::GetNextQuest(), ChatHandler::GetObjectFromPlayerMapByDbGuid(), ObjectAccessor::GetPet(), ObjectAccessor::GetPlayer(), GetSightRange(), npc_ranshalla::npc_ranshallaAI::GetSpeakerByEntry(), SpellMgr::GetSpellIdForDifficulty(), SmartScript::GetTargets(), ObjectAccessor::GetTransport(), GetVisibilityRange(), go_celestial_planetarium_access::go_celestial_planetarium_accessAI::GossipHello(), misc_commandscript::HandleAppearCommand(), WorldSession::HandleAreaSpiritHealerQueryOpcode(), WorldSession::HandleAreaSpiritHealerQueueOpcode(), WorldSession::HandleAreaTriggerOpcode(), AuraEffect::HandleAuraDummy(), Unit::HandleAuraProc(), WorldSession::HandleAutostoreLootItemOpcode(), WorldSession::HandleBattlemasterHelloOpcode(), WorldSession::HandleBattlemasterJoinArena(), misc_commandscript::HandleChangeWeather(), spell_freezing_circle::HandleDamage(), debug_commandscript::HandleDebugMapDataCommand(), debug_commandscript::HandleDebugSpawnVehicleCommand(), debug_commandscript::HandleDebugVisibilityDataCommand(), debug_commandscript::HandleDebugZoneStatsCommand(), OutdoorPvPSI::HandleDropFlag(), spell_item_nitro_boots::HandleDummy(), spell_sha_fire_nova::HandleDummy(), spell_teron_gorefiend_shadowy_construct::HandleEffectApply(), spell_valkyr_touch_aura::HandleEffectPeriodic(), AuraEffect::HandleFeignDeath(), gobject_commandscript::HandleGameObjectAddCommand(), WorldSession::HandleGameobjectReportUse(), WorldSession::HandleGossipSelectOptionOpcode(), misc_commandscript::HandleGroupSummonCommand(), instance_commandscript::HandleInstanceSaveDataCommand(), list_commandscript::HandleListCreatureCommand(), list_commandscript::HandleListObjectCommand(), WorldSession::HandleLootMasterGiveOpcode(), WorldSession::HandleLootMoneyOpcode(), AuraEffect::HandleModInvisibility(), AuraEffect::HandleModPossessPet(), AuraEffect::HandleModStealth(), WorldSession::HandleMoverRelocation(), WorldSession::HandleMoveTeleportAck(), WorldSession::HandleMoveWorldportAck(), npc_commandscript::HandleNpcAddCommand(), spell_yogg_saron_brain_link_aura::HandleOnEffectApply(), WorldSession::HandlePetAction(), WorldSession::HandlePetActionHelper(), AuraEffect::HandlePhase(), WorldSession::HandlePlayerLoginFromDB(), WorldSession::HandlePlayerLoginToCharInWorld(), AuraEffect::HandlePreventResurrection(), spell_dreamwalker_summon_portal::HandleScript(), spell_archavon_rock_shards::HandleScript(), spell_prince_taldaram_conjure_flame_sphere::HandleScript(), WorldSession::HandleSetDungeonDifficultyOpcode(), WorldSession::HandleSetRaidDifficultyOpcode(), misc_commandscript::HandleSkirmishCommand(), spell_halion_damage_aoe_summon::HandleSummon(), spell_putricide_mutated_transformation::HandleSummon(), spell_wintergrasp_create_vehicle::HandleSummon(), misc_commandscript::HandleSummonCommand(), WorldSession::HandleTotemDestroyed(), spell_winter_veil_racer_rocket_slam::HandleTriggerSpell(), wp_commandscript::HandleWpModifyCommand(), wp_commandscript::HandleWpShowCommand(), Player::HasQuestForGO(), Player::HasQuestForItem(), boss_ichoron::boss_ichoronAI::IchoronDoCastToAllHostilePlayers(), Creature::InitEntry(), TempSummon::InitStats(), Player::inRandomLfgDungeon(), InstanceHasScript(), boss_halion::boss_halionAI::IsAnyPlayerValid(), Player::IsAtGroupRewardDistance(), Unit::isAttackingPlayer(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::IsHeroic(), npc_strangulate_vehicle::npc_strangulate_vehicleAI::IsHeroic(), Unit::isInAccessiblePlaceFor(), PathGenerator::IsSwimmableSegment(), Creature::IsUpdateNeeded(), GameObject::IsUpdateNeeded(), IsWithinLOS(), IsWithinLOSInMap(), npc_ranshalla::npc_ranshallaAI::JustDidDialogueStep(), boss_rend_blackhand::boss_rend_blackhandAI::JustDied(), boss_apothecary_hummel::boss_apothecary_hummelAI::JustDied(), npc_coren_direbrew::JustDied(), boss_headless_horseman::JustDied(), boss_azuregos::boss_azuregosAI::JustDied(), boss_rajaxx::JustDied(), boss_skeram::JustDied(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::JustDied(), npc_gunship::npc_gunshipAI::JustDied(), boss_sjonnir::boss_sjonnirAI::JustDied(), boss_yoggsaron::boss_yoggsaronAI::JustDied(), boss_ahune::JustDied(), boss_four_horsemen::boss_four_horsemenAI::JustDied(), boss_alar::JustDied(), boss_devourer_of_souls::boss_devourer_of_soulsAI::JustEngagedWith(), boss_krystallus::boss_krystallusAI::JustEngagedWith(), boss_sjonnir::boss_sjonnirAI::JustEngagedWith(), boss_shirrak_the_dead_watcher::JustEngagedWith(), boss_alyson_antille::JustEngagedWith(), boss_ossirian::JustEngagedWith(), npc_tirion_fordring_tft::npc_tirion_fordringAI::JustReachedHome(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustSummoned(), boss_gothik::boss_gothikAI::JustSummoned(), Unit::Kill(), Player::KilledMonsterCredit(), Player::KilledPlayerCredit(), spell_svalna_revive_champion::Land(), boss_felblood_kaelthas::LapseAction(), spell_the_lich_king_vile_spirits_aura::Load(), Creature::LoadCreatureFromDB(), GameObject::LoadGameObjectFromDB(), StaticTransport::LoadGameObjectFromDB(), Pet::LoadPetFromDB(), MotionTransport::LoadStaticPassengers(), WorldSession::LogoutPlayer(), AchievementCriteriaData::Meets(), MotionMaster::MoveBackwards(), MotionMaster::MoveFall(), MotionMaster::MoveForwards(), npc_ulduar_snow_mound::MoveInLineOfSight(), npc_tirion_fordring_tft::npc_tirion_fordringAI::MovementInform(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::MovementInform(), boss_malygos::boss_malygosAI::MovementInform(), boss_the_lich_king::boss_the_lich_kingAI::MovementInform(), MovePositionToFirstCollision(), npc_image_of_medivh::npc_image_of_medivhAI::NextStep(), npc_frost_sphere::npc_frost_sphereAI::npc_frost_sphereAI(), WaypointMovementGenerator< Creature >::OnArrived(), achievement_once_bitten_twice_shy::OnCheck(), npc_essence_of_twin::OnGossipHello(), lfg::LFGPlayerScript::OnPlayerMapChanged(), at_ancient_leaf::OnTrigger(), at_icc_saurfang_portal::OnTrigger(), AreaTrigger_at_celestial_planetarium_enterance::OnTrigger(), at_shattered_halls_execution::OnTrigger(), boss_pyroguard_emberseer::boss_pyroguard_emberseerAI::OpenDoors(), boss_nightbane::PathEndReached(), Unit::PetSpellFail(), spell_halion_twilight_phasing::Phase(), Player::PrepareQuestMenu(), spell_fire_festival_fortitude::PrepareSpellScript(), SmartScript::ProcessAction(), WorldSession::ProcessMovementInfo(), ProcessPositionDataChanged(), GameObject::Refresh(), Vehicle::RelocatePassengers(), Player::RemovedInsignia(), RemoveFromMapVisibilityOverrideContainers(), RemoveFromObjectUpdate(), Corpse::RemoveFromWorld(), Creature::RemoveFromWorld(), DynamicObject::RemoveFromWorld(), GameObject::RemoveFromWorld(), Pet::RemoveFromWorld(), boss_krystallus::boss_krystallusAI::RemoveStonedEffect(), boss_sartharion_dragonAI::RemoveTwilightPortal(), Player::RepopAtGraveyard(), boss_rend_blackhand::boss_rend_blackhandAI::Reset(), boss_azuregos::boss_azuregosAI::Reset(), boss_ossirian::Reset(), npc_tirion_fordring_tft::npc_tirion_fordringAI::Reset(), npc_raging_spirit::npc_raging_spiritAI::Reset(), npc_frostwing_vrykul::npc_frostwing_vrykulAI::Reset(), boss_sjonnir::boss_sjonnirAI::Reset(), boss_kologarn_pit_kill_bunny::Reset(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::Reset(), Player::ResetMap(), boss_volazj::ResetPlayersPhaseMask(), GameObject::Respawn(), Creature::Respawn(), Player::RewardQuest(), Player::RewardReputation(), Creature::SaveRespawnTime(), GameObject::SaveRespawnTime(), ScriptedAI::ScriptedAI(), Map::ScriptsProcess(), Spell::SearchTargets(), boss_yoggsaron_constrictor_tentacle::boss_yoggsaron_constrictor_tentacleAI::SelectConstrictTarget(), boss_yoggsaron_corruptor_tentacle::boss_yoggsaron_corruptor_tentacleAI::SelectCorruptionTarget(), Spell::SelectImplicitCasterDestTargets(), boss_gluth::boss_gluthAI::SelectPlayerInRoom(), boss_thorim_arena_npcs::boss_thorim_arena_npcsAI::SelectT(), spell_gen_rallying_cry_of_the_dragonslayer::SelectTarget(), ScriptedAI::SelectTargetFromPlayerList(), npc_minigob_manabonk::SelectTargetInDalaran(), CreatureTextMgr::SendChatPacket(), Player::SendInitialPacketsAfterAddToMap(), Player::SendInitialPacketsBeforeAddToMap(), Player::SendLoot(), CreatureTextMgr::SendNonChatPacket(), SendPacketToPlayers(), Acore::VisibleNotifier::SendToSelf(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::SendUpdateWorldState(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::SetData(), boss_pyroguard_emberseer::boss_pyroguard_emberseerAI::SetData(), Creature::setDeathState(), spell_blood_council_summon_shadow_resonance::SetDest(), spell_spawn_blood_pool::SetDest(), GameObject::SetDestructibleState(), Player::SetEntryPoint(), npc_gunship::npc_gunshipAI::SetGUID(), Unit::SetHover(), Creature::SetLootRecipient(), Unit::SetPhaseMask(), Creature::SetPosition(), GameObject::SetPosition(), boss_akilzon::SetWeather(), npc_tirion_fordring_tft::npc_tirion_fordringAI::sGossipSelect(), PathGenerator::ShortenPathUntilDist(), Player::SpawnCorpseBones(), boss_skadi_grauf::boss_skadi_graufAI::SpawnFlameTriggers(), boss_hodir::boss_hodirAI::SpawnHelpers(), boss_jaraxxus::boss_jaraxxusAI::SpellHit(), boss_the_lich_king::boss_the_lich_kingAI::SpellHitTarget(), boss_skadi_grauf::boss_skadi_graufAI::SpellHitTarget(), Player::StoreRaidMapDifficulty(), boss_majordomo::boss_majordomoAI::SummonedCreatureDies(), npc_kiljaeden_controller::SummonedCreatureDies(), npc_varian_wrynn::npc_varian_wrynnAI::SummonedCreatureDies(), npc_thrall_bfu::npc_thrall_bfuAI::SummonedCreatureDies(), SummonGameObject(), Spell::SummonGuardian(), Player::SummonPet(), boss_rend_blackhand::boss_rend_blackhandAI::SummonWave(), brann_bronzebeard::brann_bronzebeardAI::SwitchHeadVisaul(), lfg::LFGMgr::TeleportPlayer(), Player::TeleportTo(), MotionTransport::TeleportTransport(), Vehicle::TeleportVehicle(), Unit::UnsummonAllTotems(), Pet::Update(), MotionTransport::Update(), DynamicObject::Update(), GameObject::Update(), Creature::Update(), Player::Update(), AchievementMgr::UpdateAchievementCriteria(), boss_rend_blackhand::boss_rend_blackhandAI::UpdateAI(), boss_chromaggus::boss_chromaggusAI::UpdateAI(), boss_nefarian::UpdateAI(), boss_vaelastrasz::boss_vaelAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), npc_forest_frog::UpdateAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI(), npc_time_rift::UpdateAI(), boss_cthun::UpdateAI(), npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI::UpdateAI(), boss_grand_champion::boss_grand_championAI::UpdateAI(), npc_snobold_vassal::npc_snobold_vassalAI::UpdateAI(), boss_gormok::boss_gormokAI::UpdateAI(), boss_twin_valkyrAI::UpdateAI(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::UpdateAI(), boss_prince_valanar_icc::boss_prince_valanarAI::UpdateAI(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::UpdateAI(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::UpdateAI(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::UpdateAI(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::UpdateAI(), npc_gunship_boarding_addAI::UpdateAI(), npc_gunship_gunner::npc_gunship_gunnerAI::UpdateAI(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::UpdateAI(), boss_the_lich_king::boss_the_lich_kingAI::UpdateAI(), npc_tirion_fordring_tft::npc_tirion_fordringAI::UpdateAI(), npc_raging_spirit::npc_raging_spiritAI::UpdateAI(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::UpdateAI(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::UpdateAI(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::UpdateAI(), npc_ioc_gunship_captain::npc_ioc_gunship_captainAI::UpdateAI(), boss_gluth::boss_gluthAI::UpdateAI(), boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI::UpdateAI(), boss_heigan::boss_heiganAI::UpdateAI(), boss_sapphiron::boss_sapphironAI::UpdateAI(), boss_malygos::boss_malygosAI::UpdateAI(), npc_scion_of_eternity::npc_scion_of_eternityAI::UpdateAI(), npc_alexstrasza::npc_alexstraszaAI::UpdateAI(), boss_keristrasza::UpdateAI(), npc_stormforged_lieutenant::UpdateAI(), boss_loken::UpdateAI(), boss_volkhan::UpdateAI(), npc_molten_golem::UpdateAI(), npc_brann_bronzebeard_algalon::npc_brann_bronzebeard_algalonAI::UpdateAI(), boss_freya::boss_freyaAI::UpdateAI(), boss_freya_lifebinder::boss_freya_lifebinderAI::UpdateAI(), boss_freya_nature_bomb::boss_freya_nature_bombAI::UpdateAI(), boss_vezax::boss_vezaxAI::UpdateAI(), boss_hodir::boss_hodirAI::UpdateAI(), boss_ignis::boss_ignisAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), npc_ulduar_leviathan_mkii::npc_ulduar_leviathan_mkiiAI::UpdateAI(), npc_ulduar_flames_initial::npc_ulduar_flames_initialAI::UpdateAI(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::UpdateAI(), npc_preparations_for_war_vehicle::UpdateAI(), npc_pet_gen_plump_turkey::UpdateAI(), npc_gunship::npc_gunshipAI::UpdateAI(), npc_midsummer_bonfire::UpdateBonfireBlessingBuffs(), Player::UpdateCharmedAI(), npc_grimstone::npc_grimstoneAI::UpdateEscortAI(), GameObject::UpdateModel(), GameObject::UpdateModelPosition(), StaticTransport::UpdatePassengerPositions(), MotionTransport::UpdatePassengerPositions(), boss_netherspite::UpdatePortals(), Unit::UpdatePosition(), MotionTransport::UpdatePosition(), StaticTransport::UpdatePosition(), UpdatePositionData(), boss_pyroguard_emberseer::boss_pyroguard_emberseerAI::UpdateRunes(), Player::UpdateVisibilityOf(), npc_herald_of_the_lich_king::UpdateWeather(), npc_pallid_horror::UpdateWeather(), Player::UpdateZone(), GameObject::Use(), Cell::VisitFarVisibleObjects(), Cell::VisitObjects(), npc_ranshalla::npc_ranshallaAI::WaypointReached(), npc_grimstone::npc_grimstoneAI::WaypointReached(), npc_thrall_bfu::npc_thrall_bfuAI::WaypointReached(), and npc_cork_gizelton::npc_cork_gizeltonAI::WaypointReached().

◆ GetMapHeight()

◆ GetMapWaterOrGroundLevel() [1/2]

float WorldObject::GetMapWaterOrGroundLevel ( float  x,
float  y,
float  z,
float *  ground = nullptr 
) const
3042{
3043 return GetMap()->GetWaterOrGroundLevel(GetPhaseMask(), x, y, z, ground,
3044 IsUnit() ? !static_cast<Unit const*>(this)->HasWaterWalkAura() : false,
3046}
float GetWaterOrGroundLevel(uint32 phasemask, float x, float y, float z, float *ground=nullptr, bool swim=false, float collisionHeight=DEFAULT_COLLISION_HEIGHT) const
Definition Map.cpp:1093
STL namespace.

References GetCollisionHeight(), GetMap(), GetPhaseMask(), Map::GetWaterOrGroundLevel(), Object::IsUnit(), and Z_OFFSET_FIND_HEIGHT.

◆ GetMapWaterOrGroundLevel() [2/2]

float WorldObject::GetMapWaterOrGroundLevel ( Position  pos,
float *  ground = nullptr 
) const
inline

◆ GetMinHeightInWater()

float WorldObject::GetMinHeightInWater ( ) const

Get the minimum height of a object that should be in water to start floating/swim.

Returns
float
1573{
1574 // have a fun with Archimedes' formula
1575 auto height = GetCollisionHeight();
1576 auto width = GetCollisionWidth();
1577 auto weight = getWeight(height, width, 1040); // avg human specific weight
1578 auto heightOutOfWater = getOutOfWater(width, weight, 10202) * 4.0f; // avg human density
1579 auto heightInWater = height - heightOutOfWater;
1580 return (height > heightInWater ? heightInWater : (height - (height / 3)));
1581}
float getWeight(float height, float width, float specificWeight)
Definition Physics.h:31
float getOutOfWater(float width, float weight, float density)
Get the height immersed in water.
Definition Physics.h:46
virtual float GetCollisionWidth() const
Definition Object.h:711

References GetCollisionHeight(), GetCollisionWidth(), getOutOfWater(), and getWeight().

Referenced by Map::HasEnoughWater(), and UpdateAllowedPositionZ().

◆ GetName()

std::string const & WorldObject::GetName ( ) const
inline
525{ return m_name; }

References m_name.

Referenced by Player::_LoadActions(), Player::_LoadHomeBind(), Player::_LoadInventory(), Player::_LoadItem(), Player::_LoadMailedItem(), Player::_LoadQuestStatus(), Player::_LoadSkills(), Player::_SaveCharacter(), Player::_SaveInventory(), Guild::_SendBankList(), Group::AddLeaderInvite(), Guild::AddMember(), ArenaTeam::AddMember(), Group::AddMember(), Vehicle::AddPassenger(), Battleground::AddPlayer(), InstanceMap::AddPlayerToMap(), Group::BroadcastGroupUpdate(), WorldSession::BuildPartyMemberStatsChangedPacket(), Player::BuildPlayerRepop(), Player::BuyItemFromVendorSlot(), Player::CanBankItem(), InstanceMap::CannotEnter(), WorldSession::CanOpenMailBox(), Player::CastItemCombatSpell(), Group::ChangeLeader(), Player::CheckAreaExploreAndOutdoor(), Player::CheckSkillLearnedBySpell(), Corpse::Create(), Group::Create(), Guild::Create(), TransportMgr::CreateTransport(), FlightPathMovementGenerator::DoEventIfAny(), Player::DuelComplete(), Spell::EffectScriptEffect(), Player::EnvironmentalDamage(), ChatHandler::extractPlayerTarget(), Pet::FillPetInfo(), GetDebugInfo(), Unit::GetFactionTemplateEntry(), Player::GetGameObjectIfCanInteractWith(), Creature::GetNameForLocaleIdx(), GameObject::GetNameForLocaleIdx(), ChatHandler::GetNameLink(), WorldSession::GetPlayerInfo(), GetPlayerInfo(), Player::GetPlayerName(), WorldSession::GetPlayerName(), ReputationMgr::GetReputation(), Creature::GetSummonerGUID(), GmTicket::GmTicket(), WorldSession::HandleAcceptTradeOpcode(), account_commandscript::HandleAccountCreateCommand(), spell_rog_deadly_poison::HandleAfterHit(), WorldSession::HandleAreaTriggerOpcode(), WorldSession::HandleArenaTeamAcceptOpcode(), WorldSession::HandleArenaTeamInviteOpcode(), WorldSession::HandleArenaTeamLeaderOpcode(), WorldSession::HandleArenaTeamLeaveOpcode(), WorldSession::HandleArenaTeamRemoveOpcode(), WorldSession::HandleAuctionSellItem(), WorldSession::HandleBattlefieldListOpcode(), WorldSession::HandleBattleFieldPortOpcode(), WorldSession::HandleBattlemasterJoinArena(), debug_commandscript::HandleDebugGetLootRecipientCommand(), debug_commandscript::HandleDebugHostileRefListCommand(), debug_commandscript::HandleDebugLoSCommand(), debug_commandscript::HandleDebugSendOpcodeCommand(), debug_commandscript::HandleDebugThreatListCommand(), deserter_commandscript::HandleDeserterAdd(), WorldSession::HandleDuelAcceptedOpcode(), WorldSession::HandleFarSightOpcode(), WorldSession::HandleForceSpeedChangeAck(), ticket_commandscript::HandleGMTicketCloseByIdCommand(), ticket_commandscript::HandleGMTicketCommentCommand(), ticket_commandscript::HandleGMTicketCompleteCommand(), ticket_commandscript::HandleGMTicketDeleteByIdCommand(), ticket_commandscript::HandleGMTicketResponseDeleteCommand(), ticket_commandscript::HandleGMTicketUnAssignCommand(), WorldSession::HandleGrantLevel(), WorldSession::HandleGroupDeclineOpcode(), WorldSession::HandleGroupInviteOpcode(), group_commandscript::HandleGroupJoinCommand(), WorldSession::HandleInstanceLockResponse(), inventory_commandscript::HandleInventoryCountCommand(), Guild::HandleInviteMember(), Guild::HandleLeaveMember(), lookup_commandscript::HandleLookupTitleCommand(), WorldSession::HandleLootMasterGiveOpcode(), WorldSession::HandleMailTakeItem(), Guild::HandleMemberDepositMoney(), Guild::HandleMemberLogout(), Guild::HandleMemberWithdrawMoney(), WorldSession::HandleMessagechatOpcode(), mmaps_commandscript::HandleMmapPathCommand(), misc_commandscript::HandleMovegensCommand(), npc_commandscript::HandleNpcFollowCommand(), npc_commandscript::HandleNpcSetDataCommand(), npc_commandscript::HandleNpcUnFollowCommand(), WorldSession::HandleOfferPetitionOpcode(), WorldSession::HandleOpenItemOpcode(), WorldSession::HandlePetitionBuyOpcode(), WorldSession::HandlePetitionSignOpcode(), OutdoorPvP::HandlePlayerLeaveZone(), WorldSession::HandlePlayerLoginFromDB(), WorldSession::HandleQuestgiverChooseRewardOpcode(), WorldSession::HandleQuestgiverCompleteQuest(), Guild::HandleRemoveMember(), WorldSession::HandleReportPvPAFK(), WorldSession::HandleRequestPartyMemberStatsOpcode(), ArenaSpectator::HandleResetCommand(), spell_the_flag_of_ownership::HandleScript(), WorldSession::HandleSendMail(), WorldSession::HandleSetActionButtonOpcode(), Guild::HandleSetLeader(), misc_commandscript::HandleSkirmishCommand(), misc_commandscript::HandleSummonCommand(), titles_commandscript::HandleTitlesAddCommand(), titles_commandscript::HandleTitlesCurrentCommand(), titles_commandscript::HandleTitlesRemoveCommand(), WorldSession::HandleTurnInPetitionOpcode(), Guild::HandleUpdateMemberRank(), npc_pet_gen_imp_in_a_bottle::InitializeAI(), PlayerNameMapHolder::Insert(), Channel::Invite(), BattlegroundQueue::InviteGroupToBG(), Player::IsActionButtonDataValid(), ReputationMgr::IsAtWar(), lfg::LFGMgr::JoinLfg(), WorldSession::KickPlayer(), Player::LearnCustomSpells(), Player::LoadFromDB(), WaypointMovementGenerator< Creature >::LoadPath(), LogCommandUsage(), WorldSession::LogoutPlayer(), MotionMaster::MoveTaxiFlight(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureCreate(), ChatLogScript::OnPlayerChat(), ChatLogScript::OnPlayerChat(), ChatLogScript::OnPlayerChat(), ChatLogScript::OnPlayerChat(), ChatLogScript::OnPlayerChat(), lfg::LFGPlayerScript::OnPlayerMapChanged(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnUnitDeath(), Unit::OutDebugInfo(), MapMgr::PlayerCannotEnter(), SmartScript::ProcessAction(), PlayerNameMapHolder::Remove(), Map::RemoveAllPlayers(), Player::RemoveFromWorld(), Vehicle::RemovePassenger(), Creature::Respawn(), Pet::SavePetToDB(), AchievementMgr::SendAchievementEarned(), CreatureTextMgr::SendChat(), Guild::SendLoginInfo(), Spell::SendLoot(), WorldSession::SendPetNameQuery(), BattlegroundMgr::SendToBattleground(), Unit::SetCharm(), Player::setDeathState(), Player::SetEquipmentSet(), Channel::SetMode(), Guild::Member::SetStats(), Creature::SetTextRepeatId(), Player::SetViewpoint(), npc_chesspiece::sGossipHello(), FollowerAI::StartFollow(), Player::StopCastingCharm(), lfg::LFGMgr::TeleportPlayer(), Player::TeleportTo(), Channel::UnBan(), Pet::Update(), Player::Update(), boss_archavon::boss_archavonAI::UpdateAI(), Player::UpdateHomebindTime(), GameObject::Use(), and Player::Whisper().

◆ GetNameForLocaleIdx()

virtual std::string const & WorldObject::GetNameForLocaleIdx ( LocaleConstant  ) const
inlinevirtual

◆ GetNearPoint()

void WorldObject::GetNearPoint ( WorldObject const *  searcher,
float &  x,
float &  y,
float &  z,
float  searcher_size,
float  distance2d,
float  absAngle,
float  controlZ = 0,
Position const *  startPos = nullptr 
) const
2641{
2642 GetNearPoint2D(x, y, distance2d + searcher_size, absAngle, startPos);
2643 z = GetPositionZ();
2644
2645 if (searcher)
2646 {
2647 if (Unit const* unit = searcher->ToUnit(); Unit const* target = ToUnit())
2648 {
2649 if (unit && target && unit->IsInWater() && target->IsInWater())
2650 {
2651 // if the searcher is in water
2652 // we have no ground so we can
2653 // set the target height to the
2654 // z-coord to keep the searcher
2655 // at the correct height (face to face)
2656 z += GetCollisionHeight() - unit->GetCollisionHeight();
2657 }
2658 }
2659 searcher->UpdateAllowedPositionZ(x, y, z);
2660 }
2661 else
2662 {
2663 UpdateAllowedPositionZ(x, y, z);
2664 }
2665
2666 // if detection disabled, return first point
2667 if (!sWorld->getBoolConfig(CONFIG_DETECT_POS_COLLISION))
2668 return;
2669
2670 // return if the point is already in LoS
2671 if (!controlZ && IsWithinLOS(x, y, z))
2672 return;
2673
2674 // remember first point
2675 float first_x = x;
2676 float first_y = y;
2677 float first_z = z;
2678
2679 // loop in a circle to look for a point in LoS using small steps
2680 for (float angle = float(M_PI) / 8; angle < float(M_PI) * 2; angle += float(M_PI) / 8)
2681 {
2682 GetNearPoint2D(x, y, distance2d + searcher_size, absAngle + angle, startPos);
2683 z = GetPositionZ();
2684 UpdateAllowedPositionZ(x, y, z);
2685 if (controlZ && fabsf(GetPositionZ() - z) > controlZ)
2686 continue;
2687
2688 if (IsWithinLOS(x, y, z))
2689 return;
2690 }
2691
2692 // still not in LoS, give up and return first position found
2693 if (startPos)
2694 {
2695 x = searcher->GetPositionX();
2696 y = searcher->GetPositionY();
2697 z = searcher->GetPositionZ();
2698 }
2699 else
2700 {
2701 x = first_x;
2702 y = first_y;
2703 z = first_z;
2704 }
2705}
@ CONFIG_DETECT_POS_COLLISION
Definition WorldConfig.h:56
virtual bool IsInWater() const
Definition Unit.cpp:4407
void UpdateAllowedPositionZ(float x, float y, float &z, float *groundZ=nullptr) const
Definition Object.cpp:1583
void GetNearPoint2D(WorldObject const *searcher, float &x, float &y, float distance, float absAngle, Position const *startPos=nullptr) const
Definition Object.cpp:2603
#define sWorld
Definition World.h:316

References CONFIG_DETECT_POS_COLLISION, GetCollisionHeight(), GetNearPoint2D(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Unit::IsInWater(), IsWithinLOS(), sWorld, Object::ToUnit(), and UpdateAllowedPositionZ().

Referenced by npc_maiev_illidan::DoAction(), ChaseMovementGenerator< T >::DoUpdate(), GetChargeContactPoint(), GetClosePoint(), GetContactPoint(), Unit::GetMeleeAttackPoint(), Unit::GetRandomContactPoint(), GetVoidClosePoint(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::InitializeAI(), npc_akama_shade::JustSummoned(), npc_akama_illidan::MovementInform(), SmartScript::ProcessAction(), npc_pallid_horror::ScheduleTasks(), Spell::SelectImplicitCasterDestTargets(), boss_quartermaster_zigris::SpellHitTarget(), and npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::UpdateAI().

◆ GetNearPoint2D() [1/2]

void WorldObject::GetNearPoint2D ( float &  x,
float &  y,
float  distance,
float  absAngle,
Position const *  startPos = nullptr 
) const
2636{
2637 GetNearPoint2D(nullptr, x, y, distance2d, absAngle, startPos);
2638}

References GetNearPoint2D().

◆ GetNearPoint2D() [2/2]

void WorldObject::GetNearPoint2D ( WorldObject const *  searcher,
float &  x,
float &  y,
float  distance,
float  absAngle,
Position const *  startPos = nullptr 
) const
2604{
2605 float effectiveReach = GetCombatReach();
2606
2607 if (searcher)
2608 {
2609 effectiveReach += searcher->GetCombatReach();
2610
2611 if (this != searcher)
2612 {
2613 float myHover = 0.0f, searcherHover = 0.0f;
2614 if (Unit const* unit = ToUnit())
2615 myHover = unit->GetHoverHeight();
2616 if (Unit const* searchUnit = searcher->ToUnit())
2617 searcherHover = searchUnit->GetHoverHeight();
2618
2619 float hoverDelta = myHover - searcherHover;
2620 if (hoverDelta != 0.0f)
2621 effectiveReach = std::sqrt(std::max(effectiveReach * effectiveReach - hoverDelta * hoverDelta, 0.0f));
2622 }
2623 }
2624
2625 float positionX = startPos ? startPos->GetPositionX() : GetPositionX();
2626 float positionY = startPos ? startPos->GetPositionY() : GetPositionY();
2627
2628 x = positionX + (effectiveReach + distance2d) * std::cos(absAngle);
2629 y = positionY + (effectiveReach + distance2d) * std::sin(absAngle);
2630
2633}
void NormalizeMapCoord(float &c)
Definition GridDefines.h:202

References GetCombatReach(), Position::GetPositionX(), Position::GetPositionY(), Acore::NormalizeMapCoord(), and Object::ToUnit().

Referenced by GetNearPoint(), GetNearPoint2D(), and npc_frostbrood_skytalon::npc_frostbrood_skytalonAI::UpdateAI().

◆ GetNearPosition()

◆ GetNotifyFlags()

uint16 WorldObject::GetNotifyFlags ( ) const
inline
661{ return m_notifyflags; }

References m_notifyflags.

◆ GetObjectSize()

float WorldObject::GetObjectSize ( ) const
2786{
2788}
#define DEFAULT_WORLD_OBJECT_SIZE
Definition ObjectDefines.h:44
@ UNIT_FIELD_COMBATREACH
Definition UpdateFields.h:123
float GetObjectScale() const
Definition Object.h:119
uint16 m_valuesCount
Definition Object.h:266
float * m_floatValues
Definition Object.h:261

References DEFAULT_WORLD_OBJECT_SIZE, Object::GetObjectScale(), Object::m_floatValues, Object::m_valuesCount, and UNIT_FIELD_COMBATREACH.

Referenced by _IsWithinDist(), GameObject::_IsWithinDist(), Creature::CanCreatureAttack(), Spell::EffectSummonPet(), GetChargeContactPoint(), GetClosePoint(), GetCollisionRadius(), GetCollisionWidth(), Unit::GetCollisionWidth(), GetContactPoint(), GetDistance(), GetDistance(), GetDistance(), GetDistance2d(), GetDistance2d(), GetDistanceZ(), Unit::GetMeleeAttackPoint(), GetVelocity(), misc_commandscript::HandleGroupSummonCommand(), spell_marrowgar_coldflame::HandleScriptEffect(), IsInBetween(), IsInRange(), IsInRange2d(), IsInRange3d(), IsWithinDist2d(), IsWithinDist2d(), IsWithinDist3d(), IsWithinDist3d(), MotionMaster::MoveJumpTo(), Acore::WorldObjectSpellConeTargetCheck::operator()(), SmartScript::ProcessAction(), npc_released_offspring_harkoa::npc_released_offspring_harkoaAI::Reset(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::SpellHit(), SummonCreature(), npc_acherus_necromancer::npc_acherus_necromancerAI::UpdateAI(), npc_gothik_the_harvester::npc_gothik_the_harvesterAI::UpdateAI(), and npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::UpdateAI().

◆ GetObjectVisibilityContainer() [1/2]

◆ GetObjectVisibilityContainer() [2/2]

ObjectVisibilityContainer const & WorldObject::GetObjectVisibilityContainer ( ) const
inline

◆ GetPhaseMask()

uint32 WorldObject::GetPhaseMask ( ) const
inline
513{ return m_phaseMask; }

References m_phaseMask.

Referenced by RandomMovementGenerator< T >::_setRandomLocation(), AddToWorld(), PathGenerator::BuildPolyPath(), Map::CheckCollisionAndGetValidCoords(), boss_volazj::CheckPhaseMinions(), BattlegroundRV::CheckPositionForUnit(), Map::ConvertCorpseToBones(), Creature::Create(), Corpse::Create(), Pet::CreateBaseAtCreature(), Pet::CreateBaseAtCreatureInfo(), DynamicObject::CreateDynamicObject(), Spell::EffectDuel(), Spell::EffectSummonObject(), Spell::EffectSummonObjectWild(), Spell::EffectTransmitted(), GameObject::EnableCollision(), GetFloorZ(), GetMapHeight(), GetMapWaterOrGroundLevel(), PathGenerator::GetNavTerrain(), GameObjectModelOwnerImpl::GetPhaseMask(), Player::GetPhaseMaskForSpawn(), debug_commandscript::HandleDebugSpawnVehicleCommand(), OutdoorPvPSI::HandleDropFlag(), gobject_commandscript::HandleGameObjectInfoCommand(), gobject_commandscript::HandleGameObjectNearCommand(), misc_commandscript::HandleGPSCommand(), npc_commandscript::HandleNpcInfoCommand(), npc_commandscript::HandleNpcNearCommand(), misc_commandscript::HandlePInfoCommand(), Map::HasEnoughWater(), InSamePhase(), InSamePhase(), PathGenerator::IsSwimmableSegment(), IsWithinLOS(), IsWithinLOSInMap(), npc_the_lich_king_controller::npc_the_lich_king_controllerAI::JustSummoned(), spell_svalna_revive_champion::Land(), Creature::LoadCreatureFromDB(), Pet::LoadPetFromDB(), instance_old_hillsbrad::instance_old_hillsbrad_InstanceMapScript::OnGameObjectCreate(), at_q24545_frostmourne_cavern::OnTrigger(), IgbArtilleryCheck::operator()(), WorldSession::ProcessMovementInfo(), Corpse::SaveToDB(), Creature::SaveToDB(), Creature::SaveToDB(), GameObject::SaveToDB(), Spell::SelectImplicitCasterDestTargets(), Creature::setDeathState(), spell_blood_council_summon_shadow_resonance::SetDest(), spell_spawn_blood_pool::SetDest(), Unit::SetHover(), Unit::SetPhaseMask(), PathGenerator::ShortenPathUntilDist(), Map::SummonCreature(), SummonGameObject(), Player::SummonPet(), SummonTrigger(), Creature::Update(), and UpdatePositionData().

◆ GetRandomNearPosition()

Position WorldObject::GetRandomNearPosition ( float  radius)
2750{
2751 Position pos = GetPosition();
2752 MovePosition(pos, radius * (float) rand_norm(), (float) rand_norm() * static_cast<float>(2 * M_PI));
2753 return pos;
2754}
double rand_norm()
Definition Random.cpp:85

References Position::GetPosition(), MovePosition(), and rand_norm().

Referenced by CreatureAI::DoSummon(), CreatureAI::DoSummonFlyer(), npc_cyclone::JustEngagedWith(), npc_enslaved_netherwing_drake::SpellHit(), and npc_minigob_manabonk::UpdateAI().

◆ GetRandomPoint() [1/2]

Position WorldObject::GetRandomPoint ( const Position srcPos,
float  distance 
) const
1553{
1554 float x, y, z;
1555 GetRandomPoint(srcPos, distance, x, y, z);
1556 return Position(x, y, z, GetOrientation());
1557}
void GetRandomPoint(const Position &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
Definition Object.cpp:1531

References Position::GetOrientation(), and GetRandomPoint().

◆ GetRandomPoint() [2/2]

void WorldObject::GetRandomPoint ( const Position srcPos,
float  distance,
float &  rand_x,
float &  rand_y,
float &  rand_z 
) const
1532{
1533 if (!distance)
1534 {
1535 pos.GetPosition(rand_x, rand_y, rand_z);
1536 return;
1537 }
1538
1539 // angle to face `obj` to `this`
1540 float angle = (float)rand_norm() * static_cast<float>(2 * M_PI);
1541 float new_dist = (float)rand_norm() * static_cast<float>(distance);
1542
1543 rand_x = pos.m_positionX + new_dist * cos(angle);
1544 rand_y = pos.m_positionY + new_dist * std::sin(angle);
1545 rand_z = pos.m_positionZ;
1546
1549 UpdateGroundPositionZ(rand_x, rand_y, rand_z); // update to LOS height if available
1550}
void UpdateGroundPositionZ(float x, float y, float &z) const
Definition Object.cpp:1559

References Position::GetPosition(), Position::m_positionX, Position::m_positionY, Position::m_positionZ, Acore::NormalizeMapCoord(), rand_norm(), and UpdateGroundPositionZ().

Referenced by boss_isalien::DamageTaken(), instance_stratholme::instance_stratholme_InstanceMapScript::DoSpawnPlaguedCritters(), Spell::EffectSummonType(), OrcMoveEvent::Execute(), GetRandomPoint(), SmartScript::ProcessAction(), Spell::SummonGuardian(), and boss_fankriss::SummonHatchlingWaves().

◆ GetSightRange()

float WorldObject::GetSightRange ( WorldObject const *  target = nullptr) const
virtual

Reimplemented in Player.

1692{
1693 if (ToUnit())
1694 {
1695 if (ToPlayer())
1696 {
1697 if (target)
1698 {
1699 if (target->IsCreature() && target->IsVisibilityOverridden())
1700 return target->GetVisibilityOverrideDistance();
1701 else if (target->IsGameObject())
1702 {
1703 if (IsInWintergrasp() && target->IsInWintergrasp())
1705 else if (target->IsVisibilityOverridden())
1706 return target->GetVisibilityOverrideDistance();
1707 else if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
1709 else
1710 return GetMap()->GetVisibilityRange();
1711 }
1712
1713 return IsInWintergrasp() && target->IsInWintergrasp() ? VISIBILITY_DIST_WINTERGRASP : GetMap()->GetVisibilityRange();
1714 }
1716 }
1717 else if (ToCreature())
1718 return ToCreature()->m_SightDistance;
1719 else
1720 return SIGHT_RANGE_UNIT;
1721 }
1722
1723 if (ToDynObject() && isActiveObject())
1724 return GetMap()->GetVisibilityRange();
1725
1726 return 0.0f;
1727}
#define SIGHT_RANGE_UNIT
Definition ObjectDefines.h:31
DynamicObject * ToDynObject()
Definition Object.h:222

References DEFAULT_VISIBILITY_INSTANCE, GetMap(), GetVisibilityOverrideDistance(), Map::GetVisibilityRange(), isActiveObject(), Object::IsCreature(), Object::IsGameObject(), IsInWintergrasp(), IsVisibilityOverridden(), Creature::m_SightDistance, SIGHT_RANGE_UNIT, Object::ToCreature(), Object::ToDynObject(), Object::ToPlayer(), Object::ToUnit(), and VISIBILITY_DIST_WINTERGRASP.

Referenced by CanSeeOrDetect(), and Player::GetSightRange().

◆ GetStationaryO()

virtual float WorldObject::GetStationaryO ( ) const
inlinevirtual

Reimplemented in GameObject.

698{ return GetOrientation(); }

References Position::GetOrientation().

◆ GetStationaryX()

virtual float WorldObject::GetStationaryX ( ) const
inlinevirtual

Reimplemented in GameObject.

695{ return GetPositionX(); }

References Position::GetPositionX().

◆ GetStationaryY()

virtual float WorldObject::GetStationaryY ( ) const
inlinevirtual

Reimplemented in GameObject.

696{ return GetPositionY(); }

References Position::GetPositionY().

◆ GetStationaryZ()

virtual float WorldObject::GetStationaryZ ( ) const
inlinevirtual

Reimplemented in GameObject.

697{ return GetPositionZ(); }

References Position::GetPositionZ().

◆ GetTransGUID()

ObjectGuid WorldObject::GetTransGUID ( ) const
virtual

Reimplemented in Unit.

3026{
3027 if (GetTransport())
3028 return GetTransport()->GetGUID();
3029
3030 return ObjectGuid::Empty;
3031}
static ObjectGuid const Empty
Definition ObjectGuid.h:120

References ObjectGuid::Empty, Object::GetGUID(), and GetTransport().

Referenced by IgbTeleportOnVictoryCheck::operator()(), and SpellDestination::SpellDestination().

◆ GetTransOffsetO()

◆ GetTransOffsetX()

◆ GetTransOffsetY()

◆ GetTransOffsetZ()

◆ GetTransport()

Transport * WorldObject::GetTransport ( ) const
inline
683{ return m_transport; }

References m_transport.

Referenced by _IsWithinDist(), Player::_SaveCharacter(), MotionTransport::AddPassenger(), StaticTransport::AddPassenger(), Unit::BuildMovementPacket(), Object::BuildMovementUpdate(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::CanAIAttack(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::CanAIAttack(), npc_igb_ship_crew::npc_igb_ship_crewAI::CanAIAttack(), npc_gunship_boarding_addAI::CanAIAttack(), npc_gunship_gunner::npc_gunship_gunnerAI::CanAIAttack(), DynamicObject::CleanupsBeforeDelete(), GameObject::CleanupsBeforeDelete(), Unit::CleanupsBeforeDelete(), npc_gunship::npc_gunshipAI::DamageTaken(), DelayedMovementEvent::Execute(), ResetEncounterEvent::Execute(), npc_gunship::GetAI(), Unit::GetDirectTransport(), Creature::GetRespawnPosition(), GetTransGUID(), Unit::GetTransGUID(), GameObject::GetWorldRotation(), WorldSession::HandleForceSpeedChangeAck(), misc_commandscript::HandleGPSCommand(), WorldSession::HandleMoverRelocation(), WorldSession::HandleMoveWorldportAck(), npc_commandscript::HandleNpcAddCommand(), WorldSession::HandlePlayerLoginFromDB(), Unit::isInAccessiblePlaceFor(), npc_gunship::npc_gunshipAI::JustDied(), Player::KillPlayer(), npc_gunship_boarding_addAI::MovementInform(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::npc_high_overlord_saurfang_igbAI(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::npc_muradin_bronzebeard_igbAI(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureCreate(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnUnitDeath(), item_petrov_cluster_bombs::OnUse(), IgbExplosionCheck::operator()(), BurningPitchFilterCheck::operator()(), IgbArtilleryCheck::operator()(), Player::ProcessTerrainStatusUpdate(), spell_igb_teleport_to_enemy_ship::RelocateTransportOffset(), Creature::RemoveFromWorld(), DynamicObject::RemoveFromWorld(), GameObject::RemoveFromWorld(), Vehicle::RemovePassenger(), Creature::SaveToDB(), Creature::SaveToDB(), spell_igb_gunship_fall_teleport::SelectTransport(), Map::SendInitSelf(), Map::SendInitTransports(), Map::SendRemoveTransports(), Unit::SetCharmedBy(), gunship_npc_AI::SetData(), Movement::MoveSplineInit::SetFacing(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::sGossipSelect(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::sGossipSelect(), WaypointMovementGenerator< Creature >::StartMove(), Map::SummonCreature(), Player::TeleportTo(), Creature::Update(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::UpdateAI(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::UpdateAI(), and UpdateAllowedPositionZ().

◆ GetTransSeat()

◆ GetTransTime()

uint32 WorldObject::GetTransTime ( ) const
inline

◆ GetVisibilityOverrideDistance()

float WorldObject::GetVisibilityOverrideDistance ( ) const
1086{
1089}
constexpr float VisibilityDistances[AsUnderlyingType(VisibilityDistanceType::Max)]
Definition Object.cpp:61
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
Definition Util.h:619

References _visibilityDistanceOverrideType, ASSERT, AsUnderlyingType(), Max, and VisibilityDistances.

Referenced by GetSightRange(), and GetVisibilityRange().

◆ GetVisibilityOverrideType()

VisibilityDistanceType WorldObject::GetVisibilityOverrideType ( ) const
inline

◆ GetVisibilityRange()

◆ GetVoidClosePoint()

void WorldObject::GetVoidClosePoint ( float &  x,
float &  y,
float &  z,
float  size,
float  distance2d = 0,
float  relAngle = 0,
float  controlZ = 0 
) const
2708{
2709 // angle calculated from current orientation
2710 GetNearPoint(nullptr, x, y, z, size, distance2d, GetOrientation() + relAngle, controlZ);
2711}

References GetNearPoint(), and Position::GetOrientation().

◆ GetZoneAndAreaId()

◆ GetZoneId()

uint32 WorldObject::GetZoneId ( ) const
3060{
3062 const_cast<WorldObject*>(this)->UpdatePositionData();
3063
3064 return _zoneId;
3065}

References _updatePositionData, _zoneId, and UpdatePositionData().

Referenced by Player::_LoadInventory(), Player::_SaveCharacter(), Player::AddQuest(), Vehicle::ApplyAllImmunities(), Map::ApplyDynamicModeRespawnScaling(), WorldSession::BuildPartyMemberStatsChangedPacket(), npc_herald_of_the_lich_king::ChangeZoneEventStatus(), Spell::CheckCast(), spell_gen_weapon_coating_enchant::CheckProc(), Player::CompleteQuest(), ScriptedAI::DoPlayMusic(), Spell::EffectSummonPlayer(), Spell::EffectSummonRaFFriend(), Acore::XP::Gain(), SocialMgr::GetFriendInfo(), Player::GetOutdoorPvP(), Player::GiveXP(), go_bells::go_bellsAI::go_bellsAI(), WorldSession::HandleAreaSpiritHealerQueryOpcode(), WorldSession::HandleAreaSpiritHealerQueueOpcode(), AuraEffect::HandleAuraDummy(), WorldSession::HandleBfEntryInviteResponse(), misc_commandscript::HandleChangeWeather(), debug_commandscript::HandleDebugVisibilityDataCommand(), debug_commandscript::HandleDebugZoneStatsCommand(), spell_midsummer_summon_ahune_lieutenant::HandleDummy(), go_commandscript::HandleGoZoneXYCommand(), WorldSession::HandleHearthAndResurrect(), misc_commandscript::HandleLinkGraveCommand(), WorldSession::HandleMoveTeleportAck(), misc_commandscript::HandleNearGraveCommand(), spell_wintergrasp_hide_small_elementals_aura::HandlePeriodicDummy(), WorldSession::HandlePlayerLoginFromDB(), WorldSession::HandleRequestPartyMemberStatsOpcode(), misc_commandscript::HandleSummonCommand(), Player::IncompleteQuest(), go_firework_show::InitShow(), SpellArea::IsFitToRequirements(), Player::IsWorldObjectOutOfSightRange(), boss_azuregos::boss_azuregosAI::JustDied(), npc_necropolis_health::JustDied(), npc_pallid_horror::JustDied(), Unit::Kill(), Player::KilledPlayerCredit(), LogCommandUsage(), WorldSession::LogoutPlayer(), npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnPlayerAreaUpdate(), item_petrov_cluster_bombs::OnUse(), item_only_for_flight::OnUse(), spell_fire_festival_fortitude::PrepareSpellScript(), SmartScript::ProcessAction(), Player::RemoveActiveQuest(), Player::RemovedInsignia(), Map::RemovePlayerFromMap(), Player::RepopAtGraveyard(), boss_azuregos::boss_azuregosAI::Reset(), Player::RewardQuest(), npc_minigob_manabonk::SelectTargetInDalaran(), CreatureTextMgr::SendChatPacket(), CreatureTextMgr::SendNonChatPacket(), Acore::VisibleNotifier::SendToSelf(), Map::SendZoneMessage(), Guild::Member::SetStats(), boss_akilzon::SetWeather(), SetZoneScript(), npc_midsummer_bonfire::UpdateBonfireBlessingBuffs(), npc_herald_of_the_lich_king::UpdateWeather(), and npc_pallid_horror::UpdateWeather().

◆ GetZoneScript()

◆ HasAllowedLooter()

bool WorldObject::HasAllowedLooter ( ObjectGuid  guid) const
3116{
3117 if (_allowedLooters.empty())
3118 {
3119 return true;
3120 }
3121
3122 return _allowedLooters.find(guid) != _allowedLooters.end();
3123}

References _allowedLooters.

Referenced by Player::IsAtLootRewardDistance(), and GameObject::IsLootAllowedFor().

◆ InSamePhase() [1/2]

bool WorldObject::InSamePhase ( uint32  phasemask) const
inline
515{ return m_useCombinedPhases ? GetPhaseMask() & phasemask : GetPhaseMask() == phasemask; }

References GetPhaseMask(), and m_useCombinedPhases.

◆ InSamePhase() [2/2]

◆ isActiveObject()

◆ IsAlwaysDetectableFor()

virtual bool WorldObject::IsAlwaysDetectableFor ( WorldObject const *  ) const
inlineprotectedvirtual

Reimplemented in Creature, Player, and Unit.

760{ return false; }

Referenced by CanDetect(), and Unit::IsAlwaysDetectableFor().

◆ IsAlwaysVisibleFor()

virtual bool WorldObject::IsAlwaysVisibleFor ( WorldObject const *  ) const
inlineprotectedvirtual

Reimplemented in GameObject, and Unit.

757{ return false; }

Referenced by CanSeeOrDetect(), GameObject::IsAlwaysVisibleFor(), and Unit::IsAlwaysVisibleFor().

◆ IsFarVisible()

◆ isInBack()

bool WorldObject::isInBack ( WorldObject const *  target,
float  arc = M_PI 
) const
1527{
1528 return !HasInArc(2 * M_PI - arc, target);
1529}

References Position::HasInArc().

Referenced by Acore::WorldObjectSpellConeTargetCheck::operator()().

◆ IsInBetween()

bool WorldObject::IsInBetween ( WorldObject const *  obj1,
WorldObject const *  obj2,
float  size = 0 
) const
1500{
1501 if (!obj1 || !obj2)
1502 return false;
1503
1504 if (!size)
1505 size = GetObjectSize() / 2;
1506
1507 float pdist = obj1->GetExactDist2dSq(obj2) + size / 2.0f;
1508 if (GetExactDist2dSq(obj1) >= pdist || GetExactDist2dSq(obj2) >= pdist)
1509 return false;
1510
1511 if (G3D::fuzzyEq(obj1->GetPositionX(), obj2->GetPositionX()))
1512 return GetPositionX() >= obj1->GetPositionX() - size && GetPositionX() <= obj1->GetPositionX() + size;
1513
1514 float A = (obj2->GetPositionY() - obj1->GetPositionY()) / (obj2->GetPositionX() - obj1->GetPositionX());
1515 float B = -1;
1516 float C = obj1->GetPositionY() - A * obj1->GetPositionX();
1517 float dist = std::fabs(A * GetPositionX() + B * GetPositionY() + C) / std::sqrt(A * A + B * B);
1518 return dist <= size;
1519}
float GetExactDist2dSq(const float x, const float y) const
Definition Position.h:161

References Position::GetExactDist2dSq(), GetObjectSize(), Position::GetPositionX(), and Position::GetPositionY().

Referenced by TwilightCutterSelector::operator()().

◆ isInFront()

◆ IsInMap()

◆ IsInRange()

bool WorldObject::IsInRange ( WorldObject const *  obj,
float  minRange,
float  maxRange,
bool  is3D = true 
) const
1434{
1435 float dx = GetPositionX() - obj->GetPositionX();
1436 float dy = GetPositionY() - obj->GetPositionY();
1437 float distsq = dx * dx + dy * dy;
1438 if (is3D)
1439 {
1440 float dz = GetPositionZ() - obj->GetPositionZ();
1441 distsq += dz * dz;
1442 }
1443
1444 float sizefactor = GetObjectSize() + obj->GetObjectSize();
1445
1446 // check only for real range
1447 if (minRange > 0.0f)
1448 {
1449 float mindist = minRange + sizefactor;
1450 if (distsq < mindist * mindist)
1451 return false;
1452 }
1453
1454 float maxdist = maxRange + sizefactor;
1455 return distsq < maxdist * maxdist;
1456}

References GetObjectSize(), Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

Referenced by SmartScript::GetTargets(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), RangeSelector::operator()(), SmartScript::ProcessEvent(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), boss_grand_champion::boss_grand_championAI::UpdateAI(), and boss_gathios_the_shatterer::UpdateAI().

◆ IsInRange2d()

bool WorldObject::IsInRange2d ( float  x,
float  y,
float  minRange,
float  maxRange 
) const
1459{
1460 float dx = GetPositionX() - x;
1461 float dy = GetPositionY() - y;
1462 float distsq = dx * dx + dy * dy;
1463
1464 float sizefactor = GetObjectSize();
1465
1466 // check only for real range
1467 if (minRange > 0.0f)
1468 {
1469 float mindist = minRange + sizefactor;
1470 if (distsq < mindist * mindist)
1471 return false;
1472 }
1473
1474 float maxdist = maxRange + sizefactor;
1475 return distsq < maxdist * maxdist;
1476}

References GetObjectSize(), Position::GetPositionX(), and Position::GetPositionY().

◆ IsInRange3d()

bool WorldObject::IsInRange3d ( float  x,
float  y,
float  z,
float  minRange,
float  maxRange 
) const
1479{
1480 float dx = GetPositionX() - x;
1481 float dy = GetPositionY() - y;
1482 float dz = GetPositionZ() - z;
1483 float distsq = dx * dx + dy * dy + dz * dz;
1484
1485 float sizefactor = GetObjectSize();
1486
1487 // check only for real range
1488 if (minRange > 0.0f)
1489 {
1490 float mindist = minRange + sizefactor;
1491 if (distsq < mindist * mindist)
1492 return false;
1493 }
1494
1495 float maxdist = maxRange + sizefactor;
1496 return distsq < maxdist * maxdist;
1497}

References GetObjectSize(), Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

◆ IsInvisibleDueToDespawn()

virtual bool WorldObject::IsInvisibleDueToDespawn ( ) const
inlineprotectedvirtual

Reimplemented in Creature, and GameObject.

758{ return false; }

Referenced by CanSeeOrDetect(), Creature::IsInvisibleDueToDespawn(), and GameObject::IsInvisibleDueToDespawn().

◆ IsInWintergrasp()

bool WorldObject::IsInWintergrasp ( ) const
inline
676 {
677 return GetMapId() == MAP_NORTHREND && GetPositionX() > 3733.33331f && GetPositionX() < 5866.66663f && GetPositionY() > 1599.99999f && GetPositionY() < 4799.99997f;
678 }
@ MAP_NORTHREND
Definition AreaDefines.h:242

References WorldLocation::GetMapId(), Position::GetPositionX(), Position::GetPositionY(), and MAP_NORTHREND.

Referenced by GetGridActivationRange(), GetSightRange(), and GetVisibilityRange().

◆ isNeedNotify()

bool WorldObject::isNeedNotify ( uint16  f) const
inline

◆ IsNeverVisible()

virtual bool WorldObject::IsNeverVisible ( ) const
inlineprotectedvirtual

Reimplemented in GameObject, and Player.

756{ return !IsInWorld(); }

References Object::IsInWorld().

Referenced by CanNeverSee(), GameObject::IsNeverVisible(), and Player::IsNeverVisible().

◆ IsOutdoors()

bool WorldObject::IsOutdoors ( ) const

◆ IsSelfOrInSameMap()

bool WorldObject::IsSelfOrInSameMap ( WorldObject const *  obj) const
1305{
1306 if (this == obj)
1307 {
1308 return true;
1309 }
1310
1311 return IsInMap(obj);
1312}
bool IsInMap(WorldObject const *obj) const
Definition Object.cpp:1314

References IsInMap().

Referenced by Aura::UpdateTargetMap().

◆ IsUpdateNeeded()

bool WorldObject::IsUpdateNeeded ( )
virtual

Reimplemented in Creature, and GameObject.

3136{
3137 if (isActiveObject())
3138 return true;
3139
3140 return false;
3141}

References isActiveObject().

Referenced by Creature::IsUpdateNeeded(), GameObject::IsUpdateNeeded(), and Map::UpdateNonPlayerObjects().

◆ IsVisibilityOverridden()

◆ IsWithinDist()

bool WorldObject::IsWithinDist ( WorldObject const *  obj,
float  dist2compare,
bool  is3D = true,
bool  useBoundingRadius = true 
) const
1346{
1347 return obj && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius);
1348}
virtual bool _IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D, bool useBoundingRadius=true) const
Definition Object.cpp:1235

References _IsWithinDist().

Referenced by Unit::CalcAbsorbResist(), Creature::CanCreatureAttack(), CanSeeOrDetect(), npc_cork_gizelton::npc_cork_gizeltonAI::CheckPlayer(), npc_maiev_illidan::DoAction(), boss_attumen::IsSummonedBy(), Player::IsWorldObjectOutOfSightRange(), npc_yor::JustEngagedWith(), boss_twinemperorsAI::JustEngagedWith(), CreatureAI::MoveInLineOfSight(), npc_brew_bubble::MoveInLineOfSight(), npc_a_special_surprise::npc_a_special_surpriseAI::MoveInLineOfSight(), npc_amanishi_lookout::MoveInLineOfSight(), npc_eagle_trash_aggro_trigger::MoveInLineOfSight(), npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight(), Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck::operator()(), Acore::AllGameObjectsWithEntryInRange::operator()(), Acore::AllGameObjectsMatchingOneEntryInRange::operator()(), Acore::PlayerAtMinimumRangeAway::operator()(), Acore::AllCreaturesOfEntryInRange::operator()(), Acore::AllCreaturesMatchingOneEntryInRange::operator()(), FrostwingVrykulSearcher::operator()(), Acore::AllWorldObjectsInRange::operator()(), Spell::SearchChainTargets(), dragonmaw_race_npc::StartRace(), npc_daphne_stilwell::npc_daphne_stilwellAI::Update(), npc_unworthy_initiate::npc_unworthy_initiateAI::UpdateAI(), npc_ichor_globule::npc_ichor_globuleAI::UpdateAI(), and Group::UpdatePlayerOutOfRange().

◆ IsWithinDist2d() [1/2]

bool WorldObject::IsWithinDist2d ( const Position pos,
float  dist 
) const
1340{
1341 return IsInDist2d(pos, dist + GetObjectSize());
1342}
bool IsInDist2d(float x, float y, float dist) const
Definition Position.h:211

References GetObjectSize(), and Position::IsInDist2d().

◆ IsWithinDist2d() [2/2]

◆ IsWithinDist3d() [1/2]

bool WorldObject::IsWithinDist3d ( const Position pos,
float  dist 
) const
1330{
1331 return IsInDist(pos, dist + GetObjectSize());
1332}
bool IsInDist(float x, float y, float z, float dist) const
Definition Position.h:221

References GetObjectSize(), and Position::IsInDist().

◆ IsWithinDist3d() [2/2]

◆ IsWithinDistInMap()

bool WorldObject::IsWithinDistInMap ( WorldObject const *  obj,
float  dist2compare,
bool  is3D = true,
bool  useBoundingRadius = true 
) const
1351{
1352 return obj && IsInMap(obj) && InSamePhase(obj) && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius);
1353}

References _IsWithinDist(), InSamePhase(), and IsInMap().

Referenced by npc_escortAI::AssistPlayerInCombatAgainst(), FollowerAI::AssistPlayerInCombatAgainst(), SmartAI::AssistPlayerInCombatAgainst(), Creature::CanStartAttack(), Player::CheckDuelDistance(), npc_anachronos_quest_trigger::npc_anachronos_quest_triggerAI::CheckEventFail(), npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI::CheckEventFail(), spell_sha_fire_nova::CheckFireTotem(), WorldSession::DoLootRelease(), CreatureAI::DoZoneInCombat(), boss_halazzi::EnterPhase(), BattlegroundEY::EventPlayerClickedOnFlag(), BattlegroundWS::EventPlayerClickedOnFlag(), BattlegroundAB::EventPlayerClickedOnFlag(), FollowerAI::GetLeaderForFollower(), Player::GetNextRandomRaidMember(), Unit::GetNextRandomRaidMemberOrPet(), Player::GetNPCIfCanInteractWith(), Unit::HandleAuraRaidProcFromChargeWithValue(), WorldSession::HandleAutostoreLootItemOpcode(), WorldSession::HandleInitiateTradeOpcode(), WorldSession::HandleLootMoneyOpcode(), AuraEffect::HandleModPossessPet(), WorldSession::HandleReclaimCorpseOpcode(), Unit::isInBackInMap(), Unit::isInFrontInMap(), npc_escortAI::IsPlayerOrGroupInRange(), boss_gothik::boss_gothikAI::JustSummoned(), npc_dkc1_gothik::npc_dkc1_gothikAI::MoveInLineOfSight(), boss_muru::MoveInLineOfSight(), boss_aeonus::MoveInLineOfSight(), boss_chrono_lord_deja::MoveInLineOfSight(), boss_temporus::MoveInLineOfSight(), npc_medivh_bm::MoveInLineOfSight(), npc_general_andorov::MoveInLineOfSight(), npc_ouro_spawner::MoveInLineOfSight(), npc_draenei_survivor::npc_draenei_survivorAI::MoveInLineOfSight(), npc_kerlonian::npc_kerlonianAI::MoveInLineOfSight(), npc_aged_dying_ancient_kodo::npc_aged_dying_ancient_kodoAI::MoveInLineOfSight(), npc_custodian_of_time::npc_custodian_of_timeAI::MoveInLineOfSight(), npc_tooga::npc_toogaAI::MoveInLineOfSight(), npc_twiggy_flathead::npc_twiggy_flatheadAI::MoveInLineOfSight(), npc_ringo::npc_ringoAI::MoveInLineOfSight(), boss_gluth::boss_gluthAI::MoveInLineOfSight(), boss_loken::MoveInLineOfSight(), npc_khunok_the_behemoth::npc_khunok_the_behemothAI::MoveInLineOfSight(), npc_jenny::MoveInLineOfSight(), npc_captured_beryl_sorcerer::npc_captured_beryl_sorcererAI::MoveInLineOfSight(), npc_overlord_drakuru_betrayal::npc_overlord_drakuru_betrayalAI::MoveInLineOfSight(), boss_exarch_maladaar::MoveInLineOfSight(), boss_nexusprince_shaffar::MoveInLineOfSight(), boss_warlord_kalithresh::MoveInLineOfSight(), npc_daranelle::npc_daranelleAI::MoveInLineOfSight(), npc_ancestral_wolf::npc_ancestral_wolfAI::MoveInLineOfSight(), npc_pet_hunter_snake_trap::MoveInLineOfSight(), npc_air_force_bots::npc_air_force_botsAI::MoveInLineOfSight(), boss_leotheras_the_blind::MoveToTargetIfOutOfRange(), Acore::AnyDeadUnitObjectInRangeCheck::operator()(), Acore::AnyDeadUnitObjectInRangeCheck::operator()(), Acore::CallOfHelpCreatureInRangeDo::operator()(), Acore::AnyAssistCreatureInRangeCheck::operator()(), Acore::NearestAssistCreatureInCreatureRangeCheck::operator()(), Acore::NearestGameObjectFishingHole::operator()(), Acore::NearestGameObjectCheck::operator()(), Acore::NearestGameObjectEntryInObjectRangeCheck::operator()(), Acore::NearestGameObjectTypeInObjectRangeCheck::operator()(), Acore::AnyDeadUnitObjectInRangeCheck::operator()(), Acore::AnyPlayerInObjectRangeCheck::operator()(), Acore::NearestPlayerInObjectRangeCheck::operator()(), Acore::AnyPlayerInObjectRangeCheck::operator()(), Acore::MostHPMissingInRange::operator()(), Acore::MostHPPercentMissingInRange::operator()(), Acore::FriendlyCCedInRange::operator()(), Acore::FriendlyMissingBuffInRange::operator()(), Acore::AnyUnfriendlyUnitInObjectRangeCheck::operator()(), Acore::AnyUnfriendlyNoTotemUnitInObjectRangeCheck::operator()(), Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator()(), Acore::AnyFriendlyUnitInObjectRangeCheck::operator()(), Acore::AnyFriendlyNotSelfUnitInObjectRangeCheck::operator()(), Acore::AnyGroupedUnitInObjectRangeCheck::operator()(), Acore::AnyUnitInObjectRangeCheck::operator()(), Acore::NearestAttackableUnitInObjectRangeCheck::operator()(), Acore::AnyAoETargetUnitInObjectRangeCheck::operator()(), Acore::AnyAttackableUnitExceptForOriginalCasterInObjectRangeCheck::operator()(), Acore::NearestHostileUnitCheck::operator()(), Acore::NearestHostileUnitInAttackDistanceCheck::operator()(), Acore::MostHPMissingGroupInRange::operator()(), Acore::AllDeadCreaturesInRange::operator()(), Acore::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck::operator()(), SmartScript::ProcessEvent(), npc_lake_frog::npc_lake_frogAI::ReceiveEmote(), npc_dancing_flames::npc_dancing_flamesAI::ReceiveEmote(), Map::ScriptsProcess(), ScriptedAI::SelectSpell(), ScriptedAI::SelectTargetFromPlayerList(), Player::SendLoot(), npc_corrupted_totem::SetAura(), Pet::Update(), Creature::Update(), Player::Update(), TotemAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), boss_four_horsemen::boss_four_horsemenAI::UpdateAI(), FollowerAI::UpdateAI(), Spell::UpdateChanneledTargetList(), and Player::UpdatePosition().

◆ IsWithinLOS()

bool WorldObject::IsWithinLOS ( float  x,
float  y,
float  z,
VMAP::ModelIgnoreFlags  ignoreFlags = VMAP::ModelIgnoreFlags::Nothing,
LineOfSightChecks  checks = LINEOFSIGHT_ALL_CHECKS 
) const

◆ IsWithinLOSInMap()

bool WorldObject::IsWithinLOSInMap ( WorldObject const *  obj,
VMAP::ModelIgnoreFlags  ignoreFlags = VMAP::ModelIgnoreFlags::Nothing,
LineOfSightChecks  checks = LINEOFSIGHT_ALL_CHECKS,
Optional< float >  collisionHeight = { },
Optional< float >  combatReach = { } 
) const
1377{
1378 if (!IsInMap(obj))
1379 return false;
1380
1381 float ox, oy, oz;
1382 if (obj->IsPlayer())
1383 {
1384 obj->GetPosition(ox, oy, oz);
1385 oz += obj->GetCollisionHeight();
1386 }
1387 else
1388 obj->GetHitSpherePointFor({ GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()) }, ox, oy, oz);
1389
1390 float x, y, z;
1391 if (IsPlayer())
1392 {
1393 GetPosition(x, y, z);
1394 z += GetCollisionHeight();
1395 }
1396 else
1397 GetHitSpherePointFor({ obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ() + obj->GetCollisionHeight() }, x, y, z, collisionHeight, combatReach);
1398
1399 return GetMap()->isInLineOfSight(x, y, z, ox, oy, oz, GetPhaseMask(), checks, ignoreFlags);
1400}

References GetCollisionHeight(), GetHitSpherePointFor(), GetMap(), GetPhaseMask(), Position::GetPosition(), Position::GetPosition(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Map::isInLineOfSight(), IsInMap(), and Object::IsPlayer().

Referenced by at_hol_hall_of_watchers::_OnTrigger(), npc_escortAI::AssistPlayerInCombatAgainst(), FollowerAI::AssistPlayerInCombatAgainst(), SmartAI::AssistPlayerInCombatAgainst(), Unit::AttackerStateUpdate(), boss_swamplord_muselek::CanShootVictim(), Creature::CanStartAttack(), Spell::CheckCast(), Spell::CheckEffectTarget(), spell_hun_masters_call::DoCheckCast(), DynObjAura::FillTargetMap(), npc_singularity::FindAndFollowTarget(), debug_commandscript::HandleDebugLoSCommand(), WorldSession::HandlePetActionHelper(), boss_halion::boss_halionAI::IsAnyPlayerValid(), npc_amanishi_lookout::MoveInLineOfSight(), boss_eye_of_cthun::MoveInLineOfSight(), Acore::CallOfHelpCreatureInRangeDo::operator()(), Acore::AnyAssistCreatureInRangeCheck::operator()(), Acore::NearestAssistCreatureInCreatureRangeCheck::operator()(), Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator()(), NecroticPlagueTargetCheck::operator()(), RangeSelector::operator()(), ShadowTrapLKTargetSelector::operator()(), NonTankLKTargetSelector::operator()(), DefileTargetSelector::operator()(), MysticBuffetTargetFilter::operator()(), SmartScript::ProcessAction(), SmartScript::ProcessEvent(), Spell::SearchChainTargets(), Unit::SelectNearbyNoTotemTarget(), Unit::SelectNearbyTarget(), ScriptedAI::SelectTargetFromPlayerList(), CreatureAI::TriggerAlert(), Pet::Update(), boss_quartermaster_zigris::UpdateAI(), boss_mandokir::boss_mandokirAI::UpdateAI(), boss_sindragosa::boss_sindragosaAI::UpdateAI(), and boss_the_lich_king::boss_the_lich_kingAI::UpdateAI().

◆ IsZoneWideVisible()

◆ MovePosition()

void WorldObject::MovePosition ( Position pos,
float  dist,
float  angle 
)
2791{
2792 angle += GetOrientation();
2793 float destx, desty, destz, ground, floor;
2794 destx = pos.m_positionX + dist * cos(angle);
2795 desty = pos.m_positionY + dist * std::sin(angle);
2796
2797 // Prevent invalid coordinates here, position is unchanged
2798 if (!Acore::IsValidMapCoord(destx, desty))
2799 {
2800 LOG_FATAL("entities.object", "WorldObject::MovePosition invalid coordinates X: {} and Y: {} were passed!", destx, desty);
2801 return;
2802 }
2803
2804 ground = GetMapHeight(destx, desty, MAX_HEIGHT);
2805 floor = GetMapHeight(destx, desty, pos.m_positionZ);
2806 destz = std::fabs(ground - pos.m_positionZ) <= std::fabs(floor - pos.m_positionZ) ? ground : floor;
2807
2808 float step = dist / 10.0f;
2809
2810 for (uint8 j = 0; j < 10; ++j)
2811 {
2812 // do not allow too big z changes
2813 if (std::fabs(pos.m_positionZ - destz) > 6.0f)
2814 {
2815 destx -= step * cos(angle);
2816 desty -= step * std::sin(angle);
2817 ground = GetMapHeight(destx, desty, MAX_HEIGHT);
2818 floor = GetMapHeight(destx, desty, pos.m_positionZ);
2819 destz = std::fabs(ground - pos.m_positionZ) <= std::fabs(floor - pos.m_positionZ) ? ground : floor;
2820 }
2821 // we have correct destz now
2822 else
2823 {
2824 pos.Relocate(destx, desty, destz);
2825 break;
2826 }
2827 }
2828
2833}
std::uint8_t uint8
Definition Define.h:109
#define LOG_FATAL(filterType__,...)
Definition Log.h:154
float GetMapHeight(float x, float y, float z, bool vmap=true, float distanceToSearch=50.0f) const
Definition Object.cpp:3033
bool IsValidMapCoord(float c)
Definition GridDefines.h:210
void SetOrientation(float orientation)
Definition Position.h:116
void Relocate(float x, float y)
Definition Position.h:77

References GetMapHeight(), Position::GetOrientation(), Acore::IsValidMapCoord(), LOG_FATAL, Position::m_positionX, Position::m_positionY, Position::m_positionZ, MAX_HEIGHT, Acore::NormalizeMapCoord(), Position::Relocate(), Position::SetOrientation(), and UpdateGroundPositionZ().

Referenced by GetNearPosition(), GetRandomNearPosition(), and Spell::SelectImplicitDestDestTargets().

◆ MovePositionToFirstCollision()

void WorldObject::MovePositionToFirstCollision ( Position pos,
float  dist,
float  angle 
)
2873{
2874 angle += GetOrientation();
2875 float destx, desty, destz;
2876 destx = pos.m_positionX + dist * cos(angle);
2877 desty = pos.m_positionY + dist * std::sin(angle);
2878 destz = pos.m_positionZ;
2879
2880 if (!GetMap()->CheckCollisionAndGetValidCoords(this, pos.m_positionX, pos.m_positionY, pos.m_positionZ, destx, desty, destz, false))
2881 return;
2882
2884 pos.Relocate(destx, desty, destz);
2885}

References GetMap(), Position::GetOrientation(), Position::m_positionX, Position::m_positionY, Position::m_positionZ, Position::Relocate(), and Position::SetOrientation().

Referenced by FollowMovementGenerator< T >::DoUpdate(), Spell::EffectStuck(), VehicleDespawnEvent::Execute(), GetFirstCollisionPosition(), GetFirstCollisionPosition(), GetFirstCollisionPosition(), spell_boss_magus_telestra_gravity_well::HandlePull(), MotionMaster::MoveKnockbackFrom(), Spell::SelectImplicitCasterDestTargets(), and Spell::SelectImplicitTargetDestTargets().

◆ NotifyExecuted()

bool WorldObject::NotifyExecuted ( uint16  f) const
inline
662{ return m_executed_notifies & f;}

References m_executed_notifies.

◆ PlayDirectMusic()

void WorldObject::PlayDirectMusic ( uint32  music_id,
Player target = nullptr 
)
2924{
2925 if (target)
2926 target->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write());
2927 else
2928 SendMessageToSet(WorldPackets::Misc::PlayMusic(music_id).Write(), true);
2929}
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5728
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
Definition Object.cpp:2086
Definition MiscPackets.h:58

References Player::SendDirectMessage(), and SendMessageToSet().

Referenced by debug_commandscript::HandleDebugPlayMusicCommand(), go_l70_etc_music::go_l70_etc_musicAI::UpdateAI(), go_brewfest_music::go_brewfest_musicAI::UpdateAI(), go_pirate_day_music::go_pirate_day_musicAI::UpdateAI(), go_darkmoon_faire_music::go_darkmoon_faire_musicAI::UpdateAI(), and go_midsummer_music::go_midsummer_musicAI::UpdateAI().

◆ PlayDirectSound()

◆ PlayDistanceSound()

void WorldObject::PlayDistanceSound ( uint32  sound_id,
Player target = nullptr 
)

◆ PlayRadiusMusic()

void WorldObject::PlayRadiusMusic ( uint32  music_id,
float  radius 
)
2932{
2933 std::vector<Player*> targets;
2934 Acore::AnyPlayerInObjectRangeCheck check(this, radius, false);
2936 Cell::VisitObjects(this, searcher, radius);
2937
2938 for (Player* player : targets)
2939 player->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write());
2940}
Misc
Definition boss_tomb_of_seven.cpp:36
Definition GridNotifiers.h:1349
Definition Guild.h:31
Definition GridNotifiers.h:516

References Cell::VisitObjects(), and WorldPackets::Misc::PlayMusic::Write().

◆ PlayRadiusSound()

void WorldObject::PlayRadiusSound ( uint32  sound_id,
float  radius 
)
2913{
2914 std::vector<Player*> targets;
2915 Acore::AnyPlayerInObjectRangeCheck check(this, radius, false);
2917 Cell::VisitObjects(this, searcher, radius);
2918
2919 for (Player* player : targets)
2920 player->SendDirectMessage(WorldPackets::Misc::Playsound(sound_id).Write());
2921}

References Cell::VisitObjects(), and WorldPackets::Misc::Playsound::Write().

Referenced by npc_blade_of_azzinoth::IsSummonedBy().

◆ ProcessPositionDataChanged()

void WorldObject::ProcessPositionDataChanged ( PositionFullTerrainStatus const &  data)
protectedvirtual

Reimplemented in Unit.

1172{
1173 uint32 const oldZoneId = _zoneId;
1174
1175 _zoneId = _areaId = data.areaId;
1176
1177 if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(_areaId))
1178 if (area->zone)
1179 _zoneId = area->zone;
1180
1181 _outdoors = data.outdoors;
1182 _floorZ = data.floorZ;
1183 _liquidData = data.liquidInfo;
1184
1185 // Has zone ID changed?
1186 if (oldZoneId != _zoneId)
1187 {
1188 // If so, check if we are far visibility overridden object and refresh maps if needed.
1189 if (IsZoneWideVisible())
1190 {
1193 }
1194 }
1195}
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTableEntryfmt)
void RemoveWorldObjectFromZoneWideVisibleMap(uint32 zoneId, WorldObject *obj)
Definition Map.cpp:658
Definition DBCStructure.h:519

References _areaId, _floorZ, _liquidData, _outdoors, _zoneId, Map::AddWorldObjectToZoneWideVisibleMap(), PositionFullTerrainStatus::areaId, PositionFullTerrainStatus::floorZ, GetMap(), IsZoneWideVisible(), PositionFullTerrainStatus::liquidInfo, PositionFullTerrainStatus::outdoors, Map::RemoveWorldObjectFromZoneWideVisibleMap(), and sAreaTableStore.

Referenced by Unit::ProcessPositionDataChanged(), and UpdatePositionData().

◆ RemoveAllowedLooter()

void WorldObject::RemoveAllowedLooter ( ObjectGuid  guid)
3131{
3132 _allowedLooters.erase(guid);
3133}

References _allowedLooters.

◆ RemoveFromMapVisibilityOverrideContainers()

void WorldObject::RemoveFromMapVisibilityOverrideContainers ( )
private

◆ RemoveFromNotify()

void WorldObject::RemoveFromNotify ( uint16  f)
inline

◆ RemoveFromObjectUpdate()

void WorldObject::RemoveFromObjectUpdate ( )
overridevirtual

Implements Object.

3021{
3022 GetMap()->RemoveUpdateObject(this);
3023}
void RemoveUpdateObject(Object *obj)
Definition Map.h:491

References GetMap(), and Map::RemoveUpdateObject().

◆ RemoveFromWorld()

void WorldObject::RemoveFromWorld ( )
overridevirtual

Reimplemented from Object.

1208{
1209 if (!IsInWorld())
1210 return;
1211
1213
1215
1217
1219}
void CleanVisibilityReferences()
Definition ObjectVisibilityContainer.cpp:47
virtual void RemoveFromWorld()
Definition Object.cpp:155
void DestroyForVisiblePlayers()
Definition Object.cpp:2943
void RemoveFromMapVisibilityOverrideContainers()
Definition Object.cpp:1111

References ObjectVisibilityContainer::CleanVisibilityReferences(), DestroyForVisiblePlayers(), GetObjectVisibilityContainer(), Object::IsInWorld(), RemoveFromMapVisibilityOverrideContainers(), and Object::RemoveFromWorld().

Referenced by CleanupsBeforeDelete(), Corpse::RemoveFromWorld(), DynamicObject::RemoveFromWorld(), GameObject::RemoveFromWorld(), and Unit::RemoveFromWorld().

◆ ResetAllNotifies()

void WorldObject::ResetAllNotifies ( )
inline

◆ ResetAllowedLooters()

void WorldObject::ResetAllowedLooters ( )
3111{
3112 _allowedLooters.clear();
3113}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient(), and Creature::SetLootRecipient().

◆ ResetMap()

void WorldObject::ResetMap ( )
virtual

Reimplemented in Player.

2135{
2137 ASSERT(!IsInWorld());
2138
2139 sScriptMgr->OnWorldObjectResetMap(this);
2140
2141 m_currMap = nullptr;
2142 //maybe not for corpse
2143 //m_mapId = 0;
2144 //m_InstanceId = 0;
2145}

References ASSERT, Object::IsInWorld(), m_currMap, and sScriptMgr.

Referenced by Map::RemoveCorpse(), Map::RemoveFromMap(), and Player::ResetMap().

◆ SaveRespawnTime()

virtual void WorldObject::SaveRespawnTime ( )
inlinevirtual

Reimplemented in Creature, and GameObject.

598{}

◆ SelectNearestPlayer()

Player * WorldObject::SelectNearestPlayer ( float  distance = 0) const
2474{
2475 Player* target = nullptr;
2476
2477 Acore::NearestPlayerInObjectRangeCheck checker(this, distance);
2479 Cell::VisitObjects(this, searcher, distance);
2480
2481 return target;
2482}
Definition GridNotifiers.h:1400
Definition GridNotifiers.h:548

References Cell::VisitObjects().

Referenced by spell_blade_dance_targeting::FilterTargets(), spell_tsh_shoot_flame_arrow::FilterTargets(), SmartScript::GetTargets(), spell_valkyr_ball_periodic_dummy_aura::HandleEffectPeriodic(), npc_big_ooze::npc_big_oozeAI::IsSummonedBy(), boss_kiggler_the_crazed::JustEngagedWith(), boss_krosh_firehand::JustEngagedWith(), npc_hor_lich_king::npc_hor_lich_kingAI::JustSummoned(), boss_devourer_of_souls::boss_devourer_of_soulsAI::JustSummoned(), npc_hover_disk::npc_hover_diskAI::MovementInform(), npc_shattered_hand_scout::MovementInform(), npc_omen::npc_omenAI::MovementInform(), npc_gunship_mage::npc_gunship_mageAI::MovementInform(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::npc_pos_martin_or_gorkun_secondAI(), boss_headless_horseman_pumpkin::Reset(), npc_ahnqiraji_critter::Reset(), boss_grand_warlock_nethekurse::SetData(), npc_cork_gizelton::npc_cork_gizeltonAI::SetData(), instance_eye_of_eternity::instance_eye_of_eternity_InstanceMapScript::SetData(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::SetData(), npc_argent_captainAI::SpellHit(), boss_headless_horseman_head::SpellHit(), npc_giant_claw_tentacle::Submerge(), instance_blackrock_depths::instance_blackrock_depths_InstanceMapScript::TombOfSevenEvent(), boss_rend_blackhand::boss_rend_blackhandAI::UpdateAI(), boss_victor_nefarius::boss_victor_nefariusAI::UpdateAI(), npc_hallows_end_soh::UpdateAI(), npc_murkdeep::npc_murkdeepAI::UpdateAI(), npc_high_overlord_saurfang_icc::npc_high_overlord_saurfangAI::UpdateAI(), npc_muradin_bronzebeard_icc::npc_muradin_bronzebeard_iccAI::UpdateAI(), npc_big_ooze::npc_big_oozeAI::UpdateAI(), npc_valithria_cloud::npc_valithria_cloudAI::UpdateAI(), boss_four_horsemen::boss_four_horsemenAI::UpdateAI(), boss_razorscale::boss_razorscaleAI::UpdateAI(), npc_hor_raging_ghoul::npc_hor_raging_ghoulAI::UpdateAI(), and npc_grimstone::npc_grimstoneAI::UpdateEscortAI().

◆ SendMessageToSet() [1/2]

void WorldObject::SendMessageToSet ( WorldPacket const *  data,
bool  self 
) const
virtual

Reimplemented in Player.

2087{
2088 if (IsInWorld())
2089 SendMessageToSetInRange(data, 0.0f, self);
2090}
virtual void SendMessageToSetInRange(WorldPacket const *data, float dist, bool self) const
Definition Object.cpp:2092

References Object::IsInWorld(), and SendMessageToSetInRange().

Referenced by Unit::_ExitVehicle(), AuraApplication::ClientUpdate(), Unit::DealDamageShieldDamage(), Spell::Delayed(), Unit::Dismount(), Spell::EffectDispel(), Spell::EffectInstaKill(), Spell::EffectStealBeneficialBuff(), npc_xt002_boombot::npc_xt002_boombotAI::Explode(), AuraEffect::HandleAuraSetVehicle(), Unit::HandleEmoteCommand(), WorldSession::HandleMoveFlagChangeOpcode(), WorldSession::HandleMovementOpcodes(), WorldSession::HandleMoveRootAck(), WorldSession::HandleUpdateProjectilePosition(), npc_gunship::npc_gunshipAI::JustDied(), Movement::MoveSplineInit::Launch(), Unit::Mount(), boss_volkhan::MovementInform(), PlayDirectMusic(), PlayDirectSound(), PlayDistanceSound(), Unit::SendAttackStateUpdate(), Unit::SendChangeCurrentVictimOpcode(), Spell::SendChannelStart(), Spell::SendChannelUpdate(), Unit::SendClearTarget(), Unit::SendClearThreatListOpcode(), GameObject::SendCustomAnim(), Unit::SendEnergizeSpellLog(), Unit::SendHealSpellLog(), Spell::SendInterrupted(), Spell::SendLogExecute(), Unit::SendMeleeAttackStart(), Unit::SendMeleeAttackStop(), Unit::SendMonsterMove(), Unit::SendMovementFlagUpdate(), Unit::SendMoveRoot(), SendObjectDeSpawnAnim(), Unit::SendPeriodicAuraLog(), Unit::SendPetActionSound(), Unit::SendPetDismissSound(), SendPlayMusic(), Unit::SendPlaySpellImpact(), Unit::SendPlaySpellVisual(), Unit::SendRemoveFromThreatListOpcode(), Unit::SendSpellDamageImmune(), Unit::SendSpellDamageResist(), Spell::SendSpellGo(), Unit::SendSpellMiss(), Unit::SendSpellNonMeleeDamageLog(), Spell::SendSpellStart(), Unit::SendTeleportPacket(), Unit::SendThreatListUpdate(), Unit::SetCanFly(), Creature::SetDisableGravity(), Unit::SetFeatherFall(), Unit::SetHover(), Unit::SetPower(), Unit::SetSpeed(), Creature::SetSwim(), Creature::SetWalk(), Unit::SetWaterWalking(), Movement::MoveSplineInit::Stop(), and boss_svala::boss_svalaAI::UpdateAI().

◆ SendMessageToSet() [2/2]

void WorldObject::SendMessageToSet ( WorldPacket const *  data,
Player const *  skipped_rcvr 
) const
virtual

Reimplemented in Player.

2099{
2100 Acore::MessageDistDeliverer notifier(this, data, 0.0f, false, skipped_rcvr);
2101 notifier.Visit(GetObjectVisibilityContainer().GetVisiblePlayersMap());
2102}
Definition GridNotifiers.h:100

References GetObjectVisibilityContainer(), and Acore::MessageDistDeliverer::Visit().

◆ SendMessageToSetInRange()

void WorldObject::SendMessageToSetInRange ( WorldPacket const *  data,
float  dist,
bool  self 
) const
virtual

Reimplemented in Player.

2093{
2094 Acore::MessageDistDeliverer notifier(this, data, dist);
2095 notifier.Visit(GetObjectVisibilityContainer().GetVisiblePlayersMap());
2096}

References GetObjectVisibilityContainer(), and Acore::MessageDistDeliverer::Visit().

Referenced by SendMessageToSet(), and CreatureTextMgr::SendNonChatPacket().

◆ SendObjectDeSpawnAnim()

void WorldObject::SendObjectDeSpawnAnim ( ObjectGuid  guid)
2105{
2107 data << guid;
2108 SendMessageToSet(&data, true);
2109}
Definition WorldPacket.h:26
@ SMSG_GAMEOBJECT_DESPAWN_ANIM
Definition Opcodes.h:563

References SendMessageToSet(), and SMSG_GAMEOBJECT_DESPAWN_ANIM.

Referenced by GameObject::Delete(), GameObject::DespawnOrUnsummon(), DynamicObject::Remove(), and GameObject::Update().

◆ SendPlayMusic()

void WorldObject::SendPlayMusic ( uint32  Music,
bool  OnlySelf 
)
2064{
2066 data << Music;
2067 if (OnlySelf && IsPlayer())
2068 this->ToPlayer()->GetSession()->SendPacket(&data);
2069 else
2070 SendMessageToSet(&data, true); // ToSelf ignored in this case
2071}
WorldSession * GetSession() const
Definition Player.h:1998
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
Definition WorldSession.cpp:252
@ SMSG_PLAY_MUSIC
Definition Opcodes.h:661

References Player::GetSession(), Object::IsPlayer(), SendMessageToSet(), WorldSession::SendPacket(), SMSG_PLAY_MUSIC, and Object::ToPlayer().

◆ setActive()

void WorldObject::setActive ( bool  isActiveObject)
1066{
1067 if (m_isActive == on)
1068 return;
1069
1070 if (IsPlayer())
1071 return;
1072
1073 m_isActive = on;
1074
1075 if (!on || !IsInWorld())
1076 return;
1077
1078 Map* map = FindMap();
1079 if (!map)
1080 return;
1081
1083}

References Map::AddObjectToPendingUpdateList(), FindMap(), Object::IsInWorld(), Object::IsPlayer(), and m_isActive.

Referenced by BossAI::_JustEngagedWith(), BossAI::_JustReachedHome(), Unit::AddPlayerToVision(), CinematicMgr::BeginCinematic(), boss_twilight_halion::boss_twilight_halionAI::boss_twilight_halionAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::DamageTaken(), npc_warden_mellichar::npc_warden_mellicharAI::DamageTaken(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::DoAction(), boss_krick::boss_krickAI::DoAction(), npc_hyjal_ground_trash::DoAction(), npc_hyjal_gargoyle::DoAction(), npc_hyjal_frost_wyrm::DoAction(), npc_xerestrasza::npc_xerestraszaAI::DoAction(), boss_sindragosa::boss_sindragosaAI::DoAction(), npc_spinestalker::npc_spinestalkerAI::DoAction(), npc_rimefang::npc_rimefangAI::DoAction(), npc_terenas_menethil::npc_terenas_menethilAI::DoAction(), npc_crok_scourgebane::npc_crok_scourgebaneAI::DoAction(), boss_sister_svalna::boss_sister_svalnaAI::DoAction(), boss_hadronox::boss_hadronoxAI::DoAction(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::DoAction(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::DoAction(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::DoAction(), boss_illidari_council::DoAction(), boss_kologarn::boss_kologarnAI::EnterEvadeMode(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::EnterEvadeMode(), ValithriaDespawner::Execute(), go_necropolis::go_necropolis(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::InitFight(), npc_cork_gizelton::npc_cork_gizeltonAI::Initialize(), boss_razorscale::boss_razorscaleAI::InitializeAI(), npc_lord_arete::npc_lord_areteAI::InitializeAI(), npc_herald_of_the_lich_king::InitializeAI(), Totem::InitSummon(), npc_warden_mellichar::npc_warden_mellicharAI::JustDied(), boss_sartharion_dragonAI::JustEngagedWith(), boss_servant_quarters::JustEngagedWith(), boss_anubarak_trial::boss_anubarak_trialAI::JustEngagedWith(), boss_jaraxxus::boss_jaraxxusAI::JustEngagedWith(), boss_gormok::boss_gormokAI::JustEngagedWith(), boss_jormungarAI::JustEngagedWith(), boss_icehowl::boss_icehowlAI::JustEngagedWith(), boss_twin_valkyrAI::JustEngagedWith(), npc_stinky_icc::npc_stinky_iccAI::JustEngagedWith(), boss_lord_marrowgar::JustEngagedWith(), npc_precious_icc::npc_precious_iccAI::JustEngagedWith(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::JustEngagedWith(), boss_algalon_the_observer::boss_algalon_the_observerAI::JustEngagedWith(), boss_auriaya::boss_auriayaAI::JustEngagedWith(), boss_flame_leviathan::boss_flame_leviathanAI::JustEngagedWith(), boss_freya::boss_freyaAI::JustEngagedWith(), boss_vezax::boss_vezaxAI::JustEngagedWith(), boss_ignis::boss_ignisAI::JustEngagedWith(), boss_kologarn::boss_kologarnAI::JustEngagedWith(), boss_mimiron::boss_mimironAI::JustEngagedWith(), boss_thorim::boss_thorimAI::JustEngagedWith(), boss_xt002::boss_xt002AI::JustEngagedWith(), boss_the_lich_king::boss_the_lich_kingAI::JustEngagedWith(), npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::JustEngagedWith(), boss_trollgore::boss_trollgoreAI::JustEngagedWith(), boss_prince_keleseth_icc::boss_prince_kelesethAI::JustEngagedWith(), boss_prince_taldaram_icc::boss_prince_taldaramAI::JustEngagedWith(), boss_prince_valanar_icc::boss_prince_valanarAI::JustEngagedWith(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::JustEngagedWith(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::JustEngagedWith(), boss_festergut::boss_festergutAI::JustEngagedWith(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustEngagedWith(), boss_professor_putricide::boss_professor_putricideAI::JustEngagedWith(), boss_rotface::boss_rotfaceAI::JustEngagedWith(), boss_sindragosa::boss_sindragosaAI::JustEngagedWith(), boss_steelbreaker::boss_steelbreakerAI::JustEngagedWith(), boss_runemaster_molgeim::boss_runemaster_molgeimAI::JustEngagedWith(), boss_stormcaller_brundir::boss_stormcaller_brundirAI::JustEngagedWith(), boss_anubarak_trial::boss_anubarak_trialAI::JustReachedHome(), boss_jaraxxus::boss_jaraxxusAI::JustReachedHome(), boss_gormok::boss_gormokAI::JustReachedHome(), boss_jormungarAI::JustReachedHome(), boss_icehowl::boss_icehowlAI::JustReachedHome(), boss_twin_valkyrAI::JustReachedHome(), boss_prince_keleseth_icc::boss_prince_kelesethAI::JustReachedHome(), boss_prince_taldaram_icc::boss_prince_taldaramAI::JustReachedHome(), boss_prince_valanar_icc::boss_prince_valanarAI::JustReachedHome(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::JustReachedHome(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::JustReachedHome(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::JustReachedHome(), boss_algalon_the_observer::boss_algalon_the_observerAI::JustReachedHome(), boss_steelbreaker::boss_steelbreakerAI::JustReachedHome(), boss_runemaster_molgeim::boss_runemaster_molgeimAI::JustReachedHome(), boss_stormcaller_brundir::boss_stormcaller_brundirAI::JustReachedHome(), boss_auriaya::boss_auriayaAI::JustReachedHome(), boss_flame_leviathan::boss_flame_leviathanAI::JustReachedHome(), boss_freya::boss_freyaAI::JustReachedHome(), boss_vezax::boss_vezaxAI::JustReachedHome(), boss_ignis::boss_ignisAI::JustReachedHome(), boss_mimiron::boss_mimironAI::JustReachedHome(), boss_thorim::boss_thorimAI::JustReachedHome(), boss_xt002::boss_xt002AI::JustReachedHome(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JustRespawned(), npc_kiljaeden_controller::JustSummoned(), boss_hydross_the_unstable::JustSummoned(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::MovementInform(), boss_sindragosa::boss_sindragosaAI::MovementInform(), npc_spinestalker::npc_spinestalkerAI::MovementInform(), npc_rimefang::npc_rimefangAI::MovementInform(), npc_minigob_manabonk::npc_minigob_manabonk(), npc_necropolis::npc_necropolis(), npc_necropolis_proxy::npc_necropolis_proxy(), npc_necropolis_relay::npc_necropolis_relay(), npc_necrotic_shard::npc_necrotic_shard(), npc_time_lost_proto_drake::npc_time_lost_proto_drakeAI::npc_time_lost_proto_drakeAI(), npc_wg_spirit_guide::npc_wg_spirit_guideAI::npc_wg_spirit_guideAI(), npc_vehicle_d16_propelled_delivery::npc_vehicle_d16_propelled_deliveryAI::PassengerBoarded(), Unit::RemovePlayerFromVision(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::Reset(), npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::Reset(), npc_q24545_lich_king::npc_q24545_lich_kingAI::Reset(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::Reset(), npc_akama_illidan::Reset(), npc_warden_mellichar::npc_warden_mellicharAI::Reset(), boss_svala::boss_svalaAI::SetData(), npc_highlord_tirion_fordring_lh::npc_highlord_tirion_fordringAI::SetData(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::SetData(), npc_pos_leader::npc_pos_leaderAI::SetData(), npc_q24545_lich_king::npc_q24545_lich_kingAI::SetGUID(), BattlegroundIC::SetupBattleground(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::sGossipSelect(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::sGossipSelect(), npc_akama_illidan::sGossipSelect(), Battlefield::SpawnCreature(), Battlefield::SpawnGameObject(), go_firework_show::SpawnNextFirework(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::StartEvent(), go_firework_show::StartShow(), go_firework_show::StopShow(), npc_warden_mellichar::npc_warden_mellicharAI::SummonedCreatureDies(), instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::Update(), npc_kalecgos_kj::UpdateAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::UpdateAI(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::UpdateAI(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), npc_xerestrasza::npc_xerestraszaAI::UpdateAI(), npc_hor_leader_second::npc_hor_leader_secondAI::UpdateAI(), boss_krick::boss_krickAI::UpdateAI(), npc_pos_leader::npc_pos_leaderAI::UpdateAI(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::UpdateAI(), npc_highlord_tirion_fordring_lh::npc_highlord_tirion_fordringAI::UpdateAI(), and boss_svala::boss_svalaAI::UpdateAI().

◆ SetAllowedLooters()

void WorldObject::SetAllowedLooters ( GuidUnorderedSet const  looters)
3106{
3107 _allowedLooters = looters;
3108}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient().

◆ SetLocationInstanceId()

void WorldObject::SetLocationInstanceId ( uint32  _instanceId)
inlineprotected
754{ m_InstanceId = _instanceId; }

References m_InstanceId.

Referenced by Corpse::LoadCorpseFromDB().

◆ SetLocationMapId()

void WorldObject::SetLocationMapId ( uint32  _mapId)
inlineprotected
753{ m_mapId = _mapId; }
uint32 m_mapId
Definition Position.h:324

References WorldLocation::m_mapId.

Referenced by Corpse::LoadCorpseFromDB().

◆ SetMap()

void WorldObject::SetMap ( Map map)
virtual

Reimplemented in Player.

2112{
2113 ASSERT(map);
2114 ASSERT(!IsInWorld());
2115
2116 if (m_currMap == map) // command add npc: first create, than loadfromdb
2117 {
2118 return;
2119 }
2120
2121 if (m_currMap)
2122 {
2123 LOG_FATAL("entities.object", "WorldObject::SetMap: obj {} new map {} {}, old map {} {}", (uint32)GetTypeId(), map->GetId(), map->GetInstanceId(), m_currMap->GetId(), m_currMap->GetInstanceId());
2124 ABORT();
2125 }
2126
2127 m_currMap = map;
2128 m_mapId = map->GetId();
2129 m_InstanceId = map->GetInstanceId();
2130
2131 sScriptMgr->OnWorldObjectSetMap(this, map);
2132}
#define ABORT
Definition Errors.h:76
uint32 GetId() const
Definition Map.h:229
uint32 GetInstanceId() const
Definition Map.h:266

References ABORT, ASSERT, Map::GetId(), Map::GetInstanceId(), Object::GetTypeId(), Object::IsInWorld(), LOG_FATAL, m_currMap, m_InstanceId, WorldLocation::m_mapId, and sScriptMgr.

Referenced by Map::AddCorpse(), Pet::Create(), Creature::Create(), GameObject::Create(), StaticTransport::Create(), DynamicObject::CreateDynamicObject(), TransportMgr::CreateTransport(), MotionTransport::DelayedTeleportTransport(), and Player::SetMap().

◆ SetName()

◆ SetNotified()

void WorldObject::SetNotified ( uint16  f)
inline
663{ m_executed_notifies |= f;}

References m_executed_notifies.

◆ SetPhaseMask()

void WorldObject::SetPhaseMask ( uint32  newPhaseMask,
bool  update 
)
virtual

Reimplemented in GameObject, and Unit.

2888{
2889 sScriptMgr->OnBeforeWorldObjectSetPhaseMask(this, m_phaseMask, newPhaseMask, m_useCombinedPhases, update);
2890 m_phaseMask = newPhaseMask;
2891
2892 if (update && IsInWorld())
2894}
virtual void UpdateObjectVisibility(bool forced=true, bool fromUpdate=false)
Definition Object.cpp:2960

References Object::IsInWorld(), m_phaseMask, m_useCombinedPhases, sScriptMgr, and UpdateObjectVisibility().

Referenced by _Create(), Map::ConvertCorpseToBones(), Corpse::LoadCorpseFromDB(), GameObject::SetPhaseMask(), and Unit::SetPhaseMask().

◆ SetPositionDataUpdate()

void WorldObject::SetPositionDataUpdate ( )
1154{
1155 _updatePositionData = true;
1156
1157 // Calls immediately for charmed units
1158 if (IsCreature() && ToUnit()->IsCharmedOwnedByPlayerOrPlayer())
1160}

References _updatePositionData, Object::IsCreature(), Object::ToUnit(), and UpdatePositionData().

Referenced by Map::DynamicObjectRelocation(), and Map::GameObjectRelocation().

◆ SetTransport()

◆ SetVisibilityDistanceOverride()

void WorldObject::SetVisibilityDistanceOverride ( VisibilityDistanceType  type)
1092{
1094
1095 if (type == GetVisibilityOverrideType())
1096 return;
1097
1098 if (!IsCreature() && !IsGameObject() && !IsDynamicObject())
1099 return;
1100
1101 // Important to remove from old visibility override containers first
1103
1104 // Always update _visibilityDistanceOverrideType, even when not in world
1106
1107 // Finally, add to new visibility override containers
1109}
void AddToMapVisibilityOverrideContainers()
Definition Object.cpp:1125
VisibilityDistanceType GetVisibilityOverrideType() const
Definition Object.h:668

References _visibilityDistanceOverrideType, AddToMapVisibilityOverrideContainers(), ASSERT, GetVisibilityOverrideType(), Object::IsCreature(), Object::IsDynamicObject(), Object::IsGameObject(), Max, and RemoveFromMapVisibilityOverrideContainers().

Referenced by GameObject::Create(), Totem::InitSummon(), and Creature::LoadCreaturesAddon().

◆ SetZoneScript()

void WorldObject::SetZoneScript ( )
2334{
2335 if (Map* map = FindMap())
2336 {
2337 if (InstanceMap* instanceMap = map->ToInstanceMap())
2338 m_zoneScript = reinterpret_cast<ZoneScript*>(instanceMap->GetInstanceScript());
2339 else if (!map->IsBattlegroundOrArena())
2340 {
2341 uint32 zoneId = GetZoneId();
2342 if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(zoneId))
2343 m_zoneScript = bf;
2344 else
2345 m_zoneScript = sOutdoorPvPMgr->GetZoneScript(zoneId);
2346 }
2347 }
2348}
#define sBattlefieldMgr
Definition BattlefieldMgr.h:77
#define sOutdoorPvPMgr
Definition OutdoorPvPMgr.h:102
Definition Battlefield.h:205
Definition Map.h:646
uint32 GetZoneId() const
Definition Object.cpp:3059
Definition ZoneScript.h:26

References FindMap(), GetZoneId(), m_zoneScript, sBattlefieldMgr, sOutdoorPvPMgr, and Map::ToInstanceMap().

Referenced by GameObject::Create(), StaticTransport::Create(), and Creature::CreateFromProto().

◆ SummonCreature() [1/2]

TempSummon * WorldObject::SummonCreature ( uint32  id,
const Position pos,
TempSummonType  spwtype = TEMPSUMMON_MANUAL_DESPAWN,
uint32  despwtime = 0,
uint32  vehId = 0,
SummonPropertiesEntry const *  properties = nullptr,
bool  visibleBySummonerOnly = false 
) const
2356{
2357 if (Map* map = FindMap())
2358 {
2359 if (TempSummon* summon = map->SummonCreature(entry, pos, properties, duration, (WorldObject*)this, 0, 0, visibleBySummonerOnly))
2360 {
2361 summon->SetTempSummonType(spwtype);
2362 return summon;
2363 }
2364 }
2365
2366 return nullptr;
2367}
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2355

References FindMap(), TempSummon::SetTempSummonType(), and SummonCreature().

Referenced by at_icc_spire_frostwyrm::_OnTrigger(), Battleground::AddCreature(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::AddPortals(), boss_xt002::boss_xt002AI::AttachHeart(), boss_kologarn::boss_kologarnAI::AttachLeftArm(), boss_kologarn::boss_kologarnAI::AttachRightArm(), CinematicMgr::BeginCinematic(), boss_eydis::boss_eydisAI::boss_eydisAI(), boss_fjola::boss_fjolaAI::boss_fjolaAI(), boss_headless_horseman::DamageTaken(), boss_algalon_the_observer::boss_algalon_the_observerAI::DamageTaken(), npc_ulduar_arachnopod_destroyer::npc_ulduar_arachnopod_destroyerAI::DamageTaken(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::DamageTaken(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::DoAction(), boss_victor_nefarius::boss_victor_nefariusAI::DoAction(), boss_archimonde::DoAction(), npc_thrall_warchief::npc_thrall_warchiefAI::DoAction(), npc_ahune_bunny::DoAction(), boss_cthun::DoAction(), npc_costumed_orphan_matron::DoAction(), npc_arthas::npc_arthasAI::DoAction(), boss_palehoof::boss_palehoofAI::DoAction(), boss_archimonde::DoCastDoomFire(), boss_bug_trio::DoFinalSpell(), npc_rinji::npc_rinjiAI::DoSpawnAmbush(), npc_lakota_windsong::npc_lakota_windsongAI::DoSpawnBandits(), ScriptedAI::DoSpawnCreature(), instance_stratholme::instance_stratholme_InstanceMapScript::DoSpawnPlaguedCritters(), npc_paoka_swiftmountain::npc_paoka_swiftmountainAI::DoSpawnWyvern(), npc_midsummer_ribbon_pole_target::DoSpewLavaChecks(), CreatureAI::DoSummon(), CreatureAI::DoSummon(), npc_time_rift::DoSummonAtRift(), CreatureAI::DoSummonFlyer(), npc_ranshalla::npc_ranshallaAI::DoSummonPriestess(), npc_muglash::npc_muglashAI::DoWaveSummon(), Spell::EffectDummy(), Spell::EffectSummonType(), npc_giant_claw_tentacle::Emerge(), DelayedSummonEvent::Execute(), IceTombSummonEvent::Execute(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::ExecuteEvent(), boss_sartharion_shadron::boss_sartharion_shadronAI::ExecuteEvent(), boss_sartharion_vesperon::boss_sartharion_vesperonAI::ExecuteEvent(), boss_kaelthas::ExecuteMiddleEvent(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::FinishFight(), boss_janalai::FireWall(), npc_simon_bunny::npc_simon_bunnyAI::GivePunishment(), go_brazier_of_madness::GossipHello(), go_celestial_planetarium_access::go_celestial_planetarium_accessAI::GossipHello(), spell_rotface_unstable_ooze_explosion_init::HandleCast(), debug_commandscript::HandleDebugSpawnVehicleCommand(), spell_midsummer_summon_ahune_lieutenant::HandleDummy(), spell_dred_raptor_call::HandleDummy(), spell_q11010_q11102_q11023_choose_loc::HandleDummy(), spell_herald_volzaj_insanity::HandleDummyEffect(), spell_hor_gunship_cannon_fire_aura::HandleEffectPeriodic(), spell_gen_haunted_aura::HandleEffectPeriodic(), spell_hodir_flash_freeze_aura::HandleEffectPeriodic(), spell_ignis_scorch_aura::HandleEffectPeriodic(), spell_dtk_raise_dead_aura::HandleEffectRemove(), spell_icc_geist_alarm::HandleEvent(), mmaps_commandscript::HandleMmapPathCommand(), npc_commandscript::HandleNpcAddTempSpawnCommand(), spell_gen_haunted::HandleOnEffectHit(), spell_kaelthas_summon_nether_vapor::HandleScriptEffect(), spell_q12478_frostmourne_cavern::HandleSendEvent(), spell_q9847_a_spirit_ally::HandleSendEvent(), spell_item_draenic_pale_ale::HandleSummon(), spell_q11322_q11317_the_cleansing::if(), boss_priestess_delrissa::InitializeAI(), npc_general_andorov::InitializeAI(), boss_prince_keleseth_icc::boss_prince_kelesethAI::InitializeAI(), boss_prince_taldaram_icc::boss_prince_taldaramAI::InitializeAI(), boss_prince_valanar_icc::boss_prince_valanarAI::InitializeAI(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::InitializeAI(), brann_bronzebeard::brann_bronzebeardAI::InitializeEvent(), boss_moroes::InitializeGuests(), Vehicle::InstallAccessory(), instance_trial_of_the_champion::instance_trial_of_the_champion_InstanceMapScript::InstanceCleanup(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::InstanceCleanup(), npc_ranshalla::npc_ranshallaAI::JustDidDialogueStep(), boss_halycon::boss_halyconAI::JustDied(), npc_auriaya_feral_defender::npc_auriaya_feral_defenderAI::JustDied(), boss_kologarn_arms::boss_kologarn_armsAI::JustDied(), boss_exarch_maladaar::JustDied(), npc_necrotic_shard::JustDied(), boss_jarien::JustDied(), boss_sothos::JustDied(), boss_felmyst::JustDied(), boss_kurinnaxx::JustDied(), npc_webbed_creature::npc_webbed_creatureAI::JustDied(), boss_shade_of_aran::JustEngagedWith(), boss_mandokir::boss_mandokirAI::JustEngagedWith(), npc_anub_ar_crusher::npc_anub_ar_crusherAI::JustEngagedWith(), boss_anubarak_trial::boss_anubarak_trialAI::JustEngagedWith(), boss_devourer_of_souls::boss_devourer_of_soulsAI::JustEngagedWith(), boss_keleseth::JustEngagedWith(), boss_exarch_maladaar::JustEngagedWith(), boss_shirrak_the_dead_watcher::JustEngagedWith(), boss_blackheart_the_inciter::JustEngagedWith(), boss_sacrolash::JustEngagedWith(), boss_kalecgos::JustEngagedWith(), boss_hexlord_malacrass::JustEngagedWith(), boss_janalai::JustEngagedWith(), boss_onyxia::JustEngagedWith(), boss_ossirian::JustEngagedWith(), boss_novos::boss_novosAI::JustEngagedWith(), boss_anubrekhan::boss_anubrekhanAI::JustEngagedWith(), boss_high_astromancer_solarian::JustEngagedWith(), boss_halion::boss_halionAI::JustSummoned(), npc_akama_illidan::KilledUnit(), npc_the_scourge_cauldron::npc_the_scourge_cauldronAI::MoveInLineOfSight(), npc_ulduar_snow_mound::MoveInLineOfSight(), npc_black_knight_graveyard::npc_black_knight_graveyardAI::MoveInLineOfSight(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::MovementInform(), boss_captain_skarloc::MovementInform(), boss_malygos::boss_malygosAI::MovementInform(), boss_vazruden_the_herald::MovementInform(), boss_flame_leviathan_safety_container::boss_flame_leviathan_safety_containerAI::MovementInform(), npc_claw_tentacle::npc_claw_tentacle(), npc_eye_tentacle::npc_eye_tentacle(), npc_giant_claw_tentacle::npc_giant_claw_tentacle(), npc_giant_eye_tentacle::npc_giant_eye_tentacle(), npc_ulduar_flames_initial::npc_ulduar_flames_initialAI::npc_ulduar_flames_initialAI(), npc_vh_void_sentry::npc_vh_void_sentryAI::npc_vh_void_sentryAI(), go_gong_of_bethekk::OnGossipHello(), go_resonite_cask::OnGossipHello(), go_inconspicuous_mine_car::OnGossipHello(), go_strange_pool::OnGossipHello(), go_ethereum_prison::OnGossipHello(), go_ethereum_stasis::OnGossipHello(), go_sacred_fire_of_life::OnGossipHello(), go_southfury_moonstone::OnGossipHello(), go_arcane_prison::OnGossipHello(), go_hive_pod::OnGossipHello(), go_mistwhisper_treasure::OnGossipHello(), npc_grandmother::OnGossipSelect(), go_pumpkin_shrine::OnGossipSelect(), go_apexis_relic::OnGossipSelect(), instance_ruins_of_ahnqiraj::instance_ruins_of_ahnqiraj_InstanceMapScript::OnPlayerEnter(), instance_eye_of_eternity::instance_eye_of_eternity_InstanceMapScript::OnPlayerEnter(), npc_maghar_captive::OnQuestAccept(), npc_karynaku::OnQuestAccept(), go_crystalline_tear::OnQuestAccept(), go_loosely_turned_soil::OnQuestReward(), spell_xt002_gravity_bomb_aura::OnRemove(), AreaTrigger_at_scent_larkorwi::OnTrigger(), AreaTrigger_at_nats_landing::OnTrigger(), AreaTrigger_at_sentry_point::OnTrigger(), AreaTrigger_at_area_52_entrance::OnTrigger(), at_malfurion_stormrage::OnTrigger(), at_twilight_grove::OnTrigger(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnUnitDeath(), boss_jeklik::PathEndReached(), npc_akama_illidan::PathEndReached(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::PrepareChamberIllusion(), npc_barnes::npc_barnesAI::PrepareEncounter(), npc_dark_iron_attack_generator::PrepareEvent(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::PrepareIceCrownIllusion(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::PrepareStormwindIllusion(), npc_battle_at_valhalas::npc_battle_at_valhalasAI::PrepareSummons(), SmartScript::ProcessAction(), boss_flame_leviathan::boss_flame_leviathanAI::RadioSay(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::ReorderInstance(), boss_majordomo::boss_majordomoAI::Reset(), boss_malchezaar::Reset(), npc_image_of_medivh::npc_image_of_medivhAI::Reset(), boss_garaxxas::Reset(), npc_kiljaeden_controller::Reset(), npc_coren_direbrew::Reset(), boss_archimonde::Reset(), boss_infinite_corruptor::boss_infinite_corruptorAI::Reset(), boss_hadronox::boss_hadronoxAI::Reset(), boss_krik_thir::boss_krik_thirAI::Reset(), boss_anubarak_trial::boss_anubarak_trialAI::Reset(), boss_drakkari_colossus::boss_drakkari_colossusAI::Reset(), boss_slad_ran::boss_slad_ranAI::Reset(), boss_the_lich_king::boss_the_lich_kingAI::Reset(), boss_thaddius::boss_thaddiusAI::Reset(), boss_bjarngrim::Reset(), boss_auriaya::boss_auriayaAI::Reset(), npc_ulduar_leviathan_mkii::npc_ulduar_leviathan_mkiiAI::Reset(), boss_thorim_runic_colossus::boss_thorim_runic_colossusAI::Reset(), boss_skadi::boss_skadiAI::Reset(), boss_vazruden_the_herald::Reset(), npc_oscillating_frequency_scanner_master_bunny::npc_oscillating_frequency_scanner_master_bunnyAI::Reset(), npc_firework::npc_fireworkAI::Reset(), npc_minion_spawner::Reset(), boss_emalon::boss_emalonAI::ResetSummons(), boss_warchief_kargath_bladefist::RespawnAssassins(), boss_alar::ScheduleAbilities(), boss_illidan_stormrage::ScheduleAbilities(), boss_kiljaeden::ScheduleBasicAbilities(), boss_the_lurker_below::SchedulerPhaseOne(), npc_pallid_horror::ScheduleTasks(), boss_cthun::ScheduleTasks(), boss_svala::boss_svalaAI::SetData(), npc_ulduar_harpoonfirestate::npc_ulduar_harpoonfirestateAI::SetData(), instance_eye_of_eternity::instance_eye_of_eternity_InstanceMapScript::SetData(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::SetData(), npc_idol_room_spawner::npc_idol_room_spawnerAI::SetData(), npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI::SetGUID(), npc_kurenai_captive::npc_kurenai_captiveAI::SetGUID(), npc_echo_of_medivh::SetupBoard(), boss_hexlord_malacrass::SpawnAdds(), boss_zuljin::SpawnAdds(), boss_thorim::boss_thorimAI::SpawnAllNPCs(), boss_thorim::boss_thorimAI::SpawnAnArenaNPC(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SpawnClouds(), boss_selin_fireheart::SpawnCrystals(), boss_skadi_grauf::boss_skadi_graufAI::SpawnFlameTriggers(), boss_kelthuzad::boss_kelthuzadAI::SpawnHelpers(), boss_razuvious::boss_razuviousAI::SpawnHelpers(), boss_hodir::boss_hodirAI::SpawnHelpers(), boss_skadi_grauf::boss_skadi_graufAI::SpawnHelpers(), boss_malchezaar::SpawnInfernal(), boss_darkmaster_gandling::boss_darkmaster_gandlingAI::SpawnMobsInRoom(), boss_ossirian::SpawnNextCrystal(), boss_alar::SpawnPhoenixes(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SpawnTentacle(), npc_arthas::npc_arthasAI::SpawnTimeRift(), boss_grandmaster_vorpil::spawnVoidTraveler(), boss_freya::boss_freyaAI::SpawnWave(), npc_grimstone::npc_grimstoneAI::SpawnWave(), npc_varian_wrynn::npc_varian_wrynnAI::SpawnWave(), npc_thrall_bfu::npc_thrall_bfuAI::SpawnWave(), boss_julianne::SpellHit(), boss_urom::boss_uromAI::SpellHit(), boss_headless_horseman_pumpkin::SpellHit(), boss_sister_svalna::boss_sister_svalnaAI::SpellHitTarget(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::SpellHitTarget(), boss_freya::boss_freyaAI::SpellHitTarget(), boss_lethon::boss_lethonAI::SpellHitTarget(), boss_grobbulus::boss_grobbulusAI::SpellHitTarget(), npc_xt002_heart::npc_xt002_heartAI::SpellHitTarget(), boss_ionar::Split(), npc_ulduar_flames_initial::npc_ulduar_flames_initialAI::SpreadFlame(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::Summon(), npc_eris_hevenfire::npc_eris_hevenfireAI::SummonArchers(), npc_grimstone::npc_grimstoneAI::SummonBoss(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonBroodling(), boss_anzu::SummonBroods(), SummonCreature(), SummonCreature(), SummonCreatureGroup(), PassengerController::SummonCreatures(), brann_bronzebeard::brann_bronzebeardAI::SummonCreatures(), npc_deathstalker_fearleia::SummonCreatureWithRandomTarget(), SummonCroneIfReady(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::SummonCrowd(), boss_anubrekhan::boss_anubrekhanAI::SummonCryptGuards(), npc_necrotic_shard::SummonCultists(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SummonDeathOrbs(), boss_sjonnir::boss_sjonnirAI::SummonDwarfes(), boss_akilzon::SummonEagles(), boss_cthun::SummonedCreatureDies(), npc_kiljaeden_controller::SummonedCreatureDies(), boss_jedoga_shadowseeker::SummonedCreatureDies(), npc_pallid_horror::SummonFlameshockers(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonFrostwardens(), npc_air_force_bots::npc_air_force_botsAI::SummonGuard(), boss_fankriss::SummonHatchlingWaves(), boss_kelthuzad::boss_kelthuzadAI::SummonHelper(), boss_noth::boss_nothAI::SummonHelper(), npc_cork_gizelton::npc_cork_gizeltonAI::SummonHelpers(), boss_faerlina::boss_faerlinaAI::SummonHelpers(), boss_anub_arak::boss_anub_arakAI::SummonHelpers(), boss_gothik::boss_gothikAI::SummonHelpers(), boss_yoggsaron::boss_yoggsaronAI::SummonImmortalGuardian(), npc_invis_infernal_caster::npc_invis_infernal_casterAI::SummonInfernal(), boss_sartharion::boss_sartharionAI::SummonLavaWaves(), boss_amanitar::SummonMushroom(), npc_anachronos_quest_trigger::npc_anachronos_quest_triggerAI::SummonNextWave(), npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI::SummonNextWave(), go_wind_stone::go_wind_stoneAI::SummonNPC(), npc_medivh_bm::SummonOrcs(), npc_eris_hevenfire::npc_eris_hevenfireAI::SummonPeasants(), npc_xt002_heart::npc_xt002_heartAI::SummonPiles(), boss_netherspite::SummonPortals(), boss_grandmaster_vorpil::summonPortals(), npc_coren_direbrew::SummonSister(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonSpiders(), boss_ambassador_flamelash::boss_ambassador_flamelashAI::SummonSpirits(), boss_anzu::SummonSpirits(), boss_sartharion::boss_sartharionAI::SummonStartingTriggers(), go_tadpole_cage::go_tadpole_cageAI::SummonTadpoles(), boss_dorothee::SummonTito(), SummonTrigger(), instance_trial_of_the_champion::instance_trial_of_the_champion_InstanceMapScript::Update(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::Update(), instance_violet_hold::instance_violet_hold_InstanceMapScript::Update(), boss_overlord_wyrmthalak::boss_overlordwyrmthalakAI::UpdateAI(), boss_rend_blackhand::boss_rend_blackhandAI::UpdateAI(), boss_victor_nefarius::boss_victor_nefariusAI::UpdateAI(), boss_vaelastrasz::boss_vaelAI::UpdateAI(), npc_scarlet_cannon::npc_scarlet_cannonAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_kalecgos_kj::UpdateAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), npc_dark_iron_attack_generator::UpdateAI(), npc_dark_iron_attack_mole_machine::UpdateAI(), npc_pilgrims_bounty_chair::UpdateAI(), npc_arthas::npc_arthasAI::UpdateAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI(), npc_medivh_bm::UpdateAI(), npc_time_rift::UpdateAI(), boss_onyxia::UpdateAI(), npc_belnistrasz::npc_belnistraszAI::UpdateAI(), npc_murkdeep::npc_murkdeepAI::UpdateAI(), npc_clintar_spirit::npc_clintar_spiritAI::UpdateAI(), npc_twiggy_flathead::npc_twiggy_flatheadAI::UpdateAI(), npc_shadowpriest_sezziz::npc_shadowpriest_sezzizAI::UpdateAI(), npc_twilight_volunteer::UpdateAI(), boss_anubarak_trial::boss_anubarak_trialAI::UpdateAI(), npc_snobold_vassal::npc_snobold_vassalAI::UpdateAI(), boss_jormungarAI::UpdateAI(), boss_twin_valkyrAI::UpdateAI(), npc_phantom_mage::npc_phantom_mageAI::UpdateAI(), npc_pos_leader::npc_pos_leaderAI::UpdateAI(), npc_pos_after_first_boss::npc_pos_after_first_bossAI::UpdateAI(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::UpdateAI(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::UpdateAI(), npc_pos_leader_second::npc_pos_leader_secondAI::UpdateAI(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::UpdateAI(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::UpdateAI(), boss_rotface::boss_rotfaceAI::UpdateAI(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::UpdateAI(), boss_gluth::boss_gluthAI::UpdateAI(), boss_kelthuzad::boss_kelthuzadAI::UpdateAI(), boss_maexxna::boss_maexxnaAI::UpdateAI(), boss_sapphiron::boss_sapphironAI::UpdateAI(), npc_naxxramas_trigger::UpdateAI(), boss_malygos::boss_malygosAI::UpdateAI(), boss_ormorok::UpdateAI(), boss_drakos::boss_drakosAI::UpdateAI(), boss_eregos::boss_eregosAI::UpdateAI(), boss_varos::boss_varosAI::UpdateAI(), boss_sjonnir::boss_sjonnirAI::UpdateAI(), boss_sjonnir_malformed_ooze::boss_sjonnir_malformed_oozeAI::UpdateAI(), boss_algalon_the_observer::boss_algalon_the_observerAI::UpdateAI(), npc_hodirs_fury::npc_hodirs_furyAI::UpdateAI(), npc_mimirons_inferno::npc_mimirons_infernoAI::UpdateAI(), npc_thorims_hammer::npc_thorims_hammerAI::UpdateAI(), npc_storm_beacon_spawn::npc_storm_beacon_spawnAI::UpdateAI(), boss_freya::boss_freyaAI::UpdateAI(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), npc_ulduar_vx001::npc_ulduar_vx001AI::UpdateAI(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::UpdateAI(), npc_ulduar_bot_summon_trigger::npc_ulduar_bot_summon_triggerAI::UpdateAI(), boss_razorscale::boss_razorscaleAI::UpdateAI(), boss_thorim::boss_thorimAI::UpdateAI(), boss_thorim_sif::boss_thorim_sifAI::UpdateAI(), boss_thorim_ancient_rune_giant::boss_thorim_ancient_rune_giantAI::UpdateAI(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::UpdateAI(), npc_massive_jormungar::npc_massive_jormungarAI::UpdateAI(), boss_svala::boss_svalaAI::UpdateAI(), boss_ymiron::boss_ymironAI::UpdateAI(), boss_emalon::boss_emalonAI::UpdateAI(), boss_toravon::boss_toravonAI::UpdateAI(), npc_thassarian2::npc_thassarian2AI::UpdateAI(), npc_archmage_landalock::npc_archmage_landalockAI::UpdateAI(), npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI::UpdateAI(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::UpdateAI(), npc_q24545_lich_king::npc_q24545_lich_kingAI::UpdateAI(), npc_llod_generic::npc_llod_genericAI::UpdateAI(), npc_overlord_drakuru_betrayal::npc_overlord_drakuru_betrayalAI::UpdateAI(), npc_ahune_bunny::UpdateAI(), npc_warden_mellichar::npc_warden_mellicharAI::UpdateAI(), npc_deaths_door_fell_cannon_target_bunny::npc_deaths_door_fell_cannon_target_bunnyAI::UpdateAI(), npc_commander_dawnforge::npc_commander_dawnforgeAI::UpdateAI(), npc_doctor::npc_doctorAI::UpdateAI(), npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI::UpdateEscortAI(), brann_bronzebeard::brann_bronzebeardAI::UpdateEscortAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::UpdateKeeperSpawns(), boss_netherspite::UpdatePortals(), CreatureAI::VisualizeBoundary(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::WaypointReached(), npc_arthas::npc_arthasAI::WaypointReached(), npc_barnes::npc_barnesAI::WaypointReached(), npc_professor_phizzlethorpe::npc_professor_phizzlethorpeAI::WaypointReached(), npc_ranger_lilatha::WaypointReached(), npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI::WaypointReached(), npc_daphne_stilwell::npc_daphne_stilwellAI::WaypointReached(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::WaypointReached(), npc_cork_gizelton::npc_cork_gizeltonAI::WaypointReached(), npc_kaya_flathoof::npc_kaya_flathoofAI::WaypointReached(), npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI::WaypointReached(), npc_ame::npc_ameAI::WaypointReached(), npc_emily::npc_emilyAI::WaypointReached(), npc_maghar_captive::npc_maghar_captiveAI::WaypointReached(), npc_kurenai_captive::npc_kurenai_captiveAI::WaypointReached(), and npc_bessy::npc_bessyAI::WaypointReached().

◆ SummonCreature() [2/2]

TempSummon * WorldObject::SummonCreature ( uint32  id,
float  x,
float  y,
float  z,
float  ang = 0,
TempSummonType  spwtype = TEMPSUMMON_MANUAL_DESPAWN,
uint32  despwtime = 0,
SummonPropertiesEntry const *  properties = nullptr,
bool  visibleBySummonerOnly = false 
)
2291{
2292 if (!x && !y && !z)
2293 {
2294 GetClosePoint(x, y, z, GetObjectSize());
2295 ang = GetOrientation();
2296 }
2297 Position pos;
2298 pos.Relocate(x, y, z, ang);
2299 return SummonCreature(id, pos, spwtype, despwtime, 0, properties, visibleBySummonerOnly);
2300}
bool GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float angle=0, WorldObject const *forWho=nullptr, bool force=false) const
Definition Object.cpp:2713

References GetClosePoint(), GetObjectSize(), Position::GetOrientation(), Position::Relocate(), and SummonCreature().

◆ SummonCreatureGroup()

void WorldObject::SummonCreatureGroup ( uint8  group,
std::list< TempSummon * > *  list = nullptr 
)

Summons group of creatures. Should be called only by instances of Creature and GameObject classes.

Parameters
groupId of group to summon.
listList to store pointers to summoned creatures.
2433{
2434 ASSERT((IsGameObject() || IsCreature()) && "Only GOs and creatures can summon npc groups!");
2435
2436 std::vector<TempSummonData> const* data = sObjectMgr->GetSummonGroup(GetEntry(), IsGameObject() ? SUMMONER_TYPE_GAMEOBJECT : SUMMONER_TYPE_CREATURE, group);
2437 if (!data)
2438 return;
2439
2440 for (std::vector<TempSummonData>::const_iterator itr = data->begin(); itr != data->end(); ++itr)
2441 if (TempSummon* summon = SummonCreature(itr->entry, itr->pos, itr->type, itr->time))
2442 if (list)
2443 list->push_back(summon);
2444}
#define sObjectMgr
Definition ObjectMgr.h:1650
@ SUMMONER_TYPE_CREATURE
Definition TemporarySummon.h:25
@ SUMMONER_TYPE_GAMEOBJECT
Definition TemporarySummon.h:26

References ASSERT, Object::GetEntry(), Object::IsCreature(), Object::IsGameObject(), sObjectMgr, SummonCreature(), SUMMONER_TYPE_CREATURE, and SUMMONER_TYPE_GAMEOBJECT.

Referenced by boss_eye_of_cthun::DoAction(), boss_majordomo::boss_majordomoAI::InitializeAI(), boss_taldaram::InitializeAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JustRespawned(), npc_akama_shade::MovementInform(), npc_hyjal_thrall::OnGossipSelect(), SmartScript::ProcessAction(), boss_apothecary_hummel::boss_apothecary_hummelAI::Reset(), boss_jedoga_shadowseeker::Reset(), boss_rend_blackhand::boss_rend_blackhandAI::SummonWave(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), and npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI().

◆ SummonGameObject()

GameObject * WorldObject::SummonGameObject ( uint32  entry,
float  x,
float  y,
float  z,
float  ang,
float  rotation0,
float  rotation1,
float  rotation2,
float  rotation3,
uint32  respawnTime,
bool  checkTransport = true,
GOSummonType  summonType = GO_SUMMON_TIMED_OR_CORPSE_DESPAWN 
)
2370{
2371 if (!IsInWorld())
2372 return nullptr;
2373
2374 GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(entry);
2375 if (!goinfo)
2376 {
2377 LOG_ERROR("sql.sql", "Gameobject template {} not found in database!", entry);
2378 return nullptr;
2379 }
2380
2381 Map* map = GetMap();
2382 GameObject* go = sObjectMgr->IsGameObjectStaticTransport(entry) ? new StaticTransport() : new GameObject();
2383 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, GetPhaseMask(), x, y, z, ang, G3D::Quat(rotation0, rotation1, rotation2, rotation3), 100, GO_STATE_READY))
2384 {
2385 delete go;
2386 return nullptr;
2387 }
2388
2389 go->SetRespawnTime(respawnTime);
2390
2391 // Xinef: if gameobject is temporary, set custom spellid
2392 if (respawnTime)
2393 go->SetSpellId(1);
2394
2395 if (IsPlayer() || (IsCreature() && summonType == GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)) //not sure how to handle this
2396 ToUnit()->AddGameObject(go);
2397 else
2398 go->SetSpawnedByDefault(false);
2399
2400 map->AddToMap(go, checkTransport);
2401 return go;
2402}
@ GO_STATE_READY
Definition GameObjectData.h:692
@ GO_SUMMON_TIMED_OR_CORPSE_DESPAWN
Definition Object.h:76
virtual bool Create(ObjectGuid::LowType guidlow, uint32 name_id, Map *map, uint32 phaseMask, float x, float y, float z, float ang, G3D::Quat const &rotation, uint32 animprogress, GOState go_state, uint32 artKit=0)
Definition GameObject.cpp:254
void SetRespawnTime(int32 respawn)
Definition GameObject.cpp:1284
void SetSpawnedByDefault(bool b)
Definition GameObject.h:196
void SetSpellId(uint32 id)
Definition GameObject.h:176
ObjectGuid::LowType GenerateLowGuid()
Definition Map.h:480
bool AddToMap(T *, bool checkTransport=false)
Definition Map.cpp:301
Definition Transport.h:115
void AddGameObject(GameObject *gameObj)
Definition Unit.cpp:6278
Definition GameObjectData.h:31

References Unit::AddGameObject(), Map::AddToMap(), GameObject::Create(), GameObject, Map::GenerateLowGuid(), GetMap(), GetPhaseMask(), GO_STATE_READY, GO_SUMMON_TIMED_OR_CORPSE_DESPAWN, Object::IsCreature(), Object::IsInWorld(), Object::IsPlayer(), LOG_ERROR, GameObject::SetRespawnTime(), GameObject::SetSpawnedByDefault(), GameObject::SetSpellId(), sObjectMgr, and Object::ToUnit().

Referenced by boss_freya::boss_freyaAI::DamageTaken(), boss_thorim::boss_thorimAI::DamageTaken(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::DoAction(), instance_obsidian_sanctum::instance_obsidian_sanctum_InstanceMapScript::DoAction(), npc_ahune_bunny::DoAction(), npc_medivh_bm::DoAction(), IceTombSummonEvent::Execute(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::ExecuteEvent(), boss_sartharion_shadron::boss_sartharion_shadronAI::ExecuteEvent(), boss_sartharion_vesperon::boss_sartharion_vesperonAI::ExecuteEvent(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), HandleBothDead(), spell_gordunni_trap::HandleDummy(), spell_q12014_steady_as_a_rock::HandleFinish(), gobject_commandscript::HandleGameObjectAddTempCommand(), boss_sapphiron::boss_sapphironAI::InitializeAI(), boss_eregos::boss_eregosAI::JustDied(), boss_kologarn::boss_kologarnAI::JustDied(), boss_four_horsemen::boss_four_horsemenAI::JustDied(), spell_pagles_point_cast::OnEffect(), instance_sunken_temple::instance_sunken_temple_InstanceMapScript::OnGameObjectCreate(), npc_zulaman_hostage::OnGossipSelect(), spell_silithyst::OnRemove(), SmartScript::ProcessAction(), npc_brewfest_super_brew_trigger::Reset(), boss_ossirian::Reset(), npc_crystal_spike::Reset(), boss_freya_nature_bomb::boss_freya_nature_bombAI::Reset(), npc_oscillating_frequency_scanner_master_bunny::npc_oscillating_frequency_scanner_master_bunnyAI::Reset(), npc_ulduar_harpoonfirestate::npc_ulduar_harpoonfirestateAI::SetData(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::SetData(), instance_ulduar::instance_ulduar_InstanceMapScript::SpawnHodirChests(), boss_ossirian::SpawnNextCrystal(), go_firework_show::SpawnNextFirework(), npc_thrall_bfu::npc_thrall_bfuAI::SpawnWave(), npc_deaths_door_fell_cannon_target_bunny::npc_deaths_door_fell_cannon_target_bunnyAI::SpellHit(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::Update(), instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::Update(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), npc_dark_iron_attack_mole_machine::UpdateAI(), npc_belnistrasz::npc_belnistraszAI::UpdateAI(), npc_pos_leader_second::npc_pos_leader_secondAI::UpdateAI(), boss_sapphiron::boss_sapphironAI::UpdateAI(), npc_alexstrasza::npc_alexstraszaAI::UpdateAI(), boss_algalon_the_observer::boss_algalon_the_observerAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), boss_razorscale::boss_razorscaleAI::UpdateAI(), npc_shandy_dalaran::npc_shandy_dalaranAI::UpdateAI(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::UpdateAI(), npc_grimstone::npc_grimstoneAI::UpdateEscortAI(), brann_bronzebeard::brann_bronzebeardAI::UpdateEscortAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), and npc_engineer_helice::npc_engineer_heliceAI::WaypointReached().

◆ SummonTrigger()

Creature * WorldObject::SummonTrigger ( float  x,
float  y,
float  z,
float  ang,
uint32  dur,
bool  setLevel = false,
CreatureAI *(*)(Creature *)  GetAI = nullptr 
)
2405{
2406 TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
2407 Creature* summon = SummonCreature(WORLD_TRIGGER, x, y, z, ang, summonType, duration);
2408 if (!summon)
2409 return nullptr;
2410
2411 //summon->SetName(GetName());
2412 if (setLevel && (IsPlayer() || IsCreature()))
2413 {
2414 summon->SetFaction(((Unit*)this)->GetFaction());
2415 summon->SetLevel(((Unit*)this)->GetLevel());
2416 }
2417
2418 // Xinef: correctly set phase mask in case of gameobjects
2419 summon->SetPhaseMask(GetPhaseMask(), false);
2420
2421 if (GetAI)
2422 summon->AIM_Initialize(GetAI(summon));
2423 return summon;
2424}
TempSummonType
Definition Object.h:47
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:54
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:50
bool AIM_Initialize(CreatureAI *ai=nullptr)
Definition Creature.cpp:1098
void SetFaction(uint32 faction)
Definition Unit.cpp:10107
void SetLevel(uint8 lvl, bool showLevelChange=true)
Definition Unit.cpp:15546
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:19130

References Creature::AIM_Initialize(), GetPhaseMask(), Object::IsCreature(), Object::IsPlayer(), Unit::SetFaction(), Unit::SetLevel(), Unit::SetPhaseMask(), SummonCreature(), TEMPSUMMON_DEAD_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, and WORLD_TRIGGER.

Referenced by GameObject::CastSpell(), boss_kiljaeden::EmpowerOrb(), spell_q10612_10613_the_fel_and_the_furious::HandleScriptEffect(), go_wg_vehicle_teleporter::go_wg_vehicle_teleporterAI::IsValidVehicle(), boss_kologarn_arms::boss_kologarn_armsAI::JustDied(), SmartScript::ProcessAction(), Map::ScriptsProcess(), boss_headless_horseman::UpdateAI(), boss_ymiron::boss_ymironAI::UpdateAI(), go_flames::go_flamesAI::UpdateAI(), and go_heat::go_heatAI::UpdateAI().

◆ Update()

void WorldObject::Update ( uint32  diff)
virtual

Reimplemented in Pet, MotionTransport, StaticTransport, DynamicObject, GameObject, Creature, TempSummon, Puppet, Player, Totem, and Unit.

1052{
1053 m_Events.Update(diff);
1054
1056 while (_heartbeatTimer <= 0ms)
1057 {
1059 Heartbeat();
1060 }
1061
1062 sScriptMgr->OnWorldObjectUpdate(this, diff);
1063}
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:27
void Update(uint32 p_time)
Definition EventProcessor.cpp:40
virtual void Heartbeat()
Definition Object.h:227

References _heartbeatTimer, Object::Heartbeat(), HEARTBEAT_INTERVAL, m_Events, sScriptMgr, and EventProcessor::Update().

Referenced by GameObject::Update(), Unit::Update(), and Map::UpdateNonPlayerObjects().

◆ UpdateAllowedPositionZ()

void WorldObject::UpdateAllowedPositionZ ( float  x,
float  y,
float &  z,
float *  groundZ = nullptr 
) const
1584{
1585 if (GetTransport())
1586 {
1587 if (groundZ)
1588 *groundZ = z;
1589
1590 return;
1591 }
1592
1593 if (Unit const* unit = ToUnit())
1594 {
1595 if (!unit->CanFly())
1596 {
1597 Creature const* c = unit->ToCreature();
1598 bool canSwim = c ? c->CanSwim() : true;
1599 float ground_z = z;
1600 float max_z;
1601 if (canSwim)
1602 max_z = GetMapWaterOrGroundLevel(x, y, z, &ground_z);
1603 else
1604 max_z = ground_z = GetMapHeight(x, y, z);
1605
1606 if (max_z > INVALID_HEIGHT)
1607 {
1608 if (canSwim && unit->GetMap()->IsInWater(unit->GetPhaseMask(), x, y, max_z - Z_OFFSET_FIND_HEIGHT, unit->GetCollisionHeight()))
1609 {
1610 // do not allow creatures to walk on
1611 // water level while swimming
1612 max_z = std::max(max_z - GetMinHeightInWater(), ground_z);
1613 }
1614 else
1615 {
1616 // hovering units cannot go below their hover height
1617 float hoverOffset = unit->GetHoverHeight();
1618 max_z += hoverOffset;
1619 ground_z += hoverOffset;
1620 }
1621
1622 if (z > max_z)
1623 z = max_z;
1624 else if (z < ground_z)
1625 z = ground_z;
1626 }
1627
1628 if (groundZ)
1629 *groundZ = ground_z;
1630 }
1631 else
1632 {
1633 float ground_z = GetMapHeight(x, y, z) + unit->GetHoverHeight();
1634 if (z < ground_z)
1635 z = ground_z;
1636
1637 if (groundZ)
1638 *groundZ = ground_z;
1639 }
1640 }
1641 else
1642 {
1643 float ground_z = GetMapHeight(x, y, z);
1644 if (ground_z > INVALID_HEIGHT)
1645 z = ground_z;
1646
1647 if (groundZ)
1648 *groundZ = ground_z;
1649 }
1650}
bool CanSwim() const override
This method check the current flag/status of a creature and its inhabit type.
Definition Creature.cpp:3292
float GetMinHeightInWater() const
Get the minimum height of a object that should be in water to start floating/swim.
Definition Object.cpp:1572

References Creature::CanSwim(), GetMapHeight(), GetMapWaterOrGroundLevel(), GetMinHeightInWater(), GetTransport(), INVALID_HEIGHT, Object::ToCreature(), Object::ToUnit(), and Z_OFFSET_FIND_HEIGHT.

Referenced by RandomMovementGenerator< T >::_setRandomLocation(), HomeMovementGenerator< Creature >::_setTargetLocation(), Map::CheckCollisionAndGetValidCoords(), ChaseMovementGenerator< T >::DispatchSplineToPosition(), GetContactPoint(), GetNearPoint(), Unit::GetRandomContactPoint(), PathGenerator::NormalizePath(), CharmInfo::SaveStayPosition(), spell_valanar_kinetic_bomb_summon::SelectDest(), Unit::SetHover(), and WaypointMovementGenerator< Creature >::StartMove().

◆ UpdateGroundPositionZ()

void WorldObject::UpdateGroundPositionZ ( float  x,
float  y,
float &  z 
) const

◆ UpdateObjectVisibility()

void WorldObject::UpdateObjectVisibility ( bool  forced = true,
bool  fromUpdate = false 
)
virtual

Reimplemented in Player, and Unit.

2961{
2962 //updates object's visibility for nearby players
2963 Acore::VisibleChangesNotifier notifier(*this);
2964 Cell::VisitObjects(this, notifier, GetVisibilityRange());
2965}
float GetVisibilityRange() const
Definition Object.cpp:1674
Definition GridNotifiers.h:63

References GetVisibilityRange(), and Cell::VisitObjects().

Referenced by Map::DynamicObjectRelocation(), Map::GameObjectRelocation(), SetPhaseMask(), GameObject::SetRespawnTime(), GameObject::Update(), Unit::UpdateObjectVisibility(), UpdateObjectVisibilityOnCreate(), and TempSummon::UpdateObjectVisibilityOnCreate().

◆ UpdateObjectVisibilityOnCreate()

virtual void WorldObject::UpdateObjectVisibilityOnCreate ( )
inlinevirtual

Reimplemented in TempSummon.

647{ UpdateObjectVisibility(true); }

References UpdateObjectVisibility().

◆ UpdatePositionData()

Member Data Documentation

◆ _allowedLooters

◆ _areaId

uint32 WorldObject::_areaId
protected

◆ _floorZ

float WorldObject::_floorZ
protected

◆ _heartbeatTimer

Milliseconds WorldObject::_heartbeatTimer
private

Referenced by Update().

◆ _liquidData

LiquidData WorldObject::_liquidData
protected

◆ _objectVisibilityContainer

ObjectVisibilityContainer WorldObject::_objectVisibilityContainer
private

◆ _outdoors

bool WorldObject::_outdoors
protected

◆ _updatePositionData

bool WorldObject::_updatePositionData
protected

◆ _visibilityDistanceOverrideType

◆ _zoneId

◆ elunaEvents

ElunaEventProcessor* WorldObject::elunaEvents

◆ LastUsedScriptID

◆ m_currMap

Map* WorldObject::m_currMap
private

Referenced by FindMap(), GetMap(), ResetMap(), and SetMap().

◆ m_Events

EventProcessor WorldObject::m_Events

Referenced by Unit::_ExitVehicle(), at_hol_hall_of_watchers::_OnTrigger(), BossAI::_Reset(), npc_q24545_wretched_ghoul::npc_q24545_wretched_ghoulAI::Activate(), CharmInfo::AddSpellToActionBar(), Spell::AddUnitTarget(), spell_sindragosa_ice_tomb_trap_aura::AfterApply(), Creature::CallAssistance(), boss_high_nethermancer_zerevor::CastDampenMagicIfPossible(), Unit::CastDelayedSpellWithPeriodicAmount(), boss_murmur::CastSuppressionOOC(), CleanupsBeforeDelete(), boss_romulo::DamageTaken(), boss_muru::DamageTaken(), boss_felblood_kaelthas::DamageTaken(), boss_the_lich_king::boss_the_lich_kingAI::DamageTaken(), npc_q24545_wretched_ghoul::npc_q24545_wretched_ghoulAI::DoAction(), boss_julianne::DoAction(), boss_baltharus_the_warborn::boss_baltharus_the_warbornAI::DoAction(), boss_prince_keleseth_icc::boss_prince_kelesethAI::DoAction(), boss_prince_taldaram_icc::boss_prince_taldaramAI::DoAction(), boss_prince_valanar_icc::boss_prince_valanarAI::DoAction(), boss_sindragosa::boss_sindragosaAI::DoAction(), npc_spinestalker::npc_spinestalkerAI::DoAction(), npc_rimefang::npc_rimefangAI::DoAction(), npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::DoAction(), boss_felblood_kaelthas::DoAction(), boss_akilzon::DoAction(), boss_cthun::DoAction(), boss_krik_thir::boss_krik_thirAI::DoAction(), boss_kalecgos::DoAction(), boss_illidan_stormrage::DoAction(), npc_akama_illidan::DoAction(), npc_maiev_illidan::DoAction(), npc_blade_of_azzinoth::DoAction(), boss_ouro::Emerge(), boss_illidan_stormrage::EnterEvadeMode(), boss_zuljin::EnterPhase(), SpellEvent::Execute(), BattleExperienceEvent::Execute(), UtherBatteredHiltEvent::Execute(), TriggerWickedSpirit::Execute(), lapseTeleport::Execute(), PartyTimeEmoteEvent::Execute(), npc_xt002_boombot::npc_xt002_boombotAI::Explode(), Creature::ForcedDespawn(), spell_item_party_time::HandleEffectApply(), spell_chapter2_persuasive_strike::HandleHit(), spell_alar_flame_quills::HandlePeriodic(), WorldSession::HandlePlayerLoginFromDB(), spell_ayamiss_swarmer_teleport_trigger::HandleScript(), boss_akilzon::HandleStormSequence(), boss_kiljaeden::InitializeAI(), boss_ambassador_hellmaw::InitializeAI(), npc_pet_mage_mirror_image::InitializeAI(), Totem::InitSummon(), npc_blade_of_azzinoth::IsSummonedBy(), npc_flame_of_azzinoth::IsSummonedBy(), npc_demonic_vapor::IsSummonedBy(), npc_maiev_illidan::IsSummonedBy(), boss_akilzon::JustDied(), npc_swarm_scarab::npc_swarm_scarabAI::JustDied(), npc_nerubian_burrower::npc_nerubian_burrowerAI::JustDied(), npc_gunship::npc_gunshipAI::JustDied(), npc_xt002_boombot::npc_xt002_boombotAI::JustDied(), npc_q24545_wretched_ghoul::npc_q24545_wretched_ghoulAI::JustDied(), boss_felmyst::JustDied(), boss_mother_shahraz::JustDied(), boss_najentus::JustDied(), boss_akilzon::JustEngagedWith(), boss_zuljin::JustEngagedWith(), boss_loken::JustEngagedWith(), boss_keleseth::JustEngagedWith(), npc_flame_of_azzinoth::JustEngagedWith(), boss_essence_of_suffering::boss_essence_of_sufferingAI::JustEngagedWith(), boss_swamplord_muselek::JustEngagedWith(), boss_felmyst::JustEngagedWith(), boss_muru::JustEngagedWith(), boss_janalai::JustEngagedWith(), boss_krik_thir::boss_krik_thirAI::JustEngagedWith(), boss_anubrekhan::boss_anubrekhanAI::JustEngagedWith(), boss_murmur::JustEngagedWith(), boss_gurtogg_bloodboil::JustEngagedWith(), boss_illidan_stormrage::JustEngagedWith(), boss_mother_shahraz::JustEngagedWith(), boss_najentus::JustEngagedWith(), boss_hydross_the_unstable::JustEngagedWith(), npc_akama_illidan::JustReachedHome(), npc_kiljaeden_controller::JustSummoned(), boss_kiljaeden::JustSummoned(), boss_hazzarah::JustSummoned(), boss_baltharus_the_warborn::boss_baltharus_the_warbornAI::JustSummoned(), boss_drakkari_colossus::boss_drakkari_colossusAI::JustSummoned(), boss_prince_valanar_icc::boss_prince_valanarAI::JustSummoned(), boss_sindragosa::boss_sindragosaAI::JustSummoned(), boss_the_lich_king::boss_the_lich_kingAI::JustSummoned(), boss_valithria_dreamwalker::boss_valithria_dreamwalkerAI::JustSummoned(), npc_risen_archmage::npc_risen_archmageAI::JustSummoned(), boss_algalon_the_observer::boss_algalon_the_observerAI::JustSummoned(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::JustSummoned(), boss_krik_thir::boss_krik_thirAI::KilledUnit(), boss_gurtogg_bloodboil::KilledUnit(), boss_illidan_stormrage::KilledUnit(), boss_essence_of_suffering::boss_essence_of_sufferingAI::KilledUnit(), boss_essence_of_desire::boss_essence_of_desireAI::KilledUnit(), boss_essence_of_anger::boss_essence_of_angerAI::KilledUnit(), Creature::ModifyThreatPercentTemp(), boss_ebonroc::boss_ebonrocAI::MovementInform(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::MovementInform(), boss_zuljin::MovementInform(), boss_captain_skarloc::MovementInform(), boss_ayamiss::MovementInform(), boss_illidan_stormrage::MovementInform(), npc_akama_illidan::MovementInform(), boss_essence_of_suffering::boss_essence_of_sufferingAI::MovementInform(), boss_essence_of_desire::boss_essence_of_desireAI::MovementInform(), boss_felmyst::MovementInform(), gunship_npc_AI::MovementInform(), npc_gunship_boarding_addAI::MovementInform(), boss_ghazan::MovementInform(), spell_halion_twilight_realm_aura::OnApply(), boss_taldaram::OnAuraRemove(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureCreate(), go_main_chambers_access_panel::OnGossipHello(), spell_halion_leave_twilight_realm_aura::OnRemove(), spell_q12937_relief_for_the_fallen::OnRemove(), at_cthun_stomach_exit::OnTrigger(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnUnitDeath(), npc_hyldsmeet_protodrake::npc_hyldsmeet_protodrakeAI::PassengerBoarded(), boss_anetheron::PathEndReached(), boss_rage_winterchill::PathEndReached(), npc_hyjal_ground_trash::PathEndReached(), npc_hyjal_frost_wyrm::PathEndReached(), boss_ambassador_hellmaw::PathEndReached(), npc_akama_illidan::PathEndReached(), npc_hyjal_gargoyle::PathEndReached(), npc_hive_zara_swarmer::PathEndReached(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::PhaseTransitionSpawns(), Spell::prepare(), SmartScript::ProcessAction(), Spell::RecalculateDelayMomentForDst(), boss_vexallus::Reset(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::Reset(), boss_brutallus::Reset(), boss_kiljaeden::Reset(), boss_muru::Reset(), boss_entropius::Reset(), npc_dark_fiend::Reset(), npc_singularity::Reset(), boss_akilzon::Reset(), boss_janalai::Reset(), boss_zuljin::Reset(), boss_anub_arak::boss_anub_arakAI::Reset(), boss_anubrekhan::boss_anubrekhanAI::Reset(), boss_runemaster_molgeim::boss_runemaster_molgeimAI::Reset(), boss_illidan_stormrage::Reset(), npc_akama_illidan::Reset(), npc_maiev_illidan::Reset(), boss_mother_shahraz::Reset(), boss_najentus::Reset(), boss_alar::Reset(), NPCStaveQuestAI::ResetState(), boss_alar::ScheduleAbilities(), boss_illidan_stormrage::ScheduleAbilities(), BossAI::ScheduleEnrageTimer(), npc_gunship_boarding_addAI::SetData(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::StartEvent(), boss_felmyst::StartIntro(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::SummonedCreatureDies(), boss_hydross_the_unstable::SummonMovementInform(), boss_hydross_the_unstable::SummonTaintedElementalOOC(), CreatureAI::Talk(), TempSummon::UnSummon(), Totem::UnSummon(), spell_illidari_council_deadly_strike_aura::Update(), Update(), npc_kalecgos_kj::UpdateAI(), boss_anomalus::UpdateAI(), and npc_dark_fiend::UpdateAI().

◆ m_executed_notifies

uint16 WorldObject::m_executed_notifies
private

◆ m_InstanceId

uint32 WorldObject::m_InstanceId
private

◆ m_invisibility

◆ m_invisibilityDetect

◆ m_isActive

bool WorldObject::m_isActive
protected

◆ m_movementInfo

MovementInfo WorldObject::m_movementInfo

Referenced by _IsWithinDist(), Unit::AddExtraUnitMovementFlag(), Vehicle::AddPassenger(), MotionTransport::AddPassenger(), StaticTransport::AddPassenger(), Unit::AddUnitMovementFlag(), Unit::BuildMovementPacket(), Object::BuildMovementUpdate(), WorldSession::BuildPartyMemberStatsChangedPacket(), Player::CanFly(), DynamicObject::CleanupsBeforeDelete(), GameObject::CleanupsBeforeDelete(), MotionTransport::CleanupsBeforeDelete(), StaticTransport::CleanupsBeforeDelete(), Unit::CleanupsBeforeDelete(), MotionTransport::CreateGOPassenger(), MotionTransport::CreateNPCPassenger(), MotionTransport::DelayedTeleportTransport(), Unit::DisableSpline(), npc_escortAI::GenerateWaypointArray(), SmartAI::GenerateWayPointArray(), Unit::GetExtraUnitMovementFlags(), GetTransOffsetO(), GetTransOffsetX(), GetTransOffsetY(), GetTransOffsetZ(), GetTransSeat(), GetTransTime(), Unit::GetUnitMovementFlags(), WorldSession::HandleChangeSeatsOnControlledVehicle(), WorldSession::HandleDismissControlledVehicle(), misc_commandscript::HandleGPSCommand(), WorldSession::HandleMoveFlagChangeOpcode(), WorldSession::HandleMoveKnockBackAck(), WorldSession::HandleMoveNotActiveMover(), WorldSession::HandleMoveRootAck(), WorldSession::HandleMoverRelocation(), WorldSession::HandleMoveTimeSkippedOpcode(), WorldSession::HandleMoveWorldportAck(), WorldSession::HandlePlayerLoginFromDB(), WorldSession::HandleRequestPartyMemberStatsOpcode(), Unit::HasExtraUnitMovementFlag(), Unit::HasLeewayMovement(), Unit::HasUnitMovementFlag(), Unit::IsFalling(), Unit::IsFlying(), Creature::IsFreeToMove(), Unit::IsHovering(), Unit::IsLevitating(), Unit::isMoving(), Unit::IsRooted(), Unit::isSwimming(), Unit::isTurning(), Unit::IsWalking(), Movement::MoveSplineInit::Launch(), Player::LoadFromDB(), MotionMaster::MoveFall(), Movement::MoveSplineInit::MoveSplineInit(), FollowMovementGenerator< T >::PositionOkay(), PredictPosition(), WorldSession::ProcessMovementInfo(), spell_igb_teleport_to_enemy_ship::RelocateTransportOffset(), Unit::RemoveExtraUnitMovementFlag(), Vehicle::RemovePassenger(), MotionTransport::RemovePassenger(), StaticTransport::RemovePassenger(), Unit::RemoveUnitMovementFlag(), Unit::SendMoveRoot(), Unit::SetCanFly(), Unit::SetExtraUnitMovementFlags(), Unit::SetFeatherFall(), Unit::SetHover(), Unit::SetUnitMovementFlags(), Unit::SetWaterWalking(), Movement::MoveSplineInit::Stop(), Player::TeleportTo(), StaticTransport::UpdatePassengerPositions(), MotionTransport::UpdatePassengerPositions(), and Unit::UpdateSplinePosition().

◆ m_name

◆ m_notifyflags

uint16 WorldObject::m_notifyflags
private

◆ m_phaseMask

uint32 WorldObject::m_phaseMask
private

Referenced by GetPhaseMask(), and SetPhaseMask().

◆ m_serverSideVisibility

◆ m_serverSideVisibilityDetect

◆ m_stealth

◆ m_stealthDetect

◆ m_transport

◆ m_useCombinedPhases

bool WorldObject::m_useCombinedPhases
private

Referenced by InSamePhase(), and SetPhaseMask().

◆ m_zoneScript


The documentation for this class was generated from the following files: