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)
 
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
 
void DestroyForNearbyPlayers ()
 
virtual void UpdateObjectVisibility (bool forced=true, bool fromUpdate=false)
 
virtual void UpdateObjectVisibilityOnCreate ()
 
void BuildUpdate (UpdateDataMapType &data_map, UpdatePlayerSet &player_set) 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)
 
bool IsFarVisible () const
 
bool IsVisibilityOverridden () const
 
void SetVisibilityDistanceOverride (VisibilityDistanceType type)
 
bool IsWorldObject () const
 
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
 
- 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
 
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 (bool isWorldObject)
 
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
 
bool m_isFarVisible
 
Optional< float > m_visibilityDistanceOverride
 
const bool m_isWorldObject
 
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
 

Private Attributes

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

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 ( bool  isWorldObject)
explicitprotected
1050 : WorldLocation(),
1054{
1057
1058 sScriptMgr->OnWorldObjectCreate(this);
1059}
#define INVALID_HEIGHT
Definition GridTerrainData.h:27
@ PHASEMASK_NORMAL
Definition Object.h:61
static constexpr Milliseconds HEARTBEAT_INTERVAL
Definition Object.h:101
#define sScriptMgr
Definition ScriptMgr.h:727
@ SERVERSIDE_VISIBILITY_GHOST
Definition SharedDefines.h:1274
@ GHOST_VISIBILITY_ALIVE
Definition SharedDefines.h:1281
@ GHOST_VISIBILITY_GHOST
Definition SharedDefines.h:1282
void SetValue(FLAG_TYPE flag, T_VALUES value)
Definition Object.h:384
Definition Position.h:255
bool _updatePositionData
Definition Object.h:709
std::string m_name
Definition Object.h:696
uint16 m_executed_notifies
Definition Object.h:735
bool _outdoors
Definition Object.h:707
uint16 m_notifyflags
Definition Object.h:734
uint32 m_InstanceId
Definition Object.h:729
uint32 _zoneId
Definition Object.h:704
uint32 LastUsedScriptID
Definition Object.h:645
float _floorZ
Definition Object.h:706
ZoneScript * m_zoneScript
Definition Object.h:701
bool m_useCombinedPhases
Definition Object.h:731
uint32 m_phaseMask
Definition Object.h:730
LiquidData _liquidData
Definition Object.h:708
uint32 _areaId
Definition Object.h:705
bool m_isActive
Definition Object.h:697
const bool m_isWorldObject
Definition Object.h:700
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibilityDetect
Definition Object.h:580
Optional< float > m_visibilityDistanceOverride
Definition Object.h:699
Milliseconds _heartbeatTimer
Definition Object.h:727
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibility
Definition Object.h:579
Map * m_currMap
Definition Object.h:726
Transport * m_transport
Definition Object.h:712

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
90 // this may happen because there are many !create/delete
91 if (IsWorldObject() && m_currMap)
92 {
93 if (IsCorpse())
94 {
95 LOG_FATAL("entities.object", "Object::~Object Corpse {}, type={} deleted but still in map!!", GetGUID().ToString(), ((Corpse*)this)->GetType());
96 ABORT();
97 }
98 ResetMap();
99 }
100}
#define ABORT
Definition Errors.h:76
#define LOG_FATAL(filterType__,...)
Definition Log.h:154
Definition Corpse.h:49
bool IsCorpse() const
Definition Object.h:217
ObjectGuid GetGUID() const
Definition Object.h:114
virtual void ResetMap()
Definition Object.cpp:2124
bool IsWorldObject() const
Definition Object.h:638
std::string ToString() const
Definition Position.cpp:52

References ABORT, Object::GetGUID(), Object::IsCorpse(), IsWorldObject(), LOG_FATAL, m_currMap, ResetMap(), sScriptMgr, and Position::ToString().

Member Function Documentation

◆ _Create()

void WorldObject::_Create ( ObjectGuid::LowType  guidlow,
HighGuid  guidhigh,
uint32  phaseMask 
)
1132{
1133 Object::_Create(guidlow, 0, guidhigh);
1134 SetPhaseMask(phaseMask, false);
1135}
void _Create(ObjectGuid::LowType guidlow, uint32 entry, HighGuid guidhigh)
Definition Object.cpp:134
virtual void SetPhaseMask(uint32 newPhaseMask, bool update)
Definition Object.cpp:2882

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.

1200{
1201 float sizefactor = useBoundingRadius ? GetObjectSize() + obj->GetObjectSize() : 0.0f;
1202 float maxdist = dist2compare + sizefactor;
1203
1204 if (m_transport && obj->GetTransport() && obj->GetTransport()->GetGUID() == m_transport->GetGUID())
1205 {
1206 float dtx = m_movementInfo.transport.pos.m_positionX - obj->m_movementInfo.transport.pos.m_positionX;
1207 float dty = m_movementInfo.transport.pos.m_positionY - obj->m_movementInfo.transport.pos.m_positionY;
1208 float disttsq = dtx * dtx + dty * dty;
1209 if (is3D)
1210 {
1211 float dtz = m_movementInfo.transport.pos.m_positionZ - obj->m_movementInfo.transport.pos.m_positionZ;
1212 disttsq += dtz * dtz;
1213 }
1214 return disttsq < (maxdist * maxdist);
1215 }
1216
1217 float dx = GetPositionX() - obj->GetPositionX();
1218 float dy = GetPositionY() - obj->GetPositionY();
1219 float distsq = dx * dx + dy * dy;
1220 if (is3D)
1221 {
1222 float dz = GetPositionZ() - obj->GetPositionZ();
1223 distsq += dz * dz;
1224 }
1225
1226 return distsq < maxdist * maxdist;
1227}
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
Transport * GetTransport() const
Definition Object.h:648
MovementInfo m_movementInfo
Definition Object.h:658
float GetObjectSize() const
Definition Object.cpp:2780
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)
3186{
3187 _allowedLooters.insert(guid);
3188}
GuidUnorderedSet _allowedLooters
Definition Object.h:747

References _allowedLooters.

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

◆ AddObjectToRemoveList()

void WorldObject::AddObjectToRemoveList ( )
2143{
2145
2146 Map* map = FindMap();
2147 if (!map)
2148 {
2149 LOG_ERROR("entities.object", "Object {} at attempt add to move list not have valid map (Id: {}).", GetGUID().ToString(), GetMapId());
2150 return;
2151 }
2152
2153 map->AddObjectToRemoveList(this);
2154}
#define ASSERT
Definition Errors.h:68
#define LOG_ERROR(filterType__,...)
Definition Log.h:158
Definition Map.h:158
void AddObjectToRemoveList(WorldObject *obj)
Definition Map.cpp:1761
uint32 * m_uint32Values
Definition Object.h:260
uint32 GetMapId() const
Definition Position.h:280
Map * FindMap() const
Definition Object.h:588

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().

◆ AddToNotify()

void WorldObject::AddToNotify ( uint16  f)
2986{
2987 if (!(m_notifyflags & f))
2988 if (Unit* u = ToUnit())
2989 {
2991 {
2992 uint32 EVENT_VISIBILITY_DELAY = u->FindMap() ? DynamicVisibilityMgr::GetVisibilityNotifyDelay(u->FindMap()->GetEntry()->map_type) : 1000;
2993
2994 uint32 diff = getMSTimeDiff(u->m_last_notify_mstime, GameTime::GetGameTimeMS().count());
2995 if (diff >= EVENT_VISIBILITY_DELAY / 2)
2996 EVENT_VISIBILITY_DELAY /= 2;
2997 else
2998 EVENT_VISIBILITY_DELAY -= diff;
2999 u->m_delayed_unit_relocation_timer = EVENT_VISIBILITY_DELAY;
3000 u->m_last_notify_mstime = GameTime::GetGameTimeMS().count() + EVENT_VISIBILITY_DELAY - 1;
3001 }
3002 else if (f & NOTIFY_AI_RELOCATION)
3003 {
3004 u->m_delayed_unit_ai_notify_timer = u->FindMap() ? DynamicVisibilityMgr::GetAINotifyDelay(u->FindMap()->GetEntry()->map_type) : 500;
3005 }
3006
3007 m_notifyflags |= f;
3008 }
3009}
std::uint32_t uint32
Definition Define.h:107
@ NOTIFY_AI_RELOCATION
Definition Object.h:68
@ NOTIFY_VISIBILITY_CHANGED
Definition Object.h:69
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:620
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.

3101{
3102 GetMap()->AddUpdateObject(this);
3103}
void AddUpdateObject(Object *obj)
Definition Map.h:483
Map * GetMap() const
Definition Object.h:587

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

◆ AddToWorld()

void WorldObject::AddToWorld ( )
overridevirtual

Reimplemented from Object.

1169{
1173}
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, float x, float y, float z) const
Definition Map.cpp:1275
void AddObjectToPendingUpdateList(WorldObject *obj)
Definition Map.cpp:600
virtual void AddToWorld()
Definition Object.cpp:152
uint32 GetPhaseMask() const
Definition Object.h:502

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

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

◆ BuildUpdate()

void WorldObject::BuildUpdate ( UpdateDataMapType data_map,
UpdatePlayerSet player_set 
)
overridevirtual

Reimplemented from Object.

3085{
3086 WorldObjectChangeAccumulator notifier(*this, data_map, player_set);
3087 //we must build packets for all visible players
3089
3090 ClearUpdateMask(false);
3091}
void ClearUpdateMask(bool remove)
Definition Object.cpp:533
float GetVisibilityRange() const
Definition Object.cpp:1638
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius)
Definition CellImpl.h:175
Definition Object.cpp:3012

