Battleground Rewrite

- Refactored BattleGroundTactics.cpp
- Bots choose strategies to determine if they are more aggressive or defensive in objectives
- Largely improved bots tactics in WSG, AB, AV and EY
- Improved how bots chase flag carriers
- Fixed some bots stuck in action loops - especially in WSG and AV
- Fixed several other Bugs
This commit is contained in:
Boxhead78
2025-07-03 08:25:55 +02:00
parent 36fd5b8f15
commit 309d177dd8
12 changed files with 1598 additions and 2016 deletions

View File

@@ -34,6 +34,7 @@ public:
creators["collision"] = &TriggerContext::collision;
creators["timer"] = &TriggerContext::Timer;
creators["timer bg"] = &TriggerContext::TimerBG;
creators["random"] = &TriggerContext::Random;
creators["seldom"] = &TriggerContext::seldom;
creators["often"] = &TriggerContext::often;
@@ -177,6 +178,7 @@ public:
creators["in Battleground"] = &TriggerContext::player_is_in_BATTLEGROUND;
creators["in Battleground without flag"] = &TriggerContext::player_is_in_BATTLEGROUND_no_flag;
creators["wants in bg"] = &TriggerContext::player_wants_in_bg;
creators["alliance no snowfall gy"] = &TriggerContext::alliance_no_snowfall_gy;
creators["mounted"] = &TriggerContext::mounted;
@@ -307,6 +309,7 @@ private:
static Trigger* NoAttackers(PlayerbotAI* botAI) { return new NoAttackersTrigger(botAI); }
static Trigger* TankAssist(PlayerbotAI* botAI) { return new TankAssistTrigger(botAI); }
static Trigger* Timer(PlayerbotAI* botAI) { return new TimerTrigger(botAI); }
static Trigger* TimerBG(PlayerbotAI* botAI) { return new TimerBGTrigger(botAI); }
static Trigger* NoTarget(PlayerbotAI* botAI) { return new NoTargetTrigger(botAI); }
static Trigger* TargetInSight(PlayerbotAI* botAI) { return new TargetInSightTrigger(botAI); }
static Trigger* not_dps_target_active(PlayerbotAI* botAI) { return new NotDpsTargetActiveTrigger(botAI); }
@@ -377,10 +380,8 @@ private:
static Trigger* enemy_team_has_flag(PlayerbotAI* botAI) { return new EnemyTeamHasFlag(botAI); }
static Trigger* enemy_flagcarrier_near(PlayerbotAI* botAI) { return new EnemyFlagCarrierNear(botAI); }
static Trigger* player_is_in_BATTLEGROUND(PlayerbotAI* botAI) { return new PlayerIsInBattleground(botAI); }
static Trigger* player_is_in_BATTLEGROUND_no_flag(PlayerbotAI* botAI)
{
return new PlayerIsInBattlegroundWithoutFlag(botAI);
}
static Trigger* player_is_in_BATTLEGROUND_no_flag(PlayerbotAI* botAI) { return new PlayerIsInBattlegroundWithoutFlag(botAI); }
static Trigger* alliance_no_snowfall_gy(PlayerbotAI* botAI) { return new AllianceNoSnowfallGY(botAI); }
static Trigger* mounted(PlayerbotAI* botAI) { return new IsMountedTrigger(botAI); }
static Trigger* at_dark_portal_outland(PlayerbotAI* botAI) { return new AtDarkPortalOutlandTrigger(botAI); }
static Trigger* at_dark_portal_azeroth(PlayerbotAI* botAI) { return new AtDarkPortalAzerothTrigger(botAI); }