From 0bbf3f7300895008a37796f3d5be7e8f23c9a143 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 24 Jun 2021 16:04:51 +0200 Subject: Core/AuctionHouse: Fixed paying for commodities Closes #26621 --- src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 11 +++++++---- src/server/game/AuctionHouse/AuctionHouseMgr.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 22832485f7c..12df2c1193a 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -1551,7 +1551,7 @@ void AuctionHouseObject::BuildReplicate(WorldPackets::AuctionHouse::AuctionRepli replicateResponse.ChangeNumberTombstone = throttleItr->second.Tombstone = !count ? _itemsByAuctionId.rbegin()->first : 0; } -uint64 AuctionHouseObject::CalcualteAuctionHouseCut(uint64 bidAmount) const +uint64 AuctionHouseObject::CalculateAuctionHouseCut(uint64 bidAmount) const { return std::max(int64(CalculatePct(bidAmount, _auctionHouse->ConsignmentRate) * double(sWorld->getRate(RATE_AUCTION_CUT))), SI64LIT(0)); } @@ -1756,7 +1756,7 @@ bool AuctionHouseObject::BuyCommodity(CharacterDatabaseTransaction trans, Player sCharacterCache->GetCharacterAccountIdByGuid(auction->Owner)); } - uint64 auctionHouseCut = CalcualteAuctionHouseCut(auction->BuyoutOrUnitPrice * boughtFromAuction); + uint64 auctionHouseCut = CalculateAuctionHouseCut(auction->BuyoutOrUnitPrice * boughtFromAuction); uint64 depositPart = AuctionHouseMgr::GetCommodityAuctionDeposit(items[0].Items[0]->GetTemplate(), std::chrono::duration_cast(auction->EndTime - auction->StartTime), boughtFromAuction); uint64 profit = auction->BuyoutOrUnitPrice * boughtFromAuction + depositPart - auctionHouseCut; @@ -1774,6 +1774,9 @@ bool AuctionHouseObject::BuyCommodity(CharacterDatabaseTransaction trans, Player .SendMailTo(trans, MailReceiver(ObjectAccessor::FindConnectedPlayer(auction->Owner), auction->Owner), this, MAIL_CHECK_MASK_COPIED, sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY)); } + player->ModifyMoney(-int64(totalPrice)); + player->SaveGoldToDB(trans); + for (MailedItemsBatch const& batch : items) { MailDraft mail(AuctionHouseMgr::BuildCommodityAuctionMailSubject(AuctionMailType::Won, itemId, batch.Quantity), @@ -1924,7 +1927,7 @@ void AuctionHouseObject::SendAuctionSold(AuctionPosting const* auction, Player* // owner exist if ((owner || sCharacterCache->HasCharacterCacheEntry(auction->Owner)) && !sAuctionBotConfig->IsBotChar(auction->Owner)) { - uint64 auctionHouseCut = CalcualteAuctionHouseCut(auction->BidAmount); + uint64 auctionHouseCut = CalculateAuctionHouseCut(auction->BidAmount); uint64 profit = auction->BidAmount + auction->Deposit - auctionHouseCut; //FIXME: what do if owner offline @@ -2012,7 +2015,7 @@ void AuctionHouseObject::SendAuctionInvoice(AuctionPosting const* auction, Playe MailDraft(AuctionHouseMgr::BuildItemAuctionMailSubject(AuctionMailType::Invoice, auction), AuctionHouseMgr::BuildAuctionInvoiceMailBody(auction->Bidder, auction->BidAmount, auction->BuyoutOrUnitPrice, auction->Deposit, - CalcualteAuctionHouseCut(auction->BidAmount), sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), eta)) + CalculateAuctionHouseCut(auction->BidAmount), sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), eta)) .SendMailTo(trans, MailReceiver(owner, auction->Owner), this, MAIL_CHECK_MASK_COPIED); } } diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 51ddb3eed65..7f70898d3f8 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -313,7 +313,7 @@ public: void BuildReplicate(WorldPackets::AuctionHouse::AuctionReplicateResponse& replicateResponse, Player* player, uint32 global, uint32 cursor, uint32 tombstone, uint32 count); - uint64 CalcualteAuctionHouseCut(uint64 bidAmount) const; + uint64 CalculateAuctionHouseCut(uint64 bidAmount) const; CommodityQuote const* CreateCommodityQuote(Player* player, uint32 itemId, uint32 quantity); void CancelCommodityQuote(ObjectGuid guid); -- cgit v1.2.3