From 35130d5bbaaa36e42caf8fada77c620941fa5015 Mon Sep 17 00:00:00 2001 From: atrapalis <104009206+atrapalis@users.noreply.github.com> Date: Sat, 27 Jul 2024 11:07:00 +0100 Subject: [PATCH] Tweaked the move position to be in a radius of +/- 1.5 from the target --- src/server/game/AI/NpcBots/bot_ai.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/server/game/AI/NpcBots/bot_ai.cpp b/src/server/game/AI/NpcBots/bot_ai.cpp index 5791ab1360cd35..f8e50b820a451c 100644 --- a/src/server/game/AI/NpcBots/bot_ai.cpp +++ b/src/server/game/AI/NpcBots/bot_ai.cpp @@ -5443,7 +5443,17 @@ void bot_ai::CalculateAttackPos(Unit* target, Position& pos, bool& force) const if (itr->second && (IsTank(itr->second) || IsOffTank(itr->second))) moveTarget = itr->second; - pos.Relocate(moveTarget); + // Decide if the bot needs to move + float thresholdDistance = 1.5f; + bool rangedBotNeedsToMove = std::abs(me->GetDistance(moveTarget)) > thresholdDistance; + if (rangedBotNeedsToMove) + { + // Randomise and adjust the bot's position + float randomModifier = irand(0, 1) ? 1.0f : -1.0f; + float absoluteAngle = me->GetAbsoluteAngle(moveTarget); + pos.Relocate(Position(moveTarget->GetPositionX() + randomModifier * thresholdDistance * std::cos(absoluteAngle), moveTarget->GetPositionY() + randomModifier * thresholdDistance * std::sin(absoluteAngle))); + } + force = true; return; }