mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
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:
@@ -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
|
||||
{
|
||||
|
||||
@@ -67,16 +67,16 @@ void BattlegroundStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||
void EyeStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||
{
|
||||
triggers.push_back(
|
||||
new TriggerNode("bg active", NextAction::array(0, new NextAction("bg check flag", 70.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction("bg use buff", 30.0f), nullptr)));
|
||||
new TriggerNode("bg active", NextAction::array(0, new NextAction("bg check flag", ACTION_MOVE + 7.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction("bg use buff", ACTION_MOVE), nullptr)));
|
||||
triggers.push_back(
|
||||
new TriggerNode("low health", NextAction::array(0, new NextAction("bg use buff", 30.0f), nullptr)));
|
||||
new TriggerNode("low health", NextAction::array(0, new NextAction("bg use buff", ACTION_MOVE), nullptr)));
|
||||
triggers.push_back(
|
||||
new TriggerNode("low mana", NextAction::array(0, new NextAction("bg use buff", 30.0f), nullptr)));
|
||||
new TriggerNode("low mana", NextAction::array(0, new NextAction("bg use buff", ACTION_MOVE), nullptr)));
|
||||
triggers.push_back(new TriggerNode(
|
||||
"enemy flagcarrier near", NextAction::array(0, new NextAction("attack enemy flag carrier", 80.0f), nullptr)));
|
||||
"enemy flagcarrier near", NextAction::array(0, new NextAction("attack enemy flag carrier", ACTION_MOVE + 8.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("player has flag",
|
||||
NextAction::array(0, new NextAction("bg move to objective", 90.0f), nullptr)));
|
||||
NextAction::array(0, new NextAction("bg move to objective", ACTION_MOVE + 9.0f), nullptr)));
|
||||
}
|
||||
|
||||
void IsleStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||
|
||||
Reference in New Issue
Block a user