diff options
Diffstat (limited to 'src')
-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); |