References Object::ClearUpdateMask(), GetVisibilityRange(), and Cell::VisitWorldObjects().

◆ CanAlwaysSee()

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

Reimplemented in Creature, and Player.

740{ return false; }

Referenced by CanSeeOrDetect().

◆ CanBeAddedToMapUpdateList()

bool WorldObject::CanBeAddedToMapUpdateList ( )
3229{
3230 switch (GetTypeId())
3231 {
3232 case TYPEID_UNIT:
3233 return IsCreature();
3235 case TYPEID_GAMEOBJECT:
3236 return true;
3237 default:
3238 return false;
3239 }
3240
3241 return false;
3242}
@ 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
1874{
1875 WorldObject const* seer = this;
1876
1877 // Pets don't have detection, they use the detection of their masters
1878 if (Unit const* thisUnit = ToUnit())
1879 if (Unit* controller = thisUnit->GetCharmerOrOwner())
1880 seer = controller;
1881
1882 if (obj->IsAlwaysDetectableFor(seer) || GetEntry() == WORLD_TRIGGER) // xinef: World Trigger can detect all objects, used for wild gameobjects without owner!
1883 return true;
1884
1885 if (!ignoreStealth)
1886 {
1887 if (!seer->CanDetectInvisibilityOf(obj)) // xinef: added ignoreStealth, allow AoE spells to hit invisible targets!
1888 {
1889 return false;
1890 }
1891
1892 if (!seer->CanDetectStealthOf(obj, checkAlert))
1893 {
1894 // xinef: ignore units players have at client, this cant be cheated!
1895 if (checkClient)
1896 {
1897 if (!IsPlayer() || !ToPlayer()->HaveAtClient(obj))
1898 return false;
1899 }
1900 else
1901 return false;
1902 }
1903 }
1904
1905 return true;
1906}
#define WORLD_TRIGGER
Definition Unit.h:38
bool IsPlayer() const
Definition Object.h:201
Player * ToPlayer()
Definition Object.h:202
uint32 GetEntry() const
Definition Object.h:116
Unit * GetCharmerOrOwner() const
Definition Unit.h:1213
Definition Object.h:461
bool CanDetectStealthOf(WorldObject const *obj, bool checkAlert=false) const
Definition Object.cpp:1971
bool CanDetectInvisibilityOf(WorldObject const *obj) const
Definition Object.cpp:1908

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
1909{
1910 uint32 mask = obj->m_invisibility.GetFlags() & m_invisibilityDetect.GetFlags();
1911 // xinef: include invisible flags of caster in the mask, 2 invisible objects should be able to detect eachother
1912 mask |= obj->m_invisibility.GetFlags() & m_invisibility.GetFlags();
1913
1914 // Check for not detected types
1915 if (mask != obj->m_invisibility.GetFlags())
1916 return false;
1917
1918 // It isn't possible in invisibility to detect something that can't detect the invisible object
1919 // (it's at least true for spell: 66)
1920 // It seems like that only Units are affected by this check (couldn't see arena doors with preparation invisibility)
1921 if (obj->ToUnit())
1922 {
1923 // Permanently invisible creatures should be able to engage non-invisible targets.
1924 // ex. Skulking Witch (20882) / Greater Invisibility (16380)
1925 bool isPermInvisibleCreature = false;
1926 if (Creature const* baseObj = ToCreature())
1927 {
1928 Unit::AuraEffectList const& auraEffects = baseObj->GetAuraEffectsByType(SPELL_AURA_MOD_INVISIBILITY);
1929 for (AuraEffect* const effect : auraEffects)
1930 {
1931 if (SpellInfo const* spell = effect->GetSpellInfo())
1932 {
1933 if (spell->GetMaxDuration() == -1)
1934 {
1935 isPermInvisibleCreature = true;
1936 }
1937 }
1938 }
1939 }
1940
1941 if (!isPermInvisibleCreature)
1942 {
1943 uint32 objMask = m_invisibility.GetFlags() & obj->m_invisibilityDetect.GetFlags();
1944 // xinef: include invisible flags of caster in the mask, 2 invisible objects should be able to detect eachother
1945 objMask |= m_invisibility.GetFlags() & obj->m_invisibility.GetFlags();
1946 if (objMask != m_invisibility.GetFlags())
1947 return false;
1948 }
1949 }
1950
1951 for (uint32 i = 0; i < TOTAL_INVISIBILITY_TYPES; ++i)
1952 {
1953 if (!(mask & (1 << i)))
1954 continue;
1955
1956 // xinef: visible for the same invisibility type:
1957 if (m_invisibility.GetValue(InvisibilityType(i)) && obj->m_invisibility.GetValue(InvisibilityType(i)))
1958 continue;
1959
1960 int32 objInvisibilityValue = obj->m_invisibility.GetValue(InvisibilityType(i));
1961 int32 ownInvisibilityDetectValue = m_invisibilityDetect.GetValue(InvisibilityType(i));
1962
1963 // Too low value to detect
1964 if (ownInvisibilityDetectValue < objInvisibilityValue)
1965 return false;
1966 }
1967
1968 return true;
1969}
std::int32_t int32
Definition Define.h:103
InvisibilityType
Definition SharedDefines.h:1254
@ TOTAL_INVISIBILITY_TYPES
Definition SharedDefines.h:1268
@ SPELL_AURA_MOD_INVISIBILITY
Definition SpellAuraDefines.h:81
Definition SpellAuraEffects.h:39
Definition Creature.h:43
T_FLAGS GetFlags() const
Definition Object.h:378
T_VALUES GetValue(FLAG_TYPE flag) const
Definition Object.h:383
Creature * ToCreature()
Definition Object.h:206
Definition SpellInfo.h:316
std::vector< AuraEffect * > AuraEffectList
Definition Unit.h:636
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibility
Definition Object.h:576
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibilityDetect
Definition Object.h:577

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
1972{
1973 // Combat reach is the minimal distance (both in front and behind),
1974 // and it is also used in the range calculation.
1975 // One stealth point increases the visibility range by 0.3 yard.
1976
1977 if (!obj->m_stealth.GetFlags())
1978 return true;
1979
1980 // dead players shouldnt be able to detect stealth on arenas
1982 if (!ToPlayer()->IsAlive())
1983 return false;
1984
1985 float distance = GetExactDist(obj);
1986 float combatReach = 0.0f;
1987
1988 if (IsUnit())
1989 combatReach = ((Unit*)this)->GetCombatReach();
1990
1991 if (distance < combatReach)
1992 return true;
1993
1994 if (!HasInArc(M_PI, obj))
1995 return false;
1996
1997 for (uint32 i = 0; i < TOTAL_STEALTH_TYPES; ++i)
1998 {
1999 if (!(obj->m_stealth.GetFlags() & (1 << i)))
2000 continue;
2001
2002 if (IsUnit())
2003 if (((Unit*)this)->HasAuraTypeWithMiscvalue(SPELL_AURA_DETECT_STEALTH, i))
2004 return true;
2005
2006 // Starting points
2007 int32 detectionValue = 30;
2008
2009 // Level difference: 5 point / level, starting from level 1.
2010 // There may be spells for this and the starting points too, but
2011 // not in the DBCs of the client.
2012 detectionValue += int32(getLevelForTarget(obj) - 1) * 5;
2013
2014 // Apply modifiers
2015 detectionValue += m_stealthDetect.GetValue(StealthType(i));
2016 if (obj->isType(TYPEMASK_GAMEOBJECT))
2017 {
2018 detectionValue += 30; // pussywizard: increase detection range for gameobjects (ie. traps)
2019 if (Unit* owner = ((GameObject*)obj)->GetOwner())
2020 detectionValue -= int32(owner->getLevelForTarget(this) - 1) * 5;
2021 }
2022
2023 detectionValue -= obj->m_stealth.GetValue(StealthType(i));
2024
2025 // Calculate max distance
2026 float visibilityRange = float(detectionValue) * 0.3f + combatReach;
2027
2028 Unit const* unit = ToUnit();
2029
2030 // If this unit is an NPC then player detect range doesn't apply
2031 if (unit && unit->IsPlayer() && visibilityRange > MAX_PLAYER_STEALTH_DETECT_RANGE)
2032 visibilityRange = MAX_PLAYER_STEALTH_DETECT_RANGE;
2033
2034 if (checkAlert)
2035 visibilityRange += (visibilityRange * 0.08f) + 1.5f;
2036
2037 Unit const* targetUnit = obj->ToUnit();
2038
2039 // If checking for alert, and creature's visibility range is greater than aggro distance, No alert
2040 if (checkAlert && unit && unit->ToCreature() && visibilityRange >= unit->ToCreature()->GetAttackDistance(targetUnit) + unit->ToCreature()->m_CombatDistance)
2041 return false;
2042
2043 if (distance > visibilityRange)
2044 return false;
2045 }
2046
2047 return true;
2048}
@ TYPEMASK_GAMEOBJECT
Definition ObjectGuid.h:51
@ TYPEMASK_PLAYER
Definition ObjectGuid.h:50
StealthType
Definition SharedDefines.h:1246
@ TOTAL_STEALTH_TYPES
Definition SharedDefines.h:1250
@ SPELL_AURA_DETECT_STEALTH
Definition SpellAuraDefines.h:291
#define MAX_PLAYER_STEALTH_DETECT_RANGE
Definition Unit.h:615
float GetAttackDistance(Unit const *player) const
Definition Creature.cpp:3611
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:574
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealth
Definition Object.h:573
virtual uint8 getLevelForTarget(WorldObject const *) const
Definition Object.h:554
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:141

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
1867{
1868 if (IsCreature() && obj->IsCreature())
1869 return GetMap() != obj->GetMap() || (!InSamePhase(obj) && ToUnit()->GetVehicleBase() != obj && this != obj->ToUnit()->GetVehicleBase());
1870 return GetMap() != obj->GetMap() || !InSamePhase(obj);
1871}
Unit * GetVehicleBase() const
Definition Unit.cpp:18830
bool InSamePhase(WorldObject const *obj) const
Definition Object.h:503

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

