Core/AuctionHouse: Fixed paying for commodities

Closes #26621
This commit is contained in:
Shauren
2021-06-24 16:04:51 +02:00
parent 61a7026f17
commit 0bbf3f7300
2 changed files with 8 additions and 5 deletions

View File

@@ -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<Minutes>(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);
}
}

View File

@@ -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);