From 1d8db548863442e09dd928a56abb82900de28792 Mon Sep 17 00:00:00 2001 From: NathanHandley Date: Tue, 16 Sep 2025 20:14:08 -0500 Subject: [PATCH] Make auction duration configurable --- conf/mod_ahbot.conf.dist | 9 +++++++++ src/AuctionHouseBot.cpp | 22 +++++++++++++++++++++- src/AuctionHouseBot.h | 2 ++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/conf/mod_ahbot.conf.dist b/conf/mod_ahbot.conf.dist index 44617d6..d421def 100644 --- a/conf/mod_ahbot.conf.dist +++ b/conf/mod_ahbot.conf.dist @@ -39,6 +39,13 @@ # from startup complete to first character being able to log in) so a # value greater than a few hundred is not recommended. # Default 75 +# +# AuctionHouseBot.ListingExpireTimeInSecondsMin +# AuctionHouseBot.ListingExpireTimeInSecondsMax +# Bot-posted auctions will have a listing time between these two values, +# and is important to make the auction house feel dynamic in timing +# Default 900 (15 minutes) to 86400 (24 hours) +# Note: Do not set lower than 15 minutes (900) or higher than 48 hours (172800) ############################################################################### AuctionHouseBot.DEBUG = 0 @@ -47,6 +54,8 @@ AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell = 1 AuctionHouseBot.EnableSeller = 0 AuctionHouseBot.GUIDs = 0 AuctionHouseBot.ItemsPerCycle = 75 +AuctionHouseBot.ListingExpireTimeInSecondsMin = 900 +AuctionHouseBot.ListingExpireTimeInSecondsMax = 86400 ############################################################################### # AuctionHouseBot.MaxBuyoutPriceInCopper diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index 50ba47b..8c66958 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -48,6 +48,8 @@ AuctionHouseBot::AuctionHouseBot() : BidVariationHighReducePercent(0), BidVariationLowReducePercent(0.25f), BuyoutBelowVendorVariationAddPercent(0.25f), + ListingExpireTimeInSecondsMin(900), + ListingExpireTimeInSecondsMax(86400), BuyingBotBuyCandidatesPerBuyCycle(1), BuyingBotAcceptablePriceModifier(1), AHCharactersGUIDsForQuery(""), @@ -933,7 +935,7 @@ void AuctionHouseBot::addNewAuctions(Player* AHBplayer, AHBConfig *config) calculateItemValue(prototype, bidPrice, buyoutPrice); // Define a duration - uint32 etime = urand(900, 43200); + uint32 etime = urand(ListingExpireTimeInSecondsMin, ListingExpireTimeInSecondsMax); // Set stack size uint32 stackCount = getStackSizeForItem(prototype); @@ -1199,6 +1201,24 @@ void AuctionHouseBot::InitializeConfiguration() BidVariationHighReducePercent = sConfigMgr->GetOption("AuctionHouseBot.BidVariationHighReducePercent", 0); BidVariationLowReducePercent = sConfigMgr->GetOption("AuctionHouseBot.BidVariationLowReducePercent", 0.25f); BuyoutBelowVendorVariationAddPercent = sConfigMgr->GetOption("AuctionHouseBot.BuyoutBelowVendorVariationAddPercent", 0.25f); + ListingExpireTimeInSecondsMin = sConfigMgr->GetOption("AuctionHouseBot.ListingExpireTimeInSecondsMin", 900); + if (ListingExpireTimeInSecondsMin < 900) + { + LOG_ERROR("module", "AuctionHouseBot: ListingExpireTimeInSecondsMin was set below 900 (15 min), so setting to 900"); + ListingExpireTimeInSecondsMin = 900; + } + ListingExpireTimeInSecondsMax = sConfigMgr->GetOption("AuctionHouseBot.ListingExpireTimeInSecondsMax", 86400); + if (ListingExpireTimeInSecondsMax > 172800) + { + LOG_ERROR("module", "AuctionHouseBot: ListingExpireTimeInSecondsMax was set above 172800 (48 hours), so setting to 172800"); + ListingExpireTimeInSecondsMax = 172800; + } + if (ListingExpireTimeInSecondsMax < ListingExpireTimeInSecondsMin) + { + LOG_ERROR("module", "AuctionHouseBot: ListingExpireTimeInSecondsMax was smaller than ListingExpireTimeInSecondsMin, setting to 172800 (48 hours) and 900 (15 min)"); + ListingExpireTimeInSecondsMin = 900; + ListingExpireTimeInSecondsMax = 172800; + } // Buyer Bot BuyingBotBuyCandidatesPerBuyCycle = sConfigMgr->GetOption("AuctionHouseBot.Buyer.BuyCandidatesPerBuyCycle", 1); diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index d3c309a..23ac8a3 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -129,6 +129,8 @@ private: float BidVariationLowReducePercent; float BuyoutBelowVendorVariationAddPercent; uint32 BuyingBotBuyCandidatesPerBuyCycle; + uint32 ListingExpireTimeInSecondsMin; + uint32 ListingExpireTimeInSecondsMax; float BuyingBotAcceptablePriceModifier; std::string AHCharactersGUIDsForQuery; uint32 ItemsPerCycle;