Core/Items: Fixed durability problems for wrapped item
Port From (https://github.com/TrinityCore/TrinityCore/commit/ca4720662defef6f664489b222a00ae664855968)
This commit is contained in:
@@ -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; }
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user