summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2012-07-31 19:54:34 +0200
committerErik Schilling <ablu.erikschilling@googlemail.com>2013-01-10 22:03:31 +0100
commit63bdf5db0e624411454a50264b6805ab0d5b0b98 (patch)
treefcc44b2a482c58f6aa6765430b53e182cd5dde88 /src
parent5b32d72db8fdb2ee81c8770a75678e8e7ad0201e (diff)
downloadmanaserv-63bdf5db0e624411454a50264b6805ab0d5b0b98.tar.gz
manaserv-63bdf5db0e624411454a50264b6805ab0d5b0b98.tar.xz
manaserv-63bdf5db0e624411454a50264b6805ab0d5b0b98.zip
Made sure in-inventory trigger is called at pickup
Also added checks for invalid item and zero amount Reviewed-by: bjorn.
Diffstat (limited to 'src')
-rw-r--r--src/game-server/inventory.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/game-server/inventory.cpp b/src/game-server/inventory.cpp
index 0eddfd0..1fe0900 100644
--- a/src/game-server/inventory.cpp
+++ b/src/game-server/inventory.cpp
@@ -148,7 +148,13 @@ unsigned Inventory::insert(unsigned itemId, unsigned amount)
return 0;
MessageOut invMsg(GPMSG_INVENTORY);
- unsigned maxPerSlot = itemManager->getItem(itemId)->getMaxPerSlot();
+ ItemClass *item = itemManager->getItem(itemId);
+ if (!item) {
+ LOG_ERROR("Inventory: Trying to insert invalid item id " << itemId
+ << " (amount: " << amount << ")");
+ return amount;
+ }
+ unsigned maxPerSlot = item->getMaxPerSlot();
LOG_DEBUG("Inventory: Inserting " << amount << " item(s) Id: " << itemId
<< " for character '" << mCharacter->getName() << "'.");
@@ -210,6 +216,8 @@ unsigned Inventory::insert(unsigned itemId, unsigned amount)
break;
}
+ item->useTrigger(mCharacter, ITT_IN_INVY);
+
// Send that first, before checking potential removals
if (invMsg.getLength() > 2)
gameHandler->sendTo(mCharacter, invMsg);