From 2ed40d012a748b042dab5306cd9802a9f2879f13 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 6 May 2020 13:49:35 -0400 Subject: [PATCH] Core/Items: Fixed durability problems for wrapped item Port From (https://github.com/TrinityCore/TrinityCore/commit/ca4720662defef6f664489b222a00ae664855968) --- Source/Game/Entities/Item/Item.cs | 5 ++++- Source/Game/Handlers/SpellHandler.cs | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) 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);