From cd636f7e367cfb7fa2c348d00071301a480d62c3 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 3 Nov 2015 15:54:23 +0300 Subject: Fix removing items from npc inventory (restore amount in player inventory) --- src/inventory.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/inventory.cpp') diff --git a/src/inventory.cpp b/src/inventory.cpp index 29df424e1..3240f9d8f 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -443,3 +443,19 @@ void Inventory::restoreVirtuals() } mVirtualRemove.clear(); } + +void Inventory::virtualRestore(const Item *const item, + const int amount) +{ + const int index = item->getTag(); + const IntMapCIter it = mVirtualRemove.find(index); + if (it != mVirtualRemove.end()) + { + mVirtualRemove[index] -= amount; + if (mVirtualRemove[index] < 0) + mVirtualRemove.erase(index); + if (index < 0 || index >= static_cast(mSize) || !mItems[index]) + return; + mItems[index]->mQuantity += amount; + } +} -- cgit v1.2.3-70-g09d2