Add configs to enable/disable sellprice restrictions

This commit is contained in:
NathanHandley
2025-10-06 08:47:20 -05:00
parent 6ff691ad0f
commit a7efe6d760
3 changed files with 40 additions and 17 deletions

View File

@@ -97,6 +97,11 @@ AuctionHouseBot.ListingExpireTimeInSecondsMax = 86400
# Note: Do not go negative on either number. Set both to 0 if you want bids # Note: Do not go negative on either number. Set both to 0 if you want bids
# to always be exactly buyout for both buyer and seller. # to always be exactly buyout for both buyer and seller.
# #
# AuctionHouseBot.BuyoutBelowVendorVariationAddPercentEnabled
# If true, price calculation will apply the following config percent when
# a price's buyout is calculated below the item_template.SellPrice
# Default: true
#
# AuctionHouseBot.BuyoutBelowVendorVariationAddPercent # AuctionHouseBot.BuyoutBelowVendorVariationAddPercent
# If a buyout calculates to a price below vendor price, this is how much to # If a buyout calculates to a price below vendor price, this is how much to
# add to it in order to bring it up above vendor price. # add to it in order to bring it up above vendor price.
@@ -110,6 +115,7 @@ AuctionHouseBot.BuyoutVariationReducePercent = 0.15
AuctionHouseBot.BuyoutVariationAddPercent = 0.25 AuctionHouseBot.BuyoutVariationAddPercent = 0.25
AuctionHouseBot.BidVariationHighReducePercent = 0 AuctionHouseBot.BidVariationHighReducePercent = 0
AuctionHouseBot.BidVariationLowReducePercent = 0.25 AuctionHouseBot.BidVariationLowReducePercent = 0.25
AuctionHouseBot.BuyoutBelowVendorVariationAddPercentEnabled = true
AuctionHouseBot.BuyoutBelowVendorVariationAddPercent = 0.25 AuctionHouseBot.BuyoutBelowVendorVariationAddPercent = 0.25
############################################################################### ###############################################################################
@@ -372,11 +378,21 @@ AuctionHouseBot.ListProportion.CategoryGlyph.QualityHeirloom = 0
AuctionHouseBot.ListProportion.ListMultipliedItemIDs = 2589:10,2592:10,4306:10,4338:10,14047:10,21877:10,33470:10,2318:10,2319:10,4234:10,4304:10,8170:10,21887:10,33568:10,2770:10,2771:10,2772:10,2775:10,2776:10,3858:10,7911:10,10620:10,23424:10,23425:10,23426:10,23427:10,36909:10,36912:10,36910:10,2835:10,2836:10,2838:10,12365:10,7912:10,765:10,785:10,2447:10,2449:10,2450:10,2452:10,2453:10,3355:10,3356:10,3357:10,3358:10,3369:10,3818:10,3819:10,3820:10,3821:10,4625:10,8153:10,8831:10,8836:10,8838:10,8839:10,8845:10,8846:10,13463:10,13464:10,13465:10,13466:10,13467:10,13468:10,22785:10,22786:10,22787:10,22789:10,22790:10,22791:10,22792:10,22793:10,22794:10,22795:10,36901:10,36902:10,36903:10,36904:10,36905:10,36906:10,36907:10,36908:10,37921:10,10938:10,10939:10,10940:10,10978:10,10998:10,11082:10,11084:10,11128:10,11134:10,11135:10,11138:10,11139:10,11174:10,11175:10,11177:10,11178:10,14343:10,16202:10,16203:10,16204:10,22445:10,22446:10,22447:10,22448:10,22449:10,34052:10,34053:10,34054:10,34055:10,34056:10,774:10,818:10,1206:10,1210:10,1529:10,1705:10,3864:10,7909:10,7910:10,12361:10,12364:10,12799:10,12800:10,21929:10,23077:10,23079:10,23107:10,23112:10,23117:10,23436:10,23437:10,23438:10,23439:10,23440:10,23441:10,36917:10,36918:10,36919:10,36920:10,36921:10,36922:10,36923:10,36924:10,36925:10,36926:10,36927:10,36928:10,36929:10,36930:10,36931:10,36932:10,36933:10,36934:10,118:5,858:5,929:5,2455:5,2456:5,3827:5,3928:5,6149:5,13443:5,13446:5,18253:5,22829:5,22832:5,22850:5,33447:5,33448:5,39671:5,40067:5,43569:5,43570:5 AuctionHouseBot.ListProportion.ListMultipliedItemIDs = 2589:10,2592:10,4306:10,4338:10,14047:10,21877:10,33470:10,2318:10,2319:10,4234:10,4304:10,8170:10,21887:10,33568:10,2770:10,2771:10,2772:10,2775:10,2776:10,3858:10,7911:10,10620:10,23424:10,23425:10,23426:10,23427:10,36909:10,36912:10,36910:10,2835:10,2836:10,2838:10,12365:10,7912:10,765:10,785:10,2447:10,2449:10,2450:10,2452:10,2453:10,3355:10,3356:10,3357:10,3358:10,3369:10,3818:10,3819:10,3820:10,3821:10,4625:10,8153:10,8831:10,8836:10,8838:10,8839:10,8845:10,8846:10,13463:10,13464:10,13465:10,13466:10,13467:10,13468:10,22785:10,22786:10,22787:10,22789:10,22790:10,22791:10,22792:10,22793:10,22794:10,22795:10,36901:10,36902:10,36903:10,36904:10,36905:10,36906:10,36907:10,36908:10,37921:10,10938:10,10939:10,10940:10,10978:10,10998:10,11082:10,11084:10,11128:10,11134:10,11135:10,11138:10,11139:10,11174:10,11175:10,11177:10,11178:10,14343:10,16202:10,16203:10,16204:10,22445:10,22446:10,22447:10,22448:10,22449:10,34052:10,34053:10,34054:10,34055:10,34056:10,774:10,818:10,1206:10,1210:10,1529:10,1705:10,3864:10,7909:10,7910:10,12361:10,12364:10,12799:10,12800:10,21929:10,23077:10,23079:10,23107:10,23112:10,23117:10,23436:10,23437:10,23438:10,23439:10,23440:10,23441:10,36917:10,36918:10,36919:10,36920:10,36921:10,36922:10,36923:10,36924:10,36925:10,36926:10,36927:10,36928:10,36929:10,36930:10,36931:10,36932:10,36933:10,36934:10,118:5,858:5,929:5,2455:5,2456:5,3827:5,3928:5,6149:5,13443:5,13446:5,18253:5,22829:5,22832:5,22850:5,33447:5,33448:5,39671:5,40067:5,43569:5,43570:5
############################################################################### ###############################################################################
# AuctionHouseBot.PriceMinimumCenterBase.UseItemSellPriceIfHigher
# If set to true, the minimum center base will use the item sell price
# defined in sql table item_template.SellPrice if that value is higher
# than the defined PriceMinimumCenterBase below. Generally leave this
# as true, as the price minimums were meant only to catch zero or
# ultra low value items. Basically, if this is false then all items
# will use this category price as the base before formulas, so it
# is only advisable to make false if you are doing item level settings
# Note: Be mindful of BuyoutBelowVendorVariationAddPercentEnabled
#
# AuctionHouseBot.PriceMinimumCenterBase.* # AuctionHouseBot.PriceMinimumCenterBase.*
# Category-level price minimums, in copper, before any multipliers come # Category-level price minimums, in copper, before any multipliers come
# into play. Value shouldn't be zero, and the base minimum price will # into play. Value shouldn't be zero, and the base minimum price will
# the BidVariation* variables above. This is used to catch 0 cost or # the BidVariation* variables above. This is used to catch 0 cost or
# extremely low cost items # extremely low cost items. Note that the value can never be lower than 1
# #
# AuctionHouseBot.PriceMinimumCenterBase.OverrideItems # AuctionHouseBot.PriceMinimumCenterBase.OverrideItems
# Comma separated list of items in the format of "itemID:PriceMinCopper" # Comma separated list of items in the format of "itemID:PriceMinCopper"
@@ -386,6 +402,8 @@ AuctionHouseBot.ListProportion.ListMultipliedItemIDs = 2589:10,2592:10,4306:10,4
# of linen cloth to 100 gold and silk cloth to 10 gold each # of linen cloth to 100 gold and silk cloth to 10 gold each
############################################################################### ###############################################################################
AuctionHouseBot.PriceMinimumCenterBase.UseItemSellPriceIfHigher = true
AuctionHouseBot.PriceMinimumCenterBase.Consumable = 1000 AuctionHouseBot.PriceMinimumCenterBase.Consumable = 1000
AuctionHouseBot.PriceMinimumCenterBase.Container = 1000 AuctionHouseBot.PriceMinimumCenterBase.Container = 1000
AuctionHouseBot.PriceMinimumCenterBase.Weapon = 1000 AuctionHouseBot.PriceMinimumCenterBase.Weapon = 1000

