summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game.cpp34
-rw-r--r--src/net/protocol.cpp3
2 files changed, 35 insertions, 2 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 717567d1..d4859b71 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -854,7 +854,39 @@ void do_parse()
tradeWindow->partnerItems->getFreeSlot(), RFIFOW(6),
false, RFIFOL(2), false);
break;
- // Trade: Item add response
+ // Trade: New Item add response
+ case 0x0215:
+ switch (RFIFOB(6)) {
+ case 0:
+ // Successfully added item
+ if (inventoryWindow->items->isEquipment(RFIFOW(2)))
+ {
+ if (inventoryWindow->items->isEquipped(RFIFOW(2)))
+ {
+ inventoryWindow->unequipItem(RFIFOW(2));
+ }
+ }
+ tradeWindow->addItem(
+ tradeWindow->myItems->getFreeSlot(),
+ inventoryWindow->items->getId(RFIFOW(2)),
+ true, RFIFOW(4),
+ inventoryWindow->items->isEquipment(
+ RFIFOW(2)));
+ inventoryWindow->changeQuantity(RFIFOW(2),
+ (inventoryWindow->items->getQuantity(RFIFOW(2))
+ - RFIFOW(4)));
+ break;
+ case 1:
+ // Add item failed - player overweighted
+ chatWindow->chat_log("Failed adding item. Trade "
+ "partner is over weighted.", BY_SERVER);
+ break;
+ default:
+ //printf("Unhandled 0x00ea byte!\n");
+ break;
+ }
+ break;
+ // Trade: Old Item add response
case 0x00ea:
tradeWindow->setTradeButton(false);
//chatWindow->chat_log("add response got", BY_SERVER);
diff --git a/src/net/protocol.cpp b/src/net/protocol.cpp
index 92d1fae5..a11dad82 100644
--- a/src/net/protocol.cpp
+++ b/src/net/protocol.cpp
@@ -75,7 +75,8 @@ short packet_lengths[] = {
30, 8, 34, 14, 2, 6, 26, 2, 28, 81, 6, 10, 26, 2, -1, -1,
-1, -1, 20, 10, 32, 9, 34, 14, 2, 6, 48, 56, -1, 4, 5, 10,
// #0x200
- 26, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 19,
+ 26, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
short get_length(short id) {