Referenced by CanSeeOrDetect().

◆ CanSeeOrDetect()

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

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(), IsNeverVisible(), 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.

1124{
1125 if (IsInWorld())
1127
1128 m_Events.KillAllEvents(false); // non-delatable (currently cast spells) will not deleted now but it will deleted at call in Map::RemoveAllObjectsInRemoveList
1129}
void KillAllEvents(bool force)
Definition EventProcessor.cpp:82
bool IsInWorld() const
Definition Object.h:108
void RemoveFromWorld() override
Definition Object.cpp:1175
EventProcessor m_Events
Definition Object.h:693

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

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

◆ ClearZoneScript()

void WorldObject::ClearZoneScript ( )
2346{
2347 m_zoneScript = nullptr;
2348}

References m_zoneScript.

◆ DestroyForNearbyPlayers()

void WorldObject::DestroyForNearbyPlayers ( )
Todo:
: this is for puppet
2952{
2953 if (!IsInWorld())
2954 return;
2955
2956 std::list<Player*> targets;
2960 for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter)
2961 {
2962 Player* player = (*iter);
2963
2964 if (player == this)
2965 continue;
2966
2967 if (!player->HaveAtClient(this))
2968 continue;
2969
2970 if (IsUnit() && ((Unit*)this)->GetCharmerGUID() == player->GetGUID())
2971 continue;
2972
2973 DestroyForPlayer(player);
2974 player->m_clientGUIDs.erase(GetGUID());
2975 }
2976}
#define VISIBILITY_COMPENSATION
Definition ObjectDefines.h:26
Definition GridNotifiers.h:1344
virtual void DestroyForPlayer(Player *target, bool onDeath=false) const
Definition Object.cpp:274
bool HaveAtClient(WorldObject const *u) const
Definition Player.cpp:11394
GuidUnorderedSet m_clientGUIDs
Definition Player.h:2400
Definition GridNotifiers.h:531

References Object::DestroyForPlayer(), Object::GetGUID(), Object::GetGUID(), GetVisibilityRange(), Player::HaveAtClient(), Object::IsInWorld(), Object::IsUnit(), Player::m_clientGUIDs, VISIBILITY_COMPENSATION, and Cell::VisitWorldObjects().

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

◆ FindMap()

Map * WorldObject::FindMap ( ) const
inline
588{ 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(), ResetToHomeOrientation::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
2442{
2443 Creature* creature = nullptr;
2444 Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck checker(*this, entry, alive, range);
2446 Cell::VisitAllObjects(this, searcher, range);
2447 return creature;
2448}
Definition GridNotifiers.h:448
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius)
Definition CellImpl.h:185

References Cell::VisitAllObjects().

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(), 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_greengill_slave::npc_greengill_slaveAI::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
2451{
2452 GameObject* go = nullptr;
2453 Acore::NearestGameObjectEntryInObjectRangeCheck checker(*this, entry, range, onlySpawned);
2455 Cell::VisitGridObjects(this, searcher, range);
2456 return go;
2457}
Definition GridNotifiers.h:325
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius)
Definition CellImpl.h:165

References Cell::VisitGridObjects().

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

◆ GetAllowedLooters()

GuidUnorderedSet const & WorldObject::GetAllowedLooters ( ) const
3211{
3212 return _allowedLooters;
3213}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient().

◆ GetAreaId()

uint32 WorldObject::GetAreaId ( ) const
3153{
3155 const_cast<WorldObject*>(this)->UpdatePositionData();
3156
3157 return _areaId;
3158}
void UpdatePositionData()
Definition Object.cpp:1146

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
2767{
2768 // angle to face `obj` to `this` using distance includes size of `obj`
2769 GetNearPoint(obj, x, y, z, obj->GetObjectSize(), distance2d, GetAngle(obj));
2770
2771 if (std::fabs(this->GetPositionZ() - z) > 3.0f || !IsWithinLOS(x, y, z))
2772 {
2773 x = this->GetPositionX();
2774 y = this->GetPositionY();
2775 z = this->GetPositionZ();
2776 obj->UpdateGroundPositionZ(x, y, z);
2777 }
2778}
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:2635
bool IsWithinLOS(float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS) const
Definition Object.cpp:1319
float GetAngle(const Position *pos) const
Definition Position.cpp:78

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
2709{
2710 // angle calculated from current orientation
2711 GetNearPoint(forWho, x, y, z, size, distance2d, GetOrientation() + angle);
2712
2713 if (std::fabs(this->GetPositionZ() - z) > 3.0f || !IsWithinLOS(x, y, z))
2714 {
2715 x = this->GetPositionX();
2716 y = this->GetPositionY();
2717 z = this->GetPositionZ();
2718 if (forWho)
2719 if (Unit const* u = forWho->ToUnit())
2720 u->UpdateAllowedPositionZ(x, y, z);
2721 }
2722 float maxDist = GetObjectSize() + size + distance2d + 1.0f;
2723 if (GetExactDistSq(x, y, z) >= maxDist * maxDist)
2724 {
2725 if (force)
2726 {
2727 x = this->GetPositionX();
2728 y = this->GetPositionY();
2729 z = this->GetPositionZ();
2730 return true;
2731 }
2732 return false;
2733 }
2734 return true;
2735}
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(), SmartAI::MoveAway(), 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.

677{ return GetObjectSize() / 2; }

References GetObjectSize().

◆ GetCollisionWidth()

virtual float WorldObject::GetCollisionWidth ( ) const
inlinevirtual

Reimplemented in Unit.

676{ return GetObjectSize(); }

References GetObjectSize().

Referenced by GetMinHeightInWater().

◆ GetCombatReach()

virtual float WorldObject::GetCombatReach ( ) const
inlinevirtual

Reimplemented in Unit.

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

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

◆ GetContactPoint()

void WorldObject::GetContactPoint ( WorldObject const *  obj,
float &  x,
float &  y,
float &  z,
float  distance2d = CONTACT_DISTANCE 
) const
2752{
2753 // angle to face `obj` to `this` using distance includes size of `obj`
2754 GetNearPoint(obj, x, y, z, obj->GetObjectSize(), distance2d, GetAngle(obj));
2755
2756 // Exclude gameobjects from LoS calculations
2757 if (std::fabs(this->GetPositionZ() - z) > 3.0f || (!IsGameObject() && !IsWithinLOS(x, y, z)))
2758 {
2759 x = this->GetPositionX();
2760 y = this->GetPositionY();
2761 z = this->GetPositionZ();
2762 obj->UpdateAllowedPositionZ(x, y, z);
2763 }
2764}
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
2510{
2511 Acore::AllCreaturesMatchingOneEntryInRange check(this, entries, maxSearchRange);
2512 Acore::CreatureListSearcher searcher(this, creatureList, check);
2513 Cell::VisitGridObjects(this, searcher, maxSearchRange);
2514}
Definition GridNotifiers.h:1487
Definition GridNotifiers.h:463

References Cell::VisitGridObjects().

◆ GetCreatureListWithEntryInGrid() [2/2]

void WorldObject::GetCreatureListWithEntryInGrid ( std::list< Creature * > &  lList,
uint32  uiEntry,
float  fMaxSearchRange 
) const
2503{
2504 Acore::AllCreaturesOfEntryInRange check(this, entry, maxSearchRange);
2505 Acore::CreatureListSearcher<Acore::AllCreaturesOfEntryInRange> searcher(this, creatureList, check);
2506 Cell::VisitGridObjects(this, searcher, maxSearchRange);
2507}
Definition GridNotifiers.h:1469

References Cell::VisitGridObjects().

Referenced by 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 
)
3094{
3095 Acore::AllCreaturesOfEntryInRange check(this, entry, radius);
3096 Acore::CreatureListSearcher<Acore::AllCreaturesOfEntryInRange> searcher(this, creatureList, check);
3097 Cell::VisitAllObjects(this, searcher, radius);
3098}

References Cell::VisitAllObjects().

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
2517{
2518 Acore::AllDeadCreaturesInRange check(this, maxSearchRange, alive);
2519 Acore::CreatureListSearcher<Acore::AllDeadCreaturesInRange> searcher(this, creaturedeadList, check);
2520 Cell::VisitGridObjects(this, searcher, maxSearchRange);
2521}
Definition GridNotifiers.h:1554

References Cell::VisitGridObjects().

Referenced by GetDeadCreatureListInGrid().

◆ GetDebugInfo()

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

Reimplemented from Object.

2480{
2481 std::stringstream sstr;
2482 sstr << WorldLocation::GetDebugInfo() << "\n"
2483 << Object::GetDebugInfo() << "\n"
2484 << "Name: " << GetName();
2485 return sstr.str();
2486}
virtual std::string GetDebugInfo() const
Definition Object.cpp:1009
std::string GetDebugInfo() const
Definition Position.cpp:213
std::string const & GetName() const
Definition Object.h:514

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
1245{
1246 float d = GetExactDist(&pos) - GetObjectSize();
1247 return d > 0.0f ? d : 0.0f;
1248}

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

◆ GetDistance() [2/3]

