aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElron103 <scarymovie87@gmx.de>2012-02-27 23:41:19 +0100
committerElron103 <scarymovie87@gmx.de>2012-02-27 23:41:19 +0100
commitc044eb571143960b74540f30e2e7effacd91a267 (patch)
tree1891357e8dc89e56bf3dc04aefed7c1c8056eb46
parentdc55d9ed13f203941382c24c935b275b096e2ee1 (diff)
Core/Auction House: Delete item_instance entries correctly, prevent invalid entries
-rwxr-xr-xsrc/server/game/Handlers/AuctionHouseHandler.cpp8
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);