void WorldSession::HandleRaidConfirmReadyCheck(WorldPacket& recvData) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_RAID_CONFIRM_READY_CHECK"); ObjectGuid guid; // currently unused Group* group = GetPlayer()->GetGroup(); if (!group) return; recvData.read_skip<uint8>(); guid[2] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); bool status = recvData.ReadBit(); guid[7] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[0]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[6]); ObjectGuid playerGuid = GetPlayer()->GetGUID(); ObjectGuid groupGuid = group->GetGUID(); group->SetReadyCheckCount(group->GetReadyCheckCount() + 1); WorldPacket data(SMSG_RAID_READY_CHECK_CONFIRM, 1 + 1 + 8 + 1 + 8); data.WriteBit(groupGuid[4]); data.WriteBit(playerGuid[5]); data.WriteBit(playerGuid[3]); data.WriteBit(status); data.WriteBit(groupGuid[2]); data.WriteBit(playerGuid[6]); data.WriteBit(groupGuid[3]); data.WriteBit(playerGuid[0]); data.WriteBit(playerGuid[1]); data.WriteBit(groupGuid[1]); data.WriteBit(groupGuid[5]); data.WriteBit(playerGuid[7]); data.WriteBit(playerGuid[4]); data.WriteBit(groupGuid[6]); data.WriteBit(playerGuid[2]); data.WriteBit(groupGuid[0]); data.WriteBit(groupGuid[7]); data.FlushBits(); data.WriteByteSeq(playerGuid[4]); data.WriteByteSeq(playerGuid[2]); data.WriteByteSeq(playerGuid[1]); data.WriteByteSeq(groupGuid[4]); data.WriteByteSeq(groupGuid[2]); data.WriteByteSeq(playerGuid[0]); data.WriteByteSeq(groupGuid[5]); data.WriteByteSeq(groupGuid[3]); data.WriteByteSeq(playerGuid[7]); data.WriteByteSeq(groupGuid[6]); data.WriteByteSeq(groupGuid[1]); data.WriteByteSeq(playerGuid[6]); data.WriteByteSeq(playerGuid[3]); data.WriteByteSeq(playerGuid[5]); data.WriteByteSeq(groupGuid[0]); data.WriteByteSeq(groupGuid[7]); group->BroadcastPacket(&data, true); // Send SMSG_RAID_READY_CHECK_COMPLETED if (group->GetReadyCheckCount() >= group->GetMembersCount()) { ObjectGuid grpGUID = group->GetGUID(); data.Initialize(SMSG_RAID_READY_CHECK_COMPLETED, 1 + 8 + 1); uint8 bitOrder[8] = { 4, 2, 5, 7, 1, 0, 3, 6 }; data.WriteBitInOrder(grpGUID, bitOrder); data.WriteByteSeq(grpGUID[6]); data.WriteByteSeq(grpGUID[0]); data.WriteByteSeq(grpGUID[3]); data.WriteByteSeq(grpGUID[1]); data.WriteByteSeq(grpGUID[5]); data << uint8(1); // or 0 data.WriteByteSeq(grpGUID[7]); data.WriteByteSeq(grpGUID[2]); data.WriteByteSeq(grpGUID[4]); group->BroadcastPacket(&data, true); } }
void WorldSession::HandleRaidConfirmReadyCheck(WorldPacket& recvData) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_RAID_CONFIRM_READY_CHECK"); Group* group = GetPlayer()->GetGroup(); if (!group) return; recvData.read_skip<uint8>(); // unk, 0x00 bool ready = recvData.ReadBit(); // ========== Unknown guid reading here - probably for group guid ? ======== ObjectGuid unknownGuid; unknownGuid[0] = recvData.ReadBit(); unknownGuid[6] = recvData.ReadBit(); unknownGuid[5] = recvData.ReadBit(); unknownGuid[2] = recvData.ReadBit(); unknownGuid[4] = recvData.ReadBit(); unknownGuid[7] = recvData.ReadBit(); unknownGuid[3] = recvData.ReadBit(); unknownGuid[1] = recvData.ReadBit(); recvData.FlushBits(); recvData.ReadByteSeq(unknownGuid[2]); recvData.ReadByteSeq(unknownGuid[0]); recvData.ReadByteSeq(unknownGuid[7]); recvData.ReadByteSeq(unknownGuid[6]); recvData.ReadByteSeq(unknownGuid[5]); recvData.ReadByteSeq(unknownGuid[3]); recvData.ReadByteSeq(unknownGuid[1]); recvData.ReadByteSeq(unknownGuid[4]); // ========================================================================= ObjectGuid playerGuid = GetPlayer()->GetGUID(); ObjectGuid groupGuid = group->GetGUID(); // Confirmed the check, increase the count. group->SetReadyCheckCount(group->GetReadyCheckCount() + 1); WorldPacket data(SMSG_RAID_READY_CHECK_RESPONSE, 1 + 1 + 8 + 1 + 8); data.WriteBit(groupGuid[0]); data.WriteBit(groupGuid[2]); data.WriteBit(ready); data.WriteBit(playerGuid[7]); data.WriteBit(playerGuid[6]); data.WriteBit(playerGuid[2]); data.WriteBit(groupGuid[4]); data.WriteBit(groupGuid[3]); data.WriteBit(groupGuid[5]); data.WriteBit(playerGuid[3]); data.WriteBit(groupGuid[7]); data.WriteBit(playerGuid[5]); data.WriteBit(groupGuid[6]); data.WriteBit(groupGuid[1]); data.WriteBit(playerGuid[0]); data.WriteBit(playerGuid[1]); data.WriteBit(playerGuid[4]); data.FlushBits(); data.WriteByteSeq(playerGuid[1]); data.WriteByteSeq(groupGuid[5]); data.WriteByteSeq(playerGuid[2]); data.WriteByteSeq(groupGuid[7]); data.WriteByteSeq(groupGuid[0]); data.WriteByteSeq(playerGuid[4]); data.WriteByteSeq(playerGuid[3]); data.WriteByteSeq(groupGuid[4]); data.WriteByteSeq(playerGuid[7]); data.WriteByteSeq(groupGuid[6]); data.WriteByteSeq(playerGuid[5]); data.WriteByteSeq(groupGuid[2]); data.WriteByteSeq(groupGuid[1]); data.WriteByteSeq(groupGuid[3]); data.WriteByteSeq(playerGuid[0]); data.WriteByteSeq(playerGuid[6]); group->BroadcastReadyCheck(&data); // BroadcastPacket(&data, true); // Send SMSG_RAID_READY_CHECK_COMPLETED if needed. if (group->GetReadyCheckCount() >= group->GetMembersCount()) { ObjectGuid grpGUID = group->GetGUID(); bool checkCompleted = true; data.Initialize(SMSG_RAID_READY_CHECK_COMPLETED); uint8 bitOrder[8] = { 1, 5, 6, 3, 2, 7, 0, 4 }; data.WriteBitInOrder(grpGUID, bitOrder); data.FlushBits(); data.WriteByteSeq(grpGUID[4]); data.WriteByteSeq(grpGUID[7]); data << uint8(checkCompleted); data.WriteByteSeq(grpGUID[0]); data.WriteByteSeq(grpGUID[3]); data.WriteByteSeq(grpGUID[6]); data.WriteByteSeq(grpGUID[5]); data.WriteByteSeq(grpGUID[2]); data.WriteByteSeq(grpGUID[1]); group->BroadcastPacket(&data, true); } }