Added additional AdvancedListingRules.UseDropRates config

This commit is contained in:
zeb
2025-10-13 18:01:45 -04:00
parent caf5a4fcde
commit af13f7e425
4 changed files with 340 additions and 183 deletions

View File

@@ -279,12 +279,16 @@ private:
std::set<uint32> ListedItemIDExceptionItems;
bool PreventOverpayingForVendorItems;
std::unordered_map<uint32, double> CachedItemDropRates;
std::vector<uint32> ItemTiersByClassAndQuality[17][7][11]; // [Classes][Qualities][Tiers]
std::vector<std::vector<std::vector<std::vector<uint32>>>> ItemTiersByClassAndQuality; // [Classes][Qualities][Tiers] .. [17][7][configurable]
std::map<double, int, std::greater<double>> DropRatesToTierMap;
std::set<uint32> AdvancedListingRuleUseDropRatesExceptionItems;
bool AdvancedListingRuleUseDropRatesEnabled;
bool AdvancedListingRuleUseDropRatesWeaponEnabled;
bool AdvancedListingRuleUseDropRatesArmorEnabled;
bool AdvancedListingRuleUseDropRatesRecipeEnabled;
int AdvancedListingRuleUseDropRatesMinQuality;
std::set<uint32> AdvancedListingRuleUseDropRatesWeaponAffectedQualities;
std::set<uint32> AdvancedListingRuleUseDropRatesArmorAffectedQualities;
std::set<uint32> AdvancedListingRuleUseDropRatesRecipeAffectedQualities;
std::unordered_set<uint32> QuestRewardItemIDs;
FactionSpecificAuctionHouseConfig AllianceConfig;
@@ -316,18 +320,21 @@ public:
void SetBuyingBotBuyCandidatesPerBuyCycle();
void GetConfigMinAndMax(std::string config, uint32& min, uint32& max);
void AddCharacters(std::string characterGUIDString);
void AddItemIDsFromString(std::set<uint32>& workingItemIDSet, std::string itemString, const char* parentOperationName);
void AddToItemIDSet(std::set<uint32>& workingItemIDSet, uint32 itemID, const char* parentOperationName);
void ParseNumberListToSet(std::set<uint32>& workingItemIDSet, std::string itemString, const char* parentOperationName);
void AddToNumberListSet(std::set<uint32>& workingItemIDSet, uint32 itemID, const char* parentOperationName);
const char* GetQualityName(ItemQualities quality);
const char* GetCategoryName(ItemClass category);
uint32 GetStackSizeForItem(ItemTemplate const* itemProto) const;
void CalculateItemValue(ItemTemplate const* itemProto, uint64& outBidPrice, uint64& outBuyoutPrice);
void PopulateItemDropChances();
std::string GetAdvancedListingRuleUseDropRatesEnabledCategoriesString();
void PopulateItemDropChancesForCategoryAndQuality(ItemClass category, std::string qualities);
void InitializeAdvancedListingRuleUseDropRatesTiers();
void PopulateQuestRewardItemIDs();
bool IsItemQuestReward(uint32 itemID);
bool IsItemCrafted(uint32 itemID);
bool IsItemCategoryQualityInDBDropRatesConfig(ItemTemplate const* proto);
bool IsItemEligibleForDBDropRates(ItemTemplate const* proto);
bool HandleAdvancedListingRuleUseDropRates(ItemTemplate const*& proto);
int GetItemDropChanceTier(double dropRate);
float GetAdvancedPricingMultiplier(ItemTemplate const* itemProto);
ItemTemplate const* GetProducedItemFromRecipe(ItemTemplate const* recipeItemTemplate);