diff options
Diffstat (limited to 'src/net/ea/inventoryhandler.h')
-rw-r--r-- | src/net/ea/inventoryhandler.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/net/ea/inventoryhandler.h b/src/net/ea/inventoryhandler.h index 82c2a36e..709d6b53 100644 --- a/src/net/ea/inventoryhandler.h +++ b/src/net/ea/inventoryhandler.h @@ -35,6 +35,11 @@ namespace EAthena { class EquipBackend : public Equipment::Backend { public: + EquipBackend() + { + memset(mEquipment, -1, sizeof(mEquipment)); + } + Item *getEquipment(int index) const { int invyIndex = mEquipment[index]; @@ -64,10 +69,20 @@ class EquipBackend : public Equipment::Backend { void setEquipment(int index, int inventoryIndex) { + // Unequip existing item + Item* item = player_node->getInventory()->getItem(mEquipment[index]); + if (item) + { + item->setEquipped(false); + } + mEquipment[index] = inventoryIndex; - Item* item = player_node->getInventory()->getItem(inventoryIndex); + + item = player_node->getInventory()->getItem(inventoryIndex); if (item) + { item->setEquipped(true); + } } private: |