diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index 8806a9296..06d4bb313 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -439,7 +439,9 @@ namespace Game.Entities SetDurability(durability); // update max durability (and durability) if need SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.MaxDurability), proto.MaxDurability); - if (durability > proto.MaxDurability) + + // do not overwrite durability for wrapped items + if (durability > proto.MaxDurability && !HasItemFlag(ItemFieldFlags.Wrapped)) { SetDurability(proto.MaxDurability); need_save = true; @@ -2633,6 +2635,7 @@ namespace Game.Entities public bool IsCurrencyToken() { return GetTemplate().IsCurrencyToken(); } public bool IsBroken() { return m_itemData.MaxDurability > 0 && m_itemData.Durability == 0; } public void SetDurability(uint durability) { SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Durability), durability); } + public void SetMaxDurability(uint maxDurability) { SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.MaxDurability), maxDurability); } public void SetInTrade(bool b = true) { mb_in_trade = b; } public bool IsInTrade() { return mb_in_trade; } diff --git a/Source/Game/Handlers/SpellHandler.cs b/Source/Game/Handlers/SpellHandler.cs index 7134a05c6..223db94bd 100644 --- a/Source/Game/Handlers/SpellHandler.cs +++ b/Source/Game/Handlers/SpellHandler.cs @@ -222,6 +222,7 @@ namespace Game item.SetGiftCreator(ObjectGuid.Empty); item.SetEntry(entry); item.SetItemFlags((ItemFieldFlags)flags); + item.SetMaxDurability(item.GetTemplate().MaxDurability); item.SetState(ItemUpdateState.Changed, GetPlayer()); GetPlayer().SaveInventoryAndGoldToDB(trans);