aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MiscHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-01-31 14:02:59 +0100
committerShauren <shauren.trinity@gmail.com>2012-01-31 14:02:59 +0100
commit1b676b1ccf2fc8c0aca9e0502164a7c68daf9b7c (patch)
tree5acb269e2f39f7749fb37287ef34c667457d0ad8 /src/server/game/Handlers/MiscHandler.cpp
parent37b66384f3d905fb8de506aae48237900a1b6065 (diff)
Core/Items: Some work on hotfixes and SMSG_DB_REPLY
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rwxr-xr-xsrc/server/game/Handlers/MiscHandler.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 0b3a675e762..04ad3e745dc 100755
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1748,3 +1748,48 @@ void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket)
_player->SetPendingBind(0, 0);
}
+
+void WorldSession::HandleRequestHotfix(WorldPacket& recvPacket)
+{
+ uint32 type, count;
+ recvPacket >> type >> count;
+
+ ByteBuffer* guidBytes = new ByteBuffer[count];
+ BitStream* mask = new BitStream[count];
+ for (uint32 i = 0; i < count; ++i)
+ {
+ mask[i] = recvPacket.ReadBitStream(8);
+ guidBytes[i].resize(8); // damn c++ not allowing to use non-default constructor with new[]
+ }
+
+ uint32 entry;
+ uint64 guid;
+ for (uint32 i = 0; i < count; ++i)
+ {
+ recvPacket >> entry;
+ recvPacket.ReadXorByte(mask[i][7], guidBytes[i][2]);
+ recvPacket.ReadXorByte(mask[i][4], guidBytes[i][6]);
+ recvPacket.ReadXorByte(mask[i][1], guidBytes[i][3]);
+ recvPacket.ReadXorByte(mask[i][2], guidBytes[i][0]);
+ recvPacket.ReadXorByte(mask[i][3], guidBytes[i][5]);
+ recvPacket.ReadXorByte(mask[i][0], guidBytes[i][7]);
+ recvPacket.ReadXorByte(mask[i][6], guidBytes[i][1]);
+ recvPacket.ReadXorByte(mask[i][5], guidBytes[i][4]);
+ guid = BitConverter::ToUInt64(guidBytes[i]);
+
+ switch (type)
+ {
+ case DB2_REPLY_ITEM:
+ SendItemDb2Reply(entry);
+ break;
+ case DB2_REPLY_SPARSE:
+ SendItemSparseDb2Reply(entry);
+ break;
+ default:
+ break;
+ }
+ }
+
+ delete[] guidBytes;
+ delete[] mask;
+}