From 4cfe79cad811756d59ee5dcf12f4382a88791c3a Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Tue, 14 Oct 2014 14:38:53 +0300
Subject: eathena: add partial support for packet SMSG_PARTY_ITEM_PICKUP
 0x02b8.

---
 src/net/eathena/packets.h        |  2 +-
 src/net/eathena/partyhandler.cpp | 21 +++++++++++++++++++++
 src/net/eathena/partyhandler.h   |  2 ++
 src/net/eathena/protocol.h       |  1 +
 4 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/net/eathena/packets.h b/src/net/eathena/packets.h
index 0df40de93..e7112205c 100644
--- a/src/net/eathena/packets.h
+++ b/src/net/eathena/packets.h
@@ -96,7 +96,7 @@ int16_t packet_lengths[] =
   0,   0,   0,   6,  14,   0,   0,   0,   0,   0,  18,   0,   0,   0,   4,   0,
   4,   4,   0,   0,   0,   0,   0,   0,   8,   6,   0,  80,   0,  -1,   0,   0,
   0,   0,   8,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  0,  -1,  -1, 107,   6,  -1,   0,   7,   0, 191,   0,   0,   0,   0,   0,   0,
+  0,  -1,  -1, 107,   6,  -1,   0,   7,  22, 191,   0,   0,   0,   0,   0,   0,
 // #0x02C0
   0,  -1,   0,   0,   0,  30,   0,   0,   0,   3,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   0,   0,   0,   0,   0,
diff --git a/src/net/eathena/partyhandler.cpp b/src/net/eathena/partyhandler.cpp
index 030267aa8..8cf57c634 100644
--- a/src/net/eathena/partyhandler.cpp
+++ b/src/net/eathena/partyhandler.cpp
@@ -62,6 +62,7 @@ PartyHandler::PartyHandler() :
         SMSG_PARTY_MESSAGE,
         SMSG_PARTY_INVITATION_STATS,
         SMSG_PARTY_MEMBER_INFO,
+        SMSG_PARTY_ITEM_PICKUP,
         0
     };
     handledMessages = _messages;
@@ -112,6 +113,9 @@ void PartyHandler::handleMessage(Net::MessageIn &msg)
         case SMSG_PARTY_MEMBER_INFO:
             processPartyMemberInfo(msg);
             break;
+        case SMSG_PARTY_ITEM_PICKUP:
+            processPartyItemPickup(msg);
+            break;
 
         default:
             break;
@@ -462,4 +466,21 @@ void PartyHandler::allowInvite(const bool allow) const
     outMsg.writeInt8(static_cast<int8_t>(allow ? 1 : 0));
 }
 
+void PartyHandler::processPartyItemPickup(Net::MessageIn &msg) const
+{
+    // +++ probably need add option to show pickup notifications
+    // in party tab
+    msg.readInt32("account id");
+    msg.readInt16("item id");
+    msg.readUInt8("identify");
+    msg.readUInt8("attribute");
+    msg.readUInt8("refine");
+    msg.readInt16("card0");
+    msg.readInt16("card1");
+    msg.readInt16("card2");
+    msg.readInt16("card3");
+    msg.readInt16("equip location");
+    msg.readUInt8("item type");
+}
+
 }  // namespace EAthena
diff --git a/src/net/eathena/partyhandler.h b/src/net/eathena/partyhandler.h
index f71e5a224..db20f7d0e 100644
--- a/src/net/eathena/partyhandler.h
+++ b/src/net/eathena/partyhandler.h
@@ -77,6 +77,8 @@ class PartyHandler final : public MessageHandler, public Ea::PartyHandler
         void processPartyMessage(Net::MessageIn &msg) const;
 
         void processPartyInviteResponse(Net::MessageIn &msg) const;
+
+        void processPartyItemPickup(Net::MessageIn &msg) const;
 };
 
 }  // namespace EAthena
diff --git a/src/net/eathena/protocol.h b/src/net/eathena/protocol.h
index f80286901..7b3da616c 100644
--- a/src/net/eathena/protocol.h
+++ b/src/net/eathena/protocol.h
@@ -181,6 +181,7 @@
 #define SMSG_PARTY_MESSAGE           0x0109
 #define SMSG_PARTY_INVITATION_STATS  0x02c9
 #define SMSG_PARTY_MEMBER_INFO       0x01e9
+#define SMSG_PARTY_ITEM_PICKUP       0x02b8
 
 #define SMSG_PLAYER_STORAGE_ITEMS    0x0995 /**< Item list for storage */
 #define SMSG_PLAYER_STORAGE_EQUIP    0x0996 /**< Equipment list for storage */
-- 
cgit v1.2.3-70-g09d2