Eye of the Storm changes (#924)

* EoTS: Changed FC logic to use MoveNear while not in combat

Similar to WSG commit from a few days ago

* Changed action priorities in EotS to ACTION_MOVE + x

* Adjusted EotS flag carrier objective selection

Random chance reduced from 1/2 to 1/3
Distance threshold before objective switch is considered reduced to 15.0yds
This commit is contained in:
avirar
2025-01-31 00:16:34 +11:00
committed by GitHub
parent 0c8785d8d1
commit 27b86f8b1f
2 changed files with 26 additions and 14 deletions

View File

@@ -3153,8 +3153,8 @@ bool BGTactics::selectObjective(bool reset)
// or distance difference is insignificantly better and coinflip
// the reason it doesn't just check if distance is better is to avoid bot going to same point every time
if (closestObjectiveOwnership < ownership ||
closestObjectiveDist - 30 > dist ||
(closestObjectiveDist > dist && urand(0, 1)))
closestObjectiveDist - 15 > dist ||
(closestObjectiveDist > dist && urand(0, 2)))
{
closestObjectiveOwnership = ownership;
closestObjectiveDist = dist;
@@ -3309,13 +3309,25 @@ bool BGTactics::selectObjective(bool reset)
{
// Get the flag or defend flag carrier
Unit* teamFC = AI_VALUE(Unit*, "team flag carrier");
if (teamFC)
if (teamFC && teamFC != bot) // Ensure there's a flag carrier and it's not the bot
{
BgObjective = teamFC;
// pos.Set(teamFC->GetPositionX(), teamFC->GetPositionY(), teamFC->GetPositionZ(),
// bot->GetMapId());
if (sServerFacade->GetDistance2d(bot, teamFC) < 50.0f)
Follow(teamFC);
BgObjective = teamFC; // Set the objective to the flag carrier
if (!bot->IsInCombat()) // Only act if the bot is not in combat
{
// If the bot is too far, move closer
if (!bot->IsWithinDistInMap(teamFC, 20.0f))
{
// Get the flag carrier's position
float fcX = teamFC->GetPositionX();
float fcY = teamFC->GetPositionY();
float fcZ = teamFC->GetPositionZ();
uint32 mapId = teamFC->GetMapId();
// Move near the flag carrier
MoveNear(mapId, fcX, fcY, fcZ, 5.0f, MovementPriority::MOVEMENT_NORMAL);
}
}
}
else
{