From e1d9b02583b5f786a47aab3b162fa7b1209e6a50 Mon Sep 17 00:00:00 2001 From: atrapalis <104009206+atrapalis@users.noreply.github.com> Date: Fri, 26 Jul 2024 18:31:04 +0100 Subject: [PATCH] feat(NpcBots/bot_ai): Changed ranged bots to run to a tank or to their master when they have aggro --- src/server/game/AI/NpcBots/bot_ai.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/server/game/AI/NpcBots/bot_ai.cpp b/src/server/game/AI/NpcBots/bot_ai.cpp index 492ae355c3da41..5791ab1360cd35 100644 --- a/src/server/game/AI/NpcBots/bot_ai.cpp +++ b/src/server/game/AI/NpcBots/bot_ai.cpp @@ -5430,7 +5430,24 @@ void bot_ai::CalculateAttackPos(Unit* target, Position& pos, bool& force) const force = true; return; } + + // Ranged bots that are being targeted should move towards a tank bot or towards the player + if (!IsTank(me) && HasRole(BOT_ROLE_RANGED) && target->GetVictim() == me) + { + // By default go to the master + Unit* moveTarget = master; + + // Look for a tank in the master's bots + BotMap const* map = master->GetBotMgr()->GetBotMap(); + for (BotMap::const_iterator itr = map->begin(); itr != map->end(); ++itr) + if (itr->second && (IsTank(itr->second) || IsOffTank(itr->second))) + moveTarget = itr->second; + pos.Relocate(moveTarget); + force = true; + return; + } + pos.Relocate(ppos); if (!me->IsWithinLOSInMap(target, VMAP::ModelIgnoreFlags::M2, LINEOFSIGHT_ALL_CHECKS)) force = true;