aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Item/Item.cpp9
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h11
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2
5 files changed, 26 insertions, 6 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 31af5e7b182..5aa196e9fbc 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -29,6 +29,7 @@
#include "Player.h"
#include "Opcodes.h"
#include "WorldSession.h"
+#include "ItemPackets.h"
void AddItemsSetItem(Player* player, Item* item)
{
@@ -1048,10 +1049,10 @@ void Item::SendTimeUpdate(Player* owner)
if (!duration)
return;
- WorldPacket data(SMSG_ITEM_TIME_UPDATE, (8+4));
- data << GetGUID();
- data << uint32(duration);
- owner->GetSession()->SendPacket(&data);
+ WorldPackets::Item::ItemTimeUpdate itemTimeUpdate;
+ itemTimeUpdate.ItemGuid = GetGUID();
+ itemTimeUpdate.DurationLeft = duration;
+ owner->GetSession()->SendPacket(itemTimeUpdate.Write());
}
Item* Item::CreateItem(uint32 itemEntry, uint32 count, Player const* player)
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index b5465b47e35..3d62b1bb575 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -42,6 +42,14 @@ void WorldPackets::Item::SellItem::Read()
_worldPacket >> Amount;
}
+WorldPacket const* WorldPackets::Item::ItemTimeUpdate::Write()
+{
+ _worldPacket << ItemGuid;
+ _worldPacket << DurationLeft;
+
+ return &_worldPacket;
+}
+
WorldPacket const* WorldPackets::Item::SetProficiency::Write()
{
_worldPacket << ProficiencyMask;
diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h
index d84d2266a3c..f5c8bbf24b7 100644
--- a/src/server/game/Server/Packets/ItemPackets.h
+++ b/src/server/game/Server/Packets/ItemPackets.h
@@ -70,6 +70,17 @@ namespace WorldPackets
uint32 Amount = 0;
};
+ class ItemTimeUpdate final : public ServerPacket
+ {
+ public:
+ ItemTimeUpdate() : ServerPacket(SMSG_ITEM_TIME_UPDATE, 8 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid ItemGuid;
+ uint32 DurationLeft = 0;
+ };
+
class SetProficiency final : public ServerPacket
{
public:
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index d1502e0c863..338d95fe800 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1049,7 +1049,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_REMOVE_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_SEND_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TEXT_QUERY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_DANCE_MOVES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index b33f218c898..704d71bcef9 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -441,7 +441,7 @@ enum OpcodeClient : uint32
CMSG_OBJECT_UPDATE_RESCUED = 0xBADD,
CMSG_OFFER_PETITION = 0xBADD,
CMSG_OPENING_CINEMATIC = 0xBADD,
- CMSG_OPEN_ITEM = 0xBADD,
+ CMSG_OPEN_ITEM = 0x08AD,
CMSG_OPT_OUT_OF_LOOT = 0xBADD,
CMSG_PAGE_TEXT_QUERY = 0x0BBB,
CMSG_PARTY_SILENCE = 0xBADD,