From 64b09fd3ca570309b4bf1b82380830bc042fc781 Mon Sep 17 00:00:00 2001 From: Spargel Date: Sun, 27 Jul 2025 01:20:57 -0500 Subject: [PATCH] First pass for adding 'healer dps' check based on map ID. --- conf/playerbots.conf.dist | 8 ++++++++ src/AiFactory.cpp | 3 ++- src/PlayerbotAIConfig.cpp | 15 +++++++++++++++ src/PlayerbotAIConfig.h | 4 ++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/conf/playerbots.conf.dist b/conf/playerbots.conf.dist index b64454ce..a217e6f2 100644 --- a/conf/playerbots.conf.dist +++ b/conf/playerbots.conf.dist @@ -808,6 +808,14 @@ AiPlayerbot.RandomBotNonCombatStrategies = "" AiPlayerbot.CombatStrategies = "" AiPlayerbot.NonCombatStrategies = "" +# Remove "healer dps" strategy on specified maps. +# Default: 0 (disabled) +AiPlayerbot.HealerDPSMapRestriction = 0 + +# List of Map IDs where "healer dps" strategy will be removed if AiPlayerbot.HealerDPSMapRestriction is enabled +# Default: (Dungeon and Raid maps) "33,34,36,43,47,48,70,90,109,129,209,229,230,329,349,389,429,1001,1004,1007,269,540,542,543,545,546,547,552,553,554,555,556,557,558,560,585,574,575,576,578,595,599,600,601,602,604,608,619,632,650,658,668,409,469,509,531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724" +AiPlayerbot.RestrictedHealerDPSMaps = "33,34,36,43,47,48,70,90,109,129,209,229,230,329,349,389,429,1001,1004,1007,269,540,542,543,545,546,547,552,553,554,555,556,557,558,560,585,574,575,576,578,595,599,600,601,602,604,608,619,632,650,658,668,409,469,509,531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724" + # # # diff --git a/src/AiFactory.cpp b/src/AiFactory.cpp index 722e46b5..8b7152d6 100644 --- a/src/AiFactory.cpp +++ b/src/AiFactory.cpp @@ -420,7 +420,8 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa { if (sPlayerbotAIConfig->autoSaveMana) engine->addStrategy("save mana", false); - engine->addStrategy("healer dps", false); + if (!sPlayerbotAIConfig->IsRestrictedHealerDPSMap(player->GetMapId())) + engine->addStrategy("healer dps", false); } if (facade->IsRealPlayer() || sRandomPlayerbotMgr->IsRandomBot(player)) { diff --git a/src/PlayerbotAIConfig.cpp b/src/PlayerbotAIConfig.cpp index db1419a4..d84234af 100644 --- a/src/PlayerbotAIConfig.cpp +++ b/src/PlayerbotAIConfig.cpp @@ -190,6 +190,15 @@ bool PlayerbotAIConfig::Initialize() maxRandomBotsPriceChangeInterval = sConfigMgr->GetOption("AiPlayerbot.MaxRandomBotsPriceChangeInterval", 48 * HOUR); randomBotJoinLfg = sConfigMgr->GetOption("AiPlayerbot.RandomBotJoinLfg", true); + + restrictHealerDPS = sConfigMgr->GetOption("AiPlayerbot.HealerDPSMapRestriction", false); + LoadList>( + sConfigMgr->GetOption("AiPlayerbot.RestrictedHealerDPSMaps", + "33,34,36,43,47,48,70,90,109,129,209,229,230,329,349,389,429,1001,1004," + "1007,269,540,542,543,545,546,547,552,553,554,555,556,557,558,560,585,574," + "575,576,578,595,599,600,601,602,604,608,619,632,650,658,668,409,469,509," + "531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724"), + restrictedHealerDPSMaps); //////////////////////////// ICC @@ -666,6 +675,12 @@ bool PlayerbotAIConfig::IsInPvpProhibitedArea(uint32 id) return find(pvpProhibitedAreaIds.begin(), pvpProhibitedAreaIds.end(), id) != pvpProhibitedAreaIds.end(); } +bool PlayerbotAIConfig::IsRestrictedHealerDPSMap(uint32 mapId) const +{ + return restrictHealerDPS && + std::find(restrictedHealerDPSMaps.begin(), restrictedHealerDPSMaps.end(), mapId) != restrictedHealerDPSMaps.end(); +} + std::string const PlayerbotAIConfig::GetTimestampStr() { time_t t = time(nullptr); diff --git a/src/PlayerbotAIConfig.h b/src/PlayerbotAIConfig.h index 65b99c5d..0d9176ee 100644 --- a/src/PlayerbotAIConfig.h +++ b/src/PlayerbotAIConfig.h @@ -401,6 +401,10 @@ public: void loadWorldBuff(uint32 factionId, uint32 classId, uint32 specId, uint32 minLevel, uint32 maxLevel); static std::vector> ParseTempTalentsOrder(uint32 cls, std::string temp_talents_order); static std::vector> ParseTempPetTalentsOrder(uint32 spec, std::string temp_talents_order); + + bool restrictHealerDPS = false; + std::vector restrictedHealerDPSMaps; + bool IsRestrictedHealerDPSMap(uint32 mapId) const; }; #define sPlayerbotAIConfig PlayerbotAIConfig::instance()