float WorldObject::GetDistance ( float  x,
float  y,
float  z 
) const
1251{
1252 float d = GetExactDist(x, y, z) - GetObjectSize();
1253 return d > 0.0f ? d : 0.0f;
1254}

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

◆ GetDistance() [3/3]

float WorldObject::GetDistance ( WorldObject const *  obj) const
1239{
1240 float d = GetExactDist(obj) - GetObjectSize() - obj->GetObjectSize();
1241 return d > 0.0f ? d : 0.0f;
1242}

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(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::DamageTaken(), 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::boss_volkhanAI::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
1263{
1264 float d = GetExactDist2d(x, y) - GetObjectSize();
1265 return d > 0.0f ? d : 0.0f;
1266}
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
1257{
1258 float d = GetExactDist2d(obj) - GetObjectSize() - obj->GetObjectSize();
1259 return d > 0.0f ? d : 0.0f;
1260}

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(), 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_hol_monument::npc_hol_monumentAI::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
1375{
1376 float dx1 = GetPositionX() - obj1->GetPositionX();
1377 float dy1 = GetPositionY() - obj1->GetPositionY();
1378 float distsq1 = dx1 * dx1 + dy1 * dy1;
1379 if (is3D)
1380 {
1381 float dz1 = GetPositionZ() - obj1->GetPositionZ();
1382 distsq1 += dz1 * dz1;
1383 }
1384
1385 float dx2 = GetPositionX() - obj2->GetPositionX();
1386 float dy2 = GetPositionY() - obj2->GetPositionY();
1387 float distsq2 = dx2 * dx2 + dy2 * dy2;
1388 if (is3D)
1389 {
1390 float dz2 = GetPositionZ() - obj2->GetPositionZ();
1391 distsq2 += dz2 * dz2;
1392 }
1393
1394 return distsq1 < distsq2;
1395}

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

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

◆ GetDistanceZ()

float WorldObject::GetDistanceZ ( WorldObject const *  obj) const
1192{
1193 float dz = std::fabs(GetPositionZ() - obj->GetPositionZ());
1194 float sizefactor = GetObjectSize() + obj->GetObjectSize();
1195 float dist = dz - sizefactor;
1196 return (dist > 0 ? dist : 0);
1197}

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 
)
2846{
2847 Position pos = GetPosition();
2848 auto distance = GetExactDistSq(destX,destY,destZ);
2849
2850 auto dx = destX - pos.GetPositionX();
2851 auto dy = destY - pos.GetPositionY();
2852
2853 auto ang = std::atan2(dy, dx);
2854 ang = (ang >= 0) ? ang : 2 * M_PI + ang;
2855
2856 MovePositionToFirstCollision(pos, distance, ang);
2857 return pos;
2858}
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
Definition Object.cpp:2867
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 
)
2861{
2862 Position pos = GetPosition();
2863 MovePositionToFirstCollision(pos, dist, angle);
2864 return pos;
2865}

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

◆ GetFirstCollisionPosition() [3/3]

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

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

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

◆ GetFloorZ()

float WorldObject::GetFloorZ ( ) const
3134{
3136 const_cast<WorldObject*>(this)->UpdatePositionData();
3137
3138 if (!IsInWorld())
3139 return _floorZ;
3140
3141 return std::max<float>(_floorZ, GetMap()->GetGameObjectFloor(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ() + std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT)));
3142}
constexpr float Z_OFFSET_FIND_HEIGHT
Definition SharedDefines.h:27
virtual float GetCollisionHeight() const
Definition Object.h:675

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(), Unit::SetHover(), and Creature::UpdateMovementFlags().

◆ GetGameObjectListWithEntryInGrid() [1/2]

void WorldObject::GetGameObjectListWithEntryInGrid ( std::list< GameObject * > &  gameobjectList,
std::vector< uint32 > const &  entries,
float  maxSearchRange 
) const
2496{
2497 Acore::AllGameObjectsMatchingOneEntryInRange check(this, entries, maxSearchRange);
2498 Acore::GameObjectListSearcher searcher(this, gameobjectList, check);
2499 Cell::VisitGridObjects(this, searcher, maxSearchRange);
2500}
Definition GridNotifiers.h:1451
Definition GridNotifiers.h:340

References Cell::VisitGridObjects().

◆ GetGameObjectListWithEntryInGrid() [2/2]

◆ GetGridActivationRange()

float WorldObject::GetGridActivationRange ( ) const
1617{
1618 if (ToPlayer())
1619 {
1620 if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
1621 {
1623 }
1625 }
1626 else if (ToCreature())
1627 {
1628 return ToCreature()->m_SightDistance;
1629 }
1630 else if (((IsGameObject() && ToGameObject()->IsTransport()) || IsDynamicObject()) && isActiveObject())
1631 {
1632 return GetMap()->GetVisibilityRange();
1633 }
1634
1635 return 0.0f;
1636}
#define VISIBILITY_DIST_WINTERGRASP
Definition ObjectDefines.h:42
#define DEFAULT_VISIBILITY_INSTANCE
Definition ObjectDefines.h:41
float m_SightDistance
Definition Creature.h:377
float GetVisibilityRange() const
Definition Map.h:190
bool IsDynamicObject() const
Definition Object.h:221
bool IsInWintergrasp() const
Definition Object.h:640
bool isActiveObject() const
Definition Object.h:633

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
1367{
1368 Position pos = GetHitSpherePointFor(dest, collisionHeight, combatReach);
1369 x = pos.GetPositionX();
1370 y = pos.GetPositionY();
1371 z = pos.GetPositionZ();
1372}
Position GetHitSpherePointFor(Position const &dest, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
Definition Object.cpp:1229

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
1230{
1231 G3D::Vector3 vThis(GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()));
1232 G3D::Vector3 vObj(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ());
1233 G3D::Vector3 contactPoint = vThis + (vObj - vThis).directionOrZero() * std::min(dest.GetExactDist(this), (combatReach ? *combatReach : GetCombatReach()));
1234
1235 return Position(contactPoint.x, contactPoint.y, contactPoint.z, GetAngle(contactPoint.x, contactPoint.y));
1236}
virtual float GetCombatReach() const
Definition Object.h:492

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
1186{
1187 Map* map = GetMap();
1188 return map->IsDungeon() ? map->ToInstanceMap()->GetInstanceScript() : nullptr;
1189}
InstanceScript * GetInstanceScript()
Definition Map.h:667
bool IsDungeon() const
Definition Map.h:290
InstanceMap * ToInstanceMap()
Definition Map.h:383

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_bjarngrimAI::boss_bjarngrimAI(), 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_ionar::boss_ionarAI::boss_ionarAI(), 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_loken::boss_lokenAI::boss_lokenAI(), 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_volkhan::boss_volkhanAI::boss_volkhanAI(), 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_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_golemAI::npc_molten_golemAI(), 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_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.

554{ return 1; }

Referenced by CanDetectStealthOf().

◆ GetLiquidData()

◆ GetMap()

