From be50926f30c522c7eea6b920831bcac7a123735b Mon Sep 17 00:00:00 2001 From: NathanHandley Date: Fri, 19 Sep 2025 07:08:46 -0500 Subject: [PATCH] Add config for buyer to always pay calc price on bid --- conf/mod_ahbot.conf.dist | 7 +++++++ src/AuctionHouseBot.cpp | 12 ++++++++++-- src/AuctionHouseBot.h | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/conf/mod_ahbot.conf.dist b/conf/mod_ahbot.conf.dist index 6c1e871..4411dec 100644 --- a/conf/mod_ahbot.conf.dist +++ b/conf/mod_ahbot.conf.dist @@ -156,6 +156,12 @@ AuctionHouseBot.Neutral.MaxItems = 15000 # of what the seller sells for), but do not go lower than 0 # Default: 1 # +# AuctionHouseBot.Buyer.AlwaysBidMaxCalculatedPrice +# When enabled, the buyer bot will use the calculated max price they +# were willing to pay as the amount they bid with, instead of minimum +# bid amount. +# Default: false +# # AuctionHouseBot.Buyer.PreventOverpayingForVendorItems # When enabled, the buyer bot will avoid purchasing auction house items # that are being sold for more than the vendor sell price. This prevents @@ -174,6 +180,7 @@ AuctionHouseBot.Neutral.MaxItems = 15000 AuctionHouseBot.Buyer.Enabled = false AuctionHouseBot.Buyer.BuyCandidatesPerBuyCycle = 1 AuctionHouseBot.Buyer.AcceptablePriceModifier = 1 +AuctionHouseBot.Buyer.AlwaysBidMaxCalculatedPrice = false AuctionHouseBot.Buyer.PreventOverpayingForVendorItems = true AuctionHouseBot.Buyer.BidAgainstPlayers = false diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index ee6d0c7..269ad42 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -52,6 +52,7 @@ AuctionHouseBot::AuctionHouseBot() : ListingExpireTimeInSecondsMin(900), ListingExpireTimeInSecondsMax(86400), BuyingBotAcceptablePriceModifier(1), + BuyingBotAlwaysBidMaxCalculatedPrice(false), BuyingBotWillBidAgainstPlayers(false), AHCharactersGUIDsForQuery(""), ItemsPerCycle(75), @@ -1106,12 +1107,18 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player* AHBplayer, AHBConfig *con if (auction->bid == 0 && auction->startbid <= willingToPayForStackPrice) { doBid = true; - calcBidAmount = auction->startbid; + if (BuyingBotAlwaysBidMaxCalculatedPrice == true) + calcBidAmount = willingToPayForStackPrice; + else + calcBidAmount = auction->startbid; } else if (auction->bid != 0 && (auction->bid + auction->GetAuctionOutBid()) < willingToPayForStackPrice) { doBid = true; - calcBidAmount = auction->bid + auction->GetAuctionOutBid(); + if (BuyingBotAlwaysBidMaxCalculatedPrice == true) + calcBidAmount = willingToPayForStackPrice; + else + calcBidAmount = auction->bid + auction->GetAuctionOutBid(); } } @@ -1304,6 +1311,7 @@ void AuctionHouseBot::InitializeConfiguration() // Buyer Bot BuyingBotBuyCandidatesPerBuyCycle = sConfigMgr->GetOption("AuctionHouseBot.Buyer.BuyCandidatesPerBuyCycle", 1); BuyingBotAcceptablePriceModifier = sConfigMgr->GetOption("AuctionHouseBot.Buyer.AcceptablePriceModifier", 1); + BuyingBotAlwaysBidMaxCalculatedPrice = sConfigMgr->GetOption("AuctionHouseBot.Buyer.AlwaysBidMaxCalculatedPrice", false); PreventOverpayingForVendorItems = sConfigMgr->GetOption("AuctionHouseBot.Buyer.PreventOverpayingForVendorItems", true); if (PreventOverpayingForVendorItems) populateVendorItemsPrices(); diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index f421ecf..be486c6 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -132,6 +132,7 @@ private: uint32 ListingExpireTimeInSecondsMin; uint32 ListingExpireTimeInSecondsMax; float BuyingBotAcceptablePriceModifier; + bool BuyingBotAlwaysBidMaxCalculatedPrice; bool BuyingBotWillBidAgainstPlayers; std::vector vendorItemsPrices; std::string AHCharactersGUIDsForQuery;