From f8b463d9fdd249f06ff48c128d17c83637e010dd Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Wed, 22 Jul 2009 12:05:34 -0600 Subject: Fix bug with clearing inventory on map warp --- src/net/ea/equipmenthandler.cpp | 14 ++++++++++++++ src/net/ea/equipmenthandler.h | 1 + src/net/ea/inventoryhandler.cpp | 1 + 3 files changed, 16 insertions(+) (limited to 'src') diff --git a/src/net/ea/equipmenthandler.cpp b/src/net/ea/equipmenthandler.cpp index 0b6c5753..3520bca5 100644 --- a/src/net/ea/equipmenthandler.cpp +++ b/src/net/ea/equipmenthandler.cpp @@ -113,6 +113,20 @@ void setEquipment(int eAthenaSlot, int index, bool equiped) } } +void clearEquipment() +{ + for (int i = 0; i < Equipment::EQUIP_VECTOREND; i++) + { + if (equips[i]) + { + equips[i]->setEquipped(false); + player_node->mEquipment->setEquipment(i, -1); + } + + equips[i] = NULL; + } +} + Item *getRealEquipedItem(const Item *equipped) { if (!equipped) diff --git a/src/net/ea/equipmenthandler.h b/src/net/ea/equipmenthandler.h index 5239c486..47c2f803 100644 --- a/src/net/ea/equipmenthandler.h +++ b/src/net/ea/equipmenthandler.h @@ -29,6 +29,7 @@ class Item; namespace EAthena { void setEquipment(int eAthenaSlot, int index, bool equiped); +void clearEquipment(); Item *getRealEquipedItem(const Item *equipped); class EquipmentHandler : public MessageHandler diff --git a/src/net/ea/inventoryhandler.cpp b/src/net/ea/inventoryhandler.cpp index 172e3e95..6ee974fc 100644 --- a/src/net/ea/inventoryhandler.cpp +++ b/src/net/ea/inventoryhandler.cpp @@ -87,6 +87,7 @@ void InventoryHandler::handleMessage(MessageIn &msg) if (msg.getId() == SMSG_PLAYER_INVENTORY) { // Clear inventory - this will be a complete refresh + clearEquipment(); inventory->clear(); } else -- cgit v1.2.3-70-g09d2