From 8038fec2db5f749fdc03b0fa21589ceb2537c9fc Mon Sep 17 00:00:00 2001 From: zeb <37308742+zeb139@users.noreply.github.com> Date: Tue, 11 Nov 2025 22:22:29 -0500 Subject: [PATCH] fixed handling of null UseDropRates..AffectedQualities configs --- src/AuctionHouseBot.cpp | 34 ++++++++++++++++++++++++---------- src/AuctionHouseBot.h | 1 + src/AuctionHouseBotScript.cpp | 10 ++++++++-- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index 32282c4..f4d4be0 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -1211,6 +1211,14 @@ void AuctionHouseBot::PopulateItemDropChances() void AuctionHouseBot::PopulateItemDropChancesForCategoryAndQuality(ItemClass category, std::string qualities) { + if (qualities.empty()) + { + LOG_ERROR("module", "AuctionHouseBot: PopulateItemDropChancesForCategoryAndQuality() qualities are not set. " + "Verify that mod_ahbot.conf has values for AdvancedListingRules.UseDropRates..AffectedQualities. " + "Defaulting to '2,3,4,5' to prevent crash."); + qualities = "2,3,4,5"; + } + // Search creature loot templates, referenced loot_loot_template, group_loot tables, and object_loot tables for items' drop rates std::string directDropString = R"SQL( with chances AS ( @@ -1799,24 +1807,30 @@ void AuctionHouseBot::Update() ObjectAccessor::RemoveObject(player.get()); } +bool AuctionHouseBot::IsModuleEnabled() +{ + bool sellerEnabled = sConfigMgr->GetOption("AuctionHouseBot.EnableSeller", false); + bool buyerEnabled = sConfigMgr->GetOption("AuctionHouseBot.Buyer.Enabled", false); + if (sellerEnabled == false && buyerEnabled == false) + return false; + string charString = sConfigMgr->GetOption("AuctionHouseBot.GUIDs", "0"); + if (charString == "0") + { + LOG_INFO("module", "AuctionHouseBot: AuctionHouseBot.GUIDs is '0' so this module will be disabled"); + return false; + } + return true; +} + void AuctionHouseBot::InitializeConfiguration() { debug_Out = sConfigMgr->GetOption("AuctionHouseBot.DEBUG", false); debug_Out_Filters = sConfigMgr->GetOption("AuctionHouseBot.DEBUG_FILTERS", false); - // Bot enablement SellingBotEnabled = sConfigMgr->GetOption("AuctionHouseBot.EnableSeller", false); BuyingBotEnabled = sConfigMgr->GetOption("AuctionHouseBot.Buyer.Enabled", false); - if (SellingBotEnabled == false && BuyingBotEnabled == false) - return; + string charString = sConfigMgr->GetOption("AuctionHouseBot.GUIDs", "0"); - if (charString == "0") - { - BuyingBotEnabled = false; - SellingBotEnabled = false; - LOG_INFO("module", "AuctionHouseBot: AuctionHouseBot.GUIDs is '0' so this module will be disabled"); - return; - } AddCharacters(charString); // Buyer & Seller core properties diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index cb727e1..c225798 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -313,6 +313,7 @@ public: ~AuctionHouseBot(); void Update(); + bool IsModuleEnabled(); void InitializeConfiguration(); void EmptyAuctionHouses(); uint32 GetRandomStackValue(std::string configKeyString, uint32 defaultValue); diff --git a/src/AuctionHouseBotScript.cpp b/src/AuctionHouseBotScript.cpp index 8bdef78..9a457aa 100644 --- a/src/AuctionHouseBotScript.cpp +++ b/src/AuctionHouseBotScript.cpp @@ -20,13 +20,16 @@ public: void OnAfterConfigLoad(bool /*reload*/) override { + if (!auctionbot->IsModuleEnabled()) + return; + auctionbot->InitializeConfiguration(); if (HasPerformedStartup == true) { LOG_INFO("server.loading", "AuctionHouseBot: (Re)populating item candidate lists ..."); auctionbot->PopulateItemCandidatesAndProportions(); - if (sConfigMgr->GetOption("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", true)) + if (sConfigMgr->GetOption("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", false)) { auctionbot->PopulateQuestRewardItemIDs(); auctionbot->PopulateItemDropChances(); @@ -36,9 +39,12 @@ public: void OnStartup() override { + if (!auctionbot->IsModuleEnabled()) + return; + LOG_INFO("server.loading", "AuctionHouseBot: (Re)populating item candidate lists ..."); auctionbot->PopulateItemCandidatesAndProportions(); - if (sConfigMgr->GetOption("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", true)) + if (sConfigMgr->GetOption("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", false)) { auctionbot->PopulateQuestRewardItemIDs(); auctionbot->PopulateItemDropChances();