Map * WorldObject::GetMap ( ) const
inline
587{ 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(), 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::npc_molten_golemAI::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(), spell_freezing_circle::HandleDamage(), debug_commandscript::HandleDebugMapDataCommand(), debug_commandscript::HandleDebugSpawnVehicleCommand(), 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::HandleMovementOpcodes(), 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_loken::boss_lokenAI::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(), 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(), GameObject::Refresh(), Vehicle::RelocatePassengers(), Player::RemovedInsignia(), 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(), Player::SendQuestGiverStatusMultiple(), 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(), 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(), boss_ionar::boss_ionarAI::Split(), 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_arthas::npc_arthasAI::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::npc_stormforged_lieutenantAI::UpdateAI(), boss_ionar::boss_ionarAI::UpdateAI(), boss_loken::boss_lokenAI::UpdateAI(), boss_volkhan::boss_volkhanAI::UpdateAI(), npc_molten_golem::npc_molten_golemAI::UpdateAI(), npc_hol_monument::npc_hol_monumentAI::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::UpdateTriggerVisibility(), Player::UpdateVisibilityOf(), Player::UpdateZone(), GameObject::Use(), Cell::VisitAllObjects(), Cell::VisitGridObjects(), Cell::VisitWorldObjects(), 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
3127{
3128 return GetMap()->GetWaterOrGroundLevel(GetPhaseMask(), x, y, z, ground,
3129 IsUnit() ? !static_cast<Unit const*>(this)->HasWaterWalkAura() : false,
3131}
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:1074
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
1537{
1538 // have a fun with Archimedes' formula
1539 auto height = GetCollisionHeight();
1540 auto width = GetCollisionWidth();
1541 auto weight = getWeight(height, width, 1040); // avg human specific weight
1542 auto heightOutOfWater = getOutOfWater(width, weight, 10202) * 4.0f; // avg human density
1543 auto heightInWater = height - heightOutOfWater;
1544 return (height > heightInWater ? heightInWater : (height - (height / 3)));
1545}
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:676

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

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

◆ GetName()

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

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(), 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
2631{
2632 GetNearPoint2D(nullptr, x, y, distance2d, absAngle, startPos);
2633}

References GetNearPoint2D().

◆ GetNearPoint2D() [2/2]

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

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
628{ return m_notifyflags; }

References m_notifyflags.

◆ GetObjectSize()

float WorldObject::GetObjectSize ( ) const
2781{
2783}
#define DEFAULT_WORLD_OBJECT_SIZE
Definition ObjectDefines.h:45
@ 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(), SmartAI::MoveAway(), MotionMaster::MoveJumpTo(), Acore::WorldObjectSpellConeTargetCheck::operator()(), Acore::WorldObjectSpellTrajTargetCheck::operator()(), SmartScript::ProcessAction(), npc_released_offspring_harkoa::npc_released_offspring_harkoaAI::Reset(), Player::SendMessageToSetInRange(), 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().

◆ GetPhaseMask()

uint32 WorldObject::GetPhaseMask ( ) const
inline
502{ 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(), WorldSession::HandleMovementOpcodes(), 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()(), 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::SetPhaseMask(), PathGenerator::ShortenPathUntilDist(), Map::SummonCreature(), SummonGameObject(), Player::SummonPet(), SummonTrigger(), Creature::Update(), and UpdatePositionData().

◆ GetRandomNearPosition()

Position WorldObject::GetRandomNearPosition ( float  radius)
2745{
2746 Position pos = GetPosition();
2747 MovePosition(pos, radius * (float) rand_norm(), (float) rand_norm() * static_cast<float>(2 * M_PI));
2748 return pos;
2749}
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
1517{
1518 float x, y, z;
1519 GetRandomPoint(srcPos, distance, x, y, z);
1520 return Position(x, y, z, GetOrientation());
1521}
void GetRandomPoint(const Position &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
Definition Object.cpp:1495

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
1496{
1497 if (!distance)
1498 {
1499 pos.GetPosition(rand_x, rand_y, rand_z);
1500 return;
1501 }
1502
1503 // angle to face `obj` to `this`
1504 float angle = (float)rand_norm() * static_cast<float>(2 * M_PI);
1505 float new_dist = (float)rand_norm() * static_cast<float>(distance);
1506
1507 rand_x = pos.m_positionX + new_dist * cos(angle);
1508 rand_y = pos.m_positionY + new_dist * std::sin(angle);
1509 rand_z = pos.m_positionZ;
1510
1513 UpdateGroundPositionZ(rand_x, rand_y, rand_z); // update to LOS height if available
1514}
void UpdateGroundPositionZ(float x, float y, float &z) const
Definition Object.cpp:1523

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.

1666{
1667 if (ToUnit())
1668 {
1669 if (ToPlayer())
1670 {
1671 if (target)
1672 {
1673 if (target->IsVisibilityOverridden() && target->IsCreature())
1674 {
1675 return *target->m_visibilityDistanceOverride;
1676 }
1677 else if (target->IsGameObject())
1678 {
1679 if (IsInWintergrasp() && target->IsInWintergrasp())
1680 {
1682 }
1683 else if (target->IsVisibilityOverridden())
1684 {
1685 return *target->m_visibilityDistanceOverride;
1686 }
1687 else if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
1688 {
1690 }
1691 else
1692 {
1694 }
1695 }
1696
1697 return IsInWintergrasp() && target->IsInWintergrasp() ? VISIBILITY_DIST_WINTERGRASP : GetMap()->GetVisibilityRange();
1698 }
1700 }
1701 else if (ToCreature())
1702 {
1703 return ToCreature()->m_SightDistance;
1704 }
1705 else
1706 {
1707 return SIGHT_RANGE_UNIT;
1708 }
1709 }
1710
1711 if (ToDynObject() && isActiveObject())
1712 {
1713 return GetMap()->GetVisibilityRange();
1714 }
1715
1716 return 0.0f;
1717}
#define SIGHT_RANGE_UNIT
Definition ObjectDefines.h:32
#define VISIBILITY_INC_FOR_GOBJECTS
Definition ObjectDefines.h:28
DynamicObject * ToDynObject()
Definition Object.h:222

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

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

◆ GetStationaryO()

virtual float WorldObject::GetStationaryO ( ) const
inlinevirtual

Reimplemented in GameObject.

663{ return GetOrientation(); }

References Position::GetOrientation().

◆ GetStationaryX()

virtual float WorldObject::GetStationaryX ( ) const
inlinevirtual

Reimplemented in GameObject.

660{ return GetPositionX(); }

References Position::GetPositionX().

◆ GetStationaryY()

virtual float WorldObject::GetStationaryY ( ) const
inlinevirtual

Reimplemented in GameObject.

661{ return GetPositionY(); }

References Position::GetPositionY().

◆ GetStationaryZ()

virtual float WorldObject::GetStationaryZ ( ) const
inlinevirtual

Reimplemented in GameObject.

662{ return GetPositionZ(); }

References Position::GetPositionZ().

◆ GetTransGUID()

ObjectGuid WorldObject::GetTransGUID ( ) const
virtual

Reimplemented in Unit.

3111{
3112 if (GetTransport())
3113 return GetTransport()->GetGUID();
3114
3115 return ObjectGuid::Empty;
3116}
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
648{ 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::HandleMovementOpcodes(), 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(), Acore::VisibleNotifier::SendToSelf(), 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

◆ GetVisibilityRange()

◆ GetVoidClosePoint()

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

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

◆ GetZoneAndAreaId()

◆ GetZoneId()

uint32 WorldObject::GetZoneId ( ) const
3145{
3147 const_cast<WorldObject*>(this)->UpdatePositionData();
3148
3149 return _zoneId;
3150}

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(), 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(), 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(), Player::RepopAtGraveyard(), boss_azuregos::boss_azuregosAI::Reset(), Player::RewardQuest(), npc_minigob_manabonk::SelectTargetInDalaran(), CreatureTextMgr::SendChatPacket(), CreatureTextMgr::SendNonChatPacket(), Map::SendZoneDynamicInfo(), 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
3201{
3202 if (_allowedLooters.empty())
3203 {
3204 return true;
3205 }
3206
3207 return _allowedLooters.find(guid) != _allowedLooters.end();
3208}

References _allowedLooters.

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

◆ InSamePhase() [1/2]

bool WorldObject::InSamePhase ( uint32  phasemask) const
inline
504{ 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.

724{ return false; }

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

◆ IsAlwaysVisibleFor()

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

Reimplemented in GameObject, and Unit.

721{ return false; }

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

◆ IsFarVisible()

bool WorldObject::IsFarVisible ( ) const
inline
635{ return m_isFarVisible; }
bool m_isFarVisible
Definition Object.h:698

References m_isFarVisible.

◆ isInBack()

bool WorldObject::isInBack ( WorldObject const *  target,
float  arc = M_PI 
) const
1491{
1492 return !HasInArc(2 * M_PI - arc, target);
1493}

References Position::HasInArc().

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

◆ IsInBetween()

bool WorldObject::IsInBetween ( WorldObject const *  obj1,
WorldObject const *  obj2,
float  size = 0 
) const
1464{
1465 if (!obj1 || !obj2)
1466 return false;
1467
1468 if (!size)
1469 size = GetObjectSize() / 2;
1470
1471 float pdist = obj1->GetExactDist2dSq(obj2) + size / 2.0f;
1472 if (GetExactDist2dSq(obj1) >= pdist || GetExactDist2dSq(obj2) >= pdist)
1473 return false;
1474
1475 if (G3D::fuzzyEq(obj1->GetPositionX(), obj2->GetPositionX()))
1476 return GetPositionX() >= obj1->GetPositionX() - size && GetPositionX() <= obj1->GetPositionX() + size;
1477
1478 float A = (obj2->GetPositionY() - obj1->GetPositionY()) / (obj2->GetPositionX() - obj1->GetPositionX());
1479 float B = -1;
1480 float C = obj1->GetPositionY() - A * obj1->GetPositionX();
1481 float dist = std::fabs(A * GetPositionX() + B * GetPositionY() + C) / std::sqrt(A * A + B * B);
1482 return dist <= size;
1483}
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
1398{
1399 float dx = GetPositionX() - obj->GetPositionX();
1400 float dy = GetPositionY() - obj->GetPositionY();
1401 float distsq = dx * dx + dy * dy;
1402 if (is3D)
1403 {
1404 float dz = GetPositionZ() - obj->GetPositionZ();
1405 distsq += dz * dz;
1406 }
1407
1408 float sizefactor = GetObjectSize() + obj->GetObjectSize();
1409
1410 // check only for real range
1411 if (minRange > 0.0f)
1412 {
1413 float mindist = minRange + sizefactor;
1414 if (distsq < mindist * mindist)
1415 return false;
1416 }
1417
1418 float maxdist = maxRange + sizefactor;
1419 return distsq < maxdist * maxdist;
1420}

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
1423{
1424 float dx = GetPositionX() - x;
1425 float dy = GetPositionY() - y;
1426 float distsq = dx * dx + dy * dy;
1427
1428 float sizefactor = GetObjectSize();
1429
1430 // check only for real range
1431 if (minRange > 0.0f)
1432 {
1433 float mindist = minRange + sizefactor;
1434 if (distsq < mindist * mindist)
1435 return false;
1436 }
1437
1438 float maxdist = maxRange + sizefactor;
1439 return distsq < maxdist * maxdist;
1440}

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

◆ IsInRange3d()

bool WorldObject::IsInRange3d ( float  x,
float  y,
float  z,
float  minRange,
float  maxRange 
) const
1443{
1444 float dx = GetPositionX() - x;
1445 float dy = GetPositionY() - y;
1446 float dz = GetPositionZ() - z;
1447 float distsq = dx * dx + dy * dy + dz * dz;
1448
1449 float sizefactor = GetObjectSize();
1450
1451 // check only for real range
1452 if (minRange > 0.0f)
1453 {
1454 float mindist = minRange + sizefactor;
1455 if (distsq < mindist * mindist)
1456 return false;
1457 }
1458
1459 float maxdist = maxRange + sizefactor;
1460 return distsq < maxdist * maxdist;
1461}

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

◆ IsInvisibleDueToDespawn()

virtual bool WorldObject::IsInvisibleDueToDespawn ( ) const
inlineprotectedvirtual

Reimplemented in Creature, and GameObject.

722{ return false; }

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

◆ IsInWintergrasp()

bool WorldObject::IsInWintergrasp ( ) const
inline
641 {
642 return GetMapId() == MAP_NORTHREND && GetPositionX() > 3733.33331f && GetPositionX() < 5866.66663f && GetPositionY() > 1599.99999f && GetPositionY() < 4799.99997f;
643 }
@ 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.

720{ return !IsInWorld(); }

References Object::IsInWorld().

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

◆ IsOutdoors()

bool WorldObject::IsOutdoors ( ) const

◆ IsSelfOrInSameMap()

bool WorldObject::IsSelfOrInSameMap ( WorldObject const *  obj) const
1269{
1270 if (this == obj)
1271 {
1272 return true;
1273 }
1274
1275 return IsInMap(obj);
1276}
bool IsInMap(WorldObject const *obj) const
Definition Object.cpp:1278

References IsInMap().

Referenced by Aura::UpdateTargetMap().

◆ IsUpdateNeeded()

bool WorldObject::IsUpdateNeeded ( )
virtual

Reimplemented in Creature, and GameObject.

3221{
3222 if (isActiveObject())
3223 return true;
3224
3225 return false;
3226}

References isActiveObject().

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

◆ IsVisibilityOverridden()

bool WorldObject::IsVisibilityOverridden ( ) const
inline

◆ IsWithinDist()

bool WorldObject::IsWithinDist ( WorldObject const *  obj,
float  dist2compare,
bool  is3D = true,
bool  useBoundingRadius = true 
) const
1310{
1311 return obj && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius);
1312}
virtual bool _IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D, bool useBoundingRadius=true) const
Definition Object.cpp:1199

References _IsWithinDist().

Referenced by Unit::CalcAbsorbResist(), Creature::CanCreatureAttack(), CanSeeOrDetect(), npc_cork_gizelton::npc_cork_gizeltonAI::CheckPlayer(), npc_maiev_illidan::DoAction(), boss_attumen::IsSummonedBy(), 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_rizzle_sprysprocket::npc_rizzle_sprysprocketAI::UpdateAI(), npc_ichor_globule::npc_ichor_globuleAI::UpdateAI(), and Group::UpdatePlayerOutOfRange().

◆ IsWithinDist2d() [1/2]

bool WorldObject::IsWithinDist2d ( const Position pos,
float  dist 
) const
1304{
1305 return IsInDist2d(pos, dist + GetObjectSize());
1306}
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
1294{
1295 return IsInDist(pos, dist + GetObjectSize());
1296}
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
1315{
1316 return obj && IsInMap(obj) && InSamePhase(obj) && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius);
1317}

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_depth_charge::npc_depth_chargeAI::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(), 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
1341{
1342 if (!IsInMap(obj))
1343 return false;
1344
1345 float ox, oy, oz;
1346 if (obj->IsPlayer())
1347 {
1348 obj->GetPosition(ox, oy, oz);
1349 oz += obj->GetCollisionHeight();
1350 }
1351 else
1352 obj->GetHitSpherePointFor({ GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()) }, ox, oy, oz);
1353
1354 float x, y, z;
1355 if (IsPlayer())
1356 {
1357 GetPosition(x, y, z);
1358 z += GetCollisionHeight();
1359 }
1360 else
1361 GetHitSpherePointFor({ obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ() + obj->GetCollisionHeight() }, x, y, z, collisionHeight, combatReach);
1362
1363 return GetMap()->isInLineOfSight(x, y, z, ox, oy, oz, GetPhaseMask(), checks, ignoreFlags);
1364}

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

Referenced by 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().

◆ IsWorldObject()

bool WorldObject::IsWorldObject ( ) const
inline

◆ MovePosition()

void WorldObject::MovePosition ( Position pos,
float  dist,
float  angle 
)
2786{
2787 angle += GetOrientation();
2788 float destx, desty, destz, ground, floor;
2789 destx = pos.m_positionX + dist * cos(angle);
2790 desty = pos.m_positionY + dist * std::sin(angle);
2791
2792 // Prevent invalid coordinates here, position is unchanged
2793 if (!Acore::IsValidMapCoord(destx, desty))
2794 {
2795 LOG_FATAL("entities.object", "WorldObject::MovePosition invalid coordinates X: {} and Y: {} were passed!", destx, desty);
2796 return;
2797 }
2798
2799 ground = GetMapHeight(destx, desty, MAX_HEIGHT);
2800 floor = GetMapHeight(destx, desty, pos.m_positionZ);
2801 destz = std::fabs(ground - pos.m_positionZ) <= std::fabs(floor - pos.m_positionZ) ? ground : floor;
2802
2803 float step = dist / 10.0f;
2804
2805 for (uint8 j = 0; j < 10; ++j)
2806 {
2807 // do not allow too big z changes
2808 if (std::fabs(pos.m_positionZ - destz) > 6.0f)
2809 {
2810 destx -= step * cos(angle);
2811 desty -= step * std::sin(angle);
2812 ground = GetMapHeight(destx, desty, MAX_HEIGHT);
2813 floor = GetMapHeight(destx, desty, pos.m_positionZ);
2814 destz = std::fabs(ground - pos.m_positionZ) <= std::fabs(floor - pos.m_positionZ) ? ground : floor;
2815 }
2816 // we have correct destz now
2817 else
2818 {
2819 pos.Relocate(destx, desty, destz);
2820 break;
2821 }
2822 }
2823
2828}
std::uint8_t uint8
Definition Define.h:109
float GetMapHeight(float x, float y, float z, bool vmap=true, float distanceToSearch=50.0f) const
Definition Object.cpp:3118
bool IsValidMapCoord(float c)
Definition GridDefines.h:206
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 
)
2868{
2869 angle += GetOrientation();
2870 float destx, desty, destz;
2871 destx = pos.m_positionX + dist * cos(angle);
2872 desty = pos.m_positionY + dist * std::sin(angle);
2873 destz = pos.m_positionZ;
2874
2875 if (!GetMap()->CheckCollisionAndGetValidCoords(this, pos.m_positionX, pos.m_positionY, pos.m_positionZ, destx, desty, destz, false))
2876 return;
2877
2879 pos.Relocate(destx, desty, destz);
2880}

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
629{ return m_executed_notifies & f;}

References m_executed_notifies.

◆ PlayDirectMusic()

void WorldObject::PlayDirectMusic ( uint32  music_id,
Player target = nullptr 
)
2924{
2925 if (target)
2926 {
2927 target->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write());
2928 }
2929 else
2930 {
2931 SendMessageToSet(WorldPackets::Misc::PlayMusic(music_id).Write(), true);
2932 }
2933}
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5735
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
Definition Object.cpp:2073
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 
)
2936{
2937 std::list<Player*> targets;
2938 Acore::AnyPlayerInObjectRangeCheck check(this, radius, false);
2940 Cell::VisitWorldObjects(this, searcher, radius);
2941
2942 for (Player* player : targets)
2943 {
2944 if (player)
2945 {
2946 player->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write());
2947 }
2948 }
2949}
Definition GridNotifiers.h:515

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

