From acb216cbbd50f68710502068bec83e073128d6fc Mon Sep 17 00:00:00 2001 From: Jan-Fabian Humann Date: Mon, 4 Apr 2005 17:59:12 +0000 Subject: quick fix for bug which increased item amount when warping client-side --- src/game.cpp | 3 +++ src/gui/itemcontainer.cpp | 8 ++++++++ src/gui/itemcontainer.h | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/game.cpp b/src/game.cpp index 7f3ff7eb..b145190a 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -775,7 +775,10 @@ void do_parse() { break; // Get the items + // Only called on map load / warp case 0x01ee: + // Reset all items to not load them twice on map change + inventoryWindow->items->resetItems(); for (int loop = 0; loop < (RFIFOW(2) - 4) / 18; loop++) { inventoryWindow->addItem(RFIFOW(4 + loop * 18), RFIFOW(4 + loop * 18 + 2), diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 3ee6bfb4..d76fc3d9 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -135,6 +135,14 @@ void ItemContainer::addItem(int index, int id, int quantity, bool equipment) items[index].equipment = equipment; } +void ItemContainer::resetItems() +{ + for (int i = 0; i < INVENTORY_SIZE; i++) { + items[i].id = -1; + items[i].quantity = 0; + } +} + void ItemContainer::removeItem(int id) { for (int i = 0; i < INVENTORY_SIZE; i++) { diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index 3dbc3b7c..cbf08cf1 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -108,6 +108,11 @@ class ItemContainer : public gcn::Widget */ void addItem(int index, int id, int quantity, bool equipment); + /** + * Reset all item slots. + */ + void resetItems(); + /** * Remove a item from the inventory. */ -- cgit v1.2.3-70-g09d2