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);
|
SetDurability(durability);
|
||||||
// update max durability (and durability) if need
|
// update max durability (and durability) if need
|
||||||
SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.MaxDurability), proto.MaxDurability);
|
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);
|
SetDurability(proto.MaxDurability);
|
||||||
need_save = true;
|
need_save = true;
|
||||||
@@ -2633,6 +2635,7 @@ namespace Game.Entities
|
|||||||
public bool IsCurrencyToken() { return GetTemplate().IsCurrencyToken(); }
|
public bool IsCurrencyToken() { return GetTemplate().IsCurrencyToken(); }
|
||||||
public bool IsBroken() { return m_itemData.MaxDurability > 0 && m_itemData.Durability == 0; }
|
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 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 void SetInTrade(bool b = true) { mb_in_trade = b; }
|
||||||
public bool IsInTrade() { return mb_in_trade; }
|
public bool IsInTrade() { return mb_in_trade; }
|
||||||
|
|
||||||
|
|||||||
@@ -222,6 +222,7 @@ namespace Game
|
|||||||
item.SetGiftCreator(ObjectGuid.Empty);
|
item.SetGiftCreator(ObjectGuid.Empty);
|
||||||
item.SetEntry(entry);
|
item.SetEntry(entry);
|
||||||
item.SetItemFlags((ItemFieldFlags)flags);
|
item.SetItemFlags((ItemFieldFlags)flags);
|
||||||
|
item.SetMaxDurability(item.GetTemplate().MaxDurability);
|
||||||
item.SetState(ItemUpdateState.Changed, GetPlayer());
|
item.SetState(ItemUpdateState.Changed, GetPlayer());
|
||||||
|
|
||||||
GetPlayer().SaveInventoryAndGoldToDB(trans);
|
GetPlayer().SaveInventoryAndGoldToDB(trans);
|
||||||
|
|||||||
Reference in New Issue
Block a user