Merge pull request #49 from zeb139/issue-47

Fixed handling of null UseDropRates.<Category>.AffectedQualities configs. Improved module disablement
This commit is contained in:
Nathan Handley
2025-11-11 22:01:32 -06:00
committed by GitHub
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) 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 // Search creature loot templates, referenced loot_loot_template, group_loot tables, and object_loot tables for items' drop rates
std::string directDropString = R"SQL( std::string directDropString = R"SQL(
with chances AS ( with chances AS (
@@ -1799,24 +1807,30 @@ void AuctionHouseBot::Update()
ObjectAccessor::RemoveObject(player.get()); 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" || charString.empty())
{
LOG_INFO("module", "AuctionHouseBot: AuctionHouseBot.GUIDs is not configured so this module will be disabled");
return false;
}
return true;
}
void AuctionHouseBot::InitializeConfiguration() void AuctionHouseBot::InitializeConfiguration()
{ {
debug_Out = sConfigMgr->GetOption<bool>("AuctionHouseBot.DEBUG", false); debug_Out = sConfigMgr->GetOption<bool>("AuctionHouseBot.DEBUG", false);
debug_Out_Filters = sConfigMgr->GetOption<bool>("AuctionHouseBot.DEBUG_FILTERS", false); debug_Out_Filters = sConfigMgr->GetOption<bool>("AuctionHouseBot.DEBUG_FILTERS", false);
// Bot enablement
SellingBotEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.EnableSeller", false); SellingBotEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.EnableSeller", false);
BuyingBotEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.Buyer.Enabled", false); BuyingBotEnabled = sConfigMgr->GetOption<bool>("AuctionHouseBot.Buyer.Enabled", false);
if (SellingBotEnabled == false && BuyingBotEnabled == false)
return;
string charString = sConfigMgr->GetOption<std::string>("AuctionHouseBot.GUIDs", "0"); 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); AddCharacters(charString);
// Buyer & Seller core properties // Buyer & Seller core properties

View File

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

View File

@@ -20,13 +20,16 @@ public:
void OnAfterConfigLoad(bool /*reload*/) override void OnAfterConfigLoad(bool /*reload*/) override
{ {
if (!auctionbot->IsModuleEnabled())
return;
auctionbot->InitializeConfiguration(); auctionbot->InitializeConfiguration();
if (HasPerformedStartup == true) if (HasPerformedStartup == true)
{ {
LOG_INFO("server.loading", "AuctionHouseBot: (Re)populating item candidate lists ..."); LOG_INFO("server.loading", "AuctionHouseBot: (Re)populating item candidate lists ...");
auctionbot->PopulateItemCandidatesAndProportions(); auctionbot->PopulateItemCandidatesAndProportions();
if (sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", true)) if (sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", false))
{ {
auctionbot->PopulateQuestRewardItemIDs(); auctionbot->PopulateQuestRewardItemIDs();
auctionbot->PopulateItemDropChances(); auctionbot->PopulateItemDropChances();
@@ -36,9 +39,12 @@ public:
void OnStartup() override void OnStartup() override
{ {
if (!auctionbot->IsModuleEnabled())
return;
LOG_INFO("server.loading", "AuctionHouseBot: (Re)populating item candidate lists ..."); LOG_INFO("server.loading", "AuctionHouseBot: (Re)populating item candidate lists ...");
auctionbot->PopulateItemCandidatesAndProportions(); auctionbot->PopulateItemCandidatesAndProportions();
if (sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", true)) if (sConfigMgr->GetOption<bool>("AuctionHouseBot.AdvancedListingRules.UseDropRates.Enabled", false))
{ {
auctionbot->PopulateQuestRewardItemIDs(); auctionbot->PopulateQuestRewardItemIDs();
auctionbot->PopulateItemDropChances(); auctionbot->PopulateItemDropChances();