From 949226d203e71480dad86b5c1cf0e3ecb14c7ac9 Mon Sep 17 00:00:00 2001 From: Dustin Hendrickson Date: Mon, 26 May 2025 15:08:32 -0700 Subject: [PATCH 1/4] Adding bot safety check --- src/mod-player-bot-level-brackets.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mod-player-bot-level-brackets.cpp b/src/mod-player-bot-level-brackets.cpp index 419bbf4..0f25f59 100644 --- a/src/mod-player-bot-level-brackets.cpp +++ b/src/mod-player-bot-level-brackets.cpp @@ -554,17 +554,26 @@ static void ProcessPendingLevelResets() break; Player* bot = it->bot; + + if (!bot || !bot->IsInWorld()) + { + it = g_PendingLevelResets.erase(it); + continue; + } + int targetRange = it->targetRange; if (g_IgnoreGuildBotsWithRealPlayers && BotInGuildWithRealPlayer(bot)) { it = g_PendingLevelResets.erase(it); continue; } + if (g_IgnoreFriendListed && BotInFriendList(bot)) { it = g_PendingLevelResets.erase(it); continue; } + if (bot && bot->IsInWorld() && IsBotSafeForLevelReset(bot)) { AdjustBotToRange(bot, targetRange, it->factionRanges); From 14e4519566e861a44214d4b9f0f47ee11fe3b6cb Mon Sep 17 00:00:00 2001 From: Dustin Hendrickson Date: Mon, 26 May 2025 15:11:44 -0700 Subject: [PATCH 2/4] Adding safety check to all branches --- src/mod-player-bot-level-brackets.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/mod-player-bot-level-brackets.cpp b/src/mod-player-bot-level-brackets.cpp index 0f25f59..edfdbeb 100644 --- a/src/mod-player-bot-level-brackets.cpp +++ b/src/mod-player-bot-level-brackets.cpp @@ -573,7 +573,7 @@ static void ProcessPendingLevelResets() it = g_PendingLevelResets.erase(it); continue; } - + if (bot && bot->IsInWorld() && IsBotSafeForLevelReset(bot)) { AdjustBotToRange(bot, targetRange, it->factionRanges); @@ -976,6 +976,11 @@ public: while (allianceActualCounts[i] > allianceDesiredCounts[i] && !safeBots.empty()) { Player* bot = safeBots.back(); + if (!bot || !bot->IsInWorld()) + { + it = safeBots.erase(it); + break; + } safeBots.pop_back(); if (g_BotDistFullDebugMode) { @@ -1041,6 +1046,11 @@ public: while (allianceActualCounts[i] > allianceDesiredCounts[i] && !flaggedBots.empty()) { Player* bot = flaggedBots.back(); + if (!bot || !bot->IsInWorld()) + { + it = flaggedBots.erase(it); + break; + } flaggedBots.pop_back(); if (g_BotDistFullDebugMode) { @@ -1144,6 +1154,11 @@ public: while (hordeActualCounts[i] > hordeDesiredCounts[i] && !safeBots.empty()) { Player* bot = safeBots.back(); + if (!bot || !bot->IsInWorld()) + { + it = safeBots.erase(it); + break; + } safeBots.pop_back(); if (g_BotDistFullDebugMode) { @@ -1209,6 +1224,11 @@ public: while (hordeActualCounts[i] > hordeDesiredCounts[i] && !flaggedBots.empty()) { Player* bot = flaggedBots.back(); + if (!bot || !bot->IsInWorld()) + { + it = flaggedBots.erase(it); + break; + } flaggedBots.pop_back(); if (g_BotDistFullDebugMode) { From 283b73dfd92bd6b32c33de3f924d0ff646296701 Mon Sep 17 00:00:00 2001 From: Dustin Hendrickson Date: Mon, 26 May 2025 15:15:48 -0700 Subject: [PATCH 3/4] Adding continue fix --- src/mod-player-bot-level-brackets.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/mod-player-bot-level-brackets.cpp b/src/mod-player-bot-level-brackets.cpp index edfdbeb..76c5bf2 100644 --- a/src/mod-player-bot-level-brackets.cpp +++ b/src/mod-player-bot-level-brackets.cpp @@ -978,10 +978,9 @@ public: Player* bot = safeBots.back(); if (!bot || !bot->IsInWorld()) { - it = safeBots.erase(it); - break; + safeBots.pop_back(); + continue; } - safeBots.pop_back(); if (g_BotDistFullDebugMode) { LOG_INFO("server.loading", "[BotLevelBrackets] Alliance safe bot '{}' from range {} will be moved.", bot->GetName(), i + 1); @@ -1048,8 +1047,8 @@ public: Player* bot = flaggedBots.back(); if (!bot || !bot->IsInWorld()) { - it = flaggedBots.erase(it); - break; + flaggedBots.pop_back(); + continue; } flaggedBots.pop_back(); if (g_BotDistFullDebugMode) @@ -1156,8 +1155,8 @@ public: Player* bot = safeBots.back(); if (!bot || !bot->IsInWorld()) { - it = safeBots.erase(it); - break; + safeBots.pop_back(); + continue; } safeBots.pop_back(); if (g_BotDistFullDebugMode) @@ -1226,8 +1225,8 @@ public: Player* bot = flaggedBots.back(); if (!bot || !bot->IsInWorld()) { - it = flaggedBots.erase(it); - break; + flaggedBots.pop_back(); + continue; } flaggedBots.pop_back(); if (g_BotDistFullDebugMode) From cc9eec8a60271489d83203f498a74adb2b69103c Mon Sep 17 00:00:00 2001 From: Dustin Hendrickson Date: Mon, 26 May 2025 15:18:27 -0700 Subject: [PATCH 4/4] Cleanup --- src/mod-player-bot-level-brackets.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/mod-player-bot-level-brackets.cpp b/src/mod-player-bot-level-brackets.cpp index 76c5bf2..d50d881 100644 --- a/src/mod-player-bot-level-brackets.cpp +++ b/src/mod-player-bot-level-brackets.cpp @@ -1050,7 +1050,6 @@ public: flaggedBots.pop_back(); continue; } - flaggedBots.pop_back(); if (g_BotDistFullDebugMode) { LOG_INFO("server.loading", "[BotLevelBrackets] Alliance flagged bot '{}' from range {} will be processed for pending reset.", bot->GetName(), i + 1); @@ -1158,7 +1157,6 @@ public: safeBots.pop_back(); continue; } - safeBots.pop_back(); if (g_BotDistFullDebugMode) { LOG_INFO("server.loading", "[BotLevelBrackets] Horde safe bot '{}' from range {} will be moved.", bot->GetName(), i + 1); @@ -1228,7 +1226,6 @@ public: flaggedBots.pop_back(); continue; } - flaggedBots.pop_back(); if (g_BotDistFullDebugMode) { LOG_INFO("server.loading", "[BotLevelBrackets] Horde flagged bot '{}' from range {} will be processed for pending reset.", bot->GetName(), i + 1);