From c7a2fbed3f1e32b9034ef5e919607f79fc8386f1 Mon Sep 17 00:00:00 2001 From: xinef1 Date: Mon, 20 Mar 2017 18:34:20 +0100 Subject: [PATCH] Core/Items: Fixed durability problems for wrapped item (#19003) --- src/server/game/Entities/Item/Item.cpp | 4 +++- src/server/game/Handlers/SpellHandler.cpp | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index bb1b67f8051..679b644aecb 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -462,7 +462,9 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi SetUInt32Value(ITEM_FIELD_DURABILITY, durability); // update max durability (and durability) if need SetUInt32Value(ITEM_FIELD_MAXDURABILITY, proto->MaxDurability); - if (durability > proto->MaxDurability) + + // do not overwrite durability for wrapped items + if (durability > proto->MaxDurability && !HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED)) { SetUInt32Value(ITEM_FIELD_DURABILITY, proto->MaxDurability); need_save = true; diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 94fc4cab36c..3031ad8cb8c 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -291,6 +291,7 @@ void WorldSession::HandleOpenWrappedItemCallback(uint16 pos, ObjectGuid itemGuid item->SetGuidValue(ITEM_FIELD_GIFTCREATOR, ObjectGuid::Empty); item->SetEntry(entry); item->SetUInt32Value(ITEM_FIELD_FLAGS, flags); + item->SetUInt32Value(ITEM_FIELD_MAXDURABILITY, item->GetTemplate()->MaxDurability); item->SetState(ITEM_CHANGED, GetPlayer()); GetPlayer()->SaveInventoryAndGoldToDB(trans);