77 SF_LOG_FATAL(
"misc",
"Object::~Object Corpse guid=" UI64FMTD ", type=%d, entry=%u deleted but still in map!!",
142 std::ostringstream ss;
143 for (
uint16 index = 0; index < size; ++index)
246 if (unit->GetVictim())
250 buf <<
uint8(updateType);
365 bool hasFallData =
false;
366 bool hasFallDirection =
false;
367 bool hasSpline =
false;
368 bool hasPitch =
false;
369 bool hasSplineElevation =
false;
370 bool hasUnitTransport =
false;
373 uint32 movementFlagsExtra;
374 std::vector<uint32>
const* pauseTimes = NULL;
377 pauseTimes = go->GetPauseTimes();
384 data->
WriteBits(pauseTimes ? pauseTimes->size() : 0, 22);
424 if (hasUnitTransport)
456 data->
WriteBit(!hasSplineElevation);
466 data->
WriteBit(!movementFlagsExtra);
471 if (movementFlagsExtra)
554 if (pauseTimes && !pauseTimes->empty())
555 data->
append(pauseTimes->data(), pauseTimes->size());
564 if (hasUnitTransport)
606 if (hasFallDirection)
625 if (hasSplineElevation)
767 *data << float(unit->GetPositionZMinusOffset());
828 data->
append(fieldBuffer);
851 uint32 dynamicTabMask = 0;
852 std::vector<uint32> dynamicFieldsMask;
856 dynamicFieldsMask[i] = 0;
860 for (
int index = 0; index < 32; index++)
874 dynamicTabMask |= 1 << i;
875 dynamicFieldsMask[i] |= 1 << index;
880 *data <<
uint8(
bool(dynamicTabMask) ? 1 : 0);
883 *data <<
uint32(dynamicTabMask);
887 if (dynamicTabMask & (1 << i))
890 for (
int index = 31; index >= 0; --index)
892 if (dynamicFieldsMask[i] & (1 << index))
894 arraySize =
uint16(index + 1);
900 if (isCreate && arraySize)
901 *data <<
uint8(0x80 | 1) << arraySize;
905 *data <<
uint32(dynamicFieldsMask[i]);
907 for (
int index = 0; index < 32; index++)
909 if (dynamicFieldsMask[i] & (1 << index))
934 UpdateDataMapType::iterator iter = data_map.find(player);
936 if (iter == data_map.end())
938 std::pair<UpdateDataMapType::iterator, bool> p = data_map.insert(UpdateDataMapType::value_type(player,
UpdateData(player->
GetMapId())));
958 if (((
Item*)
this)->GetOwnerGUID() == target->
GetGUID())
1011 if (tokens.
size() != count)
1014 for (
uint32 index = 0; index < count; ++index)
1164 SF_LOG_ERROR(
"misc",
"Object::SetByteValue: wrong offset %u", offset);
1188 SF_LOG_ERROR(
"misc",
"Object::SetUInt16Value: wrong offset %u", offset);
1225 cur += (apply ? val : -val);
1234 cur += (apply ? val : -val);
1241 cur += (apply ? val : -val);
1255 cur += (apply ? val : -val);
1265 uint32 newval = oldval | newFlag;
1267 if (oldval != newval)
1286 uint32 newval = oldval & ~oldFlag;
1288 if (oldval != newval)
1328 SF_LOG_ERROR(
"misc",
"Object::SetByteFlag: wrong offset %u", offset);
1351 SF_LOG_ERROR(
"misc",
"Object::RemoveByteFlag: wrong offset %u", offset);
1386 uint64 newval = oldval | newFlag;
1393 uint64 newval = oldval & ~oldFlag;
1443 std::stringstream sstr;
1451 buf >> x >> y >> z >> o;
1475 buf << x << y << z << o;
1507 SF_LOG_INFO(
"misc",
"j_sinAngle: %f j_cosAngle: %f j_xyspeed: %f",
jump.sinAngle,
jump.cosAngle,
jump.xyspeed);
1622 float dist = dz - sizefactor;
1623 return (dist > 0 ? dist : 0);
1629 float maxdist = dist2compare + sizefactor;
1635 float disttsq = dtx * dtx + dty * dty;
1639 disttsq += dtz * dtz;
1641 return disttsq < (maxdist * maxdist);
1646 float distsq = dx * dx + dy * dy;
1653 return distsq < maxdist * maxdist;
1669 return d > 0.0f ? d : 0.0f;
1675 return d > 0.0f ? d : 0.0f;
1681 return d > 0.0f ? d : 0.0f;
1687 return d > 0.0f ? d : 0.0f;
1693 return d > 0.0f ? d : 0.0f;
1756 float distsq1 = dx1 * dx1 + dy1 * dy1;
1760 distsq1 += dz1 * dz1;
1765 float distsq2 = dx2 * dx2 + dy2 * dy2;
1769 distsq2 += dz2 * dz2;
1772 return distsq1 < distsq2;
1779 float distsq = dx * dx + dy * dy;
1789 if (minRange > 0.0f)
1791 float mindist = minRange + sizefactor;
1792 if (distsq < mindist * mindist)
1796 float maxdist = maxRange + sizefactor;
1797 return distsq < maxdist * maxdist;
1804 float distsq = dx * dx + dy * dy;
1809 if (minRange > 0.0f)
1811 float mindist = minRange + sizefactor;
1812 if (distsq < mindist * mindist)
1816 float maxdist = maxRange + sizefactor;
1817 return distsq < maxdist * maxdist;
1825 float distsq = dx * dx + dy * dy + dz * dz;
1830 if (minRange > 0.0f)
1832 float mindist = minRange + sizefactor;
1833 if (distsq < mindist * mindist)
1837 float maxdist = maxRange + sizefactor;
1838 return distsq < maxdist * maxdist;
1874 float ang = atan2(dy, dx);
1875 ang = (ang >= 0) ? ang : 2 *
M_PI + ang;
1884 if (fabs(dx) < 0.001f && fabs(dy) < 0.001f)
1886 float angle = (float)
rand_norm() *
static_cast<float>(2 *
M_PI);
1887 vcos = std::cos(angle);
1888 vsin = std::sin(angle);
1892 float dist = sqrt((dx * dx) + (dy * dy));
1913 angle -= 2.0f *
M_PI;
1915 float lborder = -1 * (arc / border);
1916 float rborder = (arc / border);
1917 return ((angle >= lborder) && (angle <= rborder));
1934 float angle = obj1->
GetAngle(obj2);
1959 float angle = (float)
rand_norm() *
static_cast<float>(2 *
M_PI);
1960 float new_dist = (float)
rand_norm() *
static_cast<float>(distance);
1962 rand_x = pos.
m_positionX + new_dist * std::cos(angle);
1963 rand_y = pos.
m_positionY + new_dist * std::sin(angle);
1997 float max_z = canSwim
2004 else if (z < ground_z)
2027 else if (z < ground_z)
2065 return thisCreature->m_SightDistance;
2086 else if (
ToPlayer()->IsInCinematic())
2116 bool corpseVisibility =
false;
2119 bool corpseCheck =
false;
2122 if (thisPlayer->isDead() && thisPlayer->GetHealth() > 0 &&
2125 if (
Corpse* corpse = thisPlayer->GetCorpse())
2128 if (corpse->IsWithinDist(thisPlayer,
GetSightRange(obj),
false))
2130 corpseVisibility =
true;
2135 bool isWithinSight =
false;
2138 float cinematicX, cinematicY, cinematicZ;
2139 if (player->GetCinematicPosition(cinematicX, cinematicY, cinematicZ))
2141 else if (
WorldObject const* viewpoint = player->GetViewpoint())
2142 isWithinSight = viewpoint->IsWithinDist(obj,
GetSightRange(obj),
false);
2149 if (!corpseCheck && !isWithinSight)
2171 if (thisPlayer->GetTeam() != objPlayer->GetTeam() || !thisPlayer->IsGroupVisibleFor(objPlayer))
2226 if (!(mask & (1 << i)))
2233 if (ownInvisibilityDetectValue < objInvisibilityValue)
2250 float combatReach = 0.0f;
2256 if (distance < combatReach)
2272 int32 detectionValue = 30;
2283 detectionValue -=
int32(owner->getLevelForTarget(
this) - 1) * 5;
2288 float visibilityRange = float(detectionValue) * 0.3f + combatReach;
2293 if (distance > visibilityRange)
2478 char const* text =
sObjectMgr->GetSkyFireString(textId, loc_idx);
2584 switch (properties->
Type)
2604 if (properties->
Flags & 512)
2616 std::set<uint32> phases;
2631 summon =
new TempSummon(properties, summoner,
false);
2634 summon =
new Guardian(properties, summoner,
false);
2637 summon =
new Puppet(properties, summoner);
2640 summon =
new Totem(properties, summoner);
2643 summon =
new Minion(properties, summoner,
false);
2653 for (
auto phaseId : phases)
2654 summon->
SetPhased(phaseId,
false,
true);
2681 for (std::vector<TempSummonData>::const_iterator itr = data->begin(); itr != data->end(); ++itr)
2684 list->push_back(summon);
2691 if (map->IsInstance())
2709 summon->SetTempSummonType(spwtype);
2737 SF_LOG_ERROR(
"sql.sql",
"Gameobject template %u not found in database!", entry);
2743 if (!go->
Create(
sObjectMgr->GenerateLowGuid(
HIGHGUID_GAMEOBJECT), entry, map, x, y, z, ang, rotation0, rotation1, rotation2, rotation3, 100,
GOState::GO_STATE_READY))
2795 for (std::vector<TempSummonData>::const_iterator itr = data->begin(); itr != data->end(); ++itr)
2798 list->push_back(summon);
2838 cell.
Visit(pair, visitor, *(this->
GetMap()), *
this, maxSearchRange);
2851 cell.
Visit(pair, visitor, *(this->
GetMap()), *
this, maxSearchRange);
3108 float destx, desty, destz, ground, floor;
3115 SF_LOG_FATAL(
"misc",
"WorldObject::MovePosition: Object (TypeId: %u Entry: %u GUID: %u) has invalid coordinates X: %f and Y: %f were passed!",
3124 float step = dist / 10.0f;
3126 for (
uint8 j = 0; j < 10; ++j)
3131 destx -= step * std::cos(angle);
3132 desty -= step * std::sin(angle);
3154 float destx, desty, destz, ground, floor;
3162 SF_LOG_FATAL(
"misc",
"WorldObject::MovePositionToFirstCollision invalid coordinates X: %f and Y: %f were passed!", destx, desty);
3170 bool col =
VMAP::VMapFactory::createOrGetVMapManager()->
getObjectHitPos(
GetMapId(), pos.
m_positionX, pos.
m_positionY, pos.
m_positionZ + 0.5f, destx, desty, destz + 0.5f, destx, desty, destz, -0.5f);
3182 col =
GetMap()->
getObjectHitPos(
GetPhaseMask(), pos.
m_positionX, pos.
m_positionY, pos.
m_positionZ + 0.5f, destx, desty, destz + 0.5f, destx, desty, destz, -0.5f);
3192 float step = dist / 10.0f;
3194 for (
uint8 j = 0; j < 10; ++j)
3199 destx -= step * std::cos(angle);
3200 desty -= step * std::sin(angle);
3236 if (std::vector<PhaseInfoStruct>
const* swaps =
sObjectMgr->GetPhaseTerrainSwaps(phaseId))
3245 if (
sConditionMgr->IsObjectMeetToConditions(
this, swap.Conditions))
3252 if (std::vector<PhaseInfoStruct>
const* mapSwaps =
sObjectMgr->GetDefaultTerrainSwaps(
GetMapId()))
3254 if (
sConditionMgr->IsObjectMeetToConditions(
this, swap.Conditions))
3270 for (TerrainPhaseInfo::const_iterator itr = defaults.begin(); itr != defaults.end(); ++itr)
3272 if (std::vector<uint32>
const* uiMapSwaps =
sObjectMgr->GetTerrainWorldMaps(swap.
id))
3274 for (
uint32 worldMapAreaId : *uiMapSwaps)
3279 if (std::vector<PhaseInfoStruct>
const* swaps =
sObjectMgr->GetPhaseTerrainSwaps(phaseId))
3281 if (std::vector<uint32>
const* uiMapSwaps =
sObjectMgr->GetTerrainWorldMaps(swap.
id))
3283 for (
uint32 worldMapAreaId : *uiMapSwaps)
3289 bool updateNeeded =
false;
3291 for (PhaseInfo::const_iterator itr = phases.begin(); itr != phases.end(); ++itr)
3293 uint32 areaId = itr->first;
3302 if (!updateNeeded && up)
3303 updateNeeded =
true;
3309 if (!updateNeeded && up)
3310 updateNeeded =
true;
3320 for (Unit::AuraEffectList::const_iterator itr = auraPhaseList.begin(); itr != auraPhaseList.end(); ++itr)
3323 bool up =
SetPhased(phase,
false,
true);
3324 if (!updateNeeded && up)
3325 updateNeeded =
true;
3328 for (Unit::AuraEffectList::const_iterator itr = auraPhaseGroupList.begin(); itr != auraPhaseGroupList.end(); ++itr)
3333 for (
uint32 phase : phases)
3335 if (!updateNeeded && up)
3336 updateNeeded =
true;
3365 if (std::vector<PhaseInfoStruct>
const* phases =
sObjectMgr->GetPhasesForArea(
GetAreaId()))
3368 if (
sConditionMgr->IsObjectMeetToConditions(
this, phase.Conditions))
3435 data <<
uint32(sound_id);
3445 data <<
uint32(sound_id);
3458 std::list<Player*> targets;
3462 for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter)
3464 Player* player = (*iter);
3498 source = iter->GetSource();
3516 source = iter->GetSource();
3531 source = iter->GetSource();
std::set< uint32 > const & GetPhasesForGroup(uint32 group)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
static constexpr TypeID TYPEID_OBJECT
GridRefManager< DynamicObject > DynamicObjectMapType
GridRefManager< Creature > CreatureMapType
GridRefManager< Player > PlayerMapType
TypeMapContainer< AllWorldObjectTypes > WorldTypeMapContainer
TypeMapContainer< AllGridObjectTypes > GridTypeMapContainer
CoordPair< TOTAL_NUMBER_OF_CELLS_PER_MAP > CellCoord
#define SF_LOG_FATAL(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
TypeID GuidHigh2TypeId(uint32 guid_hi)
ByteBuffer & operator>>(ByteBuffer &buf, Position::PositionXYZOStreamer const &streamer)
ByteBuffer & operator<<(ByteBuffer &buf, Position::PositionXYZStreamer const &streamer)
@ NUM_CLIENT_OBJECT_TYPES
#define MAX_VISIBILITY_DISTANCE
UNORDERED_MAP< Player *, UpdateData > UpdateDataMapType
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_DEAD_DESPAWN
#define DEFAULT_WORLD_OBJECT_SIZE
#define DEFAULT_VISIBILITY_INSTANCE
uint32 PAIR64_LOPART(uint64 x)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
uint32 PAIR64_HIPART(uint64 x)
bool IS_PLAYER_GUID(uint64 guid)
UNORDERED_MAP< uint32, std::vector< PhaseInfoStruct > > PhaseInfo
UNORDERED_MAP< uint32, std::vector< PhaseInfoStruct > > TerrainPhaseInfo
@ SERVERSIDE_VISIBILITY_GM
@ SERVERSIDE_VISIBILITY_GHOST
@ GAMEOBJECT_TYPE_SPELL_FOCUS
@ GAMEOBJECT_TYPE_DUEL_ARBITER
@ GAMEOBJECT_TYPE_TRANSPORT
@ GAMEOBJECT_TYPE_FLAGDROP
@ GAMEOBJECT_TYPE_FLAGSTAND
@ CHAT_MSG_RAID_BOSS_WHISPER
@ CHAT_MSG_RAID_BOSS_EMOTE
@ CHAT_MSG_MONSTER_WHISPER
@ TOTAL_INVISIBILITY_TYPES
@ UNIT_DYNFLAG_SPECIALINFO
@ SUMMON_CATEGORY_VEHICLE
@ SPELL_AURA_DETECT_STEALTH
@ SUMMONER_TYPE_GAMEOBJECT
@ MOVEMENTFLAG_MASK_CREATURE_ALLOWED
@ MOVEMENTFLAG_SPLINE_ELEVATION
#define MAX_PLAYER_STEALTH_DETECT_RANGE
@ MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING
@ MOVEMENTFLAG2_INTERPOLATED_MOVEMENT
@ UPDATETYPE_CREATE_OBJECT
@ UPDATETYPE_CREATE_OBJECT2
@ UPDATEFLAG_STATIONARY_POSITION
@ UPDATEFLAG_GO_TRANSPORT_POSITION
uint32 UnitUpdateFieldFlags[PLAYER_END]
uint32 CorpseUpdateFieldFlags[CORPSE_END]
uint32 AreaTriggerUpdateFieldFlags[AREATRIGGER_END]
uint32 ItemUpdateFieldFlags[CONTAINER_END]
uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END]
uint32 DynamicObjectUpdateFieldFlags[DYNAMICOBJECT_END]
@ UF_FLAG_VIEWER_DEPENDENT
@ UNIT_FIELD_COMBAT_REACH
@ UNIT_FIELD_CREATED_BY_SPELL
@ OBJECT_FIELD_DYNAMIC_FLAGS
@ PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS
@ PLAYER_DYNAMIC_FIELD_RESERACH_SITE
@ PLAYER_FIELD_FARSIGHT_OBJECT
void ApplyPercentModFloatVar(float &var, float val, bool apply)
void WriteGuidBytes(const ObjectGuid &guid, Offsets... offsets)
bool WriteBit(uint32 bit)
void WriteGuidMask(const ObjectGuid &guid, Offsets... offsets)
void WriteBits(T value, size_t bits)
void WriteByteSeq(uint8 b)
static size_t BuildChatPacket(WorldPacket &data, ChatMsg chatType, Language language, ObjectGuid senderGUID, ObjectGuid receiverGUID, std::string const &message, uint8 chatTag, std::string const &senderName="", std::string const &receiverName="", uint32 achievementId=0, bool gmMessage=false, std::string const &channelName="", std::string const &addonPrefix="")
void SetHomePosition(float x, float y, float z, float o)
bool AIM_Initialize(CreatureAI *ai=NULL)
bool Create(uint32 guidlow, Map *map, uint32 Entry, uint32 vehId, uint32 team, float x, float y, float z, float ang, const CreatureData *data=NULL)
uint64 GetCasterGUID() const
T_VALUES GetValue(FLAG_TYPE flag) const
GameObjectValue const * GetGOValue() const
bool Create(uint32 guidlow, uint32 name_id, Map *map, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress, GOState go_state, uint32 artKit=0)
void SetRespawnTime(int32 respawn)
void SetSpawnedByDefault(bool b)
GameobjectTypes GetGoType() const
bool SetPhased(uint32 id, bool update, bool apply) OVERRIDE
Transport * ToTransport()
LinkedListHead::Iterator< GridReference< Player > > iterator
bool isInLineOfSight(float x1, float y1, float z1, float x2, float y2, float z2, uint32 phasemask) const
bool IsBattlegroundOrArena() const
void RemoveFromActive(T *obj)
void AddObjectToRemoveList(WorldObject *obj)
uint32 GetZoneId(float x, float y, float z) const
float GetHeight(float x, float y, float z, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) const
bool getObjectHitPos(uint32 phasemask, float x1, float y1, float z1, float x2, float y2, float z2, float &rx, float &ry, float &rz, float modifyDist)
uint32 GetAreaId(float x, float y, float z) const
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=NULL)
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=NULL, uint32 duration=0, Unit *summoner=NULL, uint32 spellId=0, uint32 vehId=0)
float GetWaterOrGroundLevel(float x, float y, float z, float *ground=NULL, bool swim=false) const
float GetVisibilityRange() const
void GetZoneAndAreaId(uint32 &zoneid, uint32 &areaid, float x, float y, float z) const
uint32 GetInstanceId() const
void AddObjectToSwitchList(WorldObject *obj, bool on)
static void WriteCreateData(MoveSpline const &moveSpline, ByteBuffer &data)
static void WriteFacingTargetPart(MoveSpline const &moveSpline, ByteBuffer &data)
static void WriteCreateBits(MoveSpline const &moveSpline, ByteBuffer &data)
static Player * FindPlayer(uint64)
void ApplyModSignedFloatValue(uint16 index, float val, bool apply)
void UpdateUInt32Value(uint16 index, uint32 value)
void ToggleFlag64(uint16 index, uint64 flag)
uint8 GetByteValue(uint16 index, uint8 offset) const
void SetByteValue(uint16 index, uint8 offset, uint8 value)
void BuildFieldsUpdate(Player *, UpdateDataMapType &) const
ObjectGuid GetObjectGUID() const
int32 GetInt32Value(uint16 index) const
void ApplyModFlag64(uint16 index, uint64 flag, bool apply)
void SetInt32Value(uint16 index, int32 value)
DynamicObject * ToDynObject()
void SetUInt16Value(uint16 index, uint8 offset, uint16 value)
uint32 GetUInt32Value(uint16 index) const
void _LoadIntoDataField(std::string const &data, uint32 startOffset, uint32 count)
uint16 GetUInt16Value(uint16 index, uint8 offset) const
virtual void DestroyForPlayer(Player *target, bool onDeath=false) const
uint32 GetGUIDLow() const
virtual void BuildValuesUpdate(uint8 updatetype, ByteBuffer *data, Player *target) const
void ApplyModInt32Value(uint16 index, int32 val, bool apply)
uint32 GetUpdateFieldData(Player const *target, uint32 *&flags) const
std::vector< uint32 * > m_dynamicTab
void ApplyModPositiveFloatValue(uint16 index, float val, bool apply)
void SendDestroyObject(Player *target, ObjectGuid Guid, bool onDeath=false) const
virtual void BuildCreateUpdateBlockForPlayer(UpdateData *data, Player *target) const
void _Create(uint32 guidlow, uint32 entry, HighGuid guidhigh)
bool RemoveUInt64Value(uint16 index, uint64 value)
bool isType(uint16 mask) const
void BuildMovementUpdate(ByteBuffer *data, uint16 flags) const
void SetFlag(uint16 index, uint32 newFlag)
void RemoveFlag(uint16 index, uint32 oldFlag)
void ApplyModUInt32Value(uint16 index, int32 val, bool apply)
float GetFloatValue(uint16 index) const
void ApplyModFlag(uint16 index, uint32 flag, bool apply)
void ClearUpdateMask(bool remove)
uint32 GetDynamicUInt32Value(uint32 tab, uint16 index) const
void BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer *data, Player *target) const
uint16 m_fieldNotifyFlags
GameObject * ToGameObject()
void SetFlag64(uint16 index, uint64 newFlag)
const ByteBuffer & GetPackGUID() const
uint64 GetUInt64Value(uint16 index) const
bool PrintIndexError(uint32 index, bool set) const
void BuildValuesUpdateBlockForPlayer(UpdateData *data, Player *target) const
void RemoveFlag64(uint16 index, uint64 oldFlag)
void SetFloatValue(uint16 index, float value)
void SetDynamicUInt32Value(uint32 tab, uint16 index, uint32 value)
void SetStatFloatValue(uint16 index, float value)
std::vector< bool * > m_dynamicChange
virtual void AddToWorld()
void RemoveByteFlag(uint16 index, uint8 offset, uint8 newFlag)
bool HasFlag(uint16 index, uint32 flag) const
std::string _ConcatFields(uint16 startIndex, uint16 size) const
virtual void RemoveFromWorld()
uint32 GetGUIDHigh() const
void BuildOutOfRangeUpdateBlock(UpdateData *data) const
bool HasByteFlag(uint16 index, uint8 offset, uint8 flag) const
void SendUpdateToPlayer(Player *player)
void SetUInt32Value(uint16 index, uint32 value)
void ToggleFlag(uint16 index, uint32 flag)
bool HasFlag64(uint16 index, uint64 flag) const
void ApplyPercentModFloatValue(uint16 index, float val, bool apply)
void SetStatInt32Value(uint16 index, int32 value)
void SetUInt64Value(uint16 index, uint64 value)
void ToggleByteFlag(uint16 index, uint8 offset, uint8 flag)
void ForceValuesUpdateAtIndex(uint32)
bool AddUInt64Value(uint16 index, uint64 value)
void SetByteFlag(uint16 index, uint8 offset, uint8 newFlag)
bool IsInSameRaidWith(Player const *p) const
ClientGUIDs m_clientGUIDs
void SendDirectMessage(WorldPacket *data)
bool HaveAtClient(WorldObject const *u) const
WorldSession * GetSession() const
Battleground * GetBattleground() const
MonsterChatBuilder(WorldObject const *obj, ChatMsg msgtype, int32 textId, Language language, WorldObject const *target)
void operator()(WorldPacket &data, LocaleConstant loc_idx)
WorldObject const * i_target
WorldObject const * i_object
void operator()(WorldPacket &data, LocaleConstant loc_idx)
MonsterCustomChatBuilder(WorldObject const *obj, ChatMsg msgtype, const char *text, Language language, WorldObject const *target)
WorldObject const * i_object
WorldObject const * i_target
virtual void InitSummon()
virtual void InitStats(uint32 lifetime)
void setFaction(uint32 faction)
uint32 GetUnitMovementFlags() const
float GetSpeed(UnitMoveType mtype) const
uint32 GetMovementCounter() const
bool SetPhased(uint32 id, bool update, bool apply) OVERRIDE
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
float GetPositionZMinusOffset() const
bool IsSplineEnabled() const
Unit * GetCharmerOrOwner() const
void AddGameObject(GameObject *gameObj)
float GetCombatReach() const
SharedVisionList const & GetSharedVisionList()
bool HasUnitMovementFlag(uint32 f) const
uint16 GetExtraUnitMovementFlags() const
uint16 HasExtraUnitMovementFlag(uint16 f) const
std::unique_ptr< Movement::MoveSpline > movespline
std::list< AuraEffect * > AuraEffectList
Vehicle * GetVehicleKit() const
bool HasAuraTypeWithMiscvalue(AuraType auratype, int32 miscvalue) const
void AddUpdateBlock(const ByteBuffer &block)
void AddOutOfRangeGUID(std::set< uint64 > &guids)
bool BuildPacket(WorldPacket *packet)
uint32 GetBlockCount() const
void SetCount(uint32 valuesCount)
void SetBit(uint32 index)
void AppendToPacket(ByteBuffer *data)
virtual bool getObjectHitPos(unsigned int pMapId, float x1, float y1, float z1, float x2, float y2, float z2, float &rx, float &ry, float &rz, float pModifyDist)=0
static IVMapManager * createOrGetVMapManager()
VehicleEntry const * GetVehicleInfo() const
WorldLocation(uint32 _mapid=MAPID_INVALID, float _x=0, float _y=0, float _z=0, float _o=0)
bool isInFront(WorldObject const *target, float arc=M_PI) const
int8 GetTransSeat() const
bool IsPhased(WorldObject const *obj) const
virtual void SendMessageToSetInRange(WorldPacket *data, float dist, bool self)
virtual void SetPhaseMask(uint32 newPhaseMask, bool update)
void _Create(uint32 guidlow, HighGuid guidhigh, uint32 phaseMask)
uint32 GetPhaseMask() const
bool IsInRange3d(float x, float y, float z, float minRange, float maxRange) const
bool IsWithinDist2d(float x, float y, float dist) const
bool IsWithinDist3d(float x, float y, float z, float dist) const
bool CanDetectStealthOf(WorldObject const *obj) const
InstanceScript * GetInstanceScript()
virtual void RemoveFromWorld()
std::set< uint32 > const & GetTerrainSwaps() const
bool IsWorldObject() const
std::set< uint32 > _worldMapSwaps
virtual float GetStationaryO() const
uint16 m_executed_notifies
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true) const
bool IsWithinLOSInMap(WorldObject const *obj) const
bool IsInRange2d(float x, float y, float minRange, float maxRange) const
Creature * SummonTrigger(float x, float y, float z, float ang, uint32 dur, CreatureAI *(*GetAI)(Creature *)=NULL)
virtual bool IsNeverVisible() const
virtual bool IsInvisibleDueToDespawn() const
void GetGameObjectListWithEntryInGrid(std::list< GameObject * > &lList, uint32 uiEntry, float fMaxSearchRange) const
virtual bool IsAlwaysDetectableFor(WorldObject const *) const
bool HasPhaseList(uint32 phase)
float GetGridActivationRange() const
GameObject * FindNearestGameObjectOfType(GameobjectTypes type, float range) const
std::set< uint32 > const & GetPhases() const
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibility
GameObject * FindNearestGameObject(uint32 entry, float range) const
void SetWorldObject(bool apply)
void RebuildWorldMapAreaSwaps()
void SendObjectDeSpawnAnim(uint64 guid)
void RebuildTerrainSwaps()
virtual bool SetPhased(uint32 id, bool update, bool apply)
float GetTransOffsetX() const
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibilityDetect
void GetNearPoint2D(float &x, float &y, float distance, float absAngle) const
bool isActiveObject() const
bool IsSelfOrInSameMap(WorldObject const *obj) const
bool GetDistanceOrder(WorldObject const *obj1, WorldObject const *obj2, bool is3D=true) const
void GetRandomNearPosition(Position &pos, float radius)
void setActive(bool isActiveObject)
float GetDistance2d(WorldObject const *obj) const
ZoneScript * m_zoneScript
float GetTransOffsetY() const
void GetPlayerListInGrid(std::list< Player * > &lList, float fMaxSearchRange) const
virtual void SetMap(Map *map)
void SendPlaySound(uint32 Sound, bool OnlySelf)
virtual float GetStationaryX() const
float GetTransOffsetZ() const
virtual bool IsAlwaysVisibleFor(WorldObject const *) const
void BuildUpdate(UpdateDataMapType &)
void GetFirstCollisionPosition(Position &pos, float dist, float angle)
void VisitNearbyObject(float const &radius, NOTIFIER ¬ifier) const
void AddObjectToRemoveList()
std::set< uint32 > const & GetWorldMapSwaps() const
std::set< uint32 > _terrainSwaps
void VisitNearbyGridObject(float const &radius, NOTIFIER ¬ifier) const
void GetNearPoint(WorldObject const *searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle) const
bool InSamePhase(WorldObject const *obj) const
WorldObject(bool isWorldObject)
float GetSightRange(WorldObject const *target=NULL) const
void GetContactPoint(WorldObject const *obj, float &x, float &y, float &z, float distance2d=CONTACT_DISTANCE) const
bool CanDetectInvisibilityOf(WorldObject const *obj) const
uint32 GetTransTime() const
bool IsWithinLOS(float x, float y, float z) const
void DestroyForNearbyPlayers()
Transport * GetTransport() const
void UpdateAllowedPositionZ(float x, float y, float &z) const
void GetCreatureListWithEntryInGrid(std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
void MonsterWhisper(const char *text, Player const *target, bool IsBossWhisper=false)
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealthDetect
virtual bool _IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D) const
void MonsterSay(const char *text, Language language, WorldObject const *target)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
void UpdateGroundPositionZ(float x, float y, float &z) const
void MonsterTextEmote(const char *text, WorldObject const *target, bool IsBossEmote=false)
void ClearPhases(bool update=false)
const bool m_isWorldObject
bool isInBack(WorldObject const *target, float arc=M_PI) const
void VisitNearbyWorldObject(float const &radius, NOTIFIER ¬ifier) const
Map const * GetBaseMap() const
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime)
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
void GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float angle=0) const
void PlayDistanceSound(uint32 sound_id, Player *target)
float GetVisibilityRange() const
void MonsterYell(const char *text, Language language, WorldObject const *target)
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealth
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibilityDetect
float GetDistance(WorldObject const *obj) const
bool IsInBetween(WorldObject const *obj1, WorldObject const *obj2, float size=0) const
float GetTransOffsetO() const
void GetNearPosition(Position &pos, float dist, float angle)
bool CanNeverSee(WorldObject const *obj) const
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=NULL)
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true) const
MovementInfo m_movementInfo
virtual void SendMessageToSet(WorldPacket *data, bool self)
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibility
float GetDistanceZ(WorldObject const *obj) const
void GetZoneAndAreaId(uint32 &zoneid, uint32 &areaid) const
float GetObjectSize() const
virtual float GetStationaryY() const
void PlayDirectSound(uint32 sound_id, Player *target=NULL)
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TempSummonType::TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
bool CanDetect(WorldObject const *obj, bool ignoreStealth) const
std::set< uint32 > _phases
bool CanSeeOrDetect(WorldObject const *obj, bool ignoreStealth=false, bool distanceCheck=false) const
virtual float GetStationaryZ() const
virtual bool CanAlwaysSee(WorldObject const *) const
bool IsInMap(WorldObject const *obj) const
virtual uint64 GetTransGUID() const
void MovePosition(Position &pos, float dist, float angle)
virtual uint8 getLevelForTarget(WorldObject const *) const
void GetRandomPoint(Position const &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
virtual void UpdateObjectVisibility(bool forced=true)
virtual void CleanupsBeforeDelete(bool finalCleanup=true)
LocaleConstant GetSessionDbLocaleIndex() const
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
void SendSetPhaseShift(std::set< uint32 > const &phaseIds, std::set< uint32 > const &terrainswaps, std::set< uint32 > const &worldAreas)
@ SMSG_GAMEOBJECT_DESPAWN_ANIM
@ SMSG_ARENA_UNIT_DESTROYED
@ CONFIG_LISTEN_RANGE_YELL
@ CONFIG_LISTEN_RANGE_TEXTEMOTE
@ CONFIG_LISTEN_RANGE_SAY
std::string MovementFlags_ToString(uint32 flags)
std::string MovementFlagsExtra_ToString(uint32 flags)
bool Intersects(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2)
void NormalizeMapCoord(float &c)
bool IsValidMapCoord(float c)
CellCoord ComputeCellCoord(float x, float y)
void Visit(CellCoord const &, TypeContainerVisitor< T, CONTAINER > &visitor, Map &, WorldObject const &, float) const
struct MovementInfo::JumpInfo jump
struct MovementInfo::TransportInfo transport
float GetAngle(Position const *pos) const
float GetExactDist2dSq(float x, float y) const
float GetExactDist2d(const float x, const float y) const
std::string ToString() const
float GetExactDist(float x, float y, float z) const
static float NormalizeOrientation(float o)
float GetPositionZ() const
bool operator==(Position const &a)
bool IsInDist2d(float x, float y, float dist) const
float GetOrientation() const
bool IsInDist(float x, float y, float z, float dist) const
bool HasInArc(float arcangle, Position const *pos, float border=2.0f) const
bool IsPositionValid() const
void GetSinCos(float x, float y, float &vsin, float &vcos) const
void SetOrientation(float orientation)
float GetRelativeAngle(Position const *pos) const
bool HasInLine(WorldObject const *target, float width) const
float GetPositionX() const
void GetPosition(float &x, float &y) const
void GetPositionOffsetTo(Position const &endPos, Position &retOffset) const
float GetPositionY() const
void RelocateOffset(Position const &offset)
void Relocate(float x, float y)
UpdateDataMapType & i_updateDatas
WorldObjectChangeAccumulator(WorldObject &obj, UpdateDataMapType &d)
void Visit(GridRefManager< SKIP > &)
void Visit(PlayerMapType &m)
void Visit(DynamicObjectMapType &m)
void BuildPacket(Player *player)
std::set< uint64 > plr_list
void Visit(CreatureMapType &m)
struct GameObjectValue::@210223111052332366220354331325332170103204164100 Transport
Position const MovePosition