diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-07-31 19:54:34 +0200 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-01-10 22:03:31 +0100 |
commit | 63bdf5db0e624411454a50264b6805ab0d5b0b98 (patch) | |
tree | fcc44b2a482c58f6aa6765430b53e182cd5dde88 /src | |
parent | 5b32d72db8fdb2ee81c8770a75678e8e7ad0201e (diff) | |
download | manaserv-63bdf5db0e624411454a50264b6805ab0d5b0b98.tar.gz manaserv-63bdf5db0e624411454a50264b6805ab0d5b0b98.tar.bz2 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.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/game-server/inventory.cpp b/src/game-server/inventory.cpp index 0eddfd04..1fe09001 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); |