mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-16 02:10:28 +00:00
[Battlegrounds] many IOC fixes: fixed bots not being able to revive in their own base GY, fixed bots not able to use flags in IOC at all (couldnt cap anything), added path so bots could reach boss and several other paths too, fixed horde bots not being able to tell that alliance gate is down (stayed outside forever), fixed bots not able to get in vehicles, fixed bots not able to drive vehicles, fixed bots in vehicles becoming unresponsive after a fight (in-combat status seems to never clear in vehicle which may be AC bug), reduced bot 'agro distance' when in vehicle so they can get to their objective, redid selectObject strat completely, prevented bots using cannons (bots are useless in them) and catapults (they dont know how to use them), prevented bots using Glaive Thrower's Blade Salvo as it's bugged (and stops them using any attacks after they use it), many other fixes
This commit is contained in:
@@ -5,11 +5,16 @@
|
||||
|
||||
#include "VehicleActions.h"
|
||||
|
||||
#include "BattlegroundIC.h"
|
||||
#include "ItemVisitors.h"
|
||||
#include "Playerbots.h"
|
||||
#include "ServerFacade.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
// TODO methods to enter/exit vehicle should be added to BGTactics or MovementAction (so that we can better control
|
||||
// whether bot is in vehicle, eg: get out of vehicle to cap flag, if we're down to final boss, etc),
|
||||
// right now they will enter vehicle based only what's available here, then they're stuck in vehicle until they die
|
||||
// (LeaveVehicleAction doesnt do much seeing as they, or another bot, will get in immediately after exit)
|
||||
bool EnterVehicleAction::Execute(Event event)
|
||||
{
|
||||
// do not switch vehicles yet
|
||||
@@ -21,21 +26,31 @@ bool EnterVehicleAction::Execute(Event event)
|
||||
{
|
||||
Unit* vehicleBase = botAI->GetUnit(*i);
|
||||
if (!vehicleBase)
|
||||
return false;
|
||||
continue;
|
||||
|
||||
// dont let them get in the cannons as they'll stay forever and do nothing useful
|
||||
// dont let them in catapult they cant use them at all
|
||||
if (NPC_KEEP_CANNON == vehicleBase->GetEntry() || NPC_CATAPULT == vehicleBase->GetEntry())
|
||||
continue;
|
||||
|
||||
if (!vehicleBase->IsFriendlyTo(bot))
|
||||
return false;
|
||||
continue;
|
||||
|
||||
if (!vehicleBase->GetVehicleKit()->GetAvailableSeatCount())
|
||||
return false;
|
||||
continue;
|
||||
|
||||
if (fabs(bot->GetPositionZ() - vehicleBase->GetPositionZ()) < 20.0f)
|
||||
// this will avoid adding passengers (which dont really do much for the IOC vehicles which is the only place
|
||||
// this code is used)
|
||||
if (vehicleBase->GetVehicleKit()->IsVehicleInUse())
|
||||
continue;
|
||||
|
||||
// if (sServerFacade->GetDistance2d(bot, vehicle) > 100.0f)
|
||||
// continue;
|
||||
// if (fabs(bot->GetPositionZ() - vehicleBase->GetPositionZ()) < 20.0f)
|
||||
|
||||
if (sServerFacade->GetDistance2d(bot, vehicleBase) > 10.0f)
|
||||
return MoveTo(vehicleBase, INTERACTION_DISTANCE);
|
||||
// if (sServerFacade->GetDistance2d(bot, vehicle) > 100.0f)
|
||||
// continue;
|
||||
|
||||
if (sServerFacade->GetDistance2d(bot, vehicleBase) > INTERACTION_DISTANCE)
|
||||
return MoveTo(vehicleBase, INTERACTION_DISTANCE - 1.0f);
|
||||
|
||||
bot->EnterVehicle(vehicleBase);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user