[Battlegrounds] fixed main EOTS issues (teleport bots off starting platform, fixed incorrect BG objective for the bases), still some minor pathing issues present

This commit is contained in:
Fuzz 2024-07-24 16:32:36 +10:00
parent 9b31802a69
commit 649e8a1d4a

View File

@ -1634,9 +1634,9 @@ BattleBotPath vPath_AV_Frostdagger_Pass_Lower_to_Iceblood_Garrison =
BattleBotPath vPath_AV_Icewing_Bunker_Crossroad_to_Frostdagger_Pass_Lower = BattleBotPath vPath_AV_Icewing_Bunker_Crossroad_to_Frostdagger_Pass_Lower =
{ {
//these are to cause bot to pick this when resurrecting at stonehearth (not really needed anymore as they get captain down in first wave since uneeded dismounting was fixed) //these are to cause bot to pick this when resurrecting at stonehearth (not really needed anymore as they get captain down in first wave since uneeded dismounting was fixed)
//{ 68.793f, -396.742f, 45.299f, nullptr }, { 68.793f, -396.742f, 45.299f, nullptr },
//{ 99.042f, -389.310f, 45.101f, nullptr }, { 99.042f, -389.310f, 45.101f, nullptr },
//{ 123.787f, -373.551f, 42.893f, nullptr }, { 123.787f, -373.551f, 42.893f, nullptr },
{ 119.693f, -351.311f, 42.728f, nullptr }, { 119.693f, -351.311f, 42.728f, nullptr },
{ 107.710f, -321.162f, 37.168f, nullptr }, { 107.710f, -321.162f, 37.168f, nullptr },
{ 84.953f, -273.434f, 23.944f, nullptr }, { 84.953f, -273.434f, 23.944f, nullptr },
@ -2397,12 +2397,12 @@ static uint32 AB_AttackObjectives[] =
{ BG_AB_NODE_GOLD_MINE } { BG_AB_NODE_GOLD_MINE }
}; };
static uint32 EY_AttackObjectives[] = static std::pair<uint32, uint32> EY_AttackObjectives[] =
{ {
{ POINT_FEL_REAVER }, { POINT_FEL_REAVER, BG_EY_OBJECT_FLAG_FEL_REAVER},
{ POINT_BLOOD_ELF }, { POINT_BLOOD_ELF, BG_EY_OBJECT_FLAG_BLOOD_ELF },
{ POINT_DRAENEI_RUINS }, { POINT_DRAENEI_RUINS, BG_EY_OBJECT_FLAG_DRAENEI_RUINS },
{ POINT_MAGE_TOWER } { POINT_MAGE_TOWER, BG_EY_OBJECT_FLAG_MAGE_TOWER }
}; };
// useful commands for fixing BG bugs and checking waypoints/paths // useful commands for fixing BG bugs and checking waypoints/paths
@ -2935,6 +2935,7 @@ bool BGTactics::Execute(Event event)
switch (bot->GetMotionMaster()->GetCurrentMovementGeneratorType()) switch (bot->GetMotionMaster()->GetCurrentMovementGeneratorType())
{ {
//TODO: should ESCORT_MOTION_TYPE be here seeing as bots use it by default?
case IDLE_MOTION_TYPE: case IDLE_MOTION_TYPE:
case CHASE_MOTION_TYPE: case CHASE_MOTION_TYPE:
case POINT_MOTION_TYPE: case POINT_MOTION_TYPE:
@ -3712,8 +3713,8 @@ bool BGTactics::selectObjective(bool reset)
uint8 rootTeamIndex = TEAM_NEUTRAL; uint8 rootTeamIndex = TEAM_NEUTRAL;
uint32 role = context->GetValue<uint32>("bg role")->Get(); uint32 role = context->GetValue<uint32>("bg role")->Get();
uint32 attackObjectivesFront[2]; std::pair<uint32, uint32> attackObjectivesFront[2];
uint32 attackObjectivesBack[2]; std::pair<uint32, uint32> attackObjectivesBack[2];
uint32 areaTrigger; uint32 areaTrigger;
Position flagDeliverPoint; Position flagDeliverPoint;
TeamId rootTeam = bot->GetTeamId(); TeamId rootTeam = bot->GetTeamId();
@ -3741,29 +3742,29 @@ bool BGTactics::selectObjective(bool reset)
{ {
if (role == 1) //Harass left back if (role == 1) //Harass left back
{ {
BgObjective = bg->GetBGObject(attackObjectivesBack[0]); BgObjective = bg->GetBGObject(attackObjectivesBack[0].second);
} }
else if (role == 2) //Harass right back else if (role == 2) //Harass right back
{ {
BgObjective = bg->GetBGObject(attackObjectivesBack[1]); BgObjective = bg->GetBGObject(attackObjectivesBack[1].second);
} }
else if (role < 8) //Attack and Defend else if (role < 8) //Attack and Defend
{ {
while (BgObjective == nullptr) while (BgObjective == nullptr)
{ {
if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[0])._ownerTeamId != rootTeamIndex || if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[0].first)._ownerTeamId != rootTeamIndex ||
eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[1])._ownerTeamId != rootTeamIndex) eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[1].first)._ownerTeamId != rootTeamIndex)
{ {
// Capture front objectives before attacking back objectives // Capture front objectives before attacking back objectives
// LOG_INFO("playerbots", "Bot {} {}:{} <{}>: Get Front Objectives", // LOG_INFO("playerbots", "Bot {} {}:{} <{}>: Get Front Objectives",
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName()); // bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName());
if (role < 6) if (role < 6)
{ {
BgObjective = bg->GetBGObject(attackObjectivesFront[0]); BgObjective = bg->GetBGObject(attackObjectivesFront[0].second);
} }
else if (role < 8) else if (role < 8)
{ {
BgObjective = bg->GetBGObject(attackObjectivesFront[1]); BgObjective = bg->GetBGObject(attackObjectivesFront[1].second);
} }
} }
else else
@ -3773,29 +3774,29 @@ bool BGTactics::selectObjective(bool reset)
// bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName()); // bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName());
if (role < 4) if (role < 4)
{ {
BgObjective = bg->GetBGObject(attackObjectivesFront[0]); BgObjective = bg->GetBGObject(attackObjectivesFront[0].second);
} }
else if (role < 5) else if (role < 5)
{ {
BgObjective = bg->GetBGObject(attackObjectivesFront[1]); BgObjective = bg->GetBGObject(attackObjectivesFront[1].second);
} }
else if (role < 8) else if (role < 8)
{ {
if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[0])._ownerTeamId != rootTeamIndex) if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[0].first)._ownerTeamId != rootTeamIndex)
{ {
BgObjective = bg->GetBGObject(attackObjectivesBack[0]); BgObjective = bg->GetBGObject(attackObjectivesBack[0].second);
} }
else if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[1])._ownerTeamId != rootTeamIndex) else if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[1].first)._ownerTeamId != rootTeamIndex)
{ {
BgObjective = bg->GetBGObject(attackObjectivesBack[1]); BgObjective = bg->GetBGObject(attackObjectivesBack[1].second);
} }
} }
} }
if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[0])._ownerTeamId == rootTeamIndex && if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[0].first)._ownerTeamId == rootTeamIndex &&
eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[1])._ownerTeamId == rootTeamIndex && eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[1].first)._ownerTeamId == rootTeamIndex &&
eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[0])._ownerTeamId == rootTeamIndex && eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[0].first)._ownerTeamId == rootTeamIndex &&
eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[1])._ownerTeamId == rootTeamIndex) eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[1].first)._ownerTeamId == rootTeamIndex)
{ {
role = urand(0, 9); role = urand(0, 9);
} }
@ -3838,8 +3839,8 @@ bool BGTactics::selectObjective(bool reset)
{ {
BgObjective = nullptr; BgObjective = nullptr;
if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[0])._ownerTeamId != rootTeamIndex && eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[1])._ownerTeamId != rootTeamIndex && if (eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[0].first)._ownerTeamId != rootTeamIndex && eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesFront[1].first)._ownerTeamId != rootTeamIndex &&
eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[0])._ownerTeamId !=rootTeamIndex && eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[1])._ownerTeamId !=rootTeamIndex) eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[0].first)._ownerTeamId != rootTeamIndex && eyeOfTheStormBG->GetCapturePointInfo(attackObjectivesBack[1].first)._ownerTeamId != rootTeamIndex)
{ {
//Retreat with flag //Retreat with flag
//LOG_INFO("playerbots", "Bot {} {}:{} <{}>: Retreat with flag", //LOG_INFO("playerbots", "Bot {} {}:{} <{}>: Retreat with flag",
@ -3860,22 +3861,22 @@ bool BGTactics::selectObjective(bool reset)
//Deliver flag //Deliver flag
//LOG_INFO("playerbots", "Bot {} {}:{} <{}>: Deliver flag", //LOG_INFO("playerbots", "Bot {} {}:{} <{}>: Deliver flag",
//bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName()); //bot->GetGUID().ToString().c_str(), bot->GetTeamId() == TEAM_ALLIANCE ? "A" : "H", bot->GetLevel(), bot->GetName());
if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[0])._ownerTeamId == rootTeamIndex) if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[0].first)._ownerTeamId == rootTeamIndex)
{ {
areaTrigger = AT_FEL_REAVER_POINT; areaTrigger = AT_FEL_REAVER_POINT;
flagDeliverPoint = EY_FLAG_RETURN_POS_REAVER_RUINS; flagDeliverPoint = EY_FLAG_RETURN_POS_REAVER_RUINS;
} }
else if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[1])._ownerTeamId == rootTeamIndex) else if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[1].first)._ownerTeamId == rootTeamIndex)
{ {
areaTrigger = AT_BLOOD_ELF_POINT; areaTrigger = AT_BLOOD_ELF_POINT;
flagDeliverPoint = EY_FLAG_RETURN_POS_BLOOD_ELF_TOWER; flagDeliverPoint = EY_FLAG_RETURN_POS_BLOOD_ELF_TOWER;
} }
else if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[2])._ownerTeamId == rootTeamIndex) else if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[2].first)._ownerTeamId == rootTeamIndex)
{ {
areaTrigger = AT_DRAENEI_RUINS_POINT; areaTrigger = AT_DRAENEI_RUINS_POINT;
flagDeliverPoint = EY_FLAG_RETURN_POS_DRAENEI_RUINS; flagDeliverPoint = EY_FLAG_RETURN_POS_DRAENEI_RUINS;
} }
else if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[3])._ownerTeamId == rootTeamIndex) else if (eyeOfTheStormBG->GetCapturePointInfo(EY_AttackObjectives[3].first)._ownerTeamId == rootTeamIndex)
{ {
areaTrigger = AT_MAGE_TOWER_POINT; areaTrigger = AT_MAGE_TOWER_POINT;
flagDeliverPoint = EY_FLAG_RETURN_POS_MAGE_TOWER; flagDeliverPoint = EY_FLAG_RETURN_POS_MAGE_TOWER;
@ -4351,6 +4352,14 @@ bool BGTactics::moveToObjective()
return moveToStart(true); return moveToStart(true);
} }
} }
else if (bgType == BATTLEGROUND_EY)
{
// just teleport them down for now
if (bot->GetDistance(1831.673f, 1541.025f, 1256.794f) < 16)
bot->TeleportTo(bg->GetMapId(), 1867.821f, 1541.739f, 1209.07f, bot->GetOrientation());
if (bot->GetDistance(2496.949f, 1596.353f, 1257.225f) < 16)
bot->TeleportTo(bg->GetMapId(), 2471.215f, 1604.309f, 1213.61f, bot->GetOrientation());
}
PositionInfo pos = context->GetValue<PositionMap&>("position")->Get()["bg objective"]; PositionInfo pos = context->GetValue<PositionMap&>("position")->Get()["bg objective"];
if (!pos.isSet()) if (!pos.isSet())