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)
 
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, bool includeMargin=false, Player const *skipped_rcvr=nullptr) 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 PlayDirectMusic (uint32 music_id, Player *target=nullptr)
 
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 GetCreatureListWithEntryInGrid (std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
 
void GetDeadCreatureListInGrid (std::list< Creature * > &lList, float maxSearchRange, bool alive=false) const
 
void DestroyForNearbyPlayers ()
 
virtual void UpdateObjectVisibility (bool forced=true, bool fromUpdate=false)
 
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)
 
void SetWorldObject (bool apply)
 
bool IsPermanentWorldObject () const
 
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 (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
 
std::string GetDebugInfo () const override
 
- Public Member Functions inherited from Object
virtual ~Object ()
 
bool IsInWorld () const
 
virtual void AddToWorld ()
 
virtual void RemoveFromWorld ()
 
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) const
 
void SendUpdateToPlayer (Player *player)
 
void BuildValuesUpdateBlockForPlayer (UpdateData *data, Player *target) const
 
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
 
virtual void BuildUpdate (UpdateDataMapType &, UpdatePlayerSet &)
 
void BuildFieldsUpdate (Player *, UpdateDataMapType &) const
 
void SetFieldNotifyFlag (uint16 flag)
 
void RemoveFieldNotifyFlag (uint16 flag)
 
void ForceValuesUpdateAtIndex (uint32)
 
bool IsPlayer () const
 
PlayerToPlayer ()
 
Player const * ToPlayer () const
 
CreatureToCreature ()
 
Creature const * ToCreature () const
 
UnitToUnit ()
 
Unit const * ToUnit () const
 
GameObjectToGameObject ()
 
GameObject const * ToGameObject () const
 
CorpseToCorpse ()
 
Corpse const * ToCorpse () const
 
DynamicObjectToDynObject ()
 
DynamicObject const * ToDynObject () const
 
virtual std::string GetDebugInfo () 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)
 
 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
 
- 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) const
 
virtual void AddToObjectUpdate ()=0
 
virtual void RemoveFromObjectUpdate ()=0
 
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
 
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}
@ PHASEMASK_NORMAL
Definition: Object.h:56
#define INVALID_HEIGHT
Definition: Map.h:164
#define sScriptMgr
Definition: ScriptMgr.h:2702
@ SERVERSIDE_VISIBILITY_GHOST
Definition: SharedDefines.h:1246
@ GHOST_VISIBILITY_ALIVE
Definition: SharedDefines.h:1253
@ GHOST_VISIBILITY_GHOST
Definition: SharedDefines.h:1254
void SetValue(FLAG_TYPE flag, T_VALUES value)
Definition: Object.h:360
bool _updatePositionData
Definition: Object.h:636
std::string m_name
Definition: Object.h:623
uint16 m_executed_notifies
Definition: Object.h:662
bool _outdoors
Definition: Object.h:634
uint16 m_notifyflags
Definition: Object.h:661
uint32 m_InstanceId
Definition: Object.h:656
uint32 _zoneId
Definition: Object.h:631
uint32 LastUsedScriptID
Definition: Object.h:582
float _floorZ
Definition: Object.h:633
ZoneScript * m_zoneScript
Definition: Object.h:628
bool m_useCombinedPhases
Definition: Object.h:658
uint32 m_phaseMask
Definition: Object.h:657
LiquidData _liquidData
Definition: Object.h:635
uint32 _areaId
Definition: Object.h:632
bool m_isActive
Definition: Object.h:624
const bool m_isWorldObject
Definition: Object.h:627
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibilityDetect
Definition: Object.h:510
Optional< float > m_visibilityDistanceOverride
Definition: Object.h:626
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibility
Definition: Object.h:509
Map * m_currMap
Definition: Object.h:653
Transport * m_transport
Definition: Object.h:639
Definition: Position.h:251

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 (GetTypeId() == TYPEID_CORPSE)
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:155
@ TYPEID_CORPSE
Definition: ObjectGuid.h:41
Definition: Corpse.h:49
TypeID GetTypeId() const
Definition: Object.h:121
ObjectGuid GetGUID() const
Definition: Object.h:107
virtual void ResetMap()
Definition: Object.cpp:2097
bool IsWorldObject() const
Definition: Object.cpp:1074
std::string ToString() const
Definition: Position.cpp:51

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

Member Function Documentation

◆ _Create()

void WorldObject::_Create ( ObjectGuid::LowType  guidlow,
HighGuid  guidhigh,
uint32  phaseMask 
)
1140{
1141 Object::_Create(guidlow, 0, guidhigh);
1142 SetPhaseMask(phaseMask, false);
1143}
void _Create(ObjectGuid::LowType guidlow, uint32 entry, HighGuid guidhigh)
Definition: Object.cpp:134
virtual void SetPhaseMask(uint32 newPhaseMask, bool update)
Definition: Object.cpp:2836

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.

1207{
1208 float sizefactor = useBoundingRadius ? GetObjectSize() + obj->GetObjectSize() : 0.0f;
1209 float maxdist = dist2compare + sizefactor;
1210
1211 if (m_transport && obj->GetTransport() && obj->GetTransport()->GetGUID() == m_transport->GetGUID())
1212 {
1213 float dtx = m_movementInfo.transport.pos.m_positionX - obj->m_movementInfo.transport.pos.m_positionX;
1214 float dty = m_movementInfo.transport.pos.m_positionY - obj->m_movementInfo.transport.pos.m_positionY;
1215 float disttsq = dtx * dtx + dty * dty;
1216 if (is3D)
1217 {
1218 float dtz = m_movementInfo.transport.pos.m_positionZ - obj->m_movementInfo.transport.pos.m_positionZ;
1219 disttsq += dtz * dtz;
1220 }
1221 return disttsq < (maxdist * maxdist);
1222 }
1223
1224 float dx = GetPositionX() - obj->GetPositionX();
1225 float dy = GetPositionY() - obj->GetPositionY();
1226 float distsq = dx * dx + dy * dy;
1227 if (is3D)
1228 {
1229 float dz = GetPositionZ() - obj->GetPositionZ();
1230 distsq += dz * dz;
1231 }
1232
1233 return distsq < maxdist * maxdist;
1234}
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
struct MovementInfo::TransportInfo transport
Position pos
Definition: Object.h:285
Transport * GetTransport() const
Definition: Object.h:585
MovementInfo m_movementInfo
Definition: Object.h:595
float GetObjectSize() const
Definition: Object.cpp:2734
float m_positionZ
Definition: Position.h:58
float m_positionX
Definition: Position.h:56
float GetPositionZ() const
Definition: Position.h:119
float m_positionY
Definition: Position.h:57
float GetPositionX() const
Definition: Position.h:117
float GetPositionY() const
Definition: Position.h:118

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)
3117{
3118 _allowedLooters.insert(guid);
3119}
GuidUnorderedSet _allowedLooters
Definition: Object.h:674

References _allowedLooters.

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

◆ AddObjectToRemoveList()

void WorldObject::AddObjectToRemoveList ( )
2116{
2118
2119 Map* map = FindMap();
2120 if (!map)
2121 {
2122 LOG_ERROR("entities.object", "Object {} at attempt add to move list not have valid map (Id: {}).", GetGUID().ToString(), GetMapId());
2123 return;
2124 }
2125
2126 map->AddObjectToRemoveList(this);
2127}
#define ASSERT
Definition: Errors.h:68
#define LOG_ERROR(filterType__,...)
Definition: Log.h:159
uint32 * m_uint32Values
Definition: Object.h:236
Map * FindMap() const
Definition: Object.h:518
uint32 GetMapId() const
Definition: Position.h:276
Definition: Map.h:312
void AddObjectToRemoveList(WorldObject *obj)
Definition: Map.cpp:2635

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

