Core/AuctionHouse: Fixed paying for commodities
Port From (https://github.com/TrinityCore/TrinityCore/commit/0bbf3f7300895008a37796f3d5be7e8f23c9a143)
This commit is contained in:
@@ -1131,7 +1131,7 @@ namespace Game
|
|||||||
_replicateThrottleMap[player.GetGUID()] = throttleData;
|
_replicateThrottleMap[player.GetGUID()] = throttleData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong CalcualteAuctionHouseCut(ulong bidAmount)
|
public ulong CalculateAuctionHouseCut(ulong bidAmount)
|
||||||
{
|
{
|
||||||
return (ulong)Math.Max((long)(MathFunctions.CalculatePct(bidAmount, _auctionHouse.ConsignmentRate) * WorldConfig.GetFloatValue(WorldCfg.RateAuctionCut)), 0);
|
return (ulong)Math.Max((long)(MathFunctions.CalculatePct(bidAmount, _auctionHouse.ConsignmentRate) * WorldConfig.GetFloatValue(WorldCfg.RateAuctionCut)), 0);
|
||||||
}
|
}
|
||||||
@@ -1311,7 +1311,7 @@ namespace Game
|
|||||||
$"Count: {boughtFromAuction}) and pay money: { auction.BuyoutOrUnitPrice * boughtFromAuction}. Original owner {ownerName} (Account: {Global.CharacterCacheStorage.GetCharacterAccountIdByGuid(auction.Owner)})");
|
$"Count: {boughtFromAuction}) and pay money: { auction.BuyoutOrUnitPrice * boughtFromAuction}. Original owner {ownerName} (Account: {Global.CharacterCacheStorage.GetCharacterAccountIdByGuid(auction.Owner)})");
|
||||||
}
|
}
|
||||||
|
|
||||||
ulong auctionHouseCut = CalcualteAuctionHouseCut(auction.BuyoutOrUnitPrice * boughtFromAuction);
|
ulong auctionHouseCut = CalculateAuctionHouseCut(auction.BuyoutOrUnitPrice * boughtFromAuction);
|
||||||
ulong depositPart = Global.AuctionHouseMgr.GetCommodityAuctionDeposit(items[0].Items[0].GetTemplate(), (auction.EndTime - auction.StartTime), boughtFromAuction);
|
ulong depositPart = Global.AuctionHouseMgr.GetCommodityAuctionDeposit(items[0].Items[0].GetTemplate(), (auction.EndTime - auction.StartTime), boughtFromAuction);
|
||||||
ulong profit = auction.BuyoutOrUnitPrice * boughtFromAuction + depositPart - auctionHouseCut;
|
ulong profit = auction.BuyoutOrUnitPrice * boughtFromAuction + depositPart - auctionHouseCut;
|
||||||
|
|
||||||
@@ -1329,6 +1329,9 @@ namespace Game
|
|||||||
.SendMailTo(trans, new MailReceiver(Global.ObjAccessor.FindConnectedPlayer(auction.Owner), auction.Owner), new MailSender(this), MailCheckMask.Copied, WorldConfig.GetUIntValue(WorldCfg.MailDeliveryDelay));
|
.SendMailTo(trans, new MailReceiver(Global.ObjAccessor.FindConnectedPlayer(auction.Owner), auction.Owner), new MailSender(this), MailCheckMask.Copied, WorldConfig.GetUIntValue(WorldCfg.MailDeliveryDelay));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player.ModifyMoney(-(long)totalPrice);
|
||||||
|
player.SaveGoldToDB(trans);
|
||||||
|
|
||||||
foreach (MailedItemsBatch batch in items)
|
foreach (MailedItemsBatch batch in items)
|
||||||
{
|
{
|
||||||
MailDraft mail = new(Global.AuctionHouseMgr.BuildCommodityAuctionMailSubject(AuctionMailType.Won, itemId, batch.Quantity),
|
MailDraft mail = new(Global.AuctionHouseMgr.BuildCommodityAuctionMailSubject(AuctionMailType.Won, itemId, batch.Quantity),
|
||||||
@@ -1479,7 +1482,7 @@ namespace Game
|
|||||||
// owner exist
|
// owner exist
|
||||||
if ((owner || Global.CharacterCacheStorage.HasCharacterCacheEntry(auction.Owner)))// && !sAuctionBotConfig.IsBotChar(auction.Owner))
|
if ((owner || Global.CharacterCacheStorage.HasCharacterCacheEntry(auction.Owner)))// && !sAuctionBotConfig.IsBotChar(auction.Owner))
|
||||||
{
|
{
|
||||||
ulong auctionHouseCut = CalcualteAuctionHouseCut(auction.BidAmount);
|
ulong auctionHouseCut = CalculateAuctionHouseCut(auction.BidAmount);
|
||||||
ulong profit = auction.BidAmount + auction.Deposit - auctionHouseCut;
|
ulong profit = auction.BidAmount + auction.Deposit - auctionHouseCut;
|
||||||
|
|
||||||
//FIXME: what do if owner offline
|
//FIXME: what do if owner offline
|
||||||
@@ -1566,7 +1569,7 @@ namespace Game
|
|||||||
|
|
||||||
new MailDraft(Global.AuctionHouseMgr.BuildItemAuctionMailSubject(AuctionMailType.Invoice, auction),
|
new MailDraft(Global.AuctionHouseMgr.BuildItemAuctionMailSubject(AuctionMailType.Invoice, auction),
|
||||||
Global.AuctionHouseMgr.BuildAuctionInvoiceMailBody(auction.Bidder, auction.BidAmount, auction.BuyoutOrUnitPrice, (uint)auction.Deposit,
|
Global.AuctionHouseMgr.BuildAuctionInvoiceMailBody(auction.Bidder, auction.BidAmount, auction.BuyoutOrUnitPrice, (uint)auction.Deposit,
|
||||||
CalcualteAuctionHouseCut(auction.BidAmount), WorldConfig.GetUIntValue(WorldCfg.MailDeliveryDelay), eta))
|
CalculateAuctionHouseCut(auction.BidAmount), WorldConfig.GetUIntValue(WorldCfg.MailDeliveryDelay), eta))
|
||||||
.SendMailTo(trans, new MailReceiver(owner, auction.Owner), new MailSender(this), MailCheckMask.Copied);
|
.SendMailTo(trans, new MailReceiver(owner, auction.Owner), new MailSender(this), MailCheckMask.Copied);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user