View File

@@ -52,6 +52,7 @@ AuctionHouseBot::AuctionHouseBot() :
BuyoutVariationAddPercent(0.25f), BuyoutVariationAddPercent(0.25f),
BidVariationHighReducePercent(0), BidVariationHighReducePercent(0),
BidVariationLowReducePercent(0.25f), BidVariationLowReducePercent(0.25f),
BuyoutBelowVendorVariationAddPercentEnabled(true),
BuyoutBelowVendorVariationAddPercent(0.25f), BuyoutBelowVendorVariationAddPercent(0.25f),
BuyingBotBuyCandidatesPerBuyCycleMin(1), BuyingBotBuyCandidatesPerBuyCycleMin(1),
BuyingBotBuyCandidatesPerBuyCycleMax(1), BuyingBotBuyCandidatesPerBuyCycleMax(1),
@@ -136,6 +137,7 @@ AuctionHouseBot::AuctionHouseBot() :
PriceMultiplierQualityLegendary(1), PriceMultiplierQualityLegendary(1),
PriceMultiplierQualityArtifact(1), PriceMultiplierQualityArtifact(1),
PriceMultiplierQualityHeirloom(1), PriceMultiplierQualityHeirloom(1),
UseItemSellPriceIfHigherThanPriceMinimumCenterBase(true),
PriceMinimumCenterBaseConsumable(1), PriceMinimumCenterBaseConsumable(1),
PriceMinimumCenterBaseContainer(1), PriceMinimumCenterBaseContainer(1),
PriceMinimumCenterBaseWeapon(1), PriceMinimumCenterBaseWeapon(1),
@@ -232,8 +234,11 @@ uint32 AuctionHouseBot::GetStackSizeForItem(ItemTemplate const* itemProto) const
void AuctionHouseBot::CalculateItemValue(ItemTemplate const* itemProto, uint64& outBidPrice, uint64& outBuyoutPrice) void AuctionHouseBot::CalculateItemValue(ItemTemplate const* itemProto, uint64& outBidPrice, uint64& outBuyoutPrice)
{ {
// Start with a buyout price related to the sell price // Start with a buyout price related to the sell price, if configured
outBuyoutPrice = itemProto->SellPrice; if (UseItemSellPriceIfHigherThanPriceMinimumCenterBase == true)
outBuyoutPrice = itemProto->SellPrice;
else
outBuyoutPrice = 1; // Avoid zeros
// Get the price multipliers // Get the price multipliers
float classPriceMultiplier = 1; float classPriceMultiplier = 1;
@@ -351,29 +356,25 @@ void AuctionHouseBot::CalculateItemValue(ItemTemplate const* itemProto, uint64&
if (itemLevelPriceMultplier > 0.0f && itemProto->ItemLevel > 0 && advancedPricingMultiplier == 1.0f) if (itemLevelPriceMultplier > 0.0f && itemProto->ItemLevel > 0 && advancedPricingMultiplier == 1.0f)
outBuyoutPrice *= itemProto->ItemLevel * itemLevelPriceMultplier; outBuyoutPrice *= itemProto->ItemLevel * itemLevelPriceMultplier;
// If a vendor sells this item, make the price at least that high
if (itemProto->SellPrice > outBuyoutPrice)
outBuyoutPrice = itemProto->SellPrice;
// Avoid price overflows // Avoid price overflows
if (outBuyoutPrice > MaxBuyoutPriceInCopper) if (outBuyoutPrice > MaxBuyoutPriceInCopper)
outBuyoutPrice = MaxBuyoutPriceInCopper; outBuyoutPrice = MaxBuyoutPriceInCopper;
// If variance brought price below sell price, bring it back up to avoid making money off vendoring AH items
if (BuyoutBelowVendorVariationAddPercentEnabled == true && outBuyoutPrice < itemProto->SellPrice)
{
float minLowPriceAddVariancePercent = 1.0f + BuyoutBelowVendorVariationAddPercent;
outBuyoutPrice = urand(itemProto->SellPrice, minLowPriceAddVariancePercent * itemProto->SellPrice);
}
// Calculate a bid price based on a variance against buyout price // Calculate a bid price based on a variance against buyout price
float sellVarianceBidPriceTopPercent = 1.0f - BidVariationHighReducePercent; float sellVarianceBidPriceTopPercent = 1.0f - BidVariationHighReducePercent;
float sellVarianceBidPriceBottomPercent = 1.0f - BidVariationLowReducePercent; float sellVarianceBidPriceBottomPercent = 1.0f - BidVariationLowReducePercent;
outBidPrice = urand(sellVarianceBidPriceBottomPercent * outBuyoutPrice, sellVarianceBidPriceTopPercent * outBuyoutPrice); outBidPrice = urand(sellVarianceBidPriceBottomPercent * outBuyoutPrice, sellVarianceBidPriceTopPercent * outBuyoutPrice);
// If variance brought price below sell price, bring it back up to avoid making money off vendoring AH items // Catch any zeros
if (outBuyoutPrice < itemProto->SellPrice) if (outBuyoutPrice == 0)
{ outBuyoutPrice = 1;
float minLowPriceAddVariancePercent = 1.0f + BuyoutBelowVendorVariationAddPercent;
outBuyoutPrice = urand(itemProto->SellPrice, minLowPriceAddVariancePercent * itemProto->SellPrice);
}
// Bid price can never be below sell price
if (outBidPrice < itemProto->SellPrice)
outBidPrice = itemProto->SellPrice;
} }
float AuctionHouseBot::GetAdvancedPricingMultiplier(ItemTemplate const* itemProto) float AuctionHouseBot::GetAdvancedPricingMultiplier(ItemTemplate const* itemProto)
@@ -1374,6 +1375,7 @@ void AuctionHouseBot::InitializeConfiguration()
BuyoutVariationAddPercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BuyoutVariationAddPercent", 0.25f); BuyoutVariationAddPercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BuyoutVariationAddPercent", 0.25f);
BidVariationHighReducePercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BidVariationHighReducePercent", 0); BidVariationHighReducePercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BidVariationHighReducePercent", 0);
BidVariationLowReducePercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BidVariationLowReducePercent", 0.25f); BidVariationLowReducePercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BidVariationLowReducePercent", 0.25f);
BuyoutBelowVendorVariationAddPercentEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.BuyoutBelowVendorVariationAddPercentEnabled", true);
BuyoutBelowVendorVariationAddPercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BuyoutBelowVendorVariationAddPercent", 0.25f); BuyoutBelowVendorVariationAddPercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BuyoutBelowVendorVariationAddPercent", 0.25f);
ListingExpireTimeInSecondsMin = sConfigMgr->GetOption<uint32>("AuctionHouseBot.ListingExpireTimeInSecondsMin", 900); ListingExpireTimeInSecondsMin = sConfigMgr->GetOption<uint32>("AuctionHouseBot.ListingExpireTimeInSecondsMin", 900);
if (ListingExpireTimeInSecondsMin < 900) if (ListingExpireTimeInSecondsMin < 900)
@@ -1532,6 +1534,7 @@ void AuctionHouseBot::InitializeConfiguration()
AdvancedPricingMiscMountEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Misc.Mount.Enabled", true); AdvancedPricingMiscMountEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Misc.Mount.Enabled", true);
// Price minimums // Price minimums
UseItemSellPriceIfHigherThanPriceMinimumCenterBase = sConfigMgr->GetOption<bool>("AuctionHouseBot.PriceMinimumCenterBase.UseItemSellPriceIfHigher", true);
PriceMinimumCenterBaseConsumable = sConfigMgr->GetOption<uint32>("AuctionHouseBot.PriceMinimumCenterBase.Consumable",1000); PriceMinimumCenterBaseConsumable = sConfigMgr->GetOption<uint32>("AuctionHouseBot.PriceMinimumCenterBase.Consumable",1000);
PriceMinimumCenterBaseContainer = sConfigMgr->GetOption<uint32>("AuctionHouseBot.PriceMinimumCenterBase.Container", 1000); PriceMinimumCenterBaseContainer = sConfigMgr->GetOption<uint32>("AuctionHouseBot.PriceMinimumCenterBase.Container", 1000);
PriceMinimumCenterBaseWeapon = sConfigMgr->GetOption<uint32>("AuctionHouseBot.PriceMinimumCenterBase.Weapon", 1000); PriceMinimumCenterBaseWeapon = sConfigMgr->GetOption<uint32>("AuctionHouseBot.PriceMinimumCenterBase.Weapon", 1000);

