JezuzLizard d0b1a4648e completed checking all of the remaining bot scripts
_bot_conf, _bot_ctf, _bot_dem, _bot_dom, _bot_hack, _bot_hq, _bot_koth, _bot_sd have all been checked.
2020-05-08 12:38:27 -07:00

101 lines
2.0 KiB
Plaintext

#include maps/mp/_utility;
#include common_scripts/utility;
bot_conf_think() //checked matches cerberus output
{
time = getTime();
if ( time < self.bot.update_objective )
{
return;
}
self.bot.update_objective = time + randomintrange( 500, 1500 );
goal = self getgoal( "conf_dogtag" );
if ( isDefined( goal ) )
{
if ( !conf_tag_in_radius( goal, 64 ) )
{
self cancelgoal( "conf_dogtag" );
}
}
conf_get_tag_in_sight();
}
conf_get_tag_in_sight() //checked partially changed to match cerberus output did not use foreach see github for more info
{
angles = self getplayerangles();
forward = anglesToForward( angles );
forward = vectornormalize( forward );
closest = 999999;
tags = level.dogtags;
i = 0;
while ( i < tags.size )
{
if ( is_true( tags[ i ].unreachable ) )
{
i++;
continue;
}
distsq = distancesquared( tags[ i ].curorigin, self.origin );
if ( distsq > closest )
{
i++;
continue;
}
delta = tags[ i ].curorigin - self.origin;
delta = vectornormalize( delta );
dot = vectordot( forward, delta );
if ( dot < self.bot.fov && distsq > 40000 )
{
i++;
continue;
}
if ( dot > self.bot.fov && distsq > 1440000 )
{
i++;
continue;
}
nearest = getnearestnode( tags[ i ].curorigin );
if ( !isDefined( nearest ) )
{
tags[ i ].unreachable = 1;
i++;
continue;
}
if ( ( tags[ i ].curorigin[ 2 ] - nearest.origin[ 2 ] ) > 18 )
{
tags[ i ].unreachable = 1;
i++;
continue;
}
if ( !isDefined( tags[ i ].unreachable ) && !findpath( self.origin, tags[ i ].curorigin, tags[ i ], 0, 1 ) )
{
tags[ i ].unreachable = 1;
}
else
{
tags[ i ].unreachable = 0;
}
closest = distsq;
closetag = tags[ i ];
i++;
}
if ( isDefined( closetag ) )
{
self addgoal( closetag.curorigin, 16, 3, "conf_dogtag" );
}
}
conf_tag_in_radius( origin, radius ) //checked changed to match cerberus output
{
foreach ( tag in level.dogtags )
{
if ( distancesquared( origin, tag.curorigin ) < radius * radius )
{
return 1;
}
}
return 0;
}