diff options
author | Subv <s.v.h21@hotmail.com> | 2012-03-03 12:02:17 -0800 |
---|---|---|
committer | Subv <s.v.h21@hotmail.com> | 2012-03-03 12:02:17 -0800 |
commit | 6df9adf6d5853a555a40ea3ed5442d8d4b2f6d5a (patch) | |
tree | a283f22b8cc5b46440a2933347555a4368a71d09 /src | |
parent | cbee39a4dcece9dc5722e7cc8a30d3365c1057d1 (diff) | |
parent | c044eb571143960b74540f30e2e7effacd91a267 (diff) |
Merge pull request #5468 from Elron103/pull-requests
Core/Auction House: Delete item_instance entries correctly, prevent invalid entries
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Handlers/AuctionHouseHandler.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index 223bb7dd5c7..f82c52204fb 100755 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -241,6 +241,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data) else AH->auctioneer = GUID_LOPART(auctioneer); + // Required stack size of auction matches to current item stack size, just move item to auctionhouse if (itemsCount == 1 && item->GetCount() == count[i]) { if (GetSecurity() > SEC_PLAYER && sWorld->getBoolConfig(CONFIG_GM_LOG_TRADE)) @@ -278,7 +279,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data) GetPlayer()->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION, 1); return; } - else + else // Required stack size of auction does not match to current item stack size, clone item and set correct stack size { Item* newItem = item->CloneItem(finalCount, _player); if (!newItem) @@ -313,16 +314,17 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data) { Item* item2 = items[j]; + // Item stack count equals required count, ready to delete item - cloned item will be used for auction if (item2->GetCount() == count[j]) { _player->MoveItemFromInventory(item2->GetBagSlot(), item2->GetSlot(), true); SQLTransaction trans = CharacterDatabase.BeginTransaction(); item2->DeleteFromInventoryDB(trans); - item2->SaveToDB(trans); + item2->DeleteFromDB(trans); CharacterDatabase.CommitTransaction(trans); } - else + else // Item stack count is bigger than required count, update item stack count and save to database - cloned item will be used for auction { item2->SetCount(item2->GetCount() - count[j]); item2->SetState(ITEM_CHANGED, _player); |