◆ PlayRadiusSound()

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

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

Referenced by npc_blade_of_azzinoth::IsSummonedBy().

◆ ProcessPositionDataChanged()

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

Reimplemented in Unit.

1156{
1157 _zoneId = _areaId = data.areaId;
1158
1159 if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(_areaId))
1160 if (area->zone)
1161 _zoneId = area->zone;
1162
1163 _outdoors = data.outdoors;
1164 _floorZ = data.floorZ;
1165 _liquidData = data.liquidInfo;
1166}
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTableEntryfmt)
Definition DBCStructure.h:519

References _areaId, _floorZ, _liquidData, _outdoors, _zoneId, PositionFullTerrainStatus::areaId, PositionFullTerrainStatus::floorZ, PositionFullTerrainStatus::liquidInfo, PositionFullTerrainStatus::outdoors, and sAreaTableStore.

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

◆ RemoveAllowedLooter()

void WorldObject::RemoveAllowedLooter ( ObjectGuid  guid)
3216{
3217 _allowedLooters.erase(guid);
3218}

References _allowedLooters.

◆ RemoveFromNotify()

void WorldObject::RemoveFromNotify ( uint16  f)
inline

◆ RemoveFromObjectUpdate()

void WorldObject::RemoveFromObjectUpdate ( )
overridevirtual

Implements Object.

3106{
3107 GetMap()->RemoveUpdateObject(this);
3108}
void RemoveUpdateObject(Object *obj)
Definition Map.h:488

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

◆ RemoveFromWorld()

void WorldObject::RemoveFromWorld ( )
overridevirtual

Reimplemented from Object.

1176{
1177 if (!IsInWorld())
1178 return;
1179
1181
1183}
virtual void RemoveFromWorld()
Definition Object.cpp:166
void DestroyForNearbyPlayers()
Definition Object.cpp:2951

References DestroyForNearbyPlayers(), Object::IsInWorld(), and Object::RemoveFromWorld().

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

◆ ResetAllNotifies()

void WorldObject::ResetAllNotifies ( )
inline

◆ ResetAllowedLooters()

void WorldObject::ResetAllowedLooters ( )
3196{
3197 _allowedLooters.clear();
3198}

References _allowedLooters.

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

◆ ResetMap()

void WorldObject::ResetMap ( )
virtual

Reimplemented in Player.

