fixed handling of null UseDropRates.<Category>.AffectedQualities configs

This commit is contained in:
zeb
2025-11-11 22:22:29 -05:00
parent 7db32506d2
commit 8038fec2db
3 changed files with 33 additions and 12 deletions

View File

@@ -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.<Category>.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<bool>("AuctionHouseBot.EnableSeller", false);
bool buyerEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.Buyer.Enabled", false);
if (sellerEnabled == false && buyerEnabled == false)
return false;
string charString = sConfigMgr->GetOption<std::string>("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<bool>("AuctionHouseBot.DEBUG", false);
debug_Out_Filters = sConfigMgr->GetOption<bool>("AuctionHouseBot.DEBUG_FILTERS", false);
// Bot enablement
SellingBotEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.EnableSeller", false);
BuyingBotEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.Buyer.Enabled", false);
if (SellingBotEnabled == false && BuyingBotEnabled == false)
return;
string charString = sConfigMgr->GetOption<std::string>("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

View File

@@ -313,6 +313,7 @@ public:
~AuctionHouseBot();
void Update();
bool IsModuleEnabled();
void InitializeConfiguration();
void EmptyAuctionHouses();
uint32 GetRandomStackValue(std::string configKeyString, uint32 defaultValue);

View File

@@ -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<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", true))
if (sConfigMgr->GetOption<bool>("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<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", true))
if (sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", false))
{
auctionbot->PopulateQuestRewardItemIDs();
auctionbot->PopulateItemDropChances();