diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Server/Packets/InstancePackets.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Server/Packets/InstancePackets.h | 13 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
4 files changed, 31 insertions, 7 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 5f476d296b3..90c02b10477 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3199,12 +3199,12 @@ bool InstanceMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/) // players also become permanently bound when they enter if (groupBind->perm) { - WorldPacket data(SMSG_PENDING_RAID_LOCK, 10); - data << uint32(60000); - data << uint32(i_data ? i_data->GetCompletedEncounterMask() : 0); - data << uint8(0); - data << uint8(0); // events it throws: 1 : INSTANCE_LOCK_WARNING 0 : INSTANCE_LOCK_STOP / INSTANCE_LOCK_START - player->GetSession()->SendPacket(&data); + WorldPackets::Instance::PendingRaidLock pendingRaidLock; + pendingRaidLock.TimeUntilLock = 60000; + pendingRaidLock.CompletedMask = i_data ? i_data->GetCompletedEncounterMask() : 0; + pendingRaidLock.Extending = false; + pendingRaidLock.WarningOnly = false; // events it throws: 1 : INSTANCE_LOCK_WARNING 0 : INSTANCE_LOCK_STOP / INSTANCE_LOCK_START + player->GetSession()->SendPacket(pendingRaidLock.Write()); player->SetPendingBind(mapSave->GetInstanceId(), 60000); } } diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index f1884246f0b..0b78c47faf0 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -93,3 +93,14 @@ WorldPacket const* WorldPackets::Instance::RaidGroupOnly::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Instance::PendingRaidLock::Write() +{ + _worldPacket << int32(TimeUntilLock); + _worldPacket << uint32(CompletedMask); + _worldPacket.WriteBit(Extending); + _worldPacket.WriteBit(WarningOnly); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index 0fbb5da6b25..72d168fc22b 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -136,6 +136,19 @@ namespace WorldPackets int32 Delay = 0; uint32 Reason = 0; }; + + class PendingRaidLock final : public ServerPacket + { + public: + PendingRaidLock() : ServerPacket(SMSG_PENDING_RAID_LOCK, 4 + 4) { } + + WorldPacket const* Write() override; + + int32 TimeUntilLock = 0; + uint32 CompletedMask = 0; + bool Extending = false; + bool WarningOnly = false; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index a0ba2c60664..f917cffd5b4 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1398,7 +1398,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_ALREADY_SIGNED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_RENAME_GUILD_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PETITION_SHOW_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); |