summaryrefslogtreecommitdiff
path: root/src/net/eathena
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/eathena')
-rw-r--r--src/net/eathena/mail2recv.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/net/eathena/mail2recv.cpp b/src/net/eathena/mail2recv.cpp
index d3537a48a..b2e435bee 100644
--- a/src/net/eathena/mail2recv.cpp
+++ b/src/net/eathena/mail2recv.cpp
@@ -145,24 +145,34 @@ void Mail2Recv::processAddItemResult(Net::MessageIn &msg)
delete options;
return;
}
- const int slot = inventory->addItem(itemId,
- itemType,
- amount,
- refine,
- ItemColorManager::getColorFromCards(&cards[0]),
- fromBool(identify, Identified),
- damaged,
- Favorite_false,
- Equipm_false,
- Equipped_false);
- if (slot == -1)
+
+ Item *const item = inventory->findItemByTag(index);
+ if (item == nullptr)
{
- delete options;
- return;
+ const int slot = inventory->addItem(itemId,
+ itemType,
+ amount,
+ refine,
+ ItemColorManager::getColorFromCards(&cards[0]),
+ fromBool(identify, Identified),
+ damaged,
+ Favorite_false,
+ Equipm_false,
+ Equipped_false);
+ if (slot == -1)
+ {
+ delete options;
+ return;
+ }
+ inventory->setCards(slot, cards, maxCards);
+ inventory->setOptions(slot, options);
+ inventory->setTag(slot, index);
}
- inventory->setCards(slot, cards, maxCards);
- inventory->setOptions(slot, options);
- inventory->setTag(slot, index);
+ else
+ {
+ item->increaseQuantity(amount);
+ }
+
mailEditWindow->updateItems();
delete options;
}