2125{
2127 ASSERT(!IsInWorld());
2128
2129 if (IsWorldObject())
2130 {
2132 }
2133
2134 sScriptMgr->OnWorldObjectResetMap(this);
2135
2136 m_currMap = nullptr;
2137 //maybe not for corpse
2138 //m_mapId = 0;
2139 //m_InstanceId = 0;
2140}
void RemoveWorldObject(WorldObject *obj)
Definition Map.h:319

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

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

◆ SaveRespawnTime()

virtual void WorldObject::SaveRespawnTime ( )
inlinevirtual

Reimplemented in Creature, and GameObject.

564{}

◆ SelectNearestPlayer()

Player * WorldObject::SelectNearestPlayer ( float  distance = 0) const
2469{
2470 Player* target = nullptr;
2471
2472 Acore::NearestPlayerInObjectRangeCheck checker(this, distance);
2474 Cell::VisitWorldObjects(this, searcher, distance);
2475
2476 return target;
2477}
Definition GridNotifiers.h:1395
Definition GridNotifiers.h:547

References Cell::VisitWorldObjects().

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.

2074{
2075 if (IsInWorld())
2077}
virtual void SendMessageToSetInRange(WorldPacket const *data, float dist, bool self) const
Definition Object.cpp:2079

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

Referenced by Unit::_ExitVehicle(), AuraApplication::ClientUpdate(), Unit::DealMeleeDamage(), Spell::Delayed(), Unit::Dismount(), Spell::EffectDispel(), Spell::EffectInstaKill(), Spell::EffectStealBeneficialBuff(), npc_xt002_boombot::npc_xt002_boombotAI::Explode(), AuraEffect::HandleAuraSetVehicle(), Unit::HandleEmoteCommand(), WorldSession::HandleMovementOpcodes(), WorldSession::HandleUpdateProjectilePosition(), npc_gunship::npc_gunshipAI::JustDied(), Movement::MoveSplineInit::Launch(), Unit::Mount(), boss_volkhan::boss_volkhanAI::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(), SendObjectDeSpawnAnim(), Unit::SendPeriodicAuraLog(), SendPlayMusic(), Unit::SendPlaySpellImpact(), Unit::SendPlaySpellVisual(), Unit::SendRemoveFromThreatListOpcode(), Unit::SendSpellDamageImmune(), Unit::SendSpellDamageResist(), Spell::SendSpellGo(), Unit::SendSpellMiss(), Unit::SendSpellNonMeleeDamageLog(), Spell::SendSpellStart(), Unit::SendTeleportPacket(), Unit::SendThreatListUpdate(), Creature::SetCanFly(), Creature::SetDisableGravity(), Creature::SetFeatherFall(), Creature::SetHover(), Unit::SetPower(), Unit::SetRooted(), Unit::SetSpeed(), Creature::SetSwim(), Creature::SetWalk(), Creature::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.

2086{
2087 Acore::MessageDistDeliverer notifier(this, data, GetVisibilityRange(), false, skipped_rcvr);
2089}
Definition GridNotifiers.h:100

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

◆ SendMessageToSetInRange()

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

Reimplemented in Player.

2080{
2081 Acore::MessageDistDeliverer notifier(this, data, dist);
2082 Cell::VisitWorldObjects(this, notifier, dist);
2083}

References Cell::VisitWorldObjects().

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

◆ SendObjectDeSpawnAnim()

void WorldObject::SendObjectDeSpawnAnim ( ObjectGuid  guid)
2092{
2094 data << guid;
2095 SendMessageToSet(&data, true);
2096}
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 
)
2051{
2053 data << Music;
2054 if (OnlySelf && IsPlayer())
2055 this->ToPlayer()->GetSession()->SendPacket(&data);
2056 else
2057 SendMessageToSet(&data, true); // ToSelf ignored in this case
2058}
WorldSession * GetSession() const
Definition Player.h:2016
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
Definition WorldSession.cpp:251
@ 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)
1076{
1077 if (m_isActive == on)
1078 return;
1079
1080 if (IsPlayer())
1081 return;
1082
1083 m_isActive = on;
1084
1085 if (on && !IsInWorld())
1086 return;
1087
1088 Map* map = FindMap();
1089 if (!map)
1090 return;
1091
1092 if (on)
1093 {
1094 if (IsCreature())
1095 map->AddToActive(this->ToCreature());
1096 else if (IsDynamicObject())
1097 map->AddToActive((DynamicObject*)this);
1098 else if (IsGameObject())
1099 map->AddToActive((GameObject*)this);
1100 }
1101 else
1102 {
1103 if (IsCreature())
1104 map->RemoveFromActive(this->ToCreature());
1105 else if (IsDynamicObject())
1106 map->RemoveFromActive((DynamicObject*)this);
1107 else if (IsGameObject())
1108 map->RemoveFromActive((GameObject*)this);
1109 }
1110}
Definition DynamicObject.h:35
void RemoveFromActive(T *obj)
Definition Map.cpp:1858
void AddToActive(T *obj)
Definition Map.cpp:1828

References Map::AddToActive(), FindMap(), Object::IsCreature(), Object::IsDynamicObject(), Object::IsGameObject(), Object::IsInWorld(), Object::IsPlayer(), m_isActive, Map::RemoveFromActive(), and Object::ToCreature().

Referenced by BossAI::_JustEngagedWith(), BossAI::_JustReachedHome(), Unit::AddPlayerToVision(), CinematicMgr::BeginCinematic(), boss_twilight_halion::boss_twilight_halionAI::boss_twilight_halionAI(), StaticTransport::Create(), DynamicObject::CreateDynamicObject(), TransportMgr::CreateTransport(), 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(), boss_krik_thir::boss_krik_thirAI::MoveInLineOfSight(), 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(), Creature::setDeathState(), 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)
3191{
3192 _allowedLooters = looters;
3193}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient().

◆ SetLocationInstanceId()

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

References m_InstanceId.

Referenced by Corpse::LoadCorpseFromDB().

◆ SetLocationMapId()

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

References WorldLocation::m_mapId.

Referenced by Corpse::LoadCorpseFromDB().

◆ SetMap()

void WorldObject::SetMap ( Map map)
virtual

Reimplemented in Player.

2099{
2100 ASSERT(map);
2101 ASSERT(!IsInWorld());
2102
2103 if (m_currMap == map) // command add npc: first create, than loadfromdb
2104 {
2105 return;
2106 }
2107
2108 if (m_currMap)
2109 {
2110 LOG_FATAL("entities.object", "WorldObject::SetMap: obj {} new map {} {}, old map {} {}", (uint32)GetTypeId(), map->GetId(), map->GetInstanceId(), m_currMap->GetId(), m_currMap->GetInstanceId());
2111 ABORT();
2112 }
2113
2114 m_currMap = map;
2115 m_mapId = map->GetId();
2116 m_InstanceId = map->GetInstanceId();
2117
2118 sScriptMgr->OnWorldObjectSetMap(this, map);
2119
2120 if (IsWorldObject())
2122}
void AddWorldObject(WorldObject *obj)
Definition Map.h:318
uint32 GetId() const
Definition Map.h:224
uint32 GetInstanceId() const
Definition Map.h:261

References ABORT, Map::AddWorldObject(), ASSERT, Map::GetId(), Map::GetInstanceId(), Object::GetTypeId(), Object::IsInWorld(), IsWorldObject(), 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
630{ m_executed_notifies |= f;}

References m_executed_notifies.

◆ SetPhaseMask()

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

Reimplemented in GameObject, and Unit.

2883{
2884 sScriptMgr->OnBeforeWorldObjectSetPhaseMask(this, m_phaseMask, newPhaseMask, m_useCombinedPhases, update);
2885 m_phaseMask = newPhaseMask;
2886
2887 if (update && IsInWorld())
2889}
virtual void UpdateObjectVisibility(bool forced=true, bool fromUpdate=false)
Definition Object.cpp:2978

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 ( )
1138{
1139 _updatePositionData = true;
1140
1141 // Calls immediately for charmed units
1142 if (IsCreature() && ToUnit()->IsCharmedOwnedByPlayerOrPlayer())
1144}

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

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

◆ SetTransport()

◆ SetVisibilityDistanceOverride()

void WorldObject::SetVisibilityDistanceOverride ( VisibilityDistanceType  type)
1113{
1115 if (IsPlayer())
1116 {
1117 return;
1118 }
1119
1121}
constexpr float VisibilityDistances[AsUnderlyingType(VisibilityDistanceType::Max)]
Definition Object.cpp:61
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
Definition Util.h:619

References ASSERT, AsUnderlyingType(), Object::IsPlayer(), m_visibilityDistanceOverride, Max, and VisibilityDistances.

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

◆ SetZoneScript()

