aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/Map.cpp12
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp11
-rw-r--r--src/server/game/Server/Packets/InstancePackets.h13
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
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);