diff options
| author | Shauren <shauren.trinity@gmail.com> | 2020-04-28 19:24:24 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-04-28 19:24:24 +0200 |
| commit | 3ebcf3f1a94b6455979d6dd9091f220247950023 (patch) | |
| tree | 31a8a3bde40fe19237ed46ef40f69c9ce824154f /src | |
| parent | 50576fa1f5044ca81baf633d84174cef2346acc5 (diff) | |
Core/AuctionHouse: Fixed auction mail bodies
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 42 | ||||
| -rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.h | 5 | ||||
| -rw-r--r-- | src/server/game/Handlers/AuctionHouseHandler.cpp | 2 |
3 files changed, 30 insertions, 19 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 8aa0793df74..9e526a191bb 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -178,7 +178,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, CharacterDatabas bidder->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS, 1); } - MailDraft(auction->BuildAuctionMailSubject(AUCTION_WON), AuctionEntry::BuildAuctionMailBody(auction->owner, auction->bid, auction->buyout, 0, 0)) + MailDraft(auction->BuildAuctionMailSubject(AUCTION_WON), AuctionEntry::BuildAuctionWonMailBody(ObjectGuid::Create<HighGuid::Player>(auction->owner), auction->bid, auction->buyout)) .AddItem(pItem) .SendMailTo(trans, MailReceiver(bidder, auction->bidder), auction, MAIL_CHECK_MASK_COPIED); } @@ -196,8 +196,15 @@ void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, Characte uint32 owner_accId = sCharacterCache->GetCharacterAccountIdByGuid(owner_guid); // owner exist (online or offline) if ((owner || owner_accId) && !sAuctionBotConfig->IsBotChar(auction->owner)) - MailDraft(auction->BuildAuctionMailSubject(AUCTION_SALE_PENDING), AuctionEntry::BuildAuctionMailBody(auction->bidder, auction->bid, auction->buyout, auction->deposit, auction->GetAuctionCut())) + { + ByteBuffer timePacker; + timePacker.AppendPackedTime(GameTime::GetGameTime() + sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY)); + + MailDraft(auction->BuildAuctionMailSubject(AUCTION_SALE_PENDING), + AuctionEntry::BuildAuctionInvoiceMailBody(ObjectGuid::Create<HighGuid::Player>(auction->bidder), auction->bid, auction->buyout, auction->deposit, + auction->GetAuctionCut(), sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), timePacker.read<uint32>())) .SendMailTo(trans, MailReceiver(owner, auction->owner), auction, MAIL_CHECK_MASK_COPIED); + } } //call this method to send mail to auction owner, when auction is successful, it does not clear ram @@ -220,7 +227,7 @@ void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, Character owner->GetSession()->SendAuctionOwnerNotification(auction); } - MailDraft(auction->BuildAuctionMailSubject(AUCTION_SUCCESSFUL), AuctionEntry::BuildAuctionMailBody(auction->bidder, auction->bid, auction->buyout, auction->deposit, auction->GetAuctionCut())) + MailDraft(auction->BuildAuctionMailSubject(AUCTION_SUCCESSFUL), AuctionEntry::BuildAuctionSoldMailBody(ObjectGuid::Create<HighGuid::Player>(auction->bidder), auction->bid, auction->buyout, auction->deposit, auction->GetAuctionCut())) .AddMoney(profit) .SendMailTo(trans, MailReceiver(owner, auction->owner), auction, MAIL_CHECK_MASK_COPIED, sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY)); } @@ -243,7 +250,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, CharacterDat if (owner) owner->GetSession()->SendAuctionOwnerNotification(auction); - MailDraft(auction->BuildAuctionMailSubject(AUCTION_EXPIRED), AuctionEntry::BuildAuctionMailBody(0, 0, auction->buyout, auction->deposit, 0)) + MailDraft(auction->BuildAuctionMailSubject(AUCTION_EXPIRED), "") .AddItem(pItem) .SendMailTo(trans, MailReceiver(owner, auction->owner), auction, MAIL_CHECK_MASK_COPIED, 0); } @@ -270,7 +277,7 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 new if (oldBidder && newBidder) oldBidder->GetSession()->SendAuctionBidderNotification(auction->GetHouseId(), auction->Id, newBidder->GetGUID(), newPrice, auction->GetAuctionOutBid(), auction->itemEntry); - MailDraft(auction->BuildAuctionMailSubject(AUCTION_OUTBIDDED), AuctionEntry::BuildAuctionMailBody(auction->owner, auction->bid, auction->buyout, auction->deposit, auction->GetAuctionCut())) + MailDraft(auction->BuildAuctionMailSubject(AUCTION_OUTBIDDED), "") .AddMoney(auction->bid) .SendMailTo(trans, MailReceiver(oldBidder, auction->bidder), auction, MAIL_CHECK_MASK_COPIED); } @@ -288,7 +295,7 @@ void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, Ch // bidder exist if ((bidder || bidder_accId) && !sAuctionBotConfig->IsBotChar(auction->bidder)) - MailDraft(auction->BuildAuctionMailSubject(AUCTION_CANCELLED_TO_BIDDER), AuctionEntry::BuildAuctionMailBody(auction->owner, auction->bid, auction->buyout, auction->deposit, 0)) + MailDraft(auction->BuildAuctionMailSubject(AUCTION_CANCELLED_TO_BIDDER), "") .AddMoney(auction->bid) .SendMailTo(trans, MailReceiver(bidder, auction->bidder), auction, MAIL_CHECK_MASK_COPIED); } @@ -936,17 +943,20 @@ bool AuctionEntry::LoadFromDB(Field* fields) } std::string AuctionEntry::BuildAuctionMailSubject(MailAuctionAnswers response) const { - std::ostringstream strm; - strm << itemEntry << ":0:" << response << ':' << Id << ':' << itemCount; - return strm.str(); + return Trinity::StringFormat("%u:0:%u:%u:%u", itemEntry, response, Id, itemCount); +} + +std::string AuctionEntry::BuildAuctionWonMailBody(ObjectGuid guid, uint32 bid, uint32 buyout) +{ + return Trinity::StringFormat("%llX:%u:%u", guid.GetRawValue(), bid, buyout); +} + +std::string AuctionEntry::BuildAuctionSoldMailBody(ObjectGuid guid, uint32 bid, uint32 buyout, uint32 deposit, uint32 consignment) +{ + return Trinity::StringFormat("%llX:%u:%u:%u:%u", guid.GetRawValue(), bid, buyout, deposit, consignment); } -std::string AuctionEntry::BuildAuctionMailBody(ObjectGuid::LowType lowGuid, uint32 bid, uint32 buyout, uint32 deposit, uint32 cut) +std::string AuctionEntry::BuildAuctionInvoiceMailBody(ObjectGuid guid, uint32 bid, uint32 buyout, uint32 deposit, uint32 consignment, uint32 moneyDelay, uint32 eta) { - std::ostringstream strm; - strm.width(16); - strm << std::right << std::hex << ObjectGuid(HighGuid::Player, lowGuid).GetRawValue(); // HighGuid::Player always present, even for empty guids - strm << std::dec << ':' << bid << ':' << buyout; - strm << ':' << deposit << ':' << cut; - return strm.str(); + return Trinity::StringFormat("%llX:%u:%u:%u:%u:%u:%u", guid.GetRawValue(), bid, buyout, deposit, consignment, moneyDelay, eta); } diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index fe3b7056080..e23d85bbdcb 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -99,8 +99,9 @@ struct TC_GAME_API AuctionEntry void SaveToDB(CharacterDatabaseTransaction& trans) const; bool LoadFromDB(Field* fields); std::string BuildAuctionMailSubject(MailAuctionAnswers response) const; - static std::string BuildAuctionMailBody(ObjectGuid::LowType lowGuid, uint32 bid, uint32 buyout, uint32 deposit, uint32 cut); - + static std::string BuildAuctionWonMailBody(ObjectGuid guid, uint32 bid, uint32 buyout); + static std::string BuildAuctionSoldMailBody(ObjectGuid guid, uint32 bid, uint32 buyout, uint32 deposit, uint32 consignment); + static std::string BuildAuctionInvoiceMailBody(ObjectGuid guid, uint32 bid, uint32 buyout, uint32 deposit, uint32 consignment, uint32 moneyDelay, uint32 eta); }; //this class is used as auctionhouse instance diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index 1f5b7d6a98d..7e0f5a0890f 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -602,7 +602,7 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket& recvData) } // item will deleted or added to received mail list - MailDraft(auction->BuildAuctionMailSubject(AUCTION_CANCELED), AuctionEntry::BuildAuctionMailBody(0, 0, auction->buyout, auction->deposit, 0)) + MailDraft(auction->BuildAuctionMailSubject(AUCTION_CANCELED), "") .AddItem(pItem) .SendMailTo(trans, player, auction, MAIL_CHECK_MASK_COPIED); } |