Referenced by MotionTransport::DelayedTeleportTransport(), OPvPCapturePoint::DelCreature(), GameObject::Delete(), PoolGroup< T >::Despawn1Object(), CinematicMgr::EndCinematic(), ResetEncounterEvent::Execute(), npc_commandscript::HandleNpcDeleteCommand(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ProcessEvent(), DynamicObject::Remove(), Player::RemovePet(), MotionTransport::UnloadStaticPassengers(), TempSummon::UnSummon(), and Totem::UnSummon().

◆ AddToNotify()

void WorldObject::AddToNotify ( uint16  f)
2908{
2909 if (!(m_notifyflags & f))
2910 if (Unit* u = ToUnit())
2911 {
2913 {
2914 uint32 EVENT_VISIBILITY_DELAY = u->FindMap() ? DynamicVisibilityMgr::GetVisibilityNotifyDelay(u->FindMap()->GetEntry()->map_type) : 1000;
2915
2916 uint32 diff = getMSTimeDiff(u->m_last_notify_mstime, GameTime::GetGameTimeMS().count());
2917 if (diff >= EVENT_VISIBILITY_DELAY / 2)
2918 EVENT_VISIBILITY_DELAY /= 2;
2919 else
2920 EVENT_VISIBILITY_DELAY -= diff;
2921 u->m_delayed_unit_relocation_timer = EVENT_VISIBILITY_DELAY;
2922 u->m_last_notify_mstime = GameTime::GetGameTimeMS().count() + EVENT_VISIBILITY_DELAY - 1;
2923 }
2924 else if (f & NOTIFY_AI_RELOCATION)
2925 {
2926 u->m_delayed_unit_ai_notify_timer = u->FindMap() ? DynamicVisibilityMgr::GetAINotifyDelay(u->FindMap()->GetEntry()->map_type) : 500;
2927 }
2928
2929 m_notifyflags |= f;
2930 }
2931}
std::uint32_t uint32
Definition: Define.h:108
uint32 getMSTimeDiff(uint32 oldMSTime, uint32 newMSTime)
Definition: Timer.h:110
@ NOTIFY_AI_RELOCATION
Definition: Object.h:63
@ NOTIFY_VISIBILITY_CHANGED
Definition: Object.h:64
Milliseconds GetGameTimeMS()
Definition: GameTime.cpp:43
Unit * ToUnit()
Definition: Object.h:200
Definition: Unit.h:1290
static uint32 GetAINotifyDelay(uint32 map_type)
Definition: DynamicVisibility.h:52
static uint32 GetVisibilityNotifyDelay(uint32 map_type)
Definition: DynamicVisibility.h:51

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.

3032{
3033 GetMap()->AddUpdateObject(this);
3034}
Map * GetMap() const
Definition: Object.h:517
void AddUpdateObject(Object *obj)
Definition: Map.h:638

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

◆ AddToWorld()

void WorldObject::AddToWorld ( )
overridevirtual

Reimplemented from Object.

Reimplemented in Pet, Player, and Unit.

1177{
1180}
virtual void AddToWorld()
Definition: Object.cpp:152
uint32 GetPhaseMask() const
Definition: Object.h:434
void GetZoneAndAreaId(uint32 phaseMask, uint32 &zoneid, uint32 &areaid, float x, float y, float z) const
Definition: Map.cpp:2196

References _areaId, _zoneId, 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.

Reimplemented in MotionTransport, and StaticTransport.

3007{
3008 WorldObjectChangeAccumulator notifier(*this, data_map, player_set);
3009 //we must build packets for all visible players
3011
3012 ClearUpdateMask(false);
3013}
Definition: Object.cpp:2934
void ClearUpdateMask(bool remove)
Definition: Object.cpp:533
float GetVisibilityRange() const
Definition: Object.cpp:1645
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:193

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

◆ CanAlwaysSee()

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

Reimplemented in Creature, and Player.

667{ return false; }

Referenced by CanSeeOrDetect().

◆ CanDetect()

bool WorldObject::CanDetect ( WorldObject const *  obj,
bool  ignoreStealth,
bool  checkClient,
bool  checkAlert = false 
) const
private
1879{
1880 WorldObject const* seer = this;
1881
1882 // Pets don't have detection, they use the detection of their masters
1883 if (Unit const* thisUnit = ToUnit())
1884 if (Unit* controller = thisUnit->GetCharmerOrOwner())
1885 seer = controller;
1886
1887 if (obj->IsAlwaysDetectableFor(seer) || GetEntry() == WORLD_TRIGGER) // xinef: World Trigger can detect all objects, used for wild gameobjects without owner!
1888 return true;
1889
1890 if (!ignoreStealth)
1891 {
1892 if (!seer->CanDetectInvisibilityOf(obj)) // xinef: added ignoreStealth, allow AoE spells to hit invisible targets!
1893 return false;
1894
1895 if (!seer->CanDetectStealthOf(obj, checkAlert))
1896 {
1897 // xinef: ignore units players have at client, this cant be cheated!
1898 if (checkClient)
1899 {
1900 if (GetTypeId() != TYPEID_PLAYER || !ToPlayer()->HaveAtClient(obj))
1901 return false;
1902 }
1903 else
1904 return false;
1905 }
1906 }
1907
1908 return true;
1909}
@ TYPEID_PLAYER
Definition: ObjectGuid.h:38
#define WORLD_TRIGGER
Definition: Unit.h:36
Player * ToPlayer()
Definition: Object.h:195
uint32 GetEntry() const
Definition: Object.h:109
Definition: Object.h:393
bool CanDetectStealthOf(WorldObject const *obj, bool checkAlert=false) const
Definition: Object.cpp:1953
bool CanDetectInvisibilityOf(WorldObject const *obj) const
Definition: Object.cpp:1911
Unit * GetCharmerOrOwner() const
Definition: Unit.h:1847

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

Referenced by CanSeeOrDetect().

◆ CanDetectInvisibilityOf()

bool WorldObject::CanDetectInvisibilityOf ( WorldObject const *  obj) const
private
1912{
1913 uint32 mask = obj->m_invisibility.GetFlags() & m_invisibilityDetect.GetFlags();
1914 // xinef: include invisible flags of caster in the mask, 2 invisible objects should be able to detect eachother
1915 mask |= obj->m_invisibility.GetFlags() & m_invisibility.GetFlags();
1916
1917 // Check for not detected types
1918 if (mask != obj->m_invisibility.GetFlags())
1919 return false;
1920
1921 // It isn't possible in invisibility to detect something that can't detect the invisible object
1922 // (it's at least true for spell: 66)
1923 // It seems like that only Units are affected by this check (couldn't see arena doors with preparation invisibility)
1924 if (obj->ToUnit())
1925 {
1926 uint32 objMask = m_invisibility.GetFlags() & obj->m_invisibilityDetect.GetFlags();
1927 // xinef: include invisible flags of caster in the mask, 2 invisible objects should be able to detect eachother
1928 objMask |= m_invisibility.GetFlags() & obj->m_invisibility.GetFlags();
1929 if (objMask != m_invisibility.GetFlags())
1930 return false;
1931 }
1932
1933 for (uint32 i = 0; i < TOTAL_INVISIBILITY_TYPES; ++i)
1934 {
1935 if (!(mask & (1 << i)))
1936 continue;
1937
1938 // xinef: visible for the same invisibility type:
1939 if (m_invisibility.GetValue(InvisibilityType(i)) && obj->m_invisibility.GetValue(InvisibilityType(i)))
1940 continue;
1941
1942 int32 objInvisibilityValue = obj->m_invisibility.GetValue(InvisibilityType(i));
1943 int32 ownInvisibilityDetectValue = m_invisibilityDetect.GetValue(InvisibilityType(i));
1944
1945 // Too low value to detect
1946 if (ownInvisibilityDetectValue < objInvisibilityValue)
1947 return false;
1948 }
1949
1950 return true;
1951}
std::int32_t int32
Definition: Define.h:104
InvisibilityType
Definition: SharedDefines.h:1226
@ TOTAL_INVISIBILITY_TYPES
Definition: SharedDefines.h:1240
T_FLAGS GetFlags() const
Definition: Object.h:354
T_VALUES GetValue(FLAG_TYPE flag) const
Definition: Object.h:359
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibility
Definition: Object.h:506
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibilityDetect
Definition: Object.h:507

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, TOTAL_INVISIBILITY_TYPES, and Object::ToUnit().

Referenced by CanDetect().

◆ CanDetectStealthOf()

bool WorldObject::CanDetectStealthOf ( WorldObject const *  obj,
bool  checkAlert = false 
) const
private
1954{
1955 // Combat reach is the minimal distance (both in front and behind),
1956 // and it is also used in the range calculation.
1957 // One stealth point increases the visibility range by 0.3 yard.
1958
1959 if (!obj->m_stealth.GetFlags())
1960 return true;
1961
1962 // dead players shouldnt be able to detect stealth on arenas
1964 if (!ToPlayer()->IsAlive())
1965 return false;
1966
1967 float distance = GetExactDist(obj);
1968 float combatReach = 0.0f;
1969
1970 if (isType(TYPEMASK_UNIT))
1971 combatReach = ((Unit*)this)->GetCombatReach();
1972
1973 if (distance < combatReach)
1974 return true;
1975
1976 if (!HasInArc(M_PI, obj))
1977 return false;
1978
1979 for (uint32 i = 0; i < TOTAL_STEALTH_TYPES; ++i)
1980 {
1981 if (!(obj->m_stealth.GetFlags() & (1 << i)))
1982 continue;
1983
1984 if (isType(TYPEMASK_UNIT))
1985 if (((Unit*)this)->HasAuraTypeWithMiscvalue(SPELL_AURA_DETECT_STEALTH, i))
1986 return true;
1987
1988 // Starting points
1989 int32 detectionValue = 30;
1990
1991 // Level difference: 5 point / level, starting from level 1.
1992 // There may be spells for this and the starting points too, but
1993 // not in the DBCs of the client.
1994 detectionValue += int32(getLevelForTarget(obj) - 1) * 5;
1995
1996 // Apply modifiers
1997 detectionValue += m_stealthDetect.GetValue(StealthType(i));
1998 if (obj->isType(TYPEMASK_GAMEOBJECT))
1999 {
2000 detectionValue += 30; // pussywizard: increase detection range for gameobjects (ie. traps)
2001 if (Unit* owner = ((GameObject*)obj)->GetOwner())
2002 detectionValue -= int32(owner->getLevelForTarget(this) - 1) * 5;
2003 }
2004
2005 detectionValue -= obj->m_stealth.GetValue(StealthType(i));
2006
2007 // Calculate max distance
2008 float visibilityRange = float(detectionValue) * 0.3f + combatReach;
2009
2010 Unit const* unit = ToUnit();
2011
2012 // If this unit is an NPC then player detect range doesn't apply
2013 if (unit && unit->GetTypeId() == TYPEID_PLAYER && visibilityRange > MAX_PLAYER_STEALTH_DETECT_RANGE)
2014 visibilityRange = MAX_PLAYER_STEALTH_DETECT_RANGE;
2015
2016 if (checkAlert)
2017 visibilityRange += (visibilityRange * 0.08f) + 1.5f;
2018
2019 Unit const* targetUnit = obj->ToUnit();
2020
2021 // If checking for alert, and creature's visibility range is greater than aggro distance, No alert
2022 if (checkAlert && unit && unit->ToCreature() && visibilityRange >= unit->ToCreature()->GetAttackDistance(targetUnit) + unit->ToCreature()->m_CombatDistance)
2023 return false;
2024
2025 if (distance > visibilityRange)
2026 return false;
2027 }
2028
2029 return true;
2030}
@ TYPEMASK_UNIT
Definition: ObjectGuid.h:51
@ TYPEMASK_GAMEOBJECT
Definition: ObjectGuid.h:53
@ TYPEMASK_PLAYER
Definition: ObjectGuid.h:52
#define MAX_PLAYER_STEALTH_DETECT_RANGE
Definition: Unit.h:1239
@ SPELL_AURA_DETECT_STEALTH
Definition: SpellAuraDefines.h:291
StealthType
Definition: SharedDefines.h:1218
@ TOTAL_STEALTH_TYPES
Definition: SharedDefines.h:1222
float GetAttackDistance(Unit const *player) const
Definition: Creature.cpp:3475
float m_CombatDistance
Definition: Creature.h:363
Definition: GameObject.h:122
bool isType(uint16 mask) const
Definition: Object.h:122
Creature * ToCreature()
Definition: Object.h:197
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealthDetect
Definition: Object.h:504
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealth
Definition: Object.h:503
virtual uint8 getLevelForTarget(WorldObject const *) const
Definition: Object.h:486
float GetExactDist(float x, float y, float z) const
Definition: Position.h:178
bool HasInArc(float arcangle, const Position *pos, float targetRadius=0.0f) const
Definition: Position.cpp:140

References Creature::GetAttackDistance(), Position::GetExactDist(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetFlags(), getLevelForTarget(), Object::GetTypeId(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetValue(), Position::HasInArc(), Object::isType(), 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(), TYPEID_PLAYER, TYPEMASK_GAMEOBJECT, TYPEMASK_PLAYER, and TYPEMASK_UNIT.

Referenced by CanDetect().

◆ CanNeverSee()

bool WorldObject::CanNeverSee ( WorldObject const *  obj) const
private
1872{
1873 if (GetTypeId() == TYPEID_UNIT && obj->GetTypeId() == TYPEID_UNIT)
1874 return GetMap() != obj->GetMap() || (!InSamePhase(obj) && ToUnit()->GetVehicleBase() != obj && this != obj->ToUnit()->GetVehicleBase());
1875 return GetMap() != obj->GetMap() || !InSamePhase(obj);
1876}
@ TYPEID_UNIT
Definition: ObjectGuid.h:37
bool InSamePhase(WorldObject const *obj) const
Definition: Object.h:435
Unit * GetVehicleBase() const
Definition: Unit.cpp:18910

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

Referenced by CanSeeOrDetect().

◆ CanSeeOrDetect()

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

References CanAlwaysSee(), CanDetect(), CanNeverSee(), CONDITION_SOURCE_TYPE_CREATURE_VISIBILITY, FindMap(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetFlags(), Object::GetGUID(), GetSightRange(), Object::GetTypeId(), FlaggedValuesArray32< T_VALUES, T_FLAGS, FLAG_TYPE, ARRAY_SIZE >::GetValue(), Unit::GetVehicleBase(), GHOST_VISIBILITY_GHOST, IsAlwaysVisibleFor(), IsInvisibleDueToDespawn(), IsNeverVisible(), 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(), Object::ToUnit(), and TYPEID_PLAYER.

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::npc_pet_dk_ebon_gargoyleAI::MySelectNextTarget(), Acore::NearestAttackableUnitInObjectRangeCheck::operator()(), Acore::NearestVisibleDetectableContestedGuardUnitCheck::operator()(), Acore::VisibleNotifier::SendToSelf(), TotemAI::UpdateAI(), and Player::UpdateVisibilityOf().

◆ CleanupsBeforeDelete()

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

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

1134{
1135 if (IsInWorld())
1137}
bool IsInWorld() const
Definition: Object.h:101
void RemoveFromWorld() override
Definition: Object.cpp:1182

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

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

◆ ClearZoneScript()

void WorldObject::ClearZoneScript ( )
2314{
2315 m_zoneScript = nullptr;
2316}

References m_zoneScript.

◆ DestroyForNearbyPlayers()

void WorldObject::DestroyForNearbyPlayers ( )
Todo:
: this is for puppet
2874{
2875 if (!IsInWorld())
2876 return;
2877
2878 std::list<Player*> targets;
2882 for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter)
2883 {
2884 Player* player = (*iter);
2885
2886 if (player == this)
2887 continue;
2888
2889 if (!player->HaveAtClient(this))
2890 continue;
2891
2892 if (isType(TYPEMASK_UNIT) && ((Unit*)this)->GetCharmerGUID() == player->GetGUID())
2893 continue;
2894
2895 DestroyForPlayer(player);
2896 player->m_clientGUIDs.erase(GetGUID());
2897 }
2898}
#define VISIBILITY_COMPENSATION
Definition: ObjectDefines.h:26
virtual void DestroyForPlayer(Player *target, bool onDeath=false) const
Definition: Object.cpp:274
bool HaveAtClient(WorldObject const *u) const
Definition: Player.cpp:11306
GuidUnorderedSet m_clientGUIDs
Definition: Player.h:2331
Definition: GridNotifiers.h:538
Definition: GridNotifiers.h:1350

References Object::DestroyForPlayer(), Object::GetGUID(), GetVisibilityRange(), Player::HaveAtClient(), Object::IsInWorld(), Object::isType(), Player::m_clientGUIDs, TYPEMASK_UNIT, 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
518{ 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(), Unit::BuildValuesUpdate(), Spell::cancel(), CanSeeOrDetect(), Spell::CheckCast(), Group::CountTheRoll(), Spell::DoAllEffectOnTarget(), ScriptedAI::DoPlayMusic(), Spell::EffectPersistentAA(), AuraMunchingQueue::Execute(), EoEDrakeEnterVehicleEvent::Execute(), Spell::finish(), lfg::LFGMgr::FinishDungeon(), spell_dk_scourge_strike::HandleAfterHit(), WorldSession::HandleCastSpellOpcode(), WorldSession::HandleEnterPlayerVehicle(), WorldSession::HandlePlayerLoginOpcode(), spell_dk_blood_caked_blade::HandleProc(), ArenaSpectator::HandleResetCommand(), spell_temple_of_atal_hakkar_awaken_the_soulflayer::spell_temple_of_atal_hakkar_awaken_the_soulflayer_SpellScript::HandleSendEvent(), WorldSession::HandleSetDungeonDifficultyOpcode(), WorldSession::HandleSetRaidDifficultyOpcode(), misc_commandscript::HandleSkirmishCommand(), spectator_commandscript::HandleSpectatorLeaveCommand(), ArenaSpectator::HandleSpectatorSpectateCommand(), ArenaSpectator::HandleSpectatorWatchCommand(), Unit::HandleSpellClick(), IsInMap(), GameObject::IsInstanceGameobject(), boss_headless_horseman::JustDied(), boss_ahune::boss_ahuneAI::JustDied(), Player::LoadFromDB(), Pet::LoadPetFromDB(), LogCommandUsage(), WorldSession::LogoutPlayer(), Map::MoveAllCreaturesInMoveList(), Map::MoveAllDynamicObjectsInMoveList(), Map::MoveAllGameObjectsInMoveList(), Player::NeedSendSpectatorData(), achievement_once_bitten_twice_shy::OnCheck(), spell_blood_queen_pact_of_the_darkfallen_dmg::spell_blood_queen_pact_of_the_darkfallen_dmg_AuraScript::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(), Map::Update(), Player::Update(), and Unit::Update().

◆ FindNearestCreature()

Creature * WorldObject::FindNearestCreature ( uint32  entry,
float  range,
bool  alive = true 
) const
2410{
2411 Creature* creature = nullptr;
2412 Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck checker(*this, entry, alive, range);
2414 Cell::VisitAllObjects(this, searcher, range);
2415 return creature;
2416}
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:207
Definition: GridNotifiers.h:455

References Cell::VisitAllObjects().

Referenced by npc_thrall_bfu::npc_thrall_bfuAI::ActivateValimathrasPortal(), npc_mograine::npc_mograineAI::AshbringerEvent(), npc_commander_dawnforge::npc_commander_dawnforgeAI::CanStartEvent(), spell_renew_skirmisher::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(), UtherBatteredHiltEvent::Execute(), DelayedCastMincharEvent::Execute(), npc_dark_iron_guzzler::FindNextKeg(), npc_dark_iron_attack_generator::FinishAttackDueToWin(), npc_dark_iron_attack_generator::FinishEventDueToLoss(), GetClosestCreatureWithEntry(), npc_dark_iron_attack_generator::GetRandomBartender(), npc_razzashi_cobra_venoxis::npc_razzashi_cobra_venoxis_AI::GetVenoxis(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), HandleBothDead(), npc_echo_of_medivh::HandleCellInitialData(), npc_echo_of_medivh::HandleCheat(), spell_q12589_shoot_rjr::spell_q12589_shoot_rjr_SpellScript::HandleDummy(), spell_valanar_kinetic_bomb::spell_valanar_kinetic_bomb_AuraScript::HandleDummyTick(), spell_q11719_bloodspore_ruination_45997::spell_q11719_bloodspore_ruination_45997_SpellScript::HandleEffect(), 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::spell_q12620_the_lifewarden_wrath_SpellScript::HandleSendEvent(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::HideNozdormu(), instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::InstanceCleanup(), npc_vaelastrasz_the_red::npc_vaelastrasz_the_redAI::IsSummonedBy(), npc_oculus_drake::npc_oculus_drakeAI::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(), npc_blackhand_incarcerator::npc_blackhand_incarceratorAI::JustEngagedWith(), boss_malchezaar::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_thaddius_summon::boss_thaddius_summonAI::JustEngagedWith(), boss_festergut::boss_festergutAI::JustEngagedWith(), npc_sindragosa_trash::npc_sindragosa_trashAI::JustEngagedWith(), boss_razuvious_minion::boss_razuvious_minionAI::JustEngagedWith(), npc_kalecgos_kj::npc_kalecgos_kjAI::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_sentinel_leader::MovementInform(), npc_sentinel_infiltrator::MovementInform(), boss_ymiron::boss_ymironAI::MovementInform(), npc_attracted_reef_bull::npc_attracted_reef_bullAI::MovementInform(), spell_q12987_read_pronouncement::OnApply(), go_ulduar_tower::OnDestroyed(), spell_bh_cleanse_quel_delar::spell_bh_cleanse_quel_delar_SpellScript::OnEffect(), go_gong_of_bethekk::OnGossipHello(), go_resonite_cask::OnGossipHello(), go_duskwither_spire_power_source::OnGossipHello(), go_blackened_urn::OnGossipHello(), go_acherus_soul_prison::OnGossipHello(), go_ravager_cage::OnGossipHello(), go_bristlelimb_cage::OnGossipHello(), go_panther_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_ahune_ice_stone::OnGossipHello(), go_simon_cluster::OnGossipHello(), go_corkis_prison::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_ahune_ice_stone::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_icc_spire_frostwyrm::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(), spell_quest_test_flight_charging::PerformKick(), spell_midsummer_ribbon_pole::PrepareAuraScript(), spell_pursuing_spikes::spell_pursuing_spikesAuraScript::PrepareAuraScript(), 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_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_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_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::npc_enslaved_netherwing_drakeAI::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(), 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(), boss_terestian_illhoof::boss_terestianAI::UpdateAI(), npc_unworthy_initiate::npc_unworthy_initiateAI::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_feedin_da_goolz::npc_feedin_da_goolzAI::UpdateAI(), npc_drakuru_shackles::npc_drakuru_shacklesAI::UpdateAI(), boss_ahune::boss_ahuneAI::UpdateAI(), boss_warlord_kalithresh::UpdateAI(), npc_naga_distiller::UpdateAI(), npc_fel_guard_hound::npc_fel_guard_houndAI::UpdateAI(), npc_captain_saeed::npc_captain_saeedAI::UpdateAI(), npc_enslaved_netherwing_drake::npc_enslaved_netherwing_drakeAI::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_akama_illidan::npc_akama_illidanAI::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(), and npc_bessy::npc_bessyAI::WaypointReached().

◆ FindNearestGameObject()

GameObject * WorldObject::FindNearestGameObject ( uint32  entry,
float  range,
bool  onlySpawned = false 
) const
2419{
2420 GameObject* go = nullptr;
2421 Acore::NearestGameObjectEntryInObjectRangeCheck checker(*this, entry, range, onlySpawned);
2423 Cell::VisitGridObjects(this, searcher, range);
2424 return go;
2425}
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:179
Definition: GridNotifiers.h:332

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(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::DoAction(), Spell::EffectScriptEffect(), boss_ouro::EnterEvadeMode(), npc_dirt_mound::EnterEvadeMode(), GetClosestGameObjectWithEntry(), spell_halion_twilight_division::spell_halion_twilight_division_SpellScript::HandleDummy(), boss_vezax::boss_vezaxAI::JustDied(), boss_kologarn::boss_kologarnAI::JustDied(), boss_fathomlord_karathress::boss_fathomlord_karathressAI::JustDied(), boss_hodir::boss_hodirAI::JustEngagedWith(), npc_andorhal_tower::npc_andorhal_towerAI::MoveInLineOfSight(), npc_ulduar_snow_mound::npc_ulduar_snow_moundAI::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(), 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_feedin_da_goolz::npc_feedin_da_goolzAI::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(), and npc_isla_starmane::npc_isla_starmaneAI::WaypointReached().

◆ FindNearestGameObjectOfType()

GameObject * WorldObject::FindNearestGameObjectOfType ( GameobjectTypes  type,
float  range 
) const
2428{
2429 GameObject* go = nullptr;
2430 Acore::NearestGameObjectTypeInObjectRangeCheck checker(*this, type, range);
2432 Cell::VisitGridObjects(this, searcher, range);
2433 return go;
2434}
Definition: GridNotifiers.h:748

References Cell::VisitGridObjects().

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

◆ GetAllowedLooters()

GuidUnorderedSet const & WorldObject::GetAllowedLooters ( ) const
3142{
3143 return _allowedLooters;
3144}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient().

◆ GetAreaId()

uint32 WorldObject::GetAreaId ( ) const
3084{
3086 const_cast<WorldObject*>(this)->UpdatePositionData();
3087
3088 return _areaId;
3089}
void UpdatePositionData()
Definition: Object.cpp:1154

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(), 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_guardian_pavilion::npc_guardian_pavilionAI::MoveInLineOfSight(), achievement_tilted::OnCheck(), BattlefieldWG::OnCreatureCreate(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnPlayerAreaUpdate(), 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(), 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
2721{
2722 // angle to face `obj` to `this` using distance includes size of `obj`
2723 GetNearPoint(obj, x, y, z, obj->GetObjectSize(), distance2d, GetAngle(obj));
2724
2725 if (std::fabs(this->GetPositionZ() - z) > 3.0f || !IsWithinLOS(x, y, z))
2726 {
2727 x = this->GetPositionX();
2728 y = this->GetPositionY();
2729 z = this->GetPositionZ();
2730 obj->UpdateGroundPositionZ(x, y, z);
2731 }
2732}
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:2589
bool IsWithinLOS(float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS) const
Definition: Object.cpp:1326
float GetAngle(const Position *pos) const
Definition: Position.cpp:77

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
2663{
2664 // angle calculated from current orientation
2665 GetNearPoint(forWho, x, y, z, size, distance2d, GetOrientation() + angle);
2666
2667 if (std::fabs(this->GetPositionZ() - z) > 3.0f || !IsWithinLOS(x, y, z))
2668 {
2669 x = this->GetPositionX();
2670 y = this->GetPositionY();
2671 z = this->GetPositionZ();
2672 if (forWho)
2673 if (Unit const* u = forWho->ToUnit())
2674 u->UpdateAllowedPositionZ(x, y, z);
2675 }
2676 float maxDist = GetObjectSize() + size + distance2d + 1.0f;
2677 if (GetExactDistSq(x, y, z) >= maxDist * maxDist)
2678 {
2679 if (force)
2680 {
2681 x = this->GetPositionX();
2682 y = this->GetPositionY();
2683 z = this->GetPositionZ();
2684 return true;
2685 }
2686 return false;
2687 }
2688 return true;
2689}
float GetOrientation() const
Definition: Position.h:120
float GetExactDistSq(float x, float y, float z) const
Definition: Position.h:170

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

Referenced by Spell::EffectResurrectPet(), Spell::EffectSummonObject(), Spell::EffectSummonObjectWild(), Spell::EffectSummonPet(), Spell::EffectTransmitted(), cast_commandscript::HandleCastDistCommand(), debug_commandscript::HandleDebugSpawnVehicleCommand(), misc_commandscript::HandleGroupSummonCommand(), spell_item_draenic_pale_ale::HandleSummon(), misc_commandscript::HandleSummonCommand(), Pet::LoadPetFromDB(), MotionMaster::MoveJumpTo(), SmartScript::ProcessAction(), npc_released_offspring_harkoa::npc_released_offspring_harkoaAI::Reset(), boss_selin_fireheart::boss_selin_fireheartAI::SelectNearestCrystal(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::SpellHit(), SummonCreature(), 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.

610{ return GetObjectSize() / 2; }

References GetObjectSize().

◆ GetCollisionWidth()

virtual float WorldObject::GetCollisionWidth ( ) const
inlinevirtual

Reimplemented in Unit.

609{ return GetObjectSize(); }

References GetObjectSize().

Referenced by GetMinHeightInWater().

◆ GetCombatReach()

virtual float WorldObject::GetCombatReach ( ) const
inlinevirtual

Reimplemented in Unit.

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

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

◆ GetContactPoint()

void WorldObject::GetContactPoint ( WorldObject const *  obj,
float &  x,
float &  y,
float &  z,
float  distance2d = CONTACT_DISTANCE 
) const
2706{
2707 // angle to face `obj` to `this` using distance includes size of `obj`
2708 GetNearPoint(obj, x, y, z, obj->GetObjectSize(), distance2d, GetAngle(obj));
2709
2710 // Exclude gameobjects from LoS calculations
2711 if (std::fabs(this->GetPositionZ() - z) > 3.0f || (GetTypeId() != TYPEID_GAMEOBJECT && !IsWithinLOS(x, y, z)))
2712 {
2713 x = this->GetPositionX();
2714 y = this->GetPositionY();
2715 z = this->GetPositionZ();
2716 obj->UpdateAllowedPositionZ(x, y, z);
2717 }
2718}
@ TYPEID_GAMEOBJECT
Definition: ObjectGuid.h:39

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

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

◆ GetCreatureListWithEntryInGrid()

void WorldObject::GetCreatureListWithEntryInGrid ( std::list< Creature * > &  lList,
uint32  uiEntry,
float  fMaxSearchRange 
) const
2464{
2465 Acore::AllCreaturesOfEntryInRange check(this, entry, maxSearchRange);
2466 Acore::CreatureListSearcher<Acore::AllCreaturesOfEntryInRange> searcher(this, creatureList, check);
2467 Cell::VisitGridObjects(this, searcher, maxSearchRange);
2468}
Definition: GridNotifiers.h:470
Definition: GridNotifiers.h:1457

References Cell::VisitGridObjects().

Referenced by npc_anubisath_sentinel::aqsentinelAI::AddSentinelsNear(), boss_nefarian::DamageTaken(), boss_apothecary_hummel::boss_apothecary_hummelAI::DoAction(), npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI::DoGuardsDisappearAndDie(), spell_the_lich_king_restore_soul::spell_the_lich_king_restore_soul_SpellScript::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::spell_q12243_fire_upon_the_waters_AuraScript::HandleApplyEffect(), BattlegroundIC::HandleCapturedNodes(), BattlegroundIC::HandleContestedNodes(), spell_warhead_detonate::spell_warhead_detonate_SpellScript::HandleDummy(), spell_icc_sprit_alarm::spell_icc_sprit_alarm_SpellScript::HandleEvent(), spell_q12243_fire_upon_the_waters::spell_q12243_fire_upon_the_waters_AuraScript::HandleRemoveEffect(), spell_q12620_the_lifewarden_wrath::spell_q12620_the_lifewarden_wrath_SpellScript::HandleSendEvent(), boss_twilight_corrupter::InitializeAI(), boss_rajaxx::JustDied(), npc_lava_spawn::JustEngagedWith(), boss_elder_nadox::JustEngagedWith(), instance_scarlet_monastery::instance_scarlet_monastery_InstanceMapScript::OnPlayerAreaUpdate(), instance_scarlet_monastery::instance_scarlet_monastery_InstanceMapScript::OnPlayerEnter(), SmartScript::ProcessEvent(), boss_jaraxxus::boss_jaraxxusAI::Reset(), boss_venoxis::boss_venoxisAI::SetCombatCombras(), boss_ouro::Submerge(), npc_thrall_bfu::npc_thrall_bfuAI::SummonedCreatureDies(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), and npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI().

◆ GetCreaturesWithEntryInRange()

void WorldObject::GetCreaturesWithEntryInRange ( std::list< Creature * > &  creatureList,
float  radius,
uint32  entry 
)
3016{
3018 Cell cell(pair);
3019 cell.SetNoCreate();
3020
3021 Acore::AllCreaturesOfEntryInRange check(this, entry, radius);
3022 Acore::CreatureListSearcher<Acore::AllCreaturesOfEntryInRange> searcher(this, creatureList, check);
3023
3025 cell.Visit(pair, world_visitor, *(this->GetMap()), *this, radius);
3026
3028 cell.Visit(pair, grid_visitor, *(this->GetMap()), *this, radius);
3029}
CellCoord ComputeCellCoord(float x, float y)
Definition: GridDefines.h:191
Definition: TypeContainer.h:103
Definition: TypeContainerVisitor.h:85
Definition: Cell.h:46

References Acore::ComputeCellCoord(), GetMap(), Position::GetPositionX(), Position::GetPositionY(), Cell::SetNoCreate(), and Cell::Visit().

Referenced by boss_kelthuzad_minion::boss_kelthuzad_minionAI::AttackStart(), spell_midsummer_fling_torch::CheckCast(), CorruptTriggers::Execute(), FixOrientation::Execute(), spell_black_template_harpooners_mark::spell_black_template_harpooners_mark_AuraScript::HandleEffectApply(), spell_botanica_call_of_the_falcon::spell_botanica_call_of_the_falcon_AuraScript::HandleEffectApply(), spell_mc_play_dead::spell_mc_play_dead_AuraScript::HandleEffectRemove(), spell_winter_veil_racer_rocket_slam::HandleTriggerSpell(), boss_headless_horseman::JustDied(), boss_ignis::boss_ignisAI::JustDied(), boss_ignis::boss_ignisAI::JustEngagedWith(), boss_razorscale::boss_razorscaleAI::JustEngagedWith(), npc_creature_generator_akama::npc_creature_generator_akamaAI::JustSummoned(), boss_buru::ManipulateEggs(), spell_dreamwalker_summon_suppresser::spell_dreamwalker_summon_suppresser_AuraScript::PeriodicTick(), boss_grobbulus::boss_grobbulusAI::PullChamberAdds(), npc_hallows_end_soh::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(), boss_shade_of_akama::boss_shade_of_akamaAI::UpdateAI(), boss_watchkeeper_gargolmar::boss_watchkeeper_gargolmarAI::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
2471{
2472 Acore::AllDeadCreaturesInRange check(this, maxSearchRange, alive);
2473 Acore::CreatureListSearcher<Acore::AllDeadCreaturesInRange> searcher(this, creaturedeadList, check);
2474 Cell::VisitGridObjects(this, searcher, maxSearchRange);
2475}
Definition: GridNotifiers.h:1524

References Cell::VisitGridObjects().

Referenced by GetDeadCreatureListInGrid().

◆ GetDebugInfo()

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

Reimplemented from Object.

Reimplemented in Pet, Player, MotionTransport, and Unit.

2448{
2449 std::stringstream sstr;
2450 sstr << WorldLocation::GetDebugInfo() << "\n"
2451 << Object::GetDebugInfo() << "\n"
2452 << "Name: " << GetName();
2453 return sstr.str();
2454}
virtual std::string GetDebugInfo() const
Definition: Object.cpp:1009
std::string const & GetName() const
Definition: Object.h:446
std::string GetDebugInfo() const
Definition: Position.cpp:212

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
1252{
1253 float d = GetExactDist(&pos) - GetObjectSize();
1254 return d > 0.0f ? d : 0.0f;
1255}

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

◆ GetDistance() [2/3]

float WorldObject::GetDistance ( float  x,
float  y,
float  z 
) const
1258{
1259 float d = GetExactDist(x, y, z) - GetObjectSize();
1260 return d > 0.0f ? d : 0.0f;
1261}

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

◆ GetDistance() [3/3]

float WorldObject::GetDistance ( WorldObject const *  obj) const
1246{
1247 float d = GetExactDist(obj) - GetObjectSize() - obj->GetObjectSize();
1248 return d > 0.0f ? d : 0.0f;
1249}

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

Referenced by Spell::AddGOTarget(), Spell::AddUnitTarget(), boss_hadronox::boss_hadronoxAI::AnyPlayerValid(), boss_urom::boss_uromAI::AttackStart(), boss_attumen::boss_attumenAI::CanMeleeHit(), boss_midnight::boss_midnightAI::CanMeleeHit(), Spell::CheckCast(), boss_teron_gorefiend::boss_teron_gorefiendAI::CheckEvadeIfOutOfCombatArea(), 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(), 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_garr_separation_nexiety::spell_garr_separation_nexiety_AuraScript::HandlePeriodic(), spell_majordomo_separation_nexiety::spell_majordomo_separation_nexiety_AuraScript::HandlePeriodic(), spell_entropius_black_hole_effect::spell_entropius_black_hole_effect_SpellScript::HandlePull(), spell_boss_magus_telestra_gravity_well::spell_boss_magus_telestra_gravity_well_SpellScript::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_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(), spell_yogg_saron_brain_link::spell_yogg_saron_brain_link_AuraScript::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()(), Acore::WorldObjectSpellNearbyTargetCheck::operator()(), npc_vortex_ride::npc_vortex_rideAI::PassengerBoarded(), spell_quest_test_flight_charging::PerformKick(), 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::npc_enslaved_proto_drakeAI::SetData(), spell_midsummer_fling_torch::ThrowNextTorch(), Pet::Update(), boss_broodlord::boss_broodlordAI::UpdateAI(), npc_core_rager::npc_core_ragerAI::UpdateAI(), npc_kernobee::npc_kernobeeAI::UpdateAI(), boss_priestess_delrissa::boss_priestess_delrissaAI::UpdateAI(), boss_kalecgos::boss_kalecgosAI::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(), boss_shirrak_the_dead_watcher::boss_shirrak_the_dead_watcherAI::UpdateAI(), boss_supremus::boss_supremusAI::UpdateAI(), npc_millhouse_manastorm::npc_millhouse_manastormAI::UpdateAI(), npc_pet_gen_target_following_bomb::UpdateAI(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::UpdateAI(), Player::UpdateCharmedAI(), and brann_bronzebeard::brann_bronzebeardAI::UpdateEscortAI().

◆ GetDistance2d() [1/2]

float WorldObject::GetDistance2d ( float  x,
float  y 
) const
1270{
1271 float d = GetExactDist2d(x, y) - GetObjectSize();
1272 return d > 0.0f ? d : 0.0f;
1273}
float GetExactDist2d(const float x, const float y) const
Definition: Position.h:166

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

◆ GetDistance2d() [2/2]

float WorldObject::GetDistance2d ( WorldObject const *  obj) const
1264{
1265 float d = GetExactDist2d(obj) - GetObjectSize() - obj->GetObjectSize();
1266 return d > 0.0f ? d : 0.0f;
1267}

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

Referenced by spell_krystallus_shatter_effect::spell_krystallus_shatter_effect_SpellScript::CalculateDamage(), spell_gruul_shatter_effect::CalculateDamage(), spell_loken_pulsing_shockwave::spell_loken_pulsing_shockwave_SpellScript::CalculateDamage(), npc_cork_gizelton::npc_cork_gizeltonAI::CheckCaravan(), spell_baltharus_enervating_brand_trigger::spell_baltharus_enervating_brand_trigger_SpellScript::CheckDistance(), boss_high_astromancer_solarian::boss_high_astromancer_solarianAI::CheckEvadeIfOutOfCombatArea(), boss_void_reaver::boss_void_reaverAI::CheckEvadeIfOutOfCombatArea(), boss_onyxia::CheckInRoom(), npc_argent_captainAI::DoAction(), boss_faction_championsAI::EnemiesInRange(), BattlegroundAB::EventPlayerClickedOnFlag(), BfGraveyard::GetDistance(), npc_spiritual_insight::npc_spiritual_insightAI::GetSpeachId(), GetVelocity(), spell_shadowblink::HandleDummy(), misc_commandscript::HandleGetDistanceCommand(), boss_aeonus::JustReachedHome(), npc_scarlet_guard::npc_scarlet_guardAI::MoveInLineOfSight(), npc_mograine::npc_mograineAI::MoveInLineOfSight(), npc_fairbanks::npc_fairbanksAI::MoveInLineOfSight(), 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(), spell_algalon_cosmic_smash_damage::spell_algalon_cosmic_smash_damage_SpellScript::RecalculateDamage(), boss_priestess_lackey_commonAI::RecalculateThreat(), boss_faction_championsAI::RecalculateThreat(), RevivePlayer(), Player::TeleportTo(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::UpdateAI(), npc_water_elemental::npc_water_elementalAI::UpdateAI(), boss_balinda::boss_balindaAI::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_kiljaeden_controller::npc_kiljaeden_controllerAI::UpdateAI(), npc_singularity::npc_singularityAI::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(), npc_demonic_vapor::npc_demonic_vaporAI::UpdateAI(), BattlefieldWG::UpdatedDestroyedTowerCount(), boss_netherspite::boss_netherspiteAI::UpdatePortals(), and GameObject::Use().

◆ GetDistanceOrder()

bool WorldObject::GetDistanceOrder ( WorldObject const *  obj1,
WorldObject const *  obj2,
bool  is3D = true 
) const
1382{
1383 float dx1 = GetPositionX() - obj1->GetPositionX();
1384 float dy1 = GetPositionY() - obj1->GetPositionY();
1385 float distsq1 = dx1 * dx1 + dy1 * dy1;
1386 if (is3D)
1387 {
1388 float dz1 = GetPositionZ() - obj1->GetPositionZ();
1389 distsq1 += dz1 * dz1;
1390 }
1391
1392 float dx2 = GetPositionX() - obj2->GetPositionX();
1393 float dy2 = GetPositionY() - obj2->GetPositionY();
1394 float distsq2 = dx2 * dx2 + dy2 * dy2;
1395 if (is3D)
1396 {
1397 float dz2 = GetPositionZ() - obj2->GetPositionZ();
1398 distsq2 += dz2 * dz2;
1399 }
1400
1401 return distsq1 < distsq2;
1402}

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

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

◆ GetDistanceZ()

float WorldObject::GetDistanceZ ( WorldObject const *  obj) const
1199{
1200 float dz = std::fabs(GetPositionZ() - obj->GetPositionZ());
1201 float sizefactor = GetObjectSize() + obj->GetObjectSize();
1202 float dist = dz - sizefactor;
1203 return (dist > 0 ? dist : 0);
1204}

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 
)
2800{
2801 Position pos = GetPosition();
2802 auto distance = GetExactDistSq(destX,destY,destZ);
2803
2804 auto dx = destX - pos.GetPositionX();
2805 auto dy = destY - pos.GetPositionY();
2806
2807 auto ang = std::atan2(dy, dx);
2808 ang = (ang >= 0) ? ang : 2 * M_PI + ang;
2809
2810 MovePositionToFirstCollision(pos, distance, ang);
2811 return pos;
2812}
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
Definition: Object.cpp:2821
Definition: Position.h:28
Position GetPosition() const
Definition: Position.h:143

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

◆ GetFirstCollisionPosition() [2/3]

Position WorldObject::GetFirstCollisionPosition ( float  dist,
float  angle 
)
2815{
2816 Position pos = GetPosition();
2817 MovePositionToFirstCollision(pos, dist, angle);
2818 return pos;
2819}

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

◆ GetFirstCollisionPosition() [3/3]

Position WorldObject::GetFirstCollisionPosition ( float  startX,
float  startY,
float  startZ,
float  destX,
float  destY 
)
2785{
2786 auto dx = destX - startX;
2787 auto dy = destY - startY;
2788
2789 auto ang = std::atan2(dy, dx);
2790 ang = (ang >= 0) ? ang : 2 * M_PI + ang;
2791 Position pos = Position(startX, startY, startZ, ang);
2792
2793 auto distance = pos.GetExactDist2d(destX,destY);
2794
2795 MovePositionToFirstCollision(pos, distance, ang);
2796 return pos;
2797}

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

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

◆ GetFloorZ()

float WorldObject::GetFloorZ ( ) const
3065{
3067 const_cast<WorldObject*>(this)->UpdatePositionData();
3068
3069 if (!IsInWorld())
3070 return _floorZ;
3071
3072 return std::max<float>(_floorZ, GetMap()->GetGameObjectFloor(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ() + std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT)));
3073}
constexpr float Z_OFFSET_FIND_HEIGHT
Definition: SharedDefines.h:26
virtual float GetCollisionHeight() const
Definition: Object.h:608

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

◆ GetGridActivationRange()

float WorldObject::GetGridActivationRange ( ) const
1624{
1625 if (ToPlayer())
1626 {
1627 if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
1628 {
1630 }
1632 }
1633 else if (ToCreature())
1634 {
1635 return ToCreature()->m_SightDistance;
1636 }
1637 else if (((GetTypeId() == TYPEID_GAMEOBJECT && ToGameObject()->IsTransport()) || GetTypeId() == TYPEID_DYNAMICOBJECT) && isActiveObject())
1638 {
1639 return GetMap()->GetVisibilityRange();
1640 }
1641
1642 return 0.0f;
1643}
#define VISIBILITY_DIST_WINTERGRASP
Definition: ObjectDefines.h:42
#define DEFAULT_VISIBILITY_INSTANCE
Definition: ObjectDefines.h:41
@ TYPEID_DYNAMICOBJECT
Definition: ObjectGuid.h:40
float m_SightDistance
Definition: Creature.h:363
bool IsInWintergrasp() const
Definition: Object.h:569
bool isActiveObject() const
Definition: Object.h:560
float GetVisibilityRange() const
Definition: Map.h:350

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

Referenced by boss_janalai::boss_janalaiAI::Boom(), hyjalAI::DoOverrun(), misc_commandscript::HandleRespawnAllCommand(), boss_janalai::boss_janalaiAI::HatchAllEggs(), npc_janalai_hatcher::npc_janalai_hatcherAI::HatchEggs(), hyjalAI::HideNearPos(), boss_nalorakk::boss_nalorakkAI::ResetMobs(), hyjalAI::RespawnNearPos(), boss_nalorakk::boss_nalorakkAI::SendAttacker(), Map::Update(), Map::VisitNearbyCellsOf(), and hyjalAI::WaypointReached().

◆ GetHitSpherePointFor() [1/2]

void WorldObject::GetHitSpherePointFor ( Position const &  dest,
float &  x,
float &  y,
float &  z,
Optional< float >  collisionHeight = { },
Optional< float >  combatReach = { } 
) const
1374{
1375 Position pos = GetHitSpherePointFor(dest, collisionHeight, combatReach);
1376 x = pos.GetPositionX();
1377 y = pos.GetPositionY();
1378 z = pos.GetPositionZ();
1379}
Position GetHitSpherePointFor(Position const &dest, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
Definition: Object.cpp:1236

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
1237{
1238 G3D::Vector3 vThis(GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()));
1239 G3D::Vector3 vObj(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ());
1240 G3D::Vector3 contactPoint = vThis + (vObj - vThis).directionOrZero() * std::min(dest.GetExactDist(this), (combatReach ? *combatReach : GetCombatReach()));
1241
1242 return Position(contactPoint.x, contactPoint.y, contactPoint.z, GetAngle(contactPoint.x, contactPoint.y));
1243}
virtual float GetCombatReach() const
Definition: Object.h:424

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
1193{
1194 Map* map = GetMap();
1195 return map->IsDungeon() ? map->ToInstanceMap()->GetInstanceScript() : nullptr;
1196}
bool IsDungeon() const
Definition: Map.h:447
InstanceMap * ToInstanceMap()
Definition: Map.h:544
InstanceScript * GetInstanceScript()
Definition: Map.h:825

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

Referenced by CreatureAI::_EnterEvadeMode(), 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_ambassador_hellmaw::boss_ambassador_hellmawAI::boss_ambassador_hellmawAI(), boss_anetheron::boss_anetheronAI::boss_anetheronAI(), boss_anubarak_trial::boss_anubarak_trialAI::boss_anubarak_trialAI(), boss_anubrekhan::boss_anubrekhanAI::boss_anubrekhanAI(), boss_archavon::boss_archavonAI::boss_archavonAI(), boss_archimonde::boss_archimondeAI::boss_archimondeAI(), boss_auriaya::boss_auriayaAI::boss_auriayaAI(), boss_azgalor::boss_azgalorAI::boss_azgalorAI(), boss_bigbadwolf::boss_bigbadwolfAI::boss_bigbadwolfAI(), boss_bjarngrim::boss_bjarngrimAI::boss_bjarngrimAI(), boss_black_knight::boss_black_knightAI::boss_black_knightAI(), boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::boss_blackheart_the_inciterAI(), boss_blindeye_the_seer::boss_blindeye_the_seer(), boss_bronjahm::boss_bronjahmAI::boss_bronjahmAI(), boss_crone::boss_croneAI::boss_croneAI(), boss_cyanigosa::boss_cyanigosaAI::boss_cyanigosaAI(), boss_dalronn_the_controller::boss_dalronn_the_controllerAI::boss_dalronn_the_controllerAI(), boss_devourer_of_souls::boss_devourer_of_soulsAI::boss_devourer_of_soulsAI(), boss_doomrel::boss_doomrelAI::boss_doomrelAI(), boss_dorothee::boss_dorotheeAI::boss_dorotheeAI(), 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_faerlina::boss_faerlinaAI::boss_faerlinaAI(), boss_falric::boss_falricAI::boss_falricAI(), boss_felblood_kaelthas::boss_felblood_kaelthasAI::boss_felblood_kaelthasAI(), 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_four_horsemen::boss_four_horsemenAI::boss_four_horsemenAI(), 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_gluth::boss_gluthAI::boss_gluthAI(), boss_gormok::boss_gormokAI::boss_gormokAI(), boss_gothik::boss_gothikAI::boss_gothikAI(), boss_grand_champion::boss_grand_championAI::boss_grand_championAI(), boss_grandmaster_vorpil::boss_grandmaster_vorpilAI::boss_grandmaster_vorpilAI(), boss_grobbulus::boss_grobbulusAI::boss_grobbulusAI(), boss_halazzi::boss_halazziAI::boss_halazziAI(), boss_harbinger_skyriss::boss_harbinger_skyrissAI::boss_harbinger_skyrissAI(), boss_heigan::boss_heiganAI::boss_heiganAI(), boss_hexlord_malacrass::boss_hex_lord_malacrassAI::boss_hex_lord_malacrassAI(), boss_hexlord_addAI::boss_hexlord_addAI(), boss_high_inquisitor_whitemane::boss_high_inquisitor_whitemaneAI::boss_high_inquisitor_whitemaneAI(), 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_plundererAI::boss_ingvar_the_plundererAI(), boss_ionar::boss_ionarAI::boss_ionarAI(), boss_janalai::boss_janalaiAI::boss_janalaiAI(), boss_jaraxxus::boss_jaraxxusAI::boss_jaraxxusAI(), boss_jormungarAI::boss_jormungarAI(), boss_julianne::boss_julianneAI::boss_julianneAI(), boss_kazrogal::boss_kazrogalAI::boss_kazrogalAI(), boss_keleseth::boss_kelesethAI::boss_kelesethAI(), boss_kelidan_the_breaker::boss_kelidan_the_breakerAI::boss_kelidan_the_breakerAI(), boss_kelthuzad::boss_kelthuzadAI::boss_kelthuzadAI(), boss_kiggler_the_crazed::boss_kiggler_the_crazed(), boss_kiljaeden::boss_kiljaedenAI::boss_kiljaedenAI(), 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_loatheb::boss_loathebAI::boss_loathebAI(), boss_loken::boss_lokenAI::boss_lokenAI(), boss_maexxna::boss_maexxnaAI::boss_maexxnaAI(), 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_murmur::boss_murmurAI::boss_murmurAI(), boss_nalorakk::boss_nalorakkAI::boss_nalorakkAI(), boss_netherspite::boss_netherspiteAI::boss_netherspiteAI(), boss_nightbane::boss_nightbaneAI::boss_nightbaneAI(), boss_noth::boss_nothAI::boss_nothAI(), boss_olm_the_summoner::boss_olm_the_summoner(), boss_palehoof::boss_palehoofAI::boss_palehoofAI(), boss_paletress::boss_paletressAI::boss_paletressAI(), boss_patchwerk::boss_patchwerkAI::boss_patchwerkAI(), boss_priestess_delrissa::boss_priestess_delrissaAI::boss_priestess_delrissaAI(), boss_priestess_lackey_commonAI::boss_priestess_lackey_commonAI(), boss_rage_winterchill::boss_rage_winterchillAI::boss_rage_winterchillAI(), boss_razorscale::boss_razorscaleAI::boss_razorscaleAI(), boss_razuvious::boss_razuviousAI::boss_razuviousAI(), boss_roar::boss_roarAI::boss_roarAI(), boss_romulo::boss_romuloAI::boss_romuloAI(), boss_runemaster_molgeim::boss_runemaster_molgeimAI::boss_runemaster_molgeimAI(), boss_sapphiron::boss_sapphironAI::boss_sapphironAI(), boss_sathrovarr::boss_sathrovarrAI::boss_sathrovarrAI(), boss_selin_fireheart::boss_selin_fireheartAI::boss_selin_fireheartAI(), 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_constructorAI::boss_skarvald_the_constructorAI(), boss_steelbreaker::boss_steelbreakerAI::boss_steelbreakerAI(), boss_stormcaller_brundir::boss_stormcaller_brundirAI::boss_stormcaller_brundirAI(), boss_strawman::boss_strawmanAI::boss_strawmanAI(), boss_svala::boss_svalaAI::boss_svalaAI(), boss_terestian_illhoof::boss_terestianAI::boss_terestianAI(), boss_thaddius_summon::boss_thaddius_summonAI::boss_thaddius_summonAI(), boss_thaddius::boss_thaddiusAI::boss_thaddiusAI(), boss_the_maker::boss_the_makerAI::boss_the_makerAI(), boss_thorim::boss_thorimAI::boss_thorimAI(), boss_tinhead::boss_tinheadAI::boss_tinheadAI(), 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_vexallus::boss_vexallusAI::boss_vexallusAI(), 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_zuljin::boss_zuljinAI::boss_zuljinAI(), boss_zuramat::boss_zuramatAI::boss_zuramatAI(), brann_bronzebeard::brann_bronzebeardAI::brann_bronzebeardAI(), spell_serpentshrine_cavern_coilfang_water::spell_serpentshrine_cavern_coilfang_water_AuraScript::CalcPeriodic(), spell_igb_rocket_pack_useable::spell_igb_rocket_pack_useable_AuraScript::CheckAreaTarget(), Spell::CheckCast(), spell_putricide_mutation_init::spell_putricide_mutation_init_SpellScript::CheckRequirementInternal(), boss_kologarn_eyebeam::boss_kologarn_eyebeamAI::DamageDealt(), 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_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::boss_entropiusAI::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(), startFollow::Execute(), spell_igb_teleport_players_on_victory::spell_igb_teleport_players_on_victory_SpellScript::FilterTargets(), npc_jaina_proudmoore::GetAI(), npc_thrall::GetAI(), npc_tyrande_whisperwind::GetAI(), npc_shadowmoon_channeler::npc_shadowmoon_channelerAI::GetKelidan(), go_brazier_of_madness::GossipHello(), go_celestial_planetarium_access::go_celestial_planetarium_accessAI::GossipHello(), spell_thaddius_pos_neg_charge::spell_thaddius_pos_neg_charge_SpellScript::HandleDamage(), spell_halion_twilight_division::spell_halion_twilight_division_SpellScript::HandleDummy(), spell_teron_gorefiend_shadow_of_death::spell_teron_gorefiend_shadow_of_death_AuraScript::HandleEffectRemove(), AuraEffect::HandleFeignDeath(), spell_hadronox_summon_periodic::spell_hadronox_summon_periodic_AuraScript::HandlePeriodic(), spell_serpentshrine_cavern_coilfang_water::spell_serpentshrine_cavern_coilfang_water_AuraScript::HandlePeriodic(), spell_festergut_pungent_blight::spell_festergut_pungent_blight_SpellScript::HandleScript(), spell_putricide_unbound_plague::spell_putricide_unbound_plague_SpellScript::HandleScript(), spell_auto_repair::spell_auto_repair_SpellScript::HandleScript(), spell_temple_of_atal_hakkar_awaken_the_soulflayer::spell_temple_of_atal_hakkar_awaken_the_soulflayer_SpellScript::HandleSendEvent(), spell_uldaman_boss_agro_archaedas::spell_uldaman_boss_agro_archaedas_SpellScript::HandleSendEvent(), spell_putricide_mutated_transformation::spell_putricide_mutated_transformation_SpellScript::HandleSummon(), hyjal_trashAI::hyjal_trashAI(), hyjalAI::hyjalAI(), npc_toxic_slime::InitializeAI(), SmartAI::IsEscortInvokerInRange(), npc_living_inferno::npc_living_infernoAI::IsSummonedBy(), npc_kinetic_bomb::npc_kinetic_bombAI::IsSummonedBy(), npc_putricide_oozeAI::IsSummonedBy(), boss_kalec::boss_kalecAI::JustDied(), boss_entropius::boss_entropiusAI::JustDied(), boss_headless_horseman::JustDied(), boss_infinite_corruptor::boss_infinite_corruptorAI::JustDied(), boss_lieutenant_drake::boss_lieutenant_drakeAI::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_naxxramas_misc::boss_naxxramas_miscAI::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::boss_epoch_hunterAI::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::npc_frost_tombAI::JustDied(), npc_crystalline_frayer::npc_crystalline_frayerAI::JustEngagedWith(), npc_auriaya_sanctum_sentry::npc_auriaya_sanctum_sentryAI::JustEngagedWith(), boss_ignis::boss_ignisAI::JustEngagedWith(), npc_steamrigger_mechanic::JustEngagedWith(), boss_headless_horseman::JustReachedHome(), boss_yoggsaron_cloud::boss_yoggsaron_cloudAI::JustSummoned(), npc_frozen_orb_stalker::npc_frozen_orb_stalkerAI::JustSummoned(), boss_captain_skarloc::boss_captain_skarlocAI::JustSummoned(), npc_gluttonous_abomination::npc_gluttonous_abominationAI::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(), spell_igb_rocket_pack_useable::spell_igb_rocket_pack_useable_AuraScript::Load(), spell_igb_gunship_fall_teleport::spell_igb_gunship_fall_teleport_SpellScript::Load(), spell_igb_teleport_players_on_victory::spell_igb_teleport_players_on_victory_SpellScript::Load(), spell_the_lich_king_quake::spell_the_lich_king_quake_SpellScript::Load(), spell_the_lich_king_harvest_soul::spell_the_lich_king_harvest_soul_AuraScript::Load(), spell_the_lich_king_restore_soul::spell_the_lich_king_restore_soul_SpellScript::Load(), spell_dreamwalker_nightmare_cloud::spell_dreamwalker_nightmare_cloud_AuraScript::Load(), npc_ouro_spawner::MoveInLineOfSight(), npc_announcer_toc5::npc_announcer_toc5AI::MovementInform(), npc_xt002_scrapbot::npc_xt002_scrapbotAI::MovementInform(), npc_abomination::npc_abominationAI::npc_abominationAI(), npc_akama_illidan::npc_akama_illidanAI::npc_akama_illidanAI(), npc_akama_shade::npc_akamaAI::npc_akamaAI(), npc_ancient_wisp::npc_ancient_wispAI::npc_ancient_wispAI(), 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_banshee::npc_bansheeAI::npc_bansheeAI(), 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_akamaAI::npc_creature_generator_akamaAI(), npc_crypt_fiend::npc_crypt_fiendAI::npc_crypt_fiendAI(), npc_dirt_mound::npc_dirt_mound(), npc_dragonflayer_forge_master::npc_dragonflayer_forge_masterAI::npc_dragonflayer_forge_masterAI(), npc_echo_of_medivh::npc_echo_of_medivh(), npc_erekem_guard::npc_erekem_guardAI::npc_erekem_guardAI(), npc_fel_stalker::npc_fel_stalkerAI::npc_fel_stalkerAI(), npc_ferocious_rhino::npc_ferocious_rhinoAI::npc_ferocious_rhinoAI(), npc_forest_frog::npc_forest_frogAI::npc_forest_frogAI(), 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_tombAI::npc_frost_tombAI(), npc_frost_wyrm::npc_frost_wyrmAI::npc_frost_wyrmAI(), npc_gargoyle::npc_gargoyleAI::npc_gargoyleAI(), npc_general_andorov::npc_general_andorov(), npc_ghoul::npc_ghoulAI::npc_ghoulAI(), npc_giant_infernal::npc_giant_infernalAI::npc_giant_infernalAI(), npc_grimstone::npc_grimstoneAI::npc_grimstoneAI(), npc_harrison_jones::npc_harrison_jonesAI::npc_harrison_jonesAI(), 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_janalai_hatcher::npc_janalai_hatcherAI::npc_janalai_hatcherAI(), npc_janalai_hatchling::npc_janalai_hatchlingAI::npc_janalai_hatchlingAI(), npc_kalecgos_kj::npc_kalecgos_kjAI::npc_kalecgos_kjAI(), npc_kiljaeden_controller::npc_kiljaeden_controllerAI::npc_kiljaeden_controllerAI(), npc_kilrek::npc_kilrekAI::npc_kilrekAI(), npc_lesser_doomguard::npc_lesser_doomguardAI::npc_lesser_doomguardAI(), npc_madrigosa::npc_madrigosaAI::npc_madrigosaAI(), 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_mograine::npc_mograineAI::npc_mograineAI(), npc_molten_golem::npc_molten_golemAI::npc_molten_golemAI(), npc_muradin_bronzebeard_icc::npc_muradin_bronzebeard_iccAI::npc_muradin_bronzebeard_iccAI(), npc_necromancer::npc_necromancerAI::npc_necromancerAI(), 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_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI::npc_toc5_grand_champion_minionAI(), npc_towering_infernal::npc_towering_infernalAI::npc_towering_infernalAI(), 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_skeletonAI::npc_vrykul_skeletonAI(), npc_weegli_blastfuse::npc_weegli_blastfuseAI::npc_weegli_blastfuseAI(), npc_zealot_lorkhan::npc_zealot_lorkhanAI::npc_zealot_lorkhanAI(), npc_zealot_zath::npc_zealot_zathAI::npc_zealot_zathAI(), spell_blood_queen_vampiric_bite::spell_blood_queen_vampiric_bite_SpellScript::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_gong_of_bethekk::OnGossipHello(), go_call_tram::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(), go_blackened_urn::OnGossipHello(), icecrown_citadel_teleport::OnGossipHello(), go_ulduar_do_not_push_this_button::OnGossipHello(), go_strange_pool::OnGossipHello(), go_ulduar_pure_saronite_deposit::OnGossipHello(), go_prince_taldaram_sphere::OnGossipHello(), go_harpoon_canon::OnGossipHello(), go_the_focusing_iris::OnGossipHello(), go_ulduar_working_harpoon::OnGossipHello(), boss_gloomrel::OnGossipSelect(), boss_doomrel::OnGossipSelect(), npc_zulaman_hostage::OnGossipSelect(), npc_high_overlord_saurfang_icc::OnGossipSelect(), npc_muradin_bronzebeard_icc::OnGossipSelect(), npc_ulduar_keeper::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::spell_blood_queen_frenzied_bloodthirst_AuraScript::OnRemove(), OnlyOnceAreaTriggerScript::OnTrigger(), at_trigger_the_beast_movement::OnTrigger(), at_the_beast_room::OnTrigger(), AreaTrigger_at_sunwell_madrigosa::OnTrigger(), AreaTrigger_at_sunwell_eredar_twins::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_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()(), SmartScript::ProcessAction(), spell_igb_gunship_fall_teleport::spell_igb_gunship_fall_teleport_SpellScript::RelocateDest(), 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(), spell_the_lich_king_valkyr_target_search::spell_the_lich_king_valkyr_target_search_SpellScript::SelectTarget(), spell_igb_gunship_fall_teleport::spell_igb_gunship_fall_teleport_SpellScript::SelectTransport(), Player::SendInitWorldStates(), Player::SendLoot(), Unit::setDeathState(), boss_victor_nefarius::boss_victor_nefariusAI::sGossipSelect(), npc_ulduar_iron_construct::npc_ulduar_iron_constructAI::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(), TriggerBurningPitch(), boss_kalec::boss_kalecAI::UpdateAI(), boss_sathrovarr::boss_sathrovarrAI::UpdateAI(), npc_bone_spike::npc_bone_spikeAI::UpdateAI(), npc_frost_freeze_trap::npc_frost_freeze_trapAI::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(), boss_yoggsaron_keeper::boss_yoggsaron_keeperAI::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.

486{ return 1; }

Referenced by CanDetectStealthOf().

◆ GetLiquidData()

◆ GetMap()

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

References ASSERT, and m_currMap.

Referenced by Map::_FindGameObject(), 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(), 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(), 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::spell_svala_ritual_strike_AuraScript::CalculateAmount(), 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(), 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(), boss_twin_valkyrAI::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(), npc_crok_scourgebane::npc_crok_scourgebaneAI::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(), Spell::DoAllEffectOnTarget(), boss_algalon_the_observer::boss_algalon_the_observerAI::DoCheckHeraldOfTheTitans(), MotionTransport::DoEventIfAny(), FlightPathMovementGenerator::DoEventIfAny(), WorldSession::DoLootRelease(), ScriptedAI::DoPlayMusic(), 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_sindragosa::boss_sindragosaAI::EnterEvadeMode(), boss_malygos::boss_malygosAI::EnterEvadeMode(), BattleExperienceEvent::Execute(), SmartScript::FillScript(), SmartScript::FindCreatureNear(), SmartScript::FindGameObjectNear(), Acore::XP::Gain(), boss_thorim::boss_thorimAI::GetArenaPlayer(), Player::GetCorpse(), ObjectAccessor::GetCorpse(), ObjectAccessor::GetCreature(), ChatHandler::GetCreatureFromPlayerMapByDbGuid(), GetCreaturesWithEntryInRange(), 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(), misc_commandscript::HandleAppearCommand(), WorldSession::HandleAreaSpiritHealerQueryOpcode(), WorldSession::HandleAreaSpiritHealerQueueOpcode(), WorldSession::HandleAreaTriggerOpcode(), AuraEffect::HandleAuraDummy(), Unit::HandleAuraProc(), WorldSession::HandleAutostoreLootItemOpcode(), WorldSession::HandleBattlemasterHelloOpcode(), WorldSession::HandleBattlemasterJoinArena(), spell_freezing_circle::HandleDamage(), spell_four_horsemen_consumption::HandleDamageCalc(), debug_commandscript::HandleDebugSpawnVehicleCommand(), OutdoorPvPSI::HandleDropFlag(), spell_item_nitro_boots::HandleDummy(), spell_sha_fire_nova::HandleDummy(), spell_teron_gorefiend_shadowy_construct::spell_teron_gorefiend_shadowy_construct_AuraScript::HandleEffectApply(), 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::spell_yogg_saron_brain_link_AuraScript::HandleOnEffectApply(), WorldSession::HandlePetAction(), WorldSession::HandlePetActionHelper(), AuraEffect::HandlePhase(), WorldSession::HandlePlayerLoginFromDB(), WorldSession::HandlePlayerLoginToCharInWorld(), AuraEffect::HandlePreventResurrection(), spell_dreamwalker_summon_portal::spell_dreamwalker_summon_portal_SpellScript::HandleScript(), spell_archavon_rock_shards::spell_archavon_rock_shards_SpellScript::HandleScript(), spell_prince_taldaram_conjure_flame_sphere::HandleScript(), WorldSession::HandleSetDungeonDifficultyOpcode(), WorldSession::HandleSetRaidDifficultyOpcode(), misc_commandscript::HandleSkirmishCommand(), spell_halion_damage_aoe_summon::spell_halion_damage_aoe_summon_SpellScript::HandleSummon(), spell_putricide_mutated_transformation::spell_putricide_mutated_transformation_SpellScript::HandleSummon(), spell_wintergrasp_create_vehicle::spell_wintergrasp_create_vehicle_SpellScript::HandleSummon(), misc_commandscript::HandleSummonCommand(), WorldSession::HandleTotemDestroyed(), spell_winter_veil_racer_rocket_slam::HandleTriggerSpell(), wp_commandscript::HandleWpModifyCommand(), wp_commandscript::HandleWpShowCommand(), Player::HasQuestForGO(), Player::HasQuestForItem(), hyjalAI::HideNearPos(), 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(), IsVampire(), 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(), npc_frost_wyrm::npc_frost_wyrmAI::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::boss_ahuneAI::JustDied(), boss_kelidan_the_breaker::boss_kelidan_the_breakerAI::JustDied(), npc_gargoyle::npc_gargoyleAI::JustDied(), boss_kurinnaxx::JustDied(), boss_faerlina::boss_faerlinaAI::JustDied(), boss_four_horsemen::boss_four_horsemenAI::JustDied(), boss_gothik::boss_gothikAI::JustDied(), boss_kelthuzad::boss_kelthuzadAI::JustDied(), boss_noth::boss_nothAI::JustDied(), boss_thaddius::boss_thaddiusAI::JustDied(), boss_alar::boss_alarAI::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_thaddius_summon::boss_thaddius_summonAI::JustEngagedWith(), boss_ossirian::JustEngagedWith(), boss_anubrekhan::boss_anubrekhanAI::JustEngagedWith(), boss_faerlina::boss_faerlinaAI::JustEngagedWith(), boss_four_horsemen::boss_four_horsemenAI::JustEngagedWith(), boss_gothik::boss_gothikAI::JustEngagedWith(), boss_heigan::boss_heiganAI::JustEngagedWith(), boss_kelthuzad::boss_kelthuzadAI::JustEngagedWith(), boss_loatheb::boss_loathebAI::JustEngagedWith(), boss_maexxna::boss_maexxnaAI::JustEngagedWith(), boss_noth::boss_nothAI::JustEngagedWith(), npc_tirion_fordring_tft::npc_tirion_fordringAI::JustReachedHome(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustSummoned(), Unit::Kill(), Player::KilledMonsterCredit(), Player::KilledPlayerCredit(), spell_svalna_revive_champion::spell_svalna_revive_champion_SpellScript::Land(), boss_felblood_kaelthas::boss_felblood_kaelthasAI::LapseAction(), spell_the_lich_king_vile_spirits::spell_the_lich_king_vile_spirits_AuraScript::Load(), Creature::LoadCreatureFromDB(), GameObject::LoadGameObjectFromDB(), Pet::LoadPetFromDB(), MotionTransport::LoadStaticPassengers(), WorldSession::LogoutPlayer(), AchievementCriteriaData::Meets(), MotionMaster::MoveBackwards(), MotionMaster::MoveFall(), npc_ulduar_snow_mound::npc_ulduar_snow_moundAI::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_akama_illidan::npc_akama_illidanAI::npc_akama_illidanAI(), 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::OnMapChanged(), spell_illidan_tear_of_azzinoth_summon_channel::spell_illidan_tear_of_azzinoth_summon_channel_AuraScript::OnPeriodic(), at_ancient_leaf::OnTrigger(), at_sindragosa_lair::OnTrigger(), at_icc_saurfang_portal::OnTrigger(), AreaTrigger_at_celestial_planetarium_enterance::OnTrigger(), boss_pyroguard_emberseer::boss_pyroguard_emberseerAI::OpenDoors(), MysticBuffetTargetFilter::operator()(), Unit::PetSpellFail(), spell_halion_twilight_phasing::spell_halion_twilight_phasing_SpellScript::Phase(), spell_valkyr_touch::spell_valkyr_touchAuraScript::PrepareAuraScript(), Player::PrepareQuestMenu(), 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_anubrekhan::boss_anubrekhanAI::Reset(), boss_faerlina::boss_faerlinaAI::Reset(), boss_four_horsemen::boss_four_horsemenAI::Reset(), boss_gothik::boss_gothikAI::Reset(), boss_heigan::boss_heiganAI::Reset(), boss_kelthuzad::boss_kelthuzadAI::Reset(), boss_loatheb::boss_loathebAI::Reset(), boss_maexxna::boss_maexxnaAI::Reset(), boss_noth::boss_nothAI::Reset(), boss_thaddius::boss_thaddiusAI::Reset(), boss_sjonnir::boss_sjonnirAI::Reset(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::Reset(), Player::ResetMap(), boss_nalorakk::boss_nalorakkAI::ResetMobs(), boss_volazj::ResetPlayersPhaseMask(), GameObject::Respawn(), Creature::Respawn(), hyjalAI::RespawnNearPos(), 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(), spell_gen_adals_song_of_battle::SelectTarget(), ScriptedAI::SelectTargetFromPlayerList(), npc_minigob_manabonk::npc_minigob_manabonkAI::SelectTargetInDalaran(), boss_nalorakk::boss_nalorakkAI::SendAttacker(), 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(), instance_hyjal::instance_mount_hyjal_InstanceMapScript::SetData(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::SetData(), boss_pyroguard_emberseer::boss_pyroguard_emberseerAI::SetData(), Creature::setDeathState(), spell_blood_council_summon_shadow_resonance::spell_blood_council_summon_shadow_resonance_SpellScript::SetDest(), GameObject::SetDestructibleState(), Player::SetEntryPoint(), npc_gunship::npc_gunshipAI::SetGUID(), Creature::SetLootRecipient(), Unit::SetPhaseMask(), Creature::SetPosition(), GameObject::SetPosition(), boss_akilzon::boss_akilzonAI::SetWeather(), SetWorldObject(), 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_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_pyroguard_emberseer::boss_pyroguard_emberseerAI::UpdateAI(), boss_rend_blackhand::boss_rend_blackhandAI::UpdateAI(), boss_chromaggus::boss_chromaggusAI::UpdateAI(), boss_nefarian::UpdateAI(), boss_vaelastrasz::boss_vaelAI::UpdateAI(), npc_barnes::npc_barnesAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_kiljaeden_controller::npc_kiljaeden_controllerAI::UpdateAI(), npc_singularity::npc_singularityAI::UpdateAI(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), boss_janalai::boss_janalaiAI::UpdateAI(), npc_forest_frog::npc_forest_frogAI::UpdateAI(), npc_harrison_jones::npc_harrison_jonesAI::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_gothik::boss_gothikAI::UpdateAI(), boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI::UpdateAI(), boss_heigan::boss_heiganAI::UpdateAI(), boss_kelthuzad::boss_kelthuzadAI::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::boss_keristraszaAI::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_kologarn_eyebeam::boss_kologarn_eyebeamAI::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(), boss_shirrak_the_dead_watcher::boss_shirrak_the_dead_watcherAI::UpdateAI(), boss_grandmaster_vorpil::boss_grandmaster_vorpilAI::UpdateAI(), npc_pet_gen_plump_turkey::UpdateAI(), npc_demonic_vapor::npc_demonic_vaporAI::UpdateAI(), UpdateAllowedPositionZ(), npc_grimstone::npc_grimstoneAI::UpdateEscortAI(), GameObject::UpdateModel(), GameObject::UpdateModelPosition(), StaticTransport::UpdatePassengerPositions(), MotionTransport::UpdatePassengerPositions(), boss_netherspite::boss_netherspiteAI::UpdatePortals(), Unit::UpdatePosition(), MotionTransport::UpdatePosition(), StaticTransport::UpdatePosition(), UpdatePositionData(), boss_pyroguard_emberseer::boss_pyroguard_emberseerAI::UpdateRunes(), Player::UpdateTriggerVisibility(), 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()

float WorldObject::GetMapWaterOrGroundLevel ( float  x,
float  y,
float  z,
float *  ground = nullptr 
) const
3058{
3059 return GetMap()->GetWaterOrGroundLevel(GetPhaseMask(), x, y, z, ground,
3060 isType(TYPEMASK_UNIT) ? !static_cast<Unit const*>(this)->HasAuraType(SPELL_AURA_WATER_WALK) : false,
3062}
@ SPELL_AURA_WATER_WALK
Definition: SpellAuraDefines.h:167
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:1992

References GetCollisionHeight(), GetMap(), GetPhaseMask(), Map::GetWaterOrGroundLevel(), Object::isType(), SPELL_AURA_WATER_WALK, TYPEMASK_UNIT, and Z_OFFSET_FIND_HEIGHT.

Referenced by RandomMovementGenerator< T >::_setRandomLocation(), spell_q12589_shoot_rjr::spell_q12589_shoot_rjr_SpellScript::HandleDummy(), and UpdateAllowedPositionZ().

◆ GetMinHeightInWater()

float WorldObject::GetMinHeightInWater ( ) const

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

Returns
float
1544{
1545 // have a fun with Archimedes' formula
1546 auto height = GetCollisionHeight();
1547 auto width = GetCollisionWidth();
1548 auto weight = getWeight(height, width, 1040); // avg human specific weight
1549 auto heightOutOfWater = getOutOfWater(width, weight, 10202) * 4.0f; // avg human density
1550 auto heightInWater = height - heightOutOfWater;
1551 return (height > heightInWater ? heightInWater : (height - (height / 3)));
1552}
float getWeight(float height, float width, float specificWeight)
Definition: Physics.h:34
float getOutOfWater(float width, float weight, float density)
Get the height immersed in water.
Definition: Physics.h:49
virtual float GetCollisionWidth() const
Definition: Object.h:609

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

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

◆ GetName()

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

References m_name.

Referenced by Player::_LoadHomeBind(), Player::_LoadInventory(), Player::_LoadItem(), Player::_LoadMailedItem(), Player::_LoadQuestStatus(), 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(), 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(), 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::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(), ChatLogScript::OnChat(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureCreate(), instance_black_temple::instance_black_temple_InstanceMapScript::OnCreatureCreate(), lfg::LFGPlayerScript::OnMapChanged(), 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(), boss_grand_champion::boss_grand_championAI::SpellHit(), FollowerAI::StartFollow(), Player::StopCastingCharm(), 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
2590{
2591 GetNearPoint2D(x, y, distance2d + searcher_size, absAngle, startPos);
2592 z = GetPositionZ();
2593
2594 if (searcher)
2595 {
2596 if (Unit const* unit = searcher->ToUnit(); Unit const* target = ToUnit())
2597 {
2598 if (unit && target && unit->IsInWater() && target->IsInWater())
2599 {
2600 // if the searcher is in water
2601 // we have no ground so we can
2602 // set the target height to the
2603 // z-coord to keep the searcher
2604 // at the correct height (face to face)
2605 z += GetCollisionHeight() - unit->GetCollisionHeight();
2606 }
2607 }
2608 searcher->UpdateAllowedPositionZ(x, y, z);
2609 }
2610 else
2611 {
2612 UpdateAllowedPositionZ(x, y, z);
2613 }
2614
2615 // if detection disabled, return first point
2616 if (!sWorld->getBoolConfig(CONFIG_DETECT_POS_COLLISION))
2617 return;
2618
2619 // return if the point is already in LoS
2620 if (!controlZ && IsWithinLOS(x, y, z))
2621 return;
2622
2623 // remember first point
2624 float first_x = x;
2625 float first_y = y;
2626 float first_z = z;
2627
2628 // loop in a circle to look for a point in LoS using small steps
2629 for (float angle = float(M_PI) / 8; angle < float(M_PI) * 2; angle += float(M_PI) / 8)
2630 {
2631 GetNearPoint2D(x, y, distance2d + searcher_size, absAngle + angle, startPos);
2632 z = GetPositionZ();
2633 UpdateAllowedPositionZ(x, y, z);
2634 if (controlZ && fabsf(GetPositionZ() - z) > controlZ)
2635 continue;
2636
2637 if (IsWithinLOS(x, y, z))
2638 return;
2639 }
2640
2641 // still not in LoS, give up and return first position found
2642 if (startPos)
2643 {
2644 x = searcher->GetPositionX();
2645 y = searcher->GetPositionY();
2646 z = searcher->GetPositionZ();
2647 }
2648 else
2649 {
2650 x = first_x;
2651 y = first_y;
2652 z = first_z;
2653 }
2654}
@ CONFIG_DETECT_POS_COLLISION
Definition: IWorld.h:101
#define sWorld
Definition: World.h:451
void UpdateAllowedPositionZ(float x, float y, float &z, float *groundZ=nullptr) const
Definition: Object.cpp:1554
void GetNearPoint2D(WorldObject const *searcher, float &x, float &y, float distance, float absAngle, Position const *startPos=nullptr) const
Definition: Object.cpp:2552

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

Referenced by ChaseMovementGenerator< T >::DoUpdate(), GetChargeContactPoint(), GetClosePoint(), GetContactPoint(), Unit::GetMeleeAttackPoint(), Unit::GetRandomContactPoint(), GetVoidClosePoint(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::InitializeAI(), Spell::SelectImplicitCasterDestTargets(), npc_hourglass_of_eternity::npc_hourglass_of_eternityAI::UpdateAI(), and hyjalAI::WaypointReached().

◆ GetNearPoint2D() [1/2]

void WorldObject::GetNearPoint2D ( float &  x,
float &  y,
float  distance,
float  absAngle,
Position const *  startPos = nullptr 
) const
2585{
2586 GetNearPoint2D(nullptr, x, y, distance2d, absAngle, startPos);
2587}

References GetNearPoint2D().

◆ GetNearPoint2D() [2/2]

void WorldObject::GetNearPoint2D ( WorldObject const *  searcher,
float &  x,
float &  y,
float  distance,
float  absAngle,
Position const *  startPos = nullptr 
) const
2553{
2554 float effectiveReach = GetCombatReach();
2555
2556 if (searcher)
2557 {
2558 effectiveReach += searcher->GetCombatReach();
2559
2560 if (this != searcher)
2561 {
2562 float myHover = 0.0f, searcherHover = 0.0f;
2563 if (Unit const* unit = ToUnit())
2564 myHover = unit->GetHoverHeight();
2565 if (Unit const* searchUnit = searcher->ToUnit())
2566 searcherHover = searchUnit->GetHoverHeight();
2567
2568 float hoverDelta = myHover - searcherHover;
2569 if (hoverDelta != 0.0f)
2570 effectiveReach = std::sqrt(std::max(effectiveReach * effectiveReach - hoverDelta * hoverDelta, 0.0f));
2571 }
2572 }
2573
2574 float positionX = startPos ? startPos->GetPositionX() : GetPositionX();
2575 float positionY = startPos ? startPos->GetPositionY() : GetPositionY();
2576
2577 x = positionX + (effectiveReach + distance2d) * std::cos(absAngle);
2578 y = positionY + (effectiveReach + distance2d) * std::sin(absAngle);
2579
2582}
void NormalizeMapCoord(float &c)
Definition: GridDefines.h:208

References GetCombatReach(), Unit::GetHoverHeight(), 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
555{ return m_notifyflags; }

References m_notifyflags.

◆ GetObjectSize()

float WorldObject::GetObjectSize ( ) const
2735{
2737}
#define DEFAULT_WORLD_OBJECT_SIZE
Definition: ObjectDefines.h:45
@ UNIT_FIELD_COMBATREACH
Definition: UpdateFields.h:123
float GetObjectScale() const
Definition: Object.h:112
uint16 m_valuesCount
Definition: Object.h:242
float * m_floatValues
Definition: Object.h:237

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(), GetDistance2d(), GetDistanceZ(), Unit::GetMeleeAttackPoint(), misc_commandscript::HandleGroupSummonCommand(), spell_marrowgar_coldflame::spell_marrowgar_coldflame_SpellScript::HandleScriptEffect(), IsInBetween(), IsInRange(), IsInRange2d(), IsInRange3d(), IsWithinDist2d(), IsWithinDist3d(), MotionMaster::MoveJumpTo(), Acore::WorldObjectSpellConeTargetCheck::operator()(), Acore::WorldObjectSpellTrajTargetCheck::operator()(), SmartScript::ProcessAction(), npc_released_offspring_harkoa::npc_released_offspring_harkoaAI::Reset(), boss_selin_fireheart::boss_selin_fireheartAI::SelectNearestCrystal(), Player::SendMessageToSetInRange(), SendMessageToSetInRange(), GameObject::SendMessageToSetInRange(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::SpellHit(), SummonCreature(), and npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::UpdateAI().

◆ GetPhaseMask()

uint32 WorldObject::GetPhaseMask ( ) const
inline
434{ 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(), PathGenerator::IsSwimmableSegment(), IsWithinLOS(), IsWithinLOSInMap(), npc_frost_wyrm::npc_frost_wyrmAI::JustDied(), npc_gargoyle::npc_gargoyleAI::JustDied(), npc_the_lich_king_controller::npc_the_lich_king_controllerAI::JustSummoned(), spell_svalna_revive_champion::spell_svalna_revive_champion_SpellScript::Land(), Creature::LoadCreatureFromDB(), Pet::LoadPetFromDB(), instance_old_hillsbrad::instance_old_hillsbrad_InstanceMapScript::OnGameObjectCreate(), at_q24545_frostmourne_cavern::OnTrigger(), IgbArtilleryCheck::operator()(), MysticBuffetTargetFilter::operator()(), Corpse::SaveToDB(), Creature::SaveToDB(), GameObject::SaveToDB(), Spell::SelectImplicitCasterDestTargets(), Creature::setDeathState(), spell_blood_council_summon_shadow_resonance::spell_blood_council_summon_shadow_resonance_SpellScript::SetDest(), Unit::SetPhaseMask(), PathGenerator::ShortenPathUntilDist(), Map::SummonCreature(), SummonGameObject(), Player::SummonPet(), SummonTrigger(), Creature::Update(), UpdateAllowedPositionZ(), and UpdatePositionData().

◆ GetRandomNearPosition()

◆ GetRandomPoint() [1/2]

Position WorldObject::GetRandomPoint ( const Position srcPos,
float  distance 
) const
1524{
1525 float x, y, z;
1526 GetRandomPoint(srcPos, distance, x, y, z);
1527 return Position(x, y, z, GetOrientation());
1528}
void GetRandomPoint(const Position &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
Definition: Object.cpp:1502

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

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.

1673{
1674 if (ToUnit())
1675 {
1676 if (ToPlayer())
1677 {
1678 if (target)
1679 {
1680 if (target->IsVisibilityOverridden() && target->GetTypeId() == TYPEID_UNIT)
1681 {
1682 return *target->m_visibilityDistanceOverride;
1683 }
1684 else if (target->GetTypeId() == TYPEID_GAMEOBJECT)
1685 {
1686 if (IsInWintergrasp() && target->IsInWintergrasp())
1687 {
1689 }
1690 else if (target->IsVisibilityOverridden())
1691 {
1692 return *target->m_visibilityDistanceOverride;
1693 }
1694 else if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
1695 {
1697 }
1698 else
1699 {
1701 }
1702 }
1703
1704 return IsInWintergrasp() && target->IsInWintergrasp() ? VISIBILITY_DIST_WINTERGRASP : GetMap()->GetVisibilityRange();
1705 }
1707 }
1708 else if (ToCreature())
1709 {
1710 return ToCreature()->m_SightDistance;
1711 }
1712 else
1713 {
1714 return SIGHT_RANGE_UNIT;
1715 }
1716 }
1717
1718 if (ToDynObject() && isActiveObject())
1719 {
1720 return GetMap()->GetVisibilityRange();
1721 }
1722
1723 return 0.0f;
1724}
#define SIGHT_RANGE_UNIT
Definition: ObjectDefines.h:32
#define VISIBILITY_INC_FOR_GOBJECTS
Definition: ObjectDefines.h:28
DynamicObject * ToDynObject()
Definition: Object.h:208

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

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

◆ GetStationaryO()

virtual float WorldObject::GetStationaryO ( ) const
inlinevirtual

Reimplemented in GameObject.

600{ return GetOrientation(); }

References Position::GetOrientation().

◆ GetStationaryX()

virtual float WorldObject::GetStationaryX ( ) const
inlinevirtual

Reimplemented in GameObject.

597{ return GetPositionX(); }

References Position::GetPositionX().

◆ GetStationaryY()

virtual float WorldObject::GetStationaryY ( ) const
inlinevirtual

Reimplemented in GameObject.

598{ return GetPositionY(); }

References Position::GetPositionY().

◆ GetStationaryZ()

virtual float WorldObject::GetStationaryZ ( ) const
inlinevirtual

Reimplemented in GameObject.

599{ return GetPositionZ(); }

References Position::GetPositionZ().

◆ GetTransGUID()

ObjectGuid WorldObject::GetTransGUID ( ) const
virtual

Reimplemented in Unit.

3042{
3043 if (GetTransport())
3044 return GetTransport()->GetGUID();
3045
3046 return ObjectGuid::Empty;
3047}
static ObjectGuid const Empty
Definition: ObjectGuid.h:122

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

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

◆ GetTransOffsetO()

◆ GetTransOffsetX()

◆ GetTransOffsetY()

◆ GetTransOffsetZ()

◆ GetTransport()

Transport * WorldObject::GetTransport ( ) const
inline
585{ 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::spell_igb_teleport_to_enemy_ship_SpellScript::RelocateTransportOffset(), Creature::RemoveFromWorld(), DynamicObject::RemoveFromWorld(), GameObject::RemoveFromWorld(), Vehicle::RemovePassenger(), Creature::SaveToDB(), spell_igb_gunship_fall_teleport::spell_igb_gunship_fall_teleport_SpellScript::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
2657{
2658 // angle calculated from current orientation
2659 GetNearPoint(nullptr, x, y, z, size, distance2d, GetOrientation() + relAngle, controlZ);
2660}

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

◆ GetZoneAndAreaId()

◆ GetZoneId()

uint32 WorldObject::GetZoneId ( ) const
3076{
3078 const_cast<WorldObject*>(this)->UpdatePositionData();
3079
3080 return _zoneId;
3081}

References _updatePositionData, _zoneId, and UpdatePositionData().

Referenced by Player::_LoadInventory(), Player::_SaveCharacter(), Player::AddQuest(), Vehicle::ApplyAllImmunities(), WorldSession::BuildPartyMemberStatsChangedPacket(), Spell::CheckCast(), Player::CompleteQuest(), ScriptedAI::DoPlayMusic(), Spell::EffectSummonPlayer(), Spell::EffectSummonRaFFriend(), World::FindPlayerInZone(), 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(), go_commandscript::HandleGoZoneXYCommand(), WorldSession::HandleHearthAndResurrect(), misc_commandscript::HandleLinkGraveCommand(), WorldSession::HandleMoveTeleportAck(), misc_commandscript::HandleNearGraveCommand(), spell_wintergrasp_hide_small_elementals::spell_wintergrasp_hide_small_elementals_AuraScript::HandlePeriodicDummy(), WorldSession::HandlePlayerLoginFromDB(), WorldSession::HandleRequestPartyMemberStatsOpcode(), misc_commandscript::HandleSummonCommand(), Player::IncompleteQuest(), SpellArea::IsFitToRequirements(), boss_azuregos::boss_azuregosAI::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(), SmartScript::ProcessAction(), Player::RemoveActiveQuest(), Player::RemovedInsignia(), Player::RepopAtGraveyard(), boss_azuregos::boss_azuregosAI::Reset(), Player::RewardQuest(), CreatureTextMgr::SendChatPacket(), CreatureTextMgr::SendNonChatPacket(), Map::SendZoneDynamicInfo(), Guild::Member::SetStats(), and SetZoneScript().

◆ GetZoneScript()

◆ HasAllowedLooter()

bool WorldObject::HasAllowedLooter ( ObjectGuid  guid) const
3132{
3133 if (_allowedLooters.empty())
3134 {
3135 return true;
3136 }
3137
3138 return _allowedLooters.find(guid) != _allowedLooters.end();
3139}

References _allowedLooters.

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

◆ InSamePhase() [1/2]

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

651{ return false; }

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

◆ IsAlwaysVisibleFor()

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

Reimplemented in GameObject, and Unit.

648{ return false; }

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

◆ IsFarVisible()

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

References m_isFarVisible.

◆ isInBack()

bool WorldObject::isInBack ( WorldObject const *  target,
float  arc = M_PI 
) const
1498{
1499 return !HasInArc(2 * M_PI - arc, target);
1500}

References Position::HasInArc().

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

◆ IsInBetween()

bool WorldObject::IsInBetween ( WorldObject const *  obj1,
WorldObject const *  obj2,
float  size = 0 
) const
1471{
1472 if (!obj1 || !obj2)
1473 return false;
1474
1475 if (!size)
1476 size = GetObjectSize() / 2;
1477
1478 float pdist = obj1->GetExactDist2dSq(obj2) + size / 2.0f;
1479 if (GetExactDist2dSq(obj1) >= pdist || GetExactDist2dSq(obj2) >= pdist)
1480 return false;
1481
1482 if (G3D::fuzzyEq(obj1->GetPositionX(), obj2->GetPositionX()))
1483 return GetPositionX() >= obj1->GetPositionX() - size && GetPositionX() <= obj1->GetPositionX() + size;
1484
1485 float A = (obj2->GetPositionY() - obj1->GetPositionY()) / (obj2->GetPositionX() - obj1->GetPositionX());
1486 float B = -1;
1487 float C = obj1->GetPositionY() - A * obj1->GetPositionX();
1488 float dist = std::fabs(A * GetPositionX() + B * GetPositionY() + C) / std::sqrt(A * A + B * B);
1489 return dist <= size;
1490}
float GetExactDist2dSq(const float x, const float y) const
Definition: Position.h:157

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

Referenced by TwilightCutterSelector::operator()().

◆ isInFront()

bool WorldObject::isInFront ( WorldObject const *  target,
float  arc = M_PI 
) const

◆ IsInMap()

◆ IsInRange()

bool WorldObject::IsInRange ( WorldObject const *  obj,
float  minRange,
float  maxRange,
bool  is3D = true 
) const
1405{
1406 float dx = GetPositionX() - obj->GetPositionX();
1407 float dy = GetPositionY() - obj->GetPositionY();
1408 float distsq = dx * dx + dy * dy;
1409 if (is3D)
1410 {
1411 float dz = GetPositionZ() - obj->GetPositionZ();
1412 distsq += dz * dz;
1413 }
1414
1415 float sizefactor = GetObjectSize() + obj->GetObjectSize();
1416
1417 // check only for real range
1418 if (minRange > 0.0f)
1419 {
1420 float mindist = minRange + sizefactor;
1421 if (distsq < mindist * mindist)
1422 return false;
1423 }
1424
1425 float maxdist = maxRange + sizefactor;
1426 return distsq < maxdist * maxdist;
1427}

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

Referenced by SmartScript::GetTargets(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), npc_shay_leafrunner::npc_shay_leafrunnerAI::MoveInLineOfSight(), HammerOfJusticeSelector::operator()(), SmartScript::ProcessEvent(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), npc_shay_leafrunner::npc_shay_leafrunnerAI::UpdateAI(), and boss_grand_champion::boss_grand_championAI::UpdateAI().

◆ IsInRange2d()

bool WorldObject::IsInRange2d ( float  x,
float  y,
float  minRange,
float  maxRange 
) const
1430{
1431 float dx = GetPositionX() - x;
1432 float dy = GetPositionY() - y;
1433 float distsq = dx * dx + dy * dy;
1434
1435 float sizefactor = GetObjectSize();
1436
1437 // check only for real range
1438 if (minRange > 0.0f)
1439 {
1440 float mindist = minRange + sizefactor;
1441 if (distsq < mindist * mindist)
1442 return false;
1443 }
1444
1445 float maxdist = maxRange + sizefactor;
1446 return distsq < maxdist * maxdist;
1447}

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

◆ IsInRange3d()

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

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

◆ IsInvisibleDueToDespawn()

virtual bool WorldObject::IsInvisibleDueToDespawn ( ) const
inlineprotectedvirtual

Reimplemented in Creature, and GameObject.

649{ return false; }

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

◆ IsInWintergrasp()

bool WorldObject::IsInWintergrasp ( ) const
inline
570 {
571 return GetMapId() == 571 && GetPositionX() > 3733.33331f && GetPositionX() < 5866.66663f && GetPositionY() > 1599.99999f && GetPositionY() < 4799.99997f;
572 }

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

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.

647{ return !IsInWorld(); }

References Object::IsInWorld().

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

◆ IsOutdoors()

bool WorldObject::IsOutdoors ( ) const

◆ IsPermanentWorldObject()

bool WorldObject::IsPermanentWorldObject ( ) const
inline

◆ IsSelfOrInSameMap()

bool WorldObject::IsSelfOrInSameMap ( WorldObject const *  obj) const
1276{
1277 if (this == obj)
1278 {
1279 return true;
1280 }
1281
1282 return IsInMap(obj);
1283}
bool IsInMap(WorldObject const *obj) const
Definition: Object.cpp:1285

References IsInMap().

Referenced by Aura::UpdateTargetMap().

◆ IsVisibilityOverridden()

bool WorldObject::IsVisibilityOverridden ( ) const
inline

◆ IsWithinDist()

bool WorldObject::IsWithinDist ( WorldObject const *  obj,
float  dist2compare,
bool  is3D = true,
bool  useBoundingRadius = true 
) const
1317{
1318 return obj && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius);
1319}
virtual bool _IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D, bool useBoundingRadius=true) const
Definition: Object.cpp:1206

References _IsWithinDist().

Referenced by Unit::CalcAbsorbResist(), Creature::CanCreatureAttack(), CanSeeOrDetect(), Creature::CanStartAttack(), npc_cork_gizelton::npc_cork_gizeltonAI::CheckPlayer(), boss_akilzon::boss_akilzonAI::HandleStormSequence(), boss_twinemperorsAI::JustEngagedWith(), CreatureAI::MoveInLineOfSight(), npc_brew_bubble::MoveInLineOfSight(), npc_a_special_surprise::npc_a_special_surpriseAI::MoveInLineOfSight(), npc_towering_infernal::npc_towering_infernalAI::MoveInLineOfSight(), npc_lesser_doomguard::npc_lesser_doomguardAI::MoveInLineOfSight(), npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight(), Acore::NearestCreatureEntryWithLiveStateInObjectRangeCheck::operator()(), Acore::AllGameObjectsWithEntryInRange::operator()(), Acore::PlayerAtMinimumRangeAway::operator()(), Acore::AllCreaturesOfEntryInRange::operator()(), FrostwingVrykulSearcher::operator()(), Acore::AllWorldObjectsInRange::operator()(), Spell::SearchChainTargets(), npc_daphne_stilwell::npc_daphne_stilwellAI::Update(), npc_unworthy_initiate::npc_unworthy_initiateAI::UpdateAI(), npc_frost_wyrm::npc_frost_wyrmAI::UpdateAI(), npc_gargoyle::npc_gargoyleAI::UpdateAI(), npc_rizzle_sprysprocket::npc_rizzle_sprysprocketAI::UpdateAI(), npc_yor::npc_yorAI::UpdateAI(), npc_voidtraveler::npc_voidtravelerAI::UpdateAI(), npc_ichor_globule::npc_ichor_globuleAI::UpdateAI(), and Group::UpdatePlayerOutOfRange().

◆ IsWithinDist2d() [1/2]

bool WorldObject::IsWithinDist2d ( const Position pos,
float  dist 
) const
1311{
1312 return IsInDist2d(pos, dist + GetObjectSize());
1313}
bool IsInDist2d(float x, float y, float dist) const
Definition: Position.h:207

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

◆ IsWithinDist2d() [2/2]

◆ IsWithinDist3d() [1/2]

bool WorldObject::IsWithinDist3d ( const Position pos,
float  dist 
) const
1301{
1302 return IsInDist(pos, dist + GetObjectSize());
1303}
bool IsInDist(float x, float y, float z, float dist) const
Definition: Position.h:217

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

◆ IsWithinDist3d() [2/2]

◆ IsWithinDistInMap()

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

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(), 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_felblood_kaelthas::boss_felblood_kaelthasAI::MoveInLineOfSight(), npc_dkc1_gothik::npc_dkc1_gothikAI::MoveInLineOfSight(), boss_nalorakk::boss_nalorakkAI::MoveInLineOfSight(), alliance_rifleman::alliance_riflemanAI::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_captured_beryl_sorcerer::npc_captured_beryl_sorcererAI::MoveInLineOfSight(), npc_overlord_drakuru_betrayal::npc_overlord_drakuru_betrayalAI::MoveInLineOfSight(), boss_exarch_maladaar::boss_exarch_maladaarAI::MoveInLineOfSight(), boss_nexusprince_shaffar::boss_nexusprince_shaffarAI::MoveInLineOfSight(), boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI::MoveInLineOfSight(), boss_wrath_scryer_soccothrates::boss_wrath_scryer_soccothratesAI::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(), 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::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(), boss_nalorakk::boss_nalorakkAI::ResetMobs(), Map::ScriptsProcess(), ScriptedAI::SelectSpell(), ScriptedAI::SelectTargetFromPlayerList(), boss_nalorakk::boss_nalorakkAI::SendAttacker(), Player::SendLoot(), npc_corrupted_totem::SetAura(), Pet::Update(), Creature::Update(), Player::Update(), TotemAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), boss_halazzi::boss_halazziAI::UpdateAI(), boss_alyson_antille::boss_alyson_antilleAI::UpdateAI(), boss_archimonde::boss_archimondeAI::UpdateAI(), alliance_rifleman::alliance_riflemanAI::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
1327{
1328 if (IsInWorld())
1329 {
1330 oz += GetCollisionHeight();
1331 float x, y, z;
1332 if (GetTypeId() == TYPEID_PLAYER)
1333 {
1334 GetPosition(x, y, z);
1335 z += GetCollisionHeight();
1336 }
1337 else
1338 {
1339 GetHitSpherePointFor({ ox, oy, oz }, x, y, z);
1340 }
1341
1342 return GetMap()->isInLineOfSight(x, y, z, ox, oy, oz, GetPhaseMask(), checks, ignoreFlags);
1343 }
1344 return true;
1345}
bool isInLineOfSight(float x1, float y1, float z1, float x2, float y2, float z2, uint32 phasemask, LineOfSightChecks checks, VMAP::ModelIgnoreFlags ignoreFlags) const
Definition: Map.cpp:2441

References GetCollisionHeight(), GetHitSpherePointFor(), GetMap(), GetPhaseMask(), Position::GetPosition(), Object::GetTypeId(), Map::isInLineOfSight(), Object::IsInWorld(), and TYPEID_PLAYER.

Referenced by RandomMovementGenerator< T >::_setRandomLocation(), Spell::CheckCast(), Spell::CheckEffectTarget(), boss_ick::boss_ickAI::DamageTaken(), Spell::EffectChargeDest(), GetChargeContactPoint(), GetClosePoint(), GetContactPoint(), GetNearPoint(), Unit::GetRandomContactPoint(), spell_marrowgar_coldflame_bonestorm::spell_marrowgar_coldflame_SpellScript::HandleScriptEffect(), spell_marrowgar_coldflame::spell_marrowgar_coldflame_SpellScript::HandleScriptEffect(), boss_vem::JustEngagedWith(), npc_dancing_flames::npc_dancing_flamesAI::ReceiveEmote(), Spell::SelectImplicitCasterDestTargets(), npc_coldflame::npc_coldflameAI::UpdateAI(), boss_freya::boss_freyaAI::UpdateAI(), and boss_mimiron::boss_mimironAI::UpdateAI().

◆ 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
1348{
1349 if (!IsInMap(obj))
1350 return false;
1351
1352 float ox, oy, oz;
1353 if (obj->GetTypeId() == TYPEID_PLAYER)
1354 {
1355 obj->GetPosition(ox, oy, oz);
1356 oz += obj->GetCollisionHeight();
1357 }
1358 else
1359 obj->GetHitSpherePointFor({ GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()) }, ox, oy, oz);
1360
1361 float x, y, z;
1362 if (GetTypeId() == TYPEID_PLAYER)
1363 {
1364 GetPosition(x, y, z);
1365 z += GetCollisionHeight();
1366 }
1367 else
1368 GetHitSpherePointFor({ obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ() + obj->GetCollisionHeight() }, x, y, z, collisionHeight, combatReach);
1369
1370 return GetMap()->isInLineOfSight(x, y, z, ox, oy, oz, GetPhaseMask(), checks, ignoreFlags);
1371}

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

Referenced by npc_escortAI::AssistPlayerInCombatAgainst(), FollowerAI::AssistPlayerInCombatAgainst(), SmartAI::AssistPlayerInCombatAgainst(), Unit::AttackerStateUpdate(), Unit::CalcAbsorbResist(), Creature::CanStartAttack(), Spell::CheckCast(), Spell::CheckEffectTarget(), spell_hun_masters_call::DoCheckCast(), debug_commandscript::HandleDebugLoSCommand(), WorldSession::HandlePetActionHelper(), boss_halion::boss_halionAI::IsAnyPlayerValid(), boss_eye_of_cthun::MoveInLineOfSight(), Acore::CallOfHelpCreatureInRangeDo::operator()(), Acore::AnyAssistCreatureInRangeCheck::operator()(), Acore::NearestAssistCreatureInCreatureRangeCheck::operator()(), Acore::NearestAttackableNoTotemUnitInObjectRangeCheck::operator()(), NecroticPlagueTargetCheck::operator()(), FarthestTargetSelector::operator()(), ShadowTrapLKTargetSelector::operator()(), NonTankLKTargetSelector::operator()(), DefileTargetSelector::operator()(), MysticBuffetTargetFilter::operator()(), 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
1075{
1076 if (m_isWorldObject)
1077 return true;
1078
1079 if (ToCreature() && ToCreature()->m_isTempWorldObject)
1080 return true;
1081
1082 return false;
1083}

References m_isWorldObject, and Object::ToCreature().

Referenced by Map::AddToGrid(), DynamicObject::CreateDynamicObject(), ResetMap(), SetMap(), Map::~Map(), and ~WorldObject().

◆ MovePosition()

void WorldObject::MovePosition ( Position pos,
float  dist,
float  angle 
)
2740{
2741 angle += GetOrientation();
2742 float destx, desty, destz, ground, floor;
2743 destx = pos.m_positionX + dist * cos(angle);
2744 desty = pos.m_positionY + dist * std::sin(angle);
2745
2746 // Prevent invalid coordinates here, position is unchanged
2747 if (!Acore::IsValidMapCoord(destx, desty))
2748 {
2749 LOG_FATAL("entities.object", "WorldObject::MovePosition invalid coordinates X: {} and Y: {} were passed!", destx, desty);
2750 return;
2751 }
2752
2753 ground = GetMapHeight(destx, desty, MAX_HEIGHT);
2754 floor = GetMapHeight(destx, desty, pos.m_positionZ);
2755 destz = std::fabs(ground - pos.m_positionZ) <= std::fabs(floor - pos.m_positionZ) ? ground : floor;
2756
2757 float step = dist / 10.0f;
2758
2759 for (uint8 j = 0; j < 10; ++j)
2760 {
2761 // do not allow too big z changes
2762 if (std::fabs(pos.m_positionZ - destz) > 6.0f)
2763 {
2764 destx -= step * cos(angle);
2765 desty -= step * std::sin(angle);
2766 ground = GetMapHeight(destx, desty, MAX_HEIGHT);
2767 floor = GetMapHeight(destx, desty, pos.m_positionZ);
2768 destz = std::fabs(ground - pos.m_positionZ) <= std::fabs(floor - pos.m_positionZ) ? ground : floor;
2769 }
2770 // we have correct destz now
2771 else
2772 {
2773 pos.Relocate(destx, desty, destz);
2774 break;
2775 }
2776 }
2777
2782}
std::uint8_t uint8
Definition: Define.h:110
bool IsValidMapCoord(float c)
Definition: GridDefines.h:216
float GetMapHeight(float x, float y, float z, bool vmap=true, float distanceToSearch=50.0f) const
Definition: Object.cpp:3049
void SetOrientation(float orientation)
Definition: Position.h:112
void Relocate(float x, float y)
Definition: Position.h:73

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 Spell::SelectImplicitDestDestTargets().

◆ MovePositionToFirstCollision()

void WorldObject::MovePositionToFirstCollision ( Position pos,
float  dist,
float  angle 
)

◆ NotifyExecuted()

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

References m_executed_notifies.

◆ PlayDirectMusic()

void WorldObject::PlayDirectMusic ( uint32  music_id,
Player target = nullptr 
)
2862{
2863 if (target)
2864 {
2865 target->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write());
2866 }
2867 else
2868 {
2869 SendMessageToSet(WorldPackets::Misc::PlayMusic(music_id).Write(), true);
2870 }
2871}
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
Definition: Object.h:482
void SendDirectMessage(WorldPacket const *data) const
Definition: Player.cpp:5594
Definition: MiscPackets.h:58

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

Referenced by debug_commandscript::HandleDebugPlayMusicCommand(), 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 
)

◆ ProcessPositionDataChanged()

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

Reimplemented in Unit.

1164{
1165 _zoneId = _areaId = data.areaId;
1166
1167 if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(_areaId))
1168 if (area->zone)
1169 _zoneId = area->zone;
1170
1171 _outdoors = data.outdoors;
1172 _floorZ = data.floorZ;
1173 _liquidData = data.liquidInfo;
1174}
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().

◆ RemoveFromNotify()

void WorldObject::RemoveFromNotify ( uint16  f)
inline

◆ RemoveFromObjectUpdate()

void WorldObject::RemoveFromObjectUpdate ( )
overridevirtual

Implements Object.

3037{
3038 GetMap()->RemoveUpdateObject(this);
3039}
void RemoveUpdateObject(Object *obj)
Definition: Map.h:643

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

◆ RemoveFromWorld()

void WorldObject::RemoveFromWorld ( )
overridevirtual

Reimplemented from Object.

Reimplemented in Pet, Player, and Unit.

1183{
1184 if (!IsInWorld())
1185 return;
1186
1188
1190}
virtual void RemoveFromWorld()
Definition: Object.cpp:166
void DestroyForNearbyPlayers()
Definition: Object.cpp:2873

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 ( )
3127{
3128 _allowedLooters.clear();
3129}

References _allowedLooters.

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

◆ ResetMap()

void WorldObject::ResetMap ( )
virtual

Reimplemented in Player.

2098{
2100 ASSERT(!IsInWorld());
2101
2102 if (IsWorldObject())
2103 {
2105 }
2106
2107 sScriptMgr->OnWorldObjectResetMap(this);
2108
2109 m_currMap = nullptr;
2110 //maybe not for corpse
2111 //m_mapId = 0;
2112 //m_InstanceId = 0;
2113}
void RemoveWorldObject(WorldObject *obj)
Definition: Map.h:479

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

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

◆ SaveRespawnTime()

virtual void WorldObject::SaveRespawnTime ( )
inlinevirtual

Reimplemented in Creature, and GameObject.

494{}

◆ SelectNearestPlayer()

Player * WorldObject::SelectNearestPlayer ( float  distance = 0) const
2437{
2438 Player* target = nullptr;
2439
2440 Acore::NearestPlayerInObjectRangeCheck checker(this, distance);
2442 Cell::VisitWorldObjects(this, searcher, distance);
2443
2444 return target;
2445}
Definition: GridNotifiers.h:554
Definition: GridNotifiers.h:1401

References Cell::VisitWorldObjects().

Referenced by boss_kelidan_the_breaker::boss_kelidan_the_breakerAI::DoAction(), SmartScript::GetTargets(), npc_big_ooze::npc_big_oozeAI::IsSummonedBy(), 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_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(), spell_valkyr_ball_periodic_dummy::spell_valkyr_ball_periodic_dummyAuraScript::PrepareAuraScript(), boss_headless_horseman_pumpkin::Reset(), npc_ahnqiraji_critter::Reset(), 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(), 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_amanitar_mushrooms::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_razorscale::boss_razorscaleAI::UpdateAI(), boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI::UpdateAI(), npc_hor_raging_ghoul::npc_hor_raging_ghoulAI::UpdateAI(), and npc_grimstone::npc_grimstoneAI::UpdateEscortAI().

◆ SendMessageToSet() [1/2]

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

Reimplemented in Player.

482{ if (IsInWorld()) SendMessageToSetInRange(data, GetVisibilityRange(), self, true); } // pussywizard!
virtual void SendMessageToSetInRange(WorldPacket const *data, float dist, bool, bool includeMargin=false, Player const *skipped_rcvr=nullptr) const
Definition: Object.cpp:2055

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::HandleMoveRootAck(), WorldSession::HandleMoveUnRootAck(), 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]

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

Reimplemented in Player.

484{ if (IsInWorld()) SendMessageToSetInRange(data, GetVisibilityRange(), false, true, skipped_rcvr); } // pussywizard!

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

◆ SendMessageToSetInRange()

void WorldObject::SendMessageToSetInRange ( WorldPacket const *  data,
float  dist,
bool  ,
bool  includeMargin = false,
Player const *  skipped_rcvr = nullptr 
) const
virtual

Reimplemented in Player, and GameObject.

2056{
2057 dist += GetObjectSize();
2058 if (includeMargin)
2059 dist += VISIBILITY_COMPENSATION; // pussywizard: to ensure everyone receives all important packets
2060 Acore::MessageDistDeliverer notifier(this, data, dist, false, skipped_rcvr);
2061 Cell::VisitWorldObjects(this, notifier, dist);
2062}
Definition: GridNotifiers.h:98

References GetObjectSize(), VISIBILITY_COMPENSATION, and Cell::VisitWorldObjects().

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

◆ SendObjectDeSpawnAnim()

void WorldObject::SendObjectDeSpawnAnim ( ObjectGuid  guid)
2065{
2067 data << guid;
2068 SendMessageToSet(&data, true);
2069}
@ SMSG_GAMEOBJECT_DESPAWN_ANIM
Definition: Opcodes.h:563
Definition: WorldPacket.h:27

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 
)
2033{
2035 data << Music;
2036 if (OnlySelf && GetTypeId() == TYPEID_PLAYER)
2037 this->ToPlayer()->GetSession()->SendPacket(&data);
2038 else
2039 SendMessageToSet(&data, true); // ToSelf ignored in this case
2040}
@ SMSG_PLAY_MUSIC
Definition: Opcodes.h:661
WorldSession * GetSession() const
Definition: Player.h:1948
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
Definition: WorldSession.cpp:207

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

◆ setActive()

void WorldObject::setActive ( bool  isActiveObject)
1086{
1087 if (m_isActive == on)
1088 return;
1089
1090 if (GetTypeId() == TYPEID_PLAYER)
1091 return;
1092
1093 m_isActive = on;
1094
1095 if (on && !IsInWorld())
1096 return;
1097
1098 Map* map = FindMap();
1099 if (!map)
1100 return;
1101
1102 if (on)
1103 {
1104 if (GetTypeId() == TYPEID_UNIT)
1105 map->AddToActive(this->ToCreature());
1106 else if (GetTypeId() == TYPEID_DYNAMICOBJECT)
1107 map->AddToActive((DynamicObject*)this);
1108 else if (GetTypeId() == TYPEID_GAMEOBJECT)
1109 map->AddToActive((GameObject*)this);
1110 }
1111 else
1112 {
1113 if (GetTypeId() == TYPEID_UNIT)
1114 map->RemoveFromActive(this->ToCreature());
1115 else if (GetTypeId() == TYPEID_DYNAMICOBJECT)
1116 map->RemoveFromActive((DynamicObject*)this);
1117 else if (GetTypeId() == TYPEID_GAMEOBJECT)
1118 map->RemoveFromActive((GameObject*)this);
1119 }
1120}
Definition: DynamicObject.h:35
void RemoveFromActive(T *obj)
Definition: Map.cpp:2769
void AddToActive(T *obj)
Definition: Map.cpp:2745

References Map::AddToActive(), FindMap(), Object::GetTypeId(), Object::IsInWorld(), m_isActive, Map::RemoveFromActive(), Object::ToCreature(), TYPEID_DYNAMICOBJECT, TYPEID_GAMEOBJECT, TYPEID_PLAYER, and TYPEID_UNIT.

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_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::boss_illidari_councilAI::DoAction(), hyjalAI::DoOverrun(), boss_kologarn::boss_kologarnAI::EnterEvadeMode(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::EnterEvadeMode(), ValithriaDespawner::Execute(), 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(), 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::npc_kiljaeden_controllerAI::JustSummoned(), Creature::LoadCreaturesAddon(), 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_manabonkAI::npc_minigob_manabonkAI(), 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(), instance_sunwell_plateau::instance_sunwell_plateau_InstanceMapScript::OnGameObjectCreate(), npc_koltira_deathweaver::OnQuestAccept(), Unit::RemovePlayerFromVision(), boss_nightbane::boss_nightbaneAI::Reset(), npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::Reset(), hyjalAI::Reset(), npc_q24545_lich_king::npc_q24545_lich_kingAI::Reset(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::Reset(), npc_akama_illidan::npc_akama_illidanAI::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::npc_akama_illidanAI::sGossipSelect(), Battlefield::SpawnCreature(), Battlefield::SpawnGameObject(), hyjalAI::SummonCreature(), boss_vazruden_the_herald::boss_vazruden_the_heraldAI::SummonedCreatureDies(), npc_warden_mellichar::npc_warden_mellicharAI::SummonedCreatureDies(), instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::Update(), npc_kalecgos_kj::npc_kalecgos_kjAI::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(), boss_svala::boss_svalaAI::UpdateAI(), and npc_akama_illidan::npc_akama_illidanAI::WaypointReached().

◆ SetAllowedLooters()

void WorldObject::SetAllowedLooters ( GuidUnorderedSet const  looters)
3122{
3123 _allowedLooters = looters;
3124}

References _allowedLooters.

Referenced by GameObject::SetLootRecipient().

◆ SetLocationInstanceId()

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

References m_InstanceId.

Referenced by Corpse::LoadCorpseFromDB().

◆ SetLocationMapId()

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

References WorldLocation::m_mapId.

Referenced by Corpse::LoadCorpseFromDB().

◆ SetMap()

void WorldObject::SetMap ( Map map)
virtual

Reimplemented in Player.

2072{
2073 ASSERT(map);
2074 ASSERT(!IsInWorld());
2075
2076 if (m_currMap == map) // command add npc: first create, than loadfromdb
2077 {
2078 return;
2079 }
2080
2081 if (m_currMap)
2082 {
2083 LOG_FATAL("entities.object", "WorldObject::SetMap: obj {} new map {} {}, old map {} {}", (uint32)GetTypeId(), map->GetId(), map->GetInstanceId(), m_currMap->GetId(), m_currMap->GetInstanceId());
2084 ABORT();
2085 }
2086
2087 m_currMap = map;
2088 m_mapId = map->GetId();
2089 m_InstanceId = map->GetInstanceId();
2090
2091 sScriptMgr->OnWorldObjectSetMap(this, map);
2092
2093 if (IsWorldObject())
2095}
void AddWorldObject(WorldObject *obj)
Definition: Map.h:478
uint32 GetId() const
Definition: Map.h:378
uint32 GetInstanceId() const
Definition: Map.h:418

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
557{ m_executed_notifies |= f;}

References m_executed_notifies.

◆ SetPhaseMask()

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

Reimplemented in GameObject, and Unit.

2837{
2838 sScriptMgr->OnBeforeWorldObjectSetPhaseMask(this, m_phaseMask, newPhaseMask, m_useCombinedPhases, update);
2839 m_phaseMask = newPhaseMask;
2840
2841 if (update && IsInWorld())
2843}
virtual void UpdateObjectVisibility(bool forced=true, bool fromUpdate=false)
Definition: Object.cpp:2900

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 ( )
1146{
1147 _updatePositionData = true;
1148
1149 // Calls immediately for charmed units
1150 if (GetTypeId() == TYPEID_UNIT && ToUnit()->IsCharmedOwnedByPlayerOrPlayer())
1152}

References _updatePositionData, Object::GetTypeId(), Object::ToUnit(), TYPEID_UNIT, and UpdatePositionData().

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

◆ SetTransport()

◆ SetVisibilityDistanceOverride()

void WorldObject::SetVisibilityDistanceOverride ( VisibilityDistanceType  type)
1123{
1124 ASSERT(type < VisibilityDistanceType::Max);
1125 if (GetTypeId() == TYPEID_PLAYER)
1126 {
1127 return;
1128 }
1129
1131}
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
Definition: Util.h:614
constexpr float VisibilityDistances[AsUnderlyingType(VisibilityDistanceType::Max)]
Definition: Object.cpp:61

References ASSERT, AsUnderlyingType(), Object::GetTypeId(), m_visibilityDistanceOverride, TYPEID_PLAYER, and VisibilityDistances.

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

◆ SetWorldObject()

void WorldObject::SetWorldObject ( bool  apply)
1067{
1068 if (!IsInWorld())
1069 return;
1070
1071 GetMap()->AddObjectToSwitchList(this, on);
1072}
void AddObjectToSwitchList(WorldObject *obj, bool on)
Definition: Map.cpp:2645

References Map::AddObjectToSwitchList(), GetMap(), and Object::IsInWorld().

Referenced by Unit::AddPlayerToVision(), and Unit::RemovePlayerFromVision().

◆ SetZoneScript()

void WorldObject::SetZoneScript ( )
2297{
2298 if (Map* map = FindMap())
2299 {
2300 if (InstanceMap* instanceMap = map->ToInstanceMap())
2301 m_zoneScript = reinterpret_cast<ZoneScript*>(instanceMap->GetInstanceScript());
2302 else if (!map->IsBattlegroundOrArena())
2303 {
2304 uint32 zoneId = GetZoneId();
2305 if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(zoneId))
2306 m_zoneScript = bf;
2307 else
2308 m_zoneScript = sOutdoorPvPMgr->GetZoneScript(zoneId);
2309 }
2310 }
2311}
#define sBattlefieldMgr
Definition: BattlefieldMgr.h:77
#define sOutdoorPvPMgr
Definition: OutdoorPvPMgr.h:106
Definition: Battlefield.h:205
uint32 GetZoneId() const
Definition: Object.cpp:3075
Definition: Map.h:813
Definition: ZoneScript.h:27

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
2319{
2320 if (Map* map = FindMap())
2321 {
2322 if (TempSummon* summon = map->SummonCreature(entry, pos, properties, duration, (WorldObject*)this, 0, 0, visibleBySummonerOnly))
2323 {
2324 summon->SetTempSummonType(spwtype);
2325 return summon;
2326 }
2327 }
2328
2329 return nullptr;
2330}
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:2318

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

Referenced by Battleground::AddCreature(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::AddPortals(), npc_mograine::npc_mograineAI::AshbringerEvent(), 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(), spell_quest_dragonmaw_race_generic::ChangeDest(), boss_malchezaar::DamageTaken(), 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(), npc_thrall_warchief::npc_thrall_warchiefAI::DoAction(), boss_cthun::DoAction(), npc_costumed_orphan_matron::DoAction(), npc_arthas::npc_arthasAI::DoAction(), boss_palehoof::boss_palehoofAI::DoAction(), boss_bug_trio::DoFinalSpell(), hyjalAI::DoOverrun(), 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(), 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(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::FinishFight(), boss_janalai::boss_janalaiAI::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::spell_rotface_unstable_ooze_explosion_init_SpellScript::HandleCast(), debug_commandscript::HandleDebugSpawnVehicleCommand(), spell_dred_raptor_call::spell_dred_raptor_call_SpellScript::HandleDummy(), spell_q11010_q11102_q11023_choose_loc::HandleDummy(), spell_herald_volzaj_insanity::HandleDummyEffect(), spell_midsummer_torch_quest::HandleEffectApply(), spell_gen_haunted_aura::HandleEffectPeriodic(), spell_dtk_raise_dead::spell_dtk_raise_dead_AuraScript::HandleEffectRemove(), spell_icc_geist_alarm::spell_icc_geist_alarm_SpellScript::HandleEvent(), mmaps_commandscript::HandleMmapPathCommand(), npc_commandscript::HandleNpcAddTempSpawnCommand(), spell_gen_haunted::HandleOnEffectHit(), spell_kaelthas_summon_nether_vapor::spell_kaelthas_summon_nether_vapor_SpellScript::HandleScriptEffect(), spell_q12478_frostmourne_cavern::spell_q12478_frostmourne_cavern_SpellScript::HandleSendEvent(), spell_item_draenic_pale_ale::HandleSummon(), spell_q11322_q11317_the_cleansing::if(), boss_priestess_delrissa::boss_priestess_delrissaAI::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(), boss_naxxramas_misc::boss_naxxramas_miscAI::JustDied(), npc_auriaya_feral_defender::npc_auriaya_feral_defenderAI::JustDied(), boss_kologarn_arms::boss_kologarn_armsAI::JustDied(), boss_exarch_maladaar::boss_exarch_maladaarAI::JustDied(), boss_jarien::JustDied(), boss_sothos::JustDied(), boss_felmyst::boss_felmystAI::JustDied(), npc_webbed_creature::npc_webbed_creatureAI::JustDied(), boss_fathomlord_karathress::boss_fathomlord_karathressAI::JustDied(), boss_malchezaar::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_warbringer_omrogg::boss_warbringer_omroggAI::JustEngagedWith(), boss_onyxia::JustEngagedWith(), boss_ossirian::JustEngagedWith(), boss_novos::boss_novosAI::JustEngagedWith(), boss_halion::boss_halionAI::JustSummoned(), npc_the_scourge_cauldron::npc_the_scourge_cauldronAI::MoveInLineOfSight(), npc_ulduar_snow_mound::npc_ulduar_snow_moundAI::MoveInLineOfSight(), npc_black_knight_graveyard::npc_black_knight_graveyardAI::MoveInLineOfSight(), boss_captain_skarloc::boss_captain_skarlocAI::MovementInform(), npc_twilight_volunteer::MovementInform(), boss_malygos::boss_malygosAI::MovementInform(), boss_vazruden_the_herald::boss_vazruden_the_heraldAI::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_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_ahune_ice_stone::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::spell_xt002_gravity_bomb_aura_AuraScript::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(), spell_hodir_flash_freeze::spell_hodir_flash_freeze_AuraScript::PrepareAuraScript(), spell_hor_gunship_cannon_fire::spell_hor_gunship_cannon_fireAuraScript::PrepareAuraScript(), spell_ignis_scorch::spell_ignis_scorch_AuraScript::PrepareAuraScript(), 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(), instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ProcessEvent(), boss_flame_leviathan::boss_flame_leviathanAI::RadioSay(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::ReorderInstance(), boss_majordomo::boss_majordomoAI::Reset(), npc_image_of_medivh::npc_image_of_medivhAI::Reset(), boss_garaxxas::boss_garaxxasAI::Reset(), npc_kiljaeden_controller::npc_kiljaeden_controllerAI::Reset(), npc_coren_direbrew::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_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(), npc_artruis_the_hearthless::npc_artruis_the_hearthlessAI::Reset(), boss_nexusprince_shaffar::boss_nexusprince_shaffarAI::Reset(), boss_fathomlord_karathress::boss_fathomlord_karathressAI::Reset(), boss_vazruden_the_herald::boss_vazruden_the_heraldAI::Reset(), npc_oscillating_frequency_scanner_master_bunny::npc_oscillating_frequency_scanner_master_bunnyAI::Reset(), npc_firework::npc_fireworkAI::Reset(), boss_emalon::boss_emalonAI::ResetSummons(), hyjalAI::Retreat(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SaveKeepers(), boss_cthun::ScheduleTasks(), boss_svala::boss_svalaAI::SetData(), npc_ulduar_harpoonfirestate::npc_ulduar_harpoonfirestateAI::SetData(), instance_hyjal::instance_mount_hyjal_InstanceMapScript::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::boss_hex_lord_malacrassAI::SpawnAdds(), boss_zuljin::boss_zuljinAI::SpawnAdds(), boss_thorim::boss_thorimAI::SpawnAllNPCs(), boss_thorim::boss_thorimAI::SpawnArenaNPCs(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SpawnClouds(), boss_venoxis::boss_venoxisAI::SpawnCobras(), boss_selin_fireheart::boss_selin_fireheartAI::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_darkmaster_gandling::boss_darkmaster_gandlingAI::SpawnMobsInRoom(), boss_ossirian::SpawnNextCrystal(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SpawnTentacle(), npc_arthas::npc_arthasAI::SpawnTimeRift(), boss_grandmaster_vorpil::boss_grandmaster_vorpilAI::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_yoggsaron_sara::boss_yoggsaron_saraAI::SpawnWeels(), boss_urom::boss_uromAI::SpellHit(), boss_headless_horseman_pumpkin::SpellHit(), boss_gothik::boss_gothikAI::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_koltira_deathweaver::npc_koltira_deathweaverAI::SummonAcolyte(), npc_eris_hevenfire::npc_eris_hevenfireAI::SummonArchers(), npc_grimstone::npc_grimstoneAI::SummonBoss(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonBroodling(), boss_anzu::SummonBroods(), boss_leotheras_the_blind::boss_leotheras_the_blindAI::SummonChannelers(), boss_kelidan_the_breaker::boss_kelidan_the_breakerAI::SummonChannelers(), hyjalAI::SummonCreature(), SummonCreature(), SummonCreatureGroup(), PassengerController::SummonCreatures(), brann_bronzebeard::brann_bronzebeardAI::SummonCreatures(), pyrewood_ambush::pyrewood_ambushAI::SummonCreatureWithRandomTarget(), SummonCroneIfReady(), boss_anubrekhan::boss_anubrekhanAI::SummonCryptGuards(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::SummonDeathOrbs(), boss_archimonde::boss_archimondeAI::SummonDoomfire(), boss_sjonnir::boss_sjonnirAI::SummonDwarfes(), boss_cthun::SummonedCreatureDies(), npc_kiljaeden_controller::npc_kiljaeden_controllerAI::SummonedCreatureDies(), boss_jedoga_shadowseeker::SummonedCreatureDies(), 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(), instance_zulaman::instance_zulaman_InstanceMapScript::SummonHostage(), boss_yoggsaron::boss_yoggsaronAI::SummonImmortalGuardian(), npc_invis_infernal_caster::npc_invis_infernal_casterAI::SummonInfernal(), boss_sartharion::boss_sartharionAI::SummonLavaWaves(), boss_mekgineer_steamrigger::SummonMechanics(), boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI::SummonMinions(), 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::boss_netherspiteAI::SummonPortals(), boss_grandmaster_vorpil::boss_grandmaster_vorpilAI::summonPortals(), npc_coren_direbrew::SummonSister(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonSpiders(), boss_ambassador_flamelash::boss_ambassador_flamelashAI::SummonSpirits(), boss_sartharion::boss_sartharionAI::SummonStartingTriggers(), go_tadpole_cage::go_tadpole_cageAI::SummonTadpoles(), boss_dorothee::boss_dorotheeAI::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_balinda::boss_balindaAI::UpdateAI(), 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(), boss_shade_of_aran::boss_aranAI::UpdateAI(), boss_julianne::boss_julianneAI::UpdateAI(), npc_scarlet_cannon::npc_scarlet_cannonAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), boss_sacrolash::boss_sacrolashAI::UpdateAI(), boss_kalecgos::boss_kalecgosAI::UpdateAI(), boss_kiljaeden::boss_kiljaedenAI::UpdateAI(), npc_kalecgos_kj::npc_kalecgos_kjAI::UpdateAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), boss_akilzon::boss_akilzonAI::UpdateAI(), boss_janalai::boss_janalaiAI::UpdateAI(), boss_jeklik::UpdateAI(), npc_dark_iron_attack_generator::UpdateAI(), npc_dark_iron_attack_mole_machine::UpdateAI(), npc_pilgrims_bounty_chair::UpdateAI(), boss_archimonde::boss_archimondeAI::UpdateAI(), npc_giant_infernal::npc_giant_infernalAI::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(), 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_anubrekhan::boss_anubrekhanAI::UpdateAI(), boss_gluth::boss_gluthAI::UpdateAI(), boss_kelthuzad::boss_kelthuzadAI::UpdateAI(), boss_maexxna::boss_maexxnaAI::UpdateAI(), boss_sapphiron::boss_sapphironAI::UpdateAI(), boss_naxxramas_misc::boss_naxxramas_miscAI::UpdateAI(), boss_malygos::boss_malygosAI::UpdateAI(), boss_ormorok::boss_ormorokAI::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(), boss_keleseth::boss_kelesethAI::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(), boss_exarch_maladaar::boss_exarch_maladaarAI::UpdateAI(), boss_shirrak_the_dead_watcher::boss_shirrak_the_dead_watcherAI::UpdateAI(), boss_illidan_stormrage::boss_illidan_stormrageAI::UpdateAI(), boss_the_lurker_below::boss_the_lurker_belowAI::UpdateAI(), boss_warchief_kargath_bladefist::boss_warchief_kargath_bladefistAI::UpdateAI(), npc_warden_mellichar::npc_warden_mellicharAI::UpdateAI(), boss_alar::boss_alarAI::UpdateAI(), boss_high_astromancer_solarian::boss_high_astromancer_solarianAI::UpdateAI(), boss_kaelthas::boss_kaelthasAI::UpdateAI(), boss_mechano_lord_capacitus::boss_mechano_lord_capacitusAI::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_koltira_deathweaver::npc_koltira_deathweaverAI::UpdateAI(), npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI::UpdateEscortAI(), brann_bronzebeard::brann_bronzebeardAI::UpdateEscortAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), npc_akama_illidan::npc_akama_illidanAI::UpdateEscortAI(), boss_netherspite::boss_netherspiteAI::UpdatePortals(), 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 
)
2254{
2255 if (!x && !y && !z)
2256 {
2257 GetClosePoint(x, y, z, GetObjectSize());
2258 ang = GetOrientation();
2259 }
2260 Position pos;
2261 pos.Relocate(x, y, z, ang);
2262 return SummonCreature(id, pos, spwtype, despwtime, 0, properties, visibleBySummonerOnly);
2263}
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:2662

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.
2396{
2397 ASSERT((GetTypeId() == TYPEID_GAMEOBJECT || GetTypeId() == TYPEID_UNIT) && "Only GOs and creatures can summon npc groups!");
2398
2399 std::vector<TempSummonData> const* data = sObjectMgr->GetSummonGroup(GetEntry(), GetTypeId() == TYPEID_GAMEOBJECT ? SUMMONER_TYPE_GAMEOBJECT : SUMMONER_TYPE_CREATURE, group);
2400 if (!data)
2401 return;
2402
2403 for (std::vector<TempSummonData>::const_iterator itr = data->begin(); itr != data->end(); ++itr)
2404 if (TempSummon* summon = SummonCreature(itr->entry, itr->pos, itr->type, itr->time))
2405 if (list)
2406 list->push_back(summon);
2407}
@ SUMMONER_TYPE_CREATURE
Definition: TemporarySummon.h:25
@ SUMMONER_TYPE_GAMEOBJECT
Definition: TemporarySummon.h:26
#define sObjectMgr
Definition: ObjectMgr.h:1640

References ASSERT, Object::GetEntry(), Object::GetTypeId(), sObjectMgr, SummonCreature(), SUMMONER_TYPE_CREATURE, SUMMONER_TYPE_GAMEOBJECT, TYPEID_GAMEOBJECT, and TYPEID_UNIT.

Referenced by boss_eye_of_cthun::DoAction(), boss_majordomo::boss_majordomoAI::InitializeAI(), boss_taldaram::InitializeAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JustRespawned(), 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(), npc_akama_shade::npc_akamaAI::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 
)
2333{
2334 if (!IsInWorld())
2335 return nullptr;
2336
2337 GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(entry);
2338 if (!goinfo)
2339 {
2340 LOG_ERROR("sql.sql", "Gameobject template {} not found in database!", entry);
2341 return nullptr;
2342 }
2343
2344 Map* map = GetMap();
2345 GameObject* go = sObjectMgr->IsGameObjectStaticTransport(entry) ? new StaticTransport() : new GameObject();
2346 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), entry, map, GetPhaseMask(), x, y, z, ang, G3D::Quat(rotation0, rotation1, rotation2, rotation3), 100, GO_STATE_READY))
2347 {
2348 delete go;
2349 return nullptr;
2350 }
2351
2352 go->SetRespawnTime(respawnTime);
2353
2354 // Xinef: if gameobject is temporary, set custom spellid
2355 if (respawnTime)
2356 go->SetSpellId(1);
2357
2358 if (GetTypeId() == TYPEID_PLAYER || (GetTypeId() == TYPEID_UNIT && summonType == GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)) //not sure how to handle this
2359 ToUnit()->AddGameObject(go);
2360 else
2361 go->SetSpawnedByDefault(false);
2362
2363 map->AddToMap(go, checkTransport);
2364 return go;
2365}
@ GO_STATE_READY
Definition: GameObjectData.h:691
@ GO_SUMMON_TIMED_OR_CORPSE_DESPAWN
Definition: Object.h:70
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:248
void SetRespawnTime(int32 respawn)
Definition: GameObject.cpp:1301
void SetSpawnedByDefault(bool b)
Definition: GameObject.h:198
void SetSpellId(uint32 id)
Definition: GameObject.h:178
Definition: GameObjectData.h:32
Definition: Transport.h:112
void AddGameObject(GameObject *gameObj)
Definition: Unit.cpp:6091
ObjectGuid::LowType GenerateLowGuid()
Definition: Map.h:632
bool AddToMap(T *, bool checkTransport=false)
Definition: Map.cpp:557

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

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_medivh_bm::DoAction(), hyjalAI::DoOverrun(), 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::spell_gordunni_trap_SpellScript::HandleDummy(), spell_item_crystal_prison_dummy_dnd::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(), npc_artruis_the_hearthless::npc_artruis_the_hearthlessAI::JustDied(), boss_ahune::boss_ahuneAI::JustDied(), boss_four_horsemen::boss_four_horsemenAI::JustDied(), npc_midsummer_bonfire::npc_midsummer_bonfire(), 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::npc_crystal_spikeAI::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(), hyjalAI::SpawnVeins(), 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(), hyjalAI::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 
)
2368{
2369 TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
2370 Creature* summon = SummonCreature(WORLD_TRIGGER, x, y, z, ang, summonType, duration);
2371 if (!summon)
2372 return nullptr;
2373
2374 //summon->SetName(GetName());
2375 if (setLevel && (GetTypeId() == TYPEID_PLAYER || GetTypeId() == TYPEID_UNIT))
2376 {
2377 summon->SetFaction(((Unit*)this)->GetFaction());
2378 summon->SetLevel(((Unit*)this)->GetLevel());
2379 }
2380
2381 // Xinef: correctly set phase mask in case of gameobjects
2382 summon->SetPhaseMask(GetPhaseMask(), false);
2383
2384 if (GetAI)
2385 summon->AIM_Initialize(GetAI(summon));
2386 return summon;
2387}
TempSummonType
Definition: Object.h:41
@ TEMPSUMMON_DEAD_DESPAWN
Definition: Object.h:48
@ TEMPSUMMON_TIMED_DESPAWN
Definition: Object.h:44
bool AIM_Initialize(CreatureAI *ai=nullptr)
Definition: Creature.cpp:1061
void SetFaction(uint32 faction)
Definition: Unit.cpp:10029
void SetLevel(uint8 lvl, bool showLevelChange=true)
Definition: Unit.cpp:15352
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition: Unit.cpp:19217

References Creature::AIM_Initialize(), GetPhaseMask(), Object::GetTypeId(), Unit::SetFaction(), Unit::SetLevel(), Unit::SetPhaseMask(), SummonCreature(), TEMPSUMMON_DEAD_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, TYPEID_PLAYER, TYPEID_UNIT, and WORLD_TRIGGER.

Referenced by GameObject::CastSpell(), boss_kiljaeden::boss_kiljaedenAI::EmpowerOrb(), spell_q10612_10613_the_fel_and_the_furious::spell_q10612_10613_the_fel_and_the_furious_SpellScript::HandleScriptEffect(), boss_akilzon::boss_akilzonAI::HandleStormSequence(), go_wg_vehicle_teleporter::go_wg_vehicle_teleporterAI::IsValidVehicle(), boss_kologarn_arms::boss_kologarn_armsAI::JustDied(), SmartScript::ProcessAction(), Map::ScriptsProcess(), boss_akilzon::boss_akilzonAI::UpdateAI(), 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  time_diff)
virtual

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

1062{
1063 sScriptMgr->OnWorldObjectUpdate(this, time_diff);
1064}

References sScriptMgr.

◆ UpdateAllowedPositionZ()

void WorldObject::UpdateAllowedPositionZ ( float  x,
float  y,
float &  z,
float *  groundZ = nullptr 
) const
1555{
1556 if (GetTransport())
1557 {
1558 if (groundZ)
1559 *groundZ = z;
1560
1561 return;
1562 }
1563
1564 if (Unit const* unit = ToUnit())
1565 {
1566 if (!unit->CanFly())
1567 {
1568 Creature const* c = unit->ToCreature();
1569 bool canSwim = c ? c->CanSwim() : true;
1570 float ground_z = z;
1571 float max_z;
1572 if (canSwim)
1573 max_z = GetMapWaterOrGroundLevel(x, y, z, &ground_z);
1574 else
1575 max_z = ground_z = GetMapHeight(x, y, z);
1576
1577 if (max_z > INVALID_HEIGHT)
1578 {
1579 if (canSwim && unit->GetMap()->IsInWater(unit->GetPhaseMask(), x, y, max_z - Z_OFFSET_FIND_HEIGHT, unit->GetCollisionHeight()))
1580 {
1581 // do not allow creatures to walk on
1582 // water level while swimming
1583 max_z = std::max(max_z - GetMinHeightInWater(), ground_z);
1584 }
1585 else
1586 {
1587 // hovering units cannot go below their hover height
1588 float hoverOffset = unit->GetHoverHeight();
1589 max_z += hoverOffset;
1590 ground_z += hoverOffset;
1591 }
1592
1593 if (z > max_z)
1594 z = max_z;
1595 else if (z < ground_z)
1596 z = ground_z;
1597 }
1598
1599 if (groundZ)
1600 *groundZ = ground_z;
1601 }
1602 else
1603 {
1604 float ground_z = GetMapHeight(x, y, z) + unit->GetHoverHeight();
1605 if (z < ground_z)
1606 z = ground_z;
1607
1608 if (groundZ)
1609 *groundZ = ground_z;
1610 }
1611 }
1612 else
1613 {
1614 float ground_z = GetMapHeight(x, y, z);
1615 if (ground_z > INVALID_HEIGHT)
1616 z = ground_z;
1617
1618 if (groundZ)
1619 *groundZ = ground_z;
1620 }
1621}
bool CanSwim() const override
This method check the current flag/status of a creature and its inhabit type.
Definition: Creature.cpp:3147
float GetMapWaterOrGroundLevel(float x, float y, float z, float *ground=nullptr) const
Definition: Object.cpp:3057
float GetMinHeightInWater() const
Get the minimum height of a object that should be in water to start floating/swim.
Definition: Object.cpp:1543

References Unit::CanFly(), Creature::CanSwim(), Unit::GetCollisionHeight(), Unit::GetHoverHeight(), GetMap(), GetMapHeight(), GetMapWaterOrGroundLevel(), GetMinHeightInWater(), GetPhaseMask(), GetTransport(), INVALID_HEIGHT, Map::IsInWater(), 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::spell_valanar_kinetic_bomb_summon_SpellScript::SelectDest(), Unit::SetHover(), and WaypointMovementGenerator< Creature >::StartMove().

◆ UpdateGroundPositionZ()

◆ UpdateObjectVisibility()

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

Reimplemented in Player, and Unit.

2901{
2902 //updates object's visibility for nearby players
2903 Acore::VisibleChangesNotifier notifier(*this);
2905}
Definition: GridNotifiers.h:62

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

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

◆ UpdatePositionData()

Member Data Documentation

◆ _allowedLooters

◆ _areaId

uint32 WorldObject::_areaId
protected

◆ _floorZ

float WorldObject::_floorZ
protected

◆ _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_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

◆ 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::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::spell_igb_teleport_to_enemy_ship_SpellScript::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