3 #include <common/weapons/_all.qh>
5 const int WAYPOINTFLAG_GENERATED = BIT(23);
6 const int WAYPOINTFLAG_ITEM = BIT(22);
7 const int WAYPOINTFLAG_TELEPORT = BIT(21);
8 const int WAYPOINTFLAG_NORELINK = BIT(20);
9 const int WAYPOINTFLAG_PERSONAL = BIT(19);
10 const int WAYPOINTFLAG_PROTECTED = BIT(18); // Useless WP detection never kills these.
11 const int WAYPOINTFLAG_USEFUL = BIT(17); // Useless WP detection temporary flag.
12 const int WAYPOINTFLAG_DEAD_END = BIT(16); // Useless WP detection temporary flag.
14 entity kh_worldkeylist;
15 .entity kh_worldkeynext;
17 float bot_custom_weapon;
18 float bot_weapons_close[Weapons_MAX];
19 float bot_weapons_far[Weapons_MAX];
20 float bot_weapons_mid[Weapons_MAX];
24 .float bot_dodgerating;
26 .float bot_forced_team;
27 .float bot_moveskill; // moving technique
29 .float(entity player, entity item) bot_pickupevalfunc;
30 .float bot_strategytime;
32 .float havocbot_role_timeout;
33 .float isbot; // true if this client is actually a bot
34 .float lastteleporttime;
35 .float navigation_hasgoals;
36 .float nearestwaypointtimeout;
37 .entity nearestwaypoint;
39 .entity wp00, wp01, wp02, wp03, wp04, wp05, wp06, wp07, wp08, wp09, wp10, wp11, wp12, wp13, wp14, wp15;
40 .entity wp16, wp17, wp18, wp19, wp20, wp21, wp22, wp23, wp24, wp25, wp26, wp27, wp28, wp29, wp30, wp31;
41 .float wp00mincost, wp01mincost, wp02mincost, wp03mincost, wp04mincost, wp05mincost, wp06mincost, wp07mincost;
42 .float wp08mincost, wp09mincost, wp10mincost, wp11mincost, wp12mincost, wp13mincost, wp14mincost, wp15mincost;
43 .float wp16mincost, wp17mincost, wp18mincost, wp19mincost, wp20mincost, wp21mincost, wp22mincost, wp23mincost;
44 .float wp24mincost, wp25mincost, wp26mincost, wp27mincost, wp28mincost, wp29mincost, wp30mincost, wp31mincost;
50 bool bot_aim(entity this, .entity weaponentity, float shotspeed, float shotspeedupward, float maxshottime, float applygravity);
51 void bot_clientconnect(entity this);
52 void bot_clientdisconnect(entity this);
53 void bot_cmdhelp(string scmd);
56 void bot_list_commands();
57 void bot_queuecommand(entity bot, string cmdstring);
58 void bot_clear(entity this);
59 void bot_relinkplayerlist();
60 void bot_resetqueues();
61 void bot_serverframe();
62 bool bot_shouldattack(entity this, entity e);
63 void bot_think(entity this);
65 entity find_bot_by_name(string name);
66 entity find_bot_by_number(float number);
68 void havocbot_goalrating_enemyplayers(entity this, float ratingscale, vector org, float sradius);
69 void havocbot_goalrating_items(entity this, float ratingscale, vector org, float sradius);
70 void havocbot_goalrating_waypoints(entity this, float ratingscale, vector org, float sradius);
72 vector havocbot_middlepoint;
73 float havocbot_middlepoint_radius;
74 vector havocbot_symmetryaxis_equation;
76 .entity bot_basewaypoint;
77 .bool navigation_dynamicgoal;
78 void navigation_dynamicgoal_init(entity this, bool initially_static);
79 void navigation_dynamicgoal_set(entity this);
80 void navigation_dynamicgoal_unset(entity this);
81 entity navigation_findnearestwaypoint(entity ent, float walkfromwp);
82 void navigation_goalrating_end(entity this);
83 void navigation_goalrating_start(entity this);
84 void navigation_markroutes(entity this, entity fixed_source_waypoint);
85 void navigation_markroutes_inverted(entity fixed_source_waypoint);
86 void navigation_routerating(entity this, entity e, float f, float rangebias);
88 bool tracewalk(entity e, vector start, vector m1, vector m2, vector end, float movemode);
90 void waypoint_remove_fromeditor(entity pl);
91 void waypoint_remove(entity wp);
92 void waypoint_saveall();
93 void waypoint_schedulerelinkall();
94 void waypoint_schedulerelink(entity wp);
95 void waypoint_spawnforitem(entity e);
96 void waypoint_spawnforitem_force(entity e, vector org);
97 void waypoint_spawnforteleporter(entity e, vector destination, float timetaken);
98 void waypoint_spawnforteleporter_v(entity e, vector org, vector destination, float timetaken);
99 void waypoint_spawn_fromeditor(entity pl);
100 entity waypoint_spawn(vector m1, vector m2, float f);
101 void waypoint_unreachable(entity pl);
104 void navigation_clearroute(entity this);