From ebddc1e297c02f52747927852157733cdc110dab Mon Sep 17 00:00:00 2001 From: NathanHandley Date: Wed, 15 Nov 2023 17:50:31 -0600 Subject: [PATCH] Adjust pricing algorithm - Reduce variance - Increase price of cheap (non-projectile) items - Raise prices of epic and rare items --- src/AuctionHouseBot.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index f6dd67f..cc82398 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -87,21 +87,28 @@ void AuctionHouseBot::calculateItemValue(ItemTemplate const* itemProto, uint64& // Start with a buyout price related to the sell price outBuyoutPrice = itemProto->SellPrice; - // Set a minimum base buyoutPrice to 1 silver - if (outBuyoutPrice < 100) + // Set a minimum base buyoutPrice to 5 silver for non-projectiles + if (outBuyoutPrice < 500 && itemProto->Class != ITEM_CLASS_PROJECTILE) { // TODO: Move to a config - outBuyoutPrice = 100; + outBuyoutPrice = 500; } - // Multiply the price by the quality - outBuyoutPrice *= itemProto->Quality; + // Multiply the price based on quality + switch (itemProto->Quality) + { + case ITEM_QUALITY_UNCOMMON: outBuyoutPrice *= 2; break; + case ITEM_QUALITY_RARE: outBuyoutPrice *= 5; break; + case ITEM_QUALITY_EPIC: outBuyoutPrice *= 7; break; + default: break; + } - // If a vendor sells this item, make the base price the same as the vendor price - // TODO:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // If a vendor sells this item, make the price at least that high + if (itemProto->SellPrice > outBuyoutPrice) + outBuyoutPrice = itemProto->SellPrice; // Add a variance to the buyout price, minimum of 1% - uint64 sellVarianceBuyoutPriceTopPercent = 150; + uint64 sellVarianceBuyoutPriceTopPercent = 125; uint64 sellVarianceBuyoutPriceBottomPercent = 75; // Constrain variance top so that it can't be lower than bottom, and minimum values are 1%