void WorldObject::SetZoneScript ( )
2329{
2330 if (Map* map = FindMap())
2331 {
2332 if (InstanceMap* instanceMap = map->ToInstanceMap())
2333 m_zoneScript = reinterpret_cast<ZoneScript*>(instanceMap->GetInstanceScript());
2334 else if (!map->IsBattlegroundOrArena())
2335 {
2336 uint32 zoneId = GetZoneId();
2337 if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(zoneId))
2338 m_zoneScript = bf;
2339 else
2340 m_zoneScript = sOutdoorPvPMgr->GetZoneScript(zoneId);
2341 }
2342 }
2343}
#define sBattlefieldMgr
Definition BattlefieldMgr.h:77
#define sOutdoorPvPMgr
Definition OutdoorPvPMgr.h:102
Definition Battlefield.h:204
Definition Map.h:655
uint32 GetZoneId() const
Definition Object.cpp:3144
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
2351{
2352 if (Map* map = FindMap())
2353 {
2354 if (TempSummon* summon = map->SummonCreature(entry, pos, properties, duration, (WorldObject*)this, 0, 0, visibleBySummonerOnly))
2355 {
2356 summon->SetTempSummonType(spwtype);
2357 return summon;
2358 }
2359 }
2360
2361 return nullptr;
2362}
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:2350

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_southfury_moonstone::OnGossipHello(), go_strange_pool::OnGossipHello(), go_ethereum_prison::OnGossipHello(), go_ethereum_stasis::OnGossipHello(), go_sacred_fire_of_life::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_the_lich_king::boss_the_lich_kingAI::Reset(), boss_thaddius::boss_thaddiusAI::Reset(), boss_bjarngrim::boss_bjarngrimAI::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::boss_ionarAI::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(), boss_slad_ran::boss_slad_ranAI::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 
)
2286{
2287 if (!x && !y && !z)
2288 {
2289 GetClosePoint(x, y, z, GetObjectSize());
2290 ang = GetOrientation();
2291 }
2292 Position pos;
2293 pos.Relocate(x, y, z, ang);
2294 return SummonCreature(id, pos, spwtype, despwtime, 0, properties, visibleBySummonerOnly);
2295}
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:2708

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.
2428{
2429 ASSERT((IsGameObject() || IsCreature()) && "Only GOs and creatures can summon npc groups!");
2430
2431 std::vector<TempSummonData> const* data = sObjectMgr->GetSummonGroup(GetEntry(), IsGameObject() ? SUMMONER_TYPE_GAMEOBJECT : SUMMONER_TYPE_CREATURE, group);
2432 if (!data)
2433 return;
2434
2435 for (std::vector<TempSummonData>::const_iterator itr = data->begin(); itr != data->end(); ++itr)
2436 if (TempSummon* summon = SummonCreature(itr->entry, itr->pos, itr->type, itr->time))
2437 if (list)
2438 list->push_back(summon);
2439}
#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 
)
2365{
2366 if (!IsInWorld())
2367 return nullptr;
2368
2369 GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(entry);
2370 if (!goinfo)
2371 {
2372 LOG_ERROR("sql.sql", "Gameobject template {} not found in database!", entry);
2373 return nullptr;
2374 }
2375
2376 Map* map = GetMap();
2377 GameObject* go = sObjectMgr->IsGameObjectStaticTransport(entry) ? new StaticTransport() : new GameObject();
2378 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, GetPhaseMask(), x, y, z, ang, G3D::Quat(rotation0, rotation1, rotation2, rotation3), 100, GO_STATE_READY))
2379 {
2380 delete go;
2381 return nullptr;
2382 }
2383
2384 go->SetRespawnTime(respawnTime);
2385
2386 // Xinef: if gameobject is temporary, set custom spellid
2387 if (respawnTime)
2388 go->SetSpellId(1);
2389
2390 if (IsPlayer() || (IsCreature() && summonType == GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)) //not sure how to handle this
2391 ToUnit()->AddGameObject(go);
2392 else
2393 go->SetSpawnedByDefault(false);
2394
2395 map->AddToMap(go, checkTransport);
2396 return go;
2397}
@ GO_STATE_READY
Definition GameObjectData.h:690
@ GO_SUMMON_TIMED_OR_CORPSE_DESPAWN
Definition Object.h:75
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:1288
void SetSpawnedByDefault(bool b)
Definition GameObject.h:196
void SetSpellId(uint32 id)
Definition GameObject.h:176
ObjectGuid::LowType GenerateLowGuid()
Definition Map.h:477
bool AddToMap(T *, bool checkTransport=false)
Definition Map.cpp:320
Definition Transport.h:113
void AddGameObject(GameObject *gameObj)
Definition Unit.cpp:6266
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_arthas::npc_arthasAI::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 
)
2400{
2401 TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
2402 Creature* summon = SummonCreature(WORLD_TRIGGER, x, y, z, ang, summonType, duration);
2403 if (!summon)
2404 return nullptr;
2405
2406 //summon->SetName(GetName());
2407 if (setLevel && (IsPlayer() || IsCreature()))
2408 {
2409 summon->SetFaction(((Unit*)this)->GetFaction());
2410 summon->SetLevel(((Unit*)this)->GetLevel());
2411 }
2412
2413 // Xinef: correctly set phase mask in case of gameobjects
2414 summon->SetPhaseMask(GetPhaseMask(), false);
2415
2416 if (GetAI)
2417 summon->AIM_Initialize(GetAI(summon));
2418 return summon;
2419}
TempSummonType
Definition Object.h:46
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:53
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:49
bool AIM_Initialize(CreatureAI *ai=nullptr)
Definition Creature.cpp:1096
void SetFaction(uint32 faction)
Definition Unit.cpp:10117
void SetLevel(uint8 lvl, bool showLevelChange=true)
Definition Unit.cpp:15552
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:19137

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.

1062{
1063 m_Events.Update(diff);
1064
1066 while (_heartbeatTimer <= 0ms)
1067 {
1069 Heartbeat();
1070 }
1071
1072 sScriptMgr->OnWorldObjectUpdate(this, diff);
1073}
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
1548{
1549 if (GetTransport())
1550 {
1551 if (groundZ)
1552 *groundZ = z;
1553
1554 return;
1555 }
1556
1557 if (Unit const* unit = ToUnit())
1558 {
1559 if (!unit->CanFly())
1560 {
1561 Creature const* c = unit->ToCreature();
1562 bool canSwim = c ? c->CanSwim() : true;
1563 float ground_z = z;
1564 float max_z;
1565 if (canSwim)
1566 max_z = GetMapWaterOrGroundLevel(x, y, z, &ground_z);
1567 else
1568 max_z = ground_z = GetMapHeight(x, y, z);
1569
1570 if (max_z > INVALID_HEIGHT)
1571 {
1572 if (canSwim && unit->GetMap()->IsInWater(unit->GetPhaseMask(), x, y, max_z - Z_OFFSET_FIND_HEIGHT, unit->GetCollisionHeight()))
1573 {
1574 // do not allow creatures to walk on
1575 // water level while swimming
1576 max_z = std::max(max_z - GetMinHeightInWater(), ground_z);
1577 }
1578 else
1579 {
1580 // hovering units cannot go below their hover height
1581 float hoverOffset = unit->GetHoverHeight();
1582 max_z += hoverOffset;
1583 ground_z += hoverOffset;
1584 }
1585
1586 if (z > max_z)
1587 z = max_z;
1588 else if (z < ground_z)
1589 z = ground_z;
1590 }
1591
1592 if (groundZ)
1593 *groundZ = ground_z;
1594 }
1595 else
1596 {
1597 float ground_z = GetMapHeight(x, y, z) + unit->GetHoverHeight();
1598 if (z < ground_z)
1599 z = ground_z;
1600
1601 if (groundZ)
1602 *groundZ = ground_z;
1603 }
1604 }
1605 else
1606 {
1607 float ground_z = GetMapHeight(x, y, z);
1608 if (ground_z > INVALID_HEIGHT)
1609 z = ground_z;
1610
1611 if (groundZ)
1612 *groundZ = ground_z;
1613 }
1614}
bool CanSwim() const override
This method check the current flag/status of a creature and its inhabit type.
Definition Creature.cpp:3275
float GetMinHeightInWater() const
Get the minimum height of a object that should be in water to start floating/swim.
Definition Object.cpp:1536

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(), 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

◆ UpdateObjectVisibilityOnCreate()

virtual void WorldObject::UpdateObjectVisibilityOnCreate ( )
inlinevirtual

Reimplemented in TempSummon.

614{ 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

◆ _outdoors

bool WorldObject::_outdoors
protected

◆ _updatePositionData

bool WorldObject::_updatePositionData
protected

◆ _zoneId

uint32 WorldObject::_zoneId
protected

◆ elunaEvents

ElunaEventProcessor* WorldObject::elunaEvents

◆ LastUsedScriptID

◆ m_currMap

Map* WorldObject::m_currMap
private

◆ m_Events

EventProcessor WorldObject::m_Events

Referenced by Unit::_ExitVehicle(), 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_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(), boss_zuljin::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_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_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(), 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_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(), 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_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(), boss_the_beast::boss_thebeastAI::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_isFarVisible

bool WorldObject::m_isFarVisible
protected

Referenced by IsFarVisible().

◆ m_isWorldObject

const bool WorldObject::m_isWorldObject
protected

Referenced by IsWorldObject().

◆ 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::HandleMoveKnockBackAck(), WorldSession::HandleMovementOpcodes(), WorldSession::HandleMoveNotActiveMover(), WorldSession::HandleMoveRootAck(), WorldSession::HandleMoveSetCanFlyAckOpcode(), WorldSession::HandleMoveTimeSkippedOpcode(), WorldSession::HandleMoveUnRootAck(), 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::isSwimming(), Unit::isTurning(), Unit::IsWalking(), Movement::MoveSplineInit::Launch(), Player::LoadFromDB(), MotionMaster::MoveFall(), Movement::MoveSplineInit::MoveSplineInit(), FollowMovementGenerator< T >::PositionOkay(), PredictPosition(), spell_igb_teleport_to_enemy_ship::RelocateTransportOffset(), Unit::RemoveExtraUnitMovementFlag(), Vehicle::RemovePassenger(), MotionTransport::RemovePassenger(), StaticTransport::RemovePassenger(), Unit::RemoveUnitMovementFlag(), Unit::SetExtraUnitMovementFlags(), Unit::SetUnitMovementFlags(), 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_visibilityDistanceOverride

Optional<float> WorldObject::m_visibilityDistanceOverride
protected

◆ m_zoneScript


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