diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-03-14 11:57:51 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-09-06 20:55:06 +0200 |
commit | 4a386b97d2094a6d67039c7068edbf26000bbf5e (patch) | |
tree | f0f9454738c439cd1cac702a711e5251d36d6ba6 | |
parent | bf7a624a344f86101b346bc74acd93a017cf3581 (diff) |
Core/Player: properly clear m_items array when unequipping items from the bag
- Also cleanup weapon damage ap mult when direct destroying a equipped weapon
(cherry picked from commit 9cc109fe3ebc87a7d12edfe99df121ade4f29fc7)
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1e681ee82a2..7b4a05056cc 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12584,6 +12584,8 @@ void Player::RemoveItem(uint8 bag, uint8 slot, bool update) } } } + else + m_items[slot] = nullptr; SetInvSlot(slot, ObjectGuid::Empty); @@ -12700,6 +12702,9 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) if (pProto->GetItemSet()) RemoveItemsSetItem(this, pProto); + // clear m_items so weapons for example can be registered as unequipped + m_items[slot] = nullptr; + _ApplyItemMods(pItem, slot, false); } @@ -12724,7 +12729,9 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) SetVisibleItemSlot(slot, nullptr); } - m_items[slot] = nullptr; + // clear for rest of items (ie nonequippable) + if (slot >= INVENTORY_SLOT_BAG_END) + m_items[slot] = nullptr; } else if (Bag* pBag = GetBagByPos(bag)) pBag->RemoveItem(slot, update); |