mirror of
https://github.com/NathanHandley/mod-ah-bot-plus.git
synced 2026-01-13 01:08:37 +00:00
Added meat, gem, potion, elixir, flask advancedPricingFormulas. Fixed build warnings
This commit is contained in:
@@ -261,12 +261,17 @@ AuctionHouseBot.PriceMinimumCenterBase.OverrideItems =
|
||||
# will disable PriceMultiplier.ItemLevel pricing for that category
|
||||
###############################################################################
|
||||
|
||||
AuctionHouseBot.AdvancedPricing.Consumable.Potion.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.Consumable.Elixir.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.Consumable.Flask.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.Gem.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.Cloth.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.Herb.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.MetalStone.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.Leather.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.Enchanting.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.Elemental.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.TradeGood.Meat.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.Misc.Junk.Enabled = 1
|
||||
AuctionHouseBot.AdvancedPricing.Misc.Mount.Enabled = 1
|
||||
|
||||
@@ -377,9 +382,9 @@ AuctionHouseBot.PriceMultiplier.CategoryWeapon.QualityHeirloom = 1.0
|
||||
# Gem
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityPoor = 1.0
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityNormal = 1.0
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityUncommon = 1.0
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityRare = 1.4
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityEpic = 2.0
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityUncommon = 1.2
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityRare = 1.2
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityEpic = 0.9
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityLegendary = 1.0
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityArtifact = 1.0
|
||||
AuctionHouseBot.PriceMultiplier.CategoryGem.QualityHeirloom = 1.0
|
||||
|
||||
@@ -48,9 +48,9 @@ AuctionHouseBot::AuctionHouseBot() :
|
||||
BidVariationHighReducePercent(0),
|
||||
BidVariationLowReducePercent(0.25f),
|
||||
BuyoutBelowVendorVariationAddPercent(0.25f),
|
||||
BuyingBotBuyCandidatesPerBuyCycle(1),
|
||||
ListingExpireTimeInSecondsMin(900),
|
||||
ListingExpireTimeInSecondsMax(86400),
|
||||
BuyingBotBuyCandidatesPerBuyCycle(1),
|
||||
BuyingBotAcceptablePriceModifier(1),
|
||||
AHCharactersGUIDsForQuery(""),
|
||||
ItemsPerCycle(75),
|
||||
@@ -405,7 +405,45 @@ float AuctionHouseBot::getAdvancedPricingMultiplier(ItemTemplate const* itemProt
|
||||
|
||||
// Try to approximate real world prices for Trade Goods based on subclass and item level
|
||||
double advancedPricingMultiplier = 1.0f;
|
||||
if (itemProto->Class == ITEM_CLASS_TRADE_GOODS)
|
||||
if (itemProto->Class == ITEM_CLASS_CONSUMABLE)
|
||||
{
|
||||
switch (itemProto->SubClass)
|
||||
{
|
||||
case ITEM_SUBCLASS_POTION:
|
||||
{
|
||||
if (!AdvancedPricingConsumablePotionEnabled)
|
||||
break;
|
||||
double potionMultiplierHelper = std::log(1.0 + (0.08 * itemProto->ItemLevel));
|
||||
advancedPricingMultiplier = ((std::pow(potionMultiplierHelper,3.0)) / (1 + (4.0 * potionMultiplierHelper))) + (std::pow(potionMultiplierHelper,2.5));
|
||||
break;
|
||||
}
|
||||
case ITEM_SUBCLASS_ELIXIR:
|
||||
{
|
||||
if (!AdvancedPricingConsumableElixirEnabled)
|
||||
break;
|
||||
double elixirMultiplierHelper = std::log(1.0 + (1.6 * itemProto->ItemLevel));
|
||||
advancedPricingMultiplier = ((std::pow(elixirMultiplierHelper,3.1)) / (1 + (5.0 * elixirMultiplierHelper))) + (0.05 * std::pow(elixirMultiplierHelper,3.2)) - 1.0;
|
||||
break;
|
||||
}
|
||||
case ITEM_SUBCLASS_FLASK:
|
||||
{
|
||||
if (!AdvancedPricingConsumableFlaskEnabled)
|
||||
break;
|
||||
// Use logarithmic scaling to compress large differences in vendorSellPrice to a range of ~22g-25g
|
||||
// advPricingMultiplier = LowTargetRange + (UpperTargetRange - LowTargetRange) * ( ln(vendorSellPrice) - ln(minVendorPrice) ) / ( ln(maxVendorPrice) - ln(minVendorPrice) ) / vendorSellPrice
|
||||
advancedPricingMultiplier = (220000 + (250000-220000) * (std::log(itemProto->SellPrice) - std::log(1250)) / (std::log(10000) - std::log(1250))) / itemProto->SellPrice;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (itemProto->Class == ITEM_CLASS_GEM && AdvancedPricingGemEnabled)
|
||||
{
|
||||
// No switch for subclass needed since Gem subclass represents gem color
|
||||
double gemMultiplierHelper = std::log(1.0 + (0.05 * itemProto->ItemLevel));
|
||||
advancedPricingMultiplier = ((std::pow(gemMultiplierHelper,1.0)) / (1 + (10.0 * gemMultiplierHelper))) + (std::pow(gemMultiplierHelper,3.0));
|
||||
}
|
||||
else if (itemProto->Class == ITEM_CLASS_TRADE_GOODS)
|
||||
{
|
||||
switch (itemProto->SubClass)
|
||||
{
|
||||
@@ -456,6 +494,14 @@ float AuctionHouseBot::getAdvancedPricingMultiplier(ItemTemplate const* itemProt
|
||||
advancedPricingMultiplier = 85 - (itemProto->ItemLevel / 0.97);
|
||||
break;
|
||||
}
|
||||
case ITEM_SUBCLASS_MEAT:
|
||||
{
|
||||
if (!AdvancedPricingTradeGoodMeatEnabled)
|
||||
break;
|
||||
double meatMultiplierHelper = std::log(1.0 + (0.5 * itemProto->ItemLevel));
|
||||
advancedPricingMultiplier = ((std::pow(meatMultiplierHelper,3.2)) / (1 + (2.0 * meatMultiplierHelper))) + (0.05 * std::pow(meatMultiplierHelper,3.2)) - 0.1;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -822,7 +868,7 @@ int AuctionHouseBot::getRandomValidItemClassForNewListing()
|
||||
|
||||
// Loop through all of the item classes to make sure a valid one is good, looping candidate back to zero
|
||||
uint32 itemClassCandidate = ItemCandidateClassWeightedProportionList[urand(0, ItemCandidateClassWeightedProportionList.size() - 1)];
|
||||
for (int i = 0; i < ItemCandidateClassWeightedProportionList.size(); i++)
|
||||
for (size_t i = 0; i < ItemCandidateClassWeightedProportionList.size(); i++)
|
||||
{
|
||||
if (ItemCandidatesByItemClass[itemClassCandidate].size() > 0)
|
||||
return itemClassCandidate;
|
||||
@@ -1046,7 +1092,6 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player* AHBplayer, AHBConfig *con
|
||||
// Determine if it's a bid, buyout, or skip
|
||||
bool doBuyout = false;
|
||||
bool doBid = false;
|
||||
uint64 curAuctionBidAmount = 0;
|
||||
uint64 calcBidAmount = 0;
|
||||
|
||||
if (auction->buyout != 0 && auction->buyout < willingToPayForStackPrice)
|
||||
@@ -1369,12 +1414,17 @@ void AuctionHouseBot::InitializeConfiguration()
|
||||
PriceMultiplierCategoryMountQualityHeirloom = sConfigMgr->GetOption<float>("AuctionHouseBot.PriceMultiplier.CategoryMount.QualityHeirloom", 1.0);
|
||||
|
||||
// Advanced Pricing
|
||||
AdvancedPricingConsumablePotionEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Consumable.Potion.Enabled", true);
|
||||
AdvancedPricingConsumableElixirEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Consumable.Elixir.Enabled", true);
|
||||
AdvancedPricingConsumableFlaskEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Consumable.Flask.Enabled", true);
|
||||
AdvancedPricingGemEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Gem.Enabled", true);
|
||||
AdvancedPricingTradeGoodClothEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.Cloth.Enabled", true);
|
||||
AdvancedPricingTradeGoodHerbEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.Herb.Enabled", true);
|
||||
AdvancedPricingTradeGoodMetalStoneEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.MetalStone.Enabled", true);
|
||||
AdvancedPricingTradeGoodLeatherEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.Leather.Enabled", true);
|
||||
AdvancedPricingTradeGoodEnchantingEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.Enchanting.Enabled", true);
|
||||
AdvancedPricingTradeGoodElementalEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.Elemental.Enabled", true);
|
||||
AdvancedPricingTradeGoodMeatEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.TradeGood.Meat.Enabled", true);
|
||||
AdvancedPricingMiscJunkEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Misc.Junk.Enabled", true);
|
||||
AdvancedPricingMiscMountEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedPricing.Misc.Mount.Enabled", true);
|
||||
|
||||
|
||||
@@ -236,12 +236,17 @@ private:
|
||||
float PriceMultiplierCategoryMountQualityLegendary;
|
||||
float PriceMultiplierCategoryMountQualityArtifact;
|
||||
float PriceMultiplierCategoryMountQualityHeirloom;
|
||||
bool AdvancedPricingConsumablePotionEnabled;
|
||||
bool AdvancedPricingConsumableElixirEnabled;
|
||||
bool AdvancedPricingConsumableFlaskEnabled;
|
||||
bool AdvancedPricingGemEnabled;
|
||||
bool AdvancedPricingTradeGoodClothEnabled;
|
||||
bool AdvancedPricingTradeGoodHerbEnabled;
|
||||
bool AdvancedPricingTradeGoodMetalStoneEnabled;
|
||||
bool AdvancedPricingTradeGoodLeatherEnabled;
|
||||
bool AdvancedPricingTradeGoodEnchantingEnabled;
|
||||
bool AdvancedPricingTradeGoodElementalEnabled;
|
||||
bool AdvancedPricingTradeGoodMeatEnabled;
|
||||
bool AdvancedPricingMiscJunkEnabled;
|
||||
bool AdvancedPricingMiscMountEnabled;
|
||||
uint32 PriceMinimumCenterBaseConsumable;
|
||||
|
||||
Reference in New Issue
Block a user