aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2018-03-14 11:57:51 -0300
committerShauren <shauren.trinity@gmail.com>2021-09-06 20:55:06 +0200
commit4a386b97d2094a6d67039c7068edbf26000bbf5e (patch)
treef0f9454738c439cd1cac702a711e5251d36d6ba6
parentbf7a624a344f86101b346bc74acd93a017cf3581 (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.cpp9
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);