View File

@@ -139,6 +139,7 @@ private:
float BuyoutVariationAddPercent; float BuyoutVariationAddPercent;
float BidVariationHighReducePercent; float BidVariationHighReducePercent;
float BidVariationLowReducePercent; float BidVariationLowReducePercent;
bool BuyoutBelowVendorVariationAddPercentEnabled;
float BuyoutBelowVendorVariationAddPercent; float BuyoutBelowVendorVariationAddPercent;
uint32 BuyingBotBuyCandidatesPerBuyCycleMin; uint32 BuyingBotBuyCandidatesPerBuyCycleMin;
uint32 BuyingBotBuyCandidatesPerBuyCycleMax; uint32 BuyingBotBuyCandidatesPerBuyCycleMax;
@@ -254,6 +255,7 @@ private:
bool AdvancedPricingTradeGoodMeatEnabled; bool AdvancedPricingTradeGoodMeatEnabled;
bool AdvancedPricingMiscJunkEnabled; bool AdvancedPricingMiscJunkEnabled;
bool AdvancedPricingMiscMountEnabled; bool AdvancedPricingMiscMountEnabled;
bool UseItemSellPriceIfHigherThanPriceMinimumCenterBase;
uint32 PriceMinimumCenterBaseConsumable; uint32 PriceMinimumCenterBaseConsumable;
uint32 PriceMinimumCenterBaseContainer; uint32 PriceMinimumCenterBaseContainer;
uint32 PriceMinimumCenterBaseWeapon; uint32 PriceMinimumCenterBaseWeapon;