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;