summaryrefslogtreecommitdiff
path: root/src/game-server/inventory.cpp
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-12-03 00:41:08 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2012-01-10 01:19:09 +0100
commit2a092bff6a889415d68b63db6e11942aa2d2bb33 (patch)
treed64f5f2b8675ef42ce19f1ca641945e7d308189c /src/game-server/inventory.cpp
parent4c9db4a20aad649f80c9db8379f372de7361096b (diff)
downloadmanaserv-2a092bff6a889415d68b63db6e11942aa2d2bb33.tar.gz
manaserv-2a092bff6a889415d68b63db6e11942aa2d2bb33.tar.bz2
manaserv-2a092bff6a889415d68b63db6e11942aa2d2bb33.tar.xz
manaserv-2a092bff6a889415d68b63db6e11942aa2d2bb33.zip
Added unequip lua script functions.
You can unequip using the slot or an item id. + Fixes from Ablu's review. Resolves: Mana-Mantis #350. Reviewed-by: Ablu.
Diffstat (limited to 'src/game-server/inventory.cpp')
-rw-r--r--src/game-server/inventory.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/game-server/inventory.cpp b/src/game-server/inventory.cpp
index 1cc92145..4d447d3a 100644
--- a/src/game-server/inventory.cpp
+++ b/src/game-server/inventory.cpp
@@ -711,6 +711,37 @@ bool Inventory::equip(int inventorySlot)
return true;
}
+unsigned int Inventory::getSlotItemInstance(unsigned int slot)
+{
+ EquipData::iterator it = mPoss->equipSlots.find(slot);
+ if (it != mPoss->equipSlots.end())
+ return it->second.itemInstance;
+ return 0;
+}
+
+bool Inventory::unequipItem(unsigned int itemId)
+{
+ std::set<unsigned> itemInstances;
+ for (EquipData::iterator it = mPoss->equipSlots.begin(),
+ it_end = mPoss->equipSlots.end(); it != it_end; ++it)
+ {
+ if (it->second.itemId == itemId)
+ itemInstances.insert(it->second.itemInstance);
+ }
+
+ // Nothing to do but it's a success
+ if (itemInstances.empty())
+ return true;
+
+ for (std::set<unsigned>::const_iterator it = itemInstances.begin(),
+ it_end = itemInstances.end(); it != it_end; ++it)
+ {
+ if (!unequip(*it));
+ return false;
+ }
+ return true;
+}
+
bool Inventory::unequip(unsigned int itemInstance)
{
if (!itemInstance)