]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/server/bot/api.qh
Merge branch 'master' into martin-t/bullet-trails
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / bot / api.qh
1 #pragma once
2
3 #include <server/defs.qh>
4 #include <common/weapons/_all.qh>
5 #include <common/physics/player.qh>
6
7 const int WAYPOINTFLAG_GENERATED = BIT(23);
8 const int WAYPOINTFLAG_ITEM = BIT(22);
9 const int WAYPOINTFLAG_TELEPORT = BIT(21); // teleports, warpzones and jumppads
10 const int WAYPOINTFLAG_NORELINK = BIT(20);
11 const int WAYPOINTFLAG_PERSONAL = BIT(19);
12 const int WAYPOINTFLAG_PROTECTED = BIT(18);  // Useless WP detection never kills these.
13 const int WAYPOINTFLAG_USEFUL = BIT(17);  // Useless WP detection temporary flag.
14 const int WAYPOINTFLAG_DEAD_END = BIT(16);  // Useless WP detection temporary flag.
15 const int WAYPOINTFLAG_LADDER = BIT(15);
16
17 entity kh_worldkeylist;
18 .entity kh_worldkeynext;
19
20 float bot_custom_weapon;
21 float bot_weapons_close[Weapons_MAX];
22 float bot_weapons_far[Weapons_MAX];
23 float bot_weapons_mid[Weapons_MAX];
24 float skill;
25
26 .float bot_tracewalk_time;
27 .float bot_attack;
28 .float bot_dodgerating;
29 .float bot_dodge;
30 .float bot_forced_team;
31 .float bot_moveskill; // moving technique
32 .float bot_pickup;
33 .float(entity player, entity item) bot_pickupevalfunc;
34 .string cleanname;
35 .float havocbot_role_timeout;
36 .void(entity this) havocbot_role;
37 .void(entity this) havocbot_previous_role;
38 .float isbot; // true if this client is actually a bot
39 .float lastteleporttime;
40 .vector lastteleport_origin;
41 .float navigation_hasgoals;
42 .float nearestwaypointtimeout;
43 .entity nearestwaypoint;
44 .float speed;
45 .entity wp00, wp01, wp02, wp03, wp04, wp05, wp06, wp07, wp08, wp09, wp10, wp11, wp12, wp13, wp14, wp15;
46 .entity wp16, wp17, wp18, wp19, wp20, wp21, wp22, wp23, wp24, wp25, wp26, wp27, wp28, wp29, wp30, wp31;
47 .float wp00mincost, wp01mincost, wp02mincost, wp03mincost, wp04mincost, wp05mincost, wp06mincost, wp07mincost;
48 .float wp08mincost, wp09mincost, wp10mincost, wp11mincost, wp12mincost, wp13mincost, wp14mincost, wp15mincost;
49 .float wp16mincost, wp17mincost, wp18mincost, wp19mincost, wp20mincost, wp21mincost, wp22mincost, wp23mincost;
50 .float wp24mincost, wp25mincost, wp26mincost, wp27mincost, wp28mincost, wp29mincost, wp30mincost, wp31mincost;
51 .float wpconsidered;
52 .float wpcost;
53 .float wphardwired;
54 .int wpflags;
55
56 bool bot_aim(entity this, .entity weaponentity, float shotspeed, float shotspeedupward, float maxshottime, float applygravity);
57 void bot_clientconnect(entity this);
58 void bot_clientdisconnect(entity this);
59 void bot_cmdhelp(string scmd);
60 void bot_endgame();
61 bool bot_fixcount();
62 void bot_list_commands();
63 void bot_queuecommand(entity bot, string cmdstring);
64 void bot_clear(entity this);
65 void bot_relinkplayerlist();
66 void bot_resetqueues();
67 void bot_serverframe();
68 bool bot_shouldattack(entity this, entity e);
69 void bot_think(entity this);
70
71 entity find_bot_by_name(string name);
72 entity find_bot_by_number(float number);
73
74 void havocbot_goalrating_enemyplayers(entity this, float ratingscale, vector org, float sradius);
75 void havocbot_goalrating_items(entity this, float ratingscale, vector org, float sradius);
76 void havocbot_goalrating_waypoints(entity this, float ratingscale, vector org, float sradius);
77
78 bool havocbot_goalrating_item_pickable_check_players(entity this, vector org, entity item, vector item_org);
79
80 vector havocbot_middlepoint;
81 float havocbot_middlepoint_radius;
82 float havocbot_symmetry_axis_m;
83 float havocbot_symmetry_axis_q;
84 float havocbot_symmetry_origin_order;
85
86 .float goalentity_lock_timeout;
87 .float ignoregoaltime;
88 .entity ignoregoal;
89
90 .entity bot_basewaypoint;
91 .bool navigation_dynamicgoal;
92 void navigation_dynamicgoal_init(entity this, bool initially_static);
93 void navigation_dynamicgoal_set(entity this, entity dropper);
94 void navigation_dynamicgoal_unset(entity this);
95 entity navigation_findnearestwaypoint(entity ent, float walkfromwp);
96 void navigation_goalrating_end(entity this);
97 void navigation_goalrating_start(entity this);
98 void navigation_goalrating_timeout_set(entity this);
99 void navigation_goalrating_timeout_force(entity this);
100 void navigation_goalrating_timeout_expire(entity this, float seconds);
101 bool navigation_goalrating_timeout(entity this);
102 bool navigation_goalrating_timeout_can_be_anticipated(entity this);
103 void navigation_markroutes(entity this, entity fixed_source_waypoint);
104 void navigation_markroutes_inverted(entity fixed_source_waypoint);
105 void navigation_routerating(entity this, entity e, float f, float rangebias);
106
107 vector get_closer_dest(entity ent, vector org);
108
109 void set_tracewalk_dest(entity ent, vector org, bool fix_player_dest);
110 vector set_tracewalk_dest_2(entity ent, vector org);
111 bool tracewalk(entity e, vector start, vector m1, vector m2, vector end, float end_height, float movemode);
112
113 void waypoint_remove_fromeditor(entity pl);
114 void waypoint_remove(entity wp);
115 void waypoint_saveall();
116 void waypoint_schedulerelinkall();
117 void waypoint_schedulerelink(entity wp);
118 void waypoint_spawnforitem(entity e);
119 void waypoint_spawnforitem_force(entity e, vector org);
120 void waypoint_spawnforteleporter(entity e, vector destination, float timetaken, entity tracetest_ent);
121 void waypoint_spawnforteleporter_wz(entity e, vector org, vector destination, float timetaken, vector down_dir, entity tracetest_ent);
122 void waypoint_spawn_fromeditor(entity pl);
123 entity waypoint_spawn(vector m1, vector m2, float f);
124 void waypoint_unreachable(entity pl);