summaryrefslogtreecommitdiff
path: root/src/net/ea/inventoryhandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/ea/inventoryhandler.h')
-rw-r--r--src/net/ea/inventoryhandler.h17
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: