‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_bot_ctf.gsc
Go to the documentation of this file.
1 #using scripts\shared\array_shared;
2 #using scripts\shared\gameobjects_shared;
3 #using scripts\shared\math_shared;
4 #using scripts\shared\util_shared;
5 #using scripts\shared\bots\_bot;
6 #using scripts\shared\bots\_bot_combat;
7 
8 #using scripts\mp\gametypes\ctf;
9 #using scripts\mp\_util;
10 #using scripts\mp\bots\_bot;
11 #using scripts\mp\bots\_bot_combat;
12 
13 #insert scripts\shared\shared.gsh;
14 #insert scripts\mp\bots\_bot.gsh;
15 
16 #define CTF_GOAL_RADIUS 16
17 
18 #define BOT_DEFEND_CHANCE 80
19 #define BOT_DEFEND_RADIUS 1024
20 
21 #namespace bot_ctf;
22 
23 function ‪init()
24 {
25  level.onBotConnect = &‪on_bot_connect;
26  level.botIdle = &‪bot_idle;
27 }
28 
30 {
31  foreach( flag in level.flags )
32  {
33  if ( flag ‪gameobjects::get_owner_team() == self.team )
34  {
35  self.bot.flag = flag;
36  }
37  else
38  {
39  self.bot.enemyFlag = flag;
40  }
41  }
42 
44 }
45 
46 function ‪bot_idle()
47 {
48  carrier = self.bot.enemyFlag ‪gameobjects::get_carrier();
49 
50  // Carrying the enemy flag
51  if ( isdefined( carrier ) && carrier == self )
52  {
53  // Wander around the home flag area until it comes back
54  if ( self.bot.flag ‪gameobjects::is_object_away_from_home() )
55  {
56  self ‪bot::approach_point( self.bot.flag.flagBase.trigger.origin, 0, ‪BOT_DEFEND_RADIUS );
57  }
58  // Capture the enemy flag
59  else
60  {
61  self ‪bot::approach_goal_trigger( self.bot.flag.flagBase.trigger );
62  }
63 
65  return;
66  }
67  // Defend home base
68  else if ( Distance2DSquared( self.origin, self.bot.flag.flagBase.trigger.origin ) < ( ‪BOT_DEFEND_RADIUS * ‪BOT_DEFEND_RADIUS ) &&
69  RandomInt( 100 ) < ‪BOT_DEFEND_CHANCE )
70  {
71  self ‪bot::approach_point( self.bot.flag.flagBase.trigger.origin, 0, ‪BOT_DEFEND_RADIUS );
73  return;
74  }
75  // Return the friendly flag
76  else if ( self.bot.flag ‪gameobjects::is_object_away_from_home() )
77  {
78  enemyCarrier = self.bot.flag ‪gameobjects::get_carrier();
79 
80  if ( isdefined( enemyCarrier ) )
81  {
82  // Don't go straight for the carrier since the objective doesn't update perfectly
83  self ‪bot::approach_point( enemyCarrier.origin, 250, 1000, 128 );
85  return;
86  }
87  else
88  {
89  self BotSetGoal( self.bot.flag.trigger.origin );
91  return;
92  }
93  }
94  // Take the enemy flag
95  else if ( !isdefined( carrier ) )
96  {
97  self ‪bot::approach_goal_trigger( self.bot.enemyFlag.trigger );
99  return;
100  }
101 
102  self ‪bot::bot_idle();
103 }
‪BOT_DEFEND_RADIUS
‪#define BOT_DEFEND_RADIUS
Definition: _bot_ctf.gsc:19
‪BOT_DEFEND_CHANCE
‪#define BOT_DEFEND_CHANCE
Definition: _bot_ctf.gsc:18
‪is_object_away_from_home
‪function is_object_away_from_home()
Definition: gameobjects_shared.gsc:1004
‪get_carrier
‪function get_carrier()
Definition: gameobjects_shared.gsc:1211
‪approach_goal_trigger
‪function approach_goal_trigger(trigger, radiusMax, spacing)
Definition: _bot.gsc:1068
‪init
‪function init()
Definition: _bot_ctf.gsc:23
‪get_owner_team
‪function get_owner_team()
Definition: gameobjects_shared.gsc:3445
‪approach_point
‪function approach_point(point, radiusMin, radiusMax, spacing)
Definition: _bot.gsc:1086
‪on_bot_connect
‪function on_bot_connect()
Definition: _bot_ctf.gsc:29
‪bot_idle
‪function bot_idle()
Definition: _bot_ctf.gsc:46
‪sprint_to_goal
‪function sprint_to_goal()
Definition: _bot.gsc:454