64 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_INVITE");
86 if (invitedPlayer == invitingPlayer)
208 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_ACCEPT");
219 if (group->GetLeaderGUID() ==
GetPlayer()->GetGUID())
221 TC_LOG_ERROR(
"network",
"HandleGroupAcceptOpcode: player {} {} tried to accept an invite to his own group",
GetPlayer()->GetName(),
GetPlayer()->GetGUID().ToString());
235 if (!group->IsCreated())
240 group->RemoveAllInvites();
246 group->RemoveInvite(leader);
247 group->Create(leader);
255 group->BroadcastGroupUpdate();
260 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_DECLINE");
283 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_UNINVITE_GUID");
293 TC_LOG_ERROR(
"network",
"WorldSession::HandleGroupUninviteGuidOpcode: leader {} {} tried to uninvite himself from the group.",
317 player->UninviteFromGroup();
326 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_UNINVITE");
328 std::string membername;
329 recvData >> membername;
336 if (
GetPlayer()->GetName() == membername)
338 TC_LOG_ERROR(
"network",
"WorldSession::HandleGroupUninviteOpcode: leader {} {} tried to uninvite himself from the group.",
363 player->UninviteFromGroup();
372 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_SET_LEADER");
380 if (!group || !player)
393 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_DISBAND");
397 if (!grp && !grpInvite)
421 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_LOOT_METHOD");
426 recvData >> lootMethod >> lootMaster >> lootThreshold;
462 recvData >> itemSlot;
463 recvData >> rollType;
485 TC_LOG_DEBUG(
"network",
"WORLD: Received MSG_MINIMAP_PING");
510 minimum = packet.
Min;
511 maximum = packet.
Max;
514 if (minimum > maximum || maximum > 10000)
523 TC_LOG_DEBUG(
"network",
"WORLD: Received MSG_RAID_TARGET_UPDATE");
560 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_RAID_CONVERT");
580 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_CHANGE_SUB_GROUP");
607 guid = movedPlayer->GetGUID();
619 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_GROUP_ASSISTANT_LEADER");
638 TC_LOG_DEBUG(
"network",
"WORLD: Received MSG_PARTY_ASSIGNMENT");
651 recvData >> assignment >> apply;
673 TC_LOG_DEBUG(
"network",
"WORLD: Received MSG_RAID_READY_CHECK");
679 if (recvData.
empty())
701 data <<
uint8(state);
764 *data <<
uint16(playerStatus);
775 *data <<
uint8(powerType);
798 *data <<
uint64(auramask);
801 if (auramask & (
uint64(1) << i))
880 *data <<
uint64(auramask);
883 if (auramask & (
uint64(1) << i))
907 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_REQUEST_PARTY_MEMBER_STATS");
912 if (!player || !
GetPlayer()->IsInSameRaidWith(player))
966 data <<
uint32(updateFlags);
967 data <<
uint16(playerStatus);
971 data <<
uint8(powerType);
981 size_t maskPos = data.
wpos();
987 auraMask |=
uint64(1) << i;
988 data <<
uint32(aurApp->GetBase()->GetId());
989 data <<
uint8(aurApp->GetFlags());
998 data << std::string(pet ? pet->
GetName() :
"");
1017 maskPos = data.
wpos();
1018 data <<
uint64(petAuraMask);
1025 petAuraMask |=
uint64(1) << i;
1026 data <<
uint32(aurApp->GetBase()->GetId());
1027 data <<
uint8(aurApp->GetFlags());
1048 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_OPT_OUT_OF_LOOT");
1051 recvData >> passOnLoot;
1056 if (passOnLoot != 0)
1057 TC_LOG_ERROR(
"network",
"CMSG_OPT_OUT_OF_LOOT value<>0 for not-loaded character!");
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED
@ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED
#define ASSERT_NOTNULL(pointer)
@ GROUP_ASSIGN_MAINASSIST
static const uint8 GroupUpdateLength[GROUP_UPDATE_FLAGS_COUNT]
@ GROUP_UPDATE_FLAG_CUR_HP
@ GROUP_UPDATE_FLAG_PET_CUR_HP
@ GROUP_UPDATE_FLAG_POWER_TYPE
@ GROUP_UPDATE_FLAG_PET_CUR_POWER
@ GROUP_UPDATE_FLAG_PET_MAX_POWER
@ GROUP_UPDATE_FLAG_MAX_HP
@ GROUP_UPDATE_FLAG_VEHICLE_SEAT
@ GROUP_UPDATE_FLAG_STATUS
@ GROUP_UPDATE_FLAG_PET_POWER_TYPE
@ GROUP_UPDATE_FLAG_MAX_POWER
@ GROUP_UPDATE_FLAG_POSITION
@ GROUP_UPDATE_FLAG_PET_MODEL_ID
@ GROUP_UPDATE_FLAG_PET_NAME
@ GROUP_UPDATE_FLAG_PET_AURAS
@ GROUP_UPDATE_FLAG_AURAS
@ GROUP_UPDATE_FLAG_LEVEL
@ GROUP_UPDATE_FLAG_PET_GUID
@ GROUP_UPDATE_FLAG_PET_MAX_HP
@ GROUP_UPDATE_FLAG_CUR_POWER
#define GROUP_UPDATE_FLAGS_COUNT
#define MAX_RAID_SUBGROUPS
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
bool normalizePlayerName(std::string &name)
@ GROUP_REMOVEMETHOD_KICK
@ GROUP_REMOVEMETHOD_LEAVE
@ ERR_TARGET_NOT_IN_INSTANCE_S
@ ERR_TARGET_NOT_IN_GROUP_S
@ ERR_PLAYER_WRONG_FACTION
#define MAX_AURAS_GROUP_UPDATE
void put(std::size_t pos, T value)
bool AddLeaderInvite(Player *player)
void SendTargetIconList(WorldSession *session)
void SetLootMethod(LootMethod method)
void ChangeMembersGroup(ObjectGuid guid, uint8 group)
bool IsAssistant(ObjectGuid guid) const
void SetLootThreshold(ItemQualities threshold)
void Disband(bool hideDestroy=false)
void SetTargetIcon(uint8 id, ObjectGuid whoGuid, ObjectGuid targetGuid)
bool IsLeader(ObjectGuid guid) const
void SetMasterLooterGuid(ObjectGuid guid)
void RemoveInvite(Player *player)
uint32 GetMembersCount() const
void SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags flag)
void ChangeLeader(ObjectGuid guid)
ObjectGuid GetMemberGUID(const std::string &name)
void BroadcastPacket(WorldPacket const *packet, bool ignorePlayersInBGRaid, int group=-1, ObjectGuid ignoredPlayer=ObjectGuid::Empty)
Player * GetInvited(ObjectGuid guid) const
bool HasFreeSlotSubGroup(uint8 subgroup) const
bool IsMember(ObjectGuid guid) const
bool CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choise)
bool AddInvite(Player *player)
void BroadcastReadyCheck(WorldPacket const *packet)
ObjectGuid GetLeaderGUID() const
void RemoveUniqueGroupMemberFlag(GroupMemberFlags flag)
static ObjectGuid const Empty
PackedGuidWriter WriteAsPacked() const
PackedGuid const & GetPackGUID() const
bool HasFlag(uint16 index, uint32 flag) const
static ObjectGuid GetGUID(Object const *o)
uint64 GetAuraUpdateMaskForRaid() const
bool HasIgnore(ObjectGuid const &ignoreGuid)
bool HasFriend(ObjectGuid const &friendGuid)
uint64 GetAuraUpdateMaskForRaid() const
void SendDirectMessage(WorldPacket const *data) const
uint32 DoRandomRoll(uint32 minimum, uint32 maximum)
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, WorldObject *ref=nullptr)
bool InBattleground() const
Group * GetOriginalGroup() const
WorldSession * GetSession() const
void SetPassOnGroupLoot(bool bPassOnGroupLoot)
bool IsGameMaster() const
PartyResult CanUninviteFromGroup(ObjectGuid guidMember=ObjectGuid::Empty) const
static void RemoveFromGroup(Group *group, ObjectGuid guid, RemoveMethod method=GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker=ObjectGuid::Empty, char const *reason=nullptr)
PlayerSocial * GetSocial()
uint32 GetGroupUpdateFlag() const
Difficulty GetDungeonDifficulty() const
Group * GetGroupInvite() const
Vehicle * GetVehicle() const
AuraApplication * GetVisibleAura(uint8 slot) const
Powers GetPowerType() const
uint32 GetMaxHealth() const
uint32 GetDisplayId() const
uint32 GetMaxPower(Powers power) const
uint32 GetPower(Powers power) const
VehicleEntry const * GetVehicleInfo() const
bool IsHostileTo(WorldObject const *target) const
uint32 GetInstanceId() const
std::string const & GetName() const
MovementInfo m_movementInfo
void Initialize(uint16 opcode, size_t newres=200)
WorldPacket const * Write() override
void Initialize(Player const *inviter, uint32 proposedRoles, bool canAccept)
void HandleGroupAcceptOpcode(WorldPacket &recvPacket)
void HandleGroupUninviteGuidOpcode(WorldPacket &recvPacket)
void HandleMinimapPingOpcode(WorldPacket &recvData)
void HandleGroupAssistantLeaderOpcode(WorldPacket &recvData)
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
void HandleGroupRaidConvertOpcode(WorldPacket &recvData)
void HandleRaidTargetUpdateOpcode(WorldPacket &recvData)
void HandlePartyAssignmentOpcode(WorldPacket &recvData)
void HandleLootMethodOpcode(WorldPacket &recvPacket)
Player * GetPlayer() const
void HandleLootRoll(WorldPacket &recvData)
void HandleGroupDisbandOpcode(WorldPacket &recvPacket)
void HandleOptOutOfLootOpcode(WorldPacket &recvData)
void HandleGroupChangeSubGroupOpcode(WorldPacket &recvData)
void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient &packet)
void BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data)
void HandleGroupSetLeaderOpcode(WorldPacket &recvPacket)
void HandleRequestPartyMemberStatsOpcode(WorldPacket &recvData)
void HandleGroupUninviteOpcode(WorldPacket &recvPacket)
void SendPartyResult(PartyOperation operation, std::string const &member, PartyResult res, uint32 val=0)
void HandleRaidReadyCheckOpcode(WorldPacket &recvData)
void HandleGroupDeclineOpcode(WorldPacket &recvPacket)
void HandleGroupInviteOpcode(WorldPackets::Party::PartyInviteClient &packet)
void HandleRaidReadyCheckFinishedOpcode(WorldPacket &recvData)
void HandleRequestRaidInfoOpcode(WorldPacket &recvData)
@ SMSG_PARTY_COMMAND_RESULT
@ MSG_RAID_READY_CHECK_CONFIRM
@ SMSG_PARTY_MEMBER_STATS_FULL
@ MSG_RAID_READY_CHECK_FINISHED
@ SMSG_PARTY_MEMBER_STATS
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP
TC_GAME_API Player * FindPlayerByName(std::string_view name)
TC_GAME_API Player * FindConnectedPlayerByName(std::string_view name)
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
TC_GAME_API Player * FindConnectedPlayer(ObjectGuid const &)
struct MovementInfo::TransportInfo transport
float GetPositionX() const
float GetPositionY() const
uint32 SeatID[MAX_VEHICLE_SEATS]