diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/mail2recv.cpp | 42 |
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; } |