1 #using scripts\shared\array_shared;
2 #using scripts\shared\callbacks_shared;
3 #using scripts\shared\math_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
7 #insert scripts\shared\shared.gsh;
9 #insert scripts\mp\bots\_bot.gsh;
11 #using scripts\mp\bots\_bot;
12 #using scripts\mp\bots\_bot_combat;
13 #using scripts\shared\bots\_bot;
14 #using scripts\shared\bots\_bot_combat;
15 #using scripts\shared\bots\bot_traversals;
16 #using scripts\shared\bots\bot_buttons;
19 #using scripts\mp\teams\_teams;
20 #using scripts\mp\_util;
33 self endon(
"death" );
34 level endon(
"game_ended" );
36 while (
self IsOnGround() )
41 while ( !
self IsOnGround() )
46 self BotReleaseManualControl();
51 if ( isdefined(
self.carryObject ) )
53 if (
self IsOnGround() &&
self BotGoalSet() )
55 goal = level.ball_goals[util::getotherteam(
self.team )];
58 radiusSq = radius * radius;
60 if ( Distance2DSquared(
self.origin, goal.trigger.origin ) <= radiusSq )
62 if (
self BotSightTrace( goal.trigger ) )
64 self BotTakeManualControl();
75 if ( !
self IsMeleeing() )
88 if ( isdefined(
self.carryObject ) )
97 if ( isdefined( meleeThreat ) )
99 angles =
self GetPlayerAngles();
100 fwd = AnglesToForward( angles );
102 threatDir = meleeThreat.origin -
self.origin ;
103 threatDir = VectorNormalize( threatDir );
105 dot = VectorDot( fwd, threatDir );
107 if ( dot > level.botSettings.meleeDot )
121 if ( isdefined(
self.carryObject ) )
123 if ( !
self BotGoalSet() )
126 goal = level.ball_goals[util::getotherteam(
self.team )];
127 goalPoint = goal.origin - ( 0, 0, 125 );
136 balls = array::randomize( level.balls );
138 foreach( ball
in balls )
140 if ( !isdefined( ball.carrier ) && !ball.in_goal )
142 triggers[triggers.size] = ball.trigger;
144 else if ( isdefined( ball.carrier ) && ball.carrier.team !=
self.team )
154 if ( triggers.size > 0 )
156 triggers = ArraySort( triggers,
self.origin );
158 self BotSetGoal( triggers[0].origin );