diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-12-03 00:41:08 +0100 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2012-01-10 01:19:09 +0100 |
commit | 2a092bff6a889415d68b63db6e11942aa2d2bb33 (patch) | |
tree | d64f5f2b8675ef42ce19f1ca641945e7d308189c /src/game-server/inventory.cpp | |
parent | 4c9db4a20aad649f80c9db8379f372de7361096b (diff) | |
download | manaserv-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.cpp | 31 |
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) |