7 Commits

Author SHA1 Message Date
Dustin Hendrickson
3f64862503 Merge pull request #76 from DustinHendrickson/Dustin/BugFixes
Adding in world check
2025-12-11 10:06:45 -06:00
Dustin Hendrickson
6a33cb3257 Adding in world check 2025-12-11 10:06:18 -06:00
Dustin Hendrickson
a926792857 Merge pull request #75 from DustinHendrickson/Dustin/BugFixes
Dustin/bug fixes
2025-12-11 09:57:24 -06:00
Dustin Hendrickson
1faa24cf15 Adding in world check 2025-12-11 09:34:18 -06:00
Dustin Hendrickson
11dc0941fd Adding group check 2025-12-11 09:29:02 -06:00
Dustin Hendrickson
6152f9e77e Merge pull request #73 from DustinHendrickson/Dustin/BugFixes
Fixing a DK edgecase
2025-12-04 16:07:23 -06:00
Dustin Hendrickson
a33f0ca354 Fixing a DK edgecase 2025-12-04 16:05:06 -06:00

View File

@@ -942,7 +942,7 @@ static bool IsBotSafeForLevelReset(Player* bot)
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next()) for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
{ {
Player* member = ref->GetSource(); Player* member = ref->GetSource();
if (member && !IsPlayerBot(member)) if (member && member->IsInWorld() && !IsPlayerBot(member))
{ {
if (g_BotDistFullDebugMode) if (g_BotDistFullDebugMode)
{ {
@@ -1057,6 +1057,26 @@ static void ProcessPendingLevelResets()
continue; continue;
} }
// Check if bot is now in a group with real players
if (Group* group = bot->GetGroup())
{
bool hasRealPlayer = false;
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
{
Player* member = ref->GetSource();
if (member && member->IsInWorld() && !IsPlayerBot(member))
{
hasRealPlayer = true;
break;
}
}
if (hasRealPlayer)
{
it = g_PendingLevelResets.erase(it);
continue;
}
}
if (bot && bot->IsInWorld() && IsBotSafeForLevelReset(bot)) if (bot && bot->IsInWorld() && IsBotSafeForLevelReset(bot))
{ {
AdjustBotToRange(bot, targetRange, it->factionRanges); AdjustBotToRange(bot, targetRange, it->factionRanges);
@@ -1102,6 +1122,27 @@ static int GetOrFlagPlayerBracket(Player* player)
return -1; return -1;
} }
// Check if bot is in a group with real players - if so, exclude from bracket processing
if (IsPlayerBot(player))
{
if (Group* group = player->GetGroup())
{
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
{
Player* member = ref->GetSource();
if (member && member->IsInWorld() && !IsPlayerBot(member))
{
if (g_BotDistFullDebugMode)
{
LOG_INFO("server.loading", "[BotLevelBrackets] GetOrFlagPlayerBracket: Bot {} (Level {}) is in group with real player {} - excluding from bracket processing.",
player->GetName(), player->GetLevel(), member->GetName());
}
return -1;
}
}
}
}
int rangeIndex = GetLevelRangeIndex(player->GetLevel(), player->GetTeamId()); int rangeIndex = GetLevelRangeIndex(player->GetLevel(), player->GetTeamId());
if (rangeIndex >= 0) if (rangeIndex >= 0)
{ {
@@ -1130,6 +1171,13 @@ static int GetOrFlagPlayerBracket(Player* player)
{ {
continue; continue;
} }
// Skip brackets that Death Knights cannot be assigned to (upper bound < 55)
if (player->getClass() == CLASS_DEATH_KNIGHT && factionRanges[i].upper < 55)
{
continue;
}
int diff = 0; int diff = 0;
if (player->GetLevel() < factionRanges[i].lower) if (player->GetLevel() < factionRanges[i].lower)
{ {