From 3fcaae6e87fec53fc30253c074c47f50c6ef8e80 Mon Sep 17 00:00:00 2001 From: Spargel Date: Sun, 29 Jun 2025 04:52:50 -0500 Subject: [PATCH 1/3] Added itemlevel price multiplier with conf setting. --- conf/mod_ahbot.conf.dist | 5 +++++ src/AuctionHouseBot.cpp | 9 +++++++++ src/AuctionHouseBot.h | 2 ++ 3 files changed, 16 insertions(+) diff --git a/conf/mod_ahbot.conf.dist b/conf/mod_ahbot.conf.dist index 57a19bc..5d13658 100644 --- a/conf/mod_ahbot.conf.dist +++ b/conf/mod_ahbot.conf.dist @@ -197,6 +197,11 @@ AuctionHouseBot.PriceMultiplier.Quality.Legendary = 3 AuctionHouseBot.PriceMultiplier.Quality.Artifact = 3 AuctionHouseBot.PriceMultiplier.Quality.Heirloom = 3 +# Multiplier applied to item level when determining auction price +# Final multiplier = itemLevel * this value +# Default: 0.1 +AuctionHouseBot.PriceMultiplier.ItemLevel = 0.1 + ############################################################################### # AuctionHouseBot.RandomStackRatio.* # Used to determine how often a stack of the class will be single or randomly-size stacked when posted diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index edf2365..57b7a83 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -164,6 +164,12 @@ void AuctionHouseBot::calculateItemValue(ItemTemplate const* itemProto, uint64& outBuyoutPrice *= qualityPriceMultplier; outBuyoutPrice *= classPriceMultiplier; + // Apply item level multiplier + if (itemProto->ItemLevel > 0) + { + outBuyoutPrice *= itemProto->ItemLevel * ItemLevelPriceMultiplier; + } + // If a vendor sells this item, make the price at least that high if (itemProto->SellPrice > outBuyoutPrice) outBuyoutPrice = itemProto->SellPrice; @@ -915,6 +921,9 @@ void AuctionHouseBot::InitializeConfiguration() NeutralConfig.SetMaxItems(sConfigMgr->GetOption("AuctionHouseBot.Neutral.MaxItems", 15000)); NeutralConfig.SetBiddingInterval(sConfigMgr->GetOption("AuctionHouseBot.Neutral.BidInterval", 1)); NeutralConfig.SetBidsPerInterval(sConfigMgr->GetOption("AuctionHouseBot.Neutral.BidsPerInterval", 1)); + + ItemLevelPriceMultiplier = sConfigMgr->GetOption("AuctionHouseBot.PriceMultiplier.ItemLevel", 1.0f); + } uint32 AuctionHouseBot::GetRandomStackValue(std::string configKeyString, uint32 defaultValue) diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index 71fcdee..bf79d59 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -223,6 +223,8 @@ private: uint32 PriceMinimumCenterBaseMisc; uint32 PriceMinimumCenterBaseGlyph; std::unordered_map PriceMinimumCenterBaseOverridesByItemID; + float ItemLevelPriceMultiplier; + AHBConfig AllianceConfig; AHBConfig HordeConfig; From 30ae9d45d059c663dbe6f56f92a84100357efd2d Mon Sep 17 00:00:00 2001 From: Spargel Date: Sun, 29 Jun 2025 05:24:44 -0500 Subject: [PATCH 2/3] Fixed oversight and added disable option for ilevel multiplier. --- conf/mod_ahbot.conf.dist | 1 + src/AuctionHouseBot.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/conf/mod_ahbot.conf.dist b/conf/mod_ahbot.conf.dist index 5d13658..1394c07 100644 --- a/conf/mod_ahbot.conf.dist +++ b/conf/mod_ahbot.conf.dist @@ -200,6 +200,7 @@ AuctionHouseBot.PriceMultiplier.Quality.Heirloom = 3 # Multiplier applied to item level when determining auction price # Final multiplier = itemLevel * this value # Default: 0.1 +# Set to 0 to disable this multiplier. AuctionHouseBot.PriceMultiplier.ItemLevel = 0.1 ############################################################################### diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index 57b7a83..a159390 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -165,11 +165,12 @@ void AuctionHouseBot::calculateItemValue(ItemTemplate const* itemProto, uint64& outBuyoutPrice *= classPriceMultiplier; // Apply item level multiplier - if (itemProto->ItemLevel > 0) + if (ItemLevelPriceMultiplier > 0.0f && itemProto->ItemLevel > 0) { - outBuyoutPrice *= itemProto->ItemLevel * ItemLevelPriceMultiplier; + outBuyoutPrice *= itemProto->ItemLevel * ItemLevelPriceMultiplier; } + // If a vendor sells this item, make the price at least that high if (itemProto->SellPrice > outBuyoutPrice) outBuyoutPrice = itemProto->SellPrice; From 6f14f6b9e36eaab67ae6c1142ef373b0c046c784 Mon Sep 17 00:00:00 2001 From: NathanHandley Date: Tue, 1 Jul 2025 20:37:39 -0500 Subject: [PATCH 3/3] Set ilevel price multiplier to disabled by default --- conf/mod_ahbot.conf.dist | 14 ++++++++------ src/AuctionHouseBot.cpp | 5 +---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/conf/mod_ahbot.conf.dist b/conf/mod_ahbot.conf.dist index 1394c07..2809963 100644 --- a/conf/mod_ahbot.conf.dist +++ b/conf/mod_ahbot.conf.dist @@ -165,11 +165,17 @@ AuctionHouseBot.PriceMinimumCenterBase.Glyph = 1000 AuctionHouseBot.PriceMinimumCenterBase.OverrideItems = ############################################################################### -# AuctionHouseBot.PriceMultiplier.* +# AuctionHouseBot.PriceMultiplier.Category.* +# AuctionHouseBot.PriceMultiplier.Quality.* # Category/Quality-level modifier values for the prices of items, which can be # represented as decimal numbers, and must be > 0. Keep in mind that # the pricing algorithm has many steps to it and this is just a tuning # modifier. +# +# AuctionHouseBot.PriceMultiplier.ItemLevel.* +# Multiplier applied to item level when determining auction price +# Final multiplier = itemLevel * this value. Set to 0 (or less) to disable. +# Default: 0 (Disabled) ############################################################################### AuctionHouseBot.PriceMultiplier.Category.Consumable = 1 @@ -197,11 +203,7 @@ AuctionHouseBot.PriceMultiplier.Quality.Legendary = 3 AuctionHouseBot.PriceMultiplier.Quality.Artifact = 3 AuctionHouseBot.PriceMultiplier.Quality.Heirloom = 3 -# Multiplier applied to item level when determining auction price -# Final multiplier = itemLevel * this value -# Default: 0.1 -# Set to 0 to disable this multiplier. -AuctionHouseBot.PriceMultiplier.ItemLevel = 0.1 +AuctionHouseBot.PriceMultiplier.ItemLevel = 0 ############################################################################### # AuctionHouseBot.RandomStackRatio.* diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index a159390..a2ada1c 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -170,7 +170,6 @@ void AuctionHouseBot::calculateItemValue(ItemTemplate const* itemProto, uint64& outBuyoutPrice *= itemProto->ItemLevel * ItemLevelPriceMultiplier; } - // If a vendor sells this item, make the price at least that high if (itemProto->SellPrice > outBuyoutPrice) outBuyoutPrice = itemProto->SellPrice; @@ -881,6 +880,7 @@ void AuctionHouseBot::InitializeConfiguration() PriceMultiplierQualityLegendary = sConfigMgr->GetOption("AuctionHouseBot.PriceMultiplier.Quality.Legendary", 3); PriceMultiplierQualityArtifact = sConfigMgr->GetOption("AuctionHouseBot.PriceMultiplier.Quality.Artifact", 3); PriceMultiplierQualityHeirloom = sConfigMgr->GetOption("AuctionHouseBot.PriceMultiplier.Quality.Heirloom", 3); + ItemLevelPriceMultiplier = sConfigMgr->GetOption("AuctionHouseBot.PriceMultiplier.ItemLevel", 0); // Price minimums PriceMinimumCenterBaseConsumable = sConfigMgr->GetOption("AuctionHouseBot.PriceMinimumCenterBase.Consumable",1000); @@ -922,9 +922,6 @@ void AuctionHouseBot::InitializeConfiguration() NeutralConfig.SetMaxItems(sConfigMgr->GetOption("AuctionHouseBot.Neutral.MaxItems", 15000)); NeutralConfig.SetBiddingInterval(sConfigMgr->GetOption("AuctionHouseBot.Neutral.BidInterval", 1)); NeutralConfig.SetBidsPerInterval(sConfigMgr->GetOption("AuctionHouseBot.Neutral.BidsPerInterval", 1)); - - ItemLevelPriceMultiplier = sConfigMgr->GetOption("AuctionHouseBot.PriceMultiplier.ItemLevel", 1.0f); - } uint32 AuctionHouseBot::GetRandomStackValue(std::string configKeyString, uint32 defaultValue)