diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6a2a5f41888..72ca8d8f211 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -411,6 +411,7 @@ Player::Player(WorldSession* session): Unit(true) _hasValidLFGLeavePoint = false; _archaeology = new Archaeology(this); m_petScalingSynchTimer.Reset(1000); + m_groupUpdateTimer.Reset(5000); _transportSpawnID = 0; } @@ -1357,7 +1358,12 @@ void Player::Update(uint32 p_time) } // group update - SendUpdateToOutOfRangeGroupMembers(); + m_groupUpdateTimer.Update(p_time); + if (m_groupUpdateTimer.Passed()) + { + SendUpdateToOutOfRangeGroupMembers(); + m_groupUpdateTimer.Reset(5000); + } Pet* pet = GetPet(); if (pet && !pet->IsWithinDistInMap(this, GetMap()->GetVisibilityRange()) && !pet->isPossessed()) @@ -23933,6 +23939,7 @@ void Player::SendUpdateToOutOfRangeGroupMembers() { if (m_groupUpdateMask == GROUP_UPDATE_FLAG_NONE) return; + if (Group* group = GetGroup()) group->UpdatePlayerOutOfRange(this); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 08a29fc89cb..f063ff31035 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2762,6 +2762,7 @@ class TC_GAME_API Player : public Unit, public GridObject std::vector PlayerPetDataStore; TimeTrackerSmall m_petScalingSynchTimer; + TimeTrackerSmall m_groupUpdateTimer; uint32 _transportSpawnID; }; diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 3897d999112..aedf598d1f8 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -1194,6 +1194,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke { *data << uint8(0); *data << uint64(0); + *data << uint32(0); } }