From 63bdf5db0e624411454a50264b6805ab0d5b0b98 Mon Sep 17 00:00:00 2001 From: Erik Schilling Date: Tue, 31 Jul 2012 19:54:34 +0200 Subject: Made sure in-inventory trigger is called at pickup Also added checks for invalid item and zero amount Reviewed-by: bjorn. --- src/game-server/inventory.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3-60-g2f50