diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index e43fff4b5..0a506c164 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -968,6 +968,11 @@ void LoadMatchingItems(LoadHelper &file, const Player &player, const int n, Item if ((heroItem.dwBuff & CF_HELLFIRE) != (unpackedItem.dwBuff & CF_HELLFIRE)) { unpackedItem = {}; RecreateItem(player, unpackedItem, heroItem.IDidx, heroItem._iCreateInfo, heroItem._iSeed, heroItem._ivalue, (heroItem.dwBuff & CF_HELLFIRE) != 0); + unpackedItem._iIdentified = heroItem._iIdentified; + unpackedItem._iMaxDur = heroItem._iMaxDur; + unpackedItem._iDurability = ClampDurability(unpackedItem, heroItem._iDurability); + unpackedItem._iMaxCharges = std::clamp(heroItem._iMaxCharges, 0, unpackedItem._iMaxCharges); + unpackedItem._iCharges = std::clamp(heroItem._iCharges, 0, unpackedItem._iMaxCharges); } if (!IsShopPriceValid(unpackedItem)) { unpackedItem.clear(); diff --git a/Source/pack.cpp b/Source/pack.cpp index 3640768a7..a3d27fc3a 100644 --- a/Source/pack.cpp +++ b/Source/pack.cpp @@ -435,13 +435,7 @@ void UnPackItem(const ItemPack &packedItem, const Player &player, Item &item, bo item._iDurability = ClampDurability(item, packedItem.bDur); item._iMaxCharges = clamp(packedItem.bMCh, 0, item._iMaxCharges); item._iCharges = clamp(packedItem.bCh, 0, item._iMaxCharges); - RemoveInvalidItem(item); - - if (isHellfire) - item.dwBuff |= CF_HELLFIRE; - else - item.dwBuff &= ~CF_HELLFIRE; } }