diff options
| author | frozen4 <frozen4@163.com> | 2016-06-21 20:33:51 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-06-21 20:33:51 +0200 |
| commit | ed00534e7c311530e5fbb1ffb567d9459ff4c1f0 (patch) | |
| tree | 5a234b348c9eaff312b80fd3bf2a4fed5a6ee309 /src/server/game/Server | |
| parent | 5f2c62392cadc3b87816a5330bbd573e95c9326c (diff) | |
Core/Items: Implemented item upgrades
Closes #17432
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/ItemPackets.cpp | 17 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/ItemPackets.h | 24 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 1 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 2 |
5 files changed, 46 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index e627d80fdea..8ac3e947135 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -529,6 +529,15 @@ void WorldPackets::Item::UseCritterItem::Read() _worldPacket >> ItemGuid; } +void WorldPackets::Item::UpgradeItem::Read() +{ + _worldPacket >> ItemMaster; + _worldPacket >> ItemGUID; + _worldPacket >> UpgradeID; + _worldPacket >> ContainerSlot; + _worldPacket >> Slot; +} + void WorldPackets::Item::SocketGems::Read() { _worldPacket >> ItemGuid; @@ -544,3 +553,11 @@ WorldPacket const* WorldPackets::Item::SocketGemsResult::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Item::ItemUpgradeResult::Write() +{ + _worldPacket.WriteBit(Success); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index 833d1bd9261..ad821682f9c 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -502,6 +502,30 @@ namespace WorldPackets ObjectGuid ItemGuid; }; + class UpgradeItem final : public ClientPacket + { + public: + UpgradeItem(WorldPacket&& packet) : ClientPacket(CMSG_UPGRADE_ITEM, std::move(packet)) { } + + void Read() override; + + ObjectGuid ItemMaster; + ObjectGuid ItemGUID; + int32 ContainerSlot = 0; + int32 UpgradeID = 0; + int32 Slot = 0; + }; + + class ItemUpgradeResult final : public ServerPacket + { + public: + ItemUpgradeResult() : ServerPacket(SMSG_ITEM_UPGRADE_RESULT, 1) { } + + WorldPacket const* Write() override; + + bool Success = false; + }; + class SocketGems final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index a284d874191..fc1501b6894 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -774,7 +774,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Token::UpdateListedAuctionableTokens, &WorldSession::HandleUpdateListedAuctionableTokens); DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_COUNT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_UPGRADE_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_UPGRADE_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_UPGRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::UpgradeItem, &WorldSession::HandleUpgradeItem); DEFINE_HANDLER(CMSG_USED_FOLLOW, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_USE_CRITTER_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::UseCritterItem, &WorldSession::HandleUseCritterItem); DEFINE_HANDLER(CMSG_USE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::UseEquipmentSet, &WorldSession::HandleUseEquipmentSet); @@ -1228,6 +1228,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_UPGRADE_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARN_TALENT_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 37f8500fe84..5e428ec9a4d 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -1644,6 +1644,7 @@ enum OpcodeServer : uint32 // Opcodes that are not generated automatically SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x254B, // no client handler + SMSG_ITEM_UPGRADE_RESULT = 0x25DB, // no client handler SMSG_COMPRESSED_PACKET = 0x2FCF, SMSG_MULTIPLE_PACKETS = 0x2FCE, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 26e8329ee9c..0e2ecee911f 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -371,6 +371,7 @@ namespace WorldPackets class CancelTempEnchantment; class TransmogrifyItems; class UseCritterItem; + class UpgradeItem; class SocketGems; struct ItemInstance; } @@ -1426,6 +1427,7 @@ class TC_GAME_API WorldSession void HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet); void HandleWrapItem(WorldPackets::Item::WrapItem& packet); void HandleUseCritterItem(WorldPackets::Item::UseCritterItem& packet); + void HandleUpgradeItem(WorldPackets::Item::UpgradeItem& packet); void HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet); void HandleAttackStopOpcode(WorldPackets::Combat::AttackStop& packet); |
