aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-11-26 23:34:20 +0100
committerShauren <shauren.trinity@gmail.com>2017-11-26 23:34:20 +0100
commit463ed5e1ac6881696124cfaa2eeb49b95a082914 (patch)
tree80c4ecb9e1c9e077fb0ef067f578886402c5d499
parent00e3023b3263d5743e0df09118bab4b28bfd3608 (diff)
Core/Items: Fixed sending unlocked items by mail
Closes #20976
-rw-r--r--src/server/game/Handlers/MailHandler.cpp3
-rw-r--r--src/server/game/Spells/SpellEffects.cpp3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index fc283e1d3df..3d1b995cd1e 100644
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -298,6 +298,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData)
item->DeleteFromInventoryDB(trans); // deletes item from character's inventory
item->SetOwnerGUID(receiverGuid);
+ item->SetState(ITEM_CHANGED);
item->SaveToDB(trans); // recursive and not have transaction guard into self, item not in inventory and can be save standalone
draft.AddItem(item);
@@ -693,7 +694,7 @@ void WorldSession::HandleGetMailList(WorldPacket& recvData)
// durability
data << uint32((item ? item->GetUInt32Value(ITEM_FIELD_DURABILITY) : 0));
// unknown wotlk
- data << uint8(0);
+ data << uint8((item && !item->IsLocked() ? 1 : 0));
}
++realCount;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 75c97b005af..559a0504a8f 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1964,7 +1964,10 @@ void Spell::EffectOpenLock(SpellEffIndex effIndex)
if (gameObjTarget)
SendLoot(guid, LOOT_SKINNING);
else if (itemTarget)
+ {
itemTarget->SetFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_UNLOCKED);
+ itemTarget->SetState(ITEM_CHANGED, itemTarget->GetOwner());
+ }
// not allow use skill grow at item base open
if (!m_CastItem && skillId != SKILL_NONE)