From d58919dcfb4eaf491c4544a2ed608de71d0deca2 Mon Sep 17 00:00:00 2001 From: David Markowitz Date: Sat, 4 Oct 2025 16:23:15 -0700 Subject: [PATCH] fix: changed item ids not reflected in equipped items --- dGame/dInventory/Inventory.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dGame/dInventory/Inventory.cpp b/dGame/dInventory/Inventory.cpp index 98e34f8d..822a7cc0 100644 --- a/dGame/dInventory/Inventory.cpp +++ b/dGame/dInventory/Inventory.cpp @@ -324,10 +324,13 @@ Inventory::~Inventory() { void Inventory::RegenerateItemIDs() { std::map newItems{}; for (auto* const item : items | std::views::values) { + const bool equipped = item->GetParent() == LWOOBJID_EMPTY && item->IsEquipped(); + if (equipped) item->UnEquip(); const auto oldID = item->GetId(); const auto newID = item->GenerateID(); LOG("Updating item ID from %llu to %llu", oldID, newID); newItems.insert_or_assign(newID, item); + if (equipped) item->Equip(); } // We don't want to delete the item pointers, we're just moving from map to map