Merge branch 'master' into Playerbot

This commit is contained in:
Yunfan Li
2024-02-06 17:51:47 +08:00
32 changed files with 1008 additions and 61 deletions
+12 -3
View File
@@ -1799,6 +1799,8 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket& recvData)
{
LOG_DEBUG("network", "CMSG_EQUIPMENT_SET_USE");
std::vector<std::unique_ptr<SavedItem>> savedItems;
uint8 errorId = 0;
for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i)
{
ObjectGuid itemGuid;
@@ -1824,7 +1826,6 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket& recvData)
uint16 dstpos = i | (INVENTORY_SLOT_BAG_0 << 8);
InventoryResult msg;
Item* uItem = _player->GetItemByPos(INVENTORY_SLOT_BAG_0, i);
if (uItem)
{
@@ -1844,11 +1845,19 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket& recvData)
msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, sDest, uItem, false);
if (msg == EQUIP_ERR_OK)
{
savedItems.emplace_back(std::make_unique<SavedItem>(uItem, dstpos));
_player->RemoveItem(INVENTORY_SLOT_BAG_0, i, true);
_player->StoreItem(sDest, uItem, true);
}
else
_player->SendEquipError(msg, uItem, nullptr);
{
errorId = 4;
for (uint8_t j = 0; j < savedItems.size(); ++j)
{
_player->SwapItem(savedItems[j].get()->item->GetPos(), savedItems[j].get()->dstpos);
}
break;
}
continue;
}
@@ -1875,7 +1884,7 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket& recvData)
}
WorldPacket data(SMSG_EQUIPMENT_SET_USE_RESULT, 1);
data << uint8(0); // 4 - equipment swap failed - inventory is full
data << uint8(errorId); // 4 - equipment swap failed - inventory is full
SendPacket(&data);
}