Merge branch 'master' into Mario/vaporizer_damage
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / bot / aim.qh
1 #ifndef AIM_H
2 #define AIM_H
3 /*
4  * Globals and Fields
5  */
6
7 entity tracetossent;
8 entity tracetossfaketarget;
9 vector findtrajectory_velocity;
10
11
12
13 vector shotorg;
14 vector shotdir;
15
16 // lag simulation
17 // upto 5 queued messages
18 .float lag1_time;
19 .float lag1_float1;
20 .float lag1_float2;
21 .entity lag1_entity1;
22 .vector lag1_vec1;
23 .vector lag1_vec2;
24 .vector lag1_vec3;
25 .vector lag1_vec4;
26
27 .float lag2_time;
28 .float lag2_float1;
29 .float lag2_float2;
30 .entity lag2_entity1;
31 .vector lag2_vec1;
32 .vector lag2_vec2;
33 .vector lag2_vec3;
34 .vector lag2_vec4;
35
36 .float lag3_time;
37 .float lag3_float1;
38 .float lag3_float2;
39 .entity lag3_entity1;
40 .vector lag3_vec1;
41 .vector lag3_vec2;
42 .vector lag3_vec3;
43 .vector lag3_vec4;
44
45 .float lag4_time;
46 .float lag4_float1;
47 .float lag4_float2;
48 .entity lag4_entity1;
49 .vector lag4_vec1;
50 .vector lag4_vec2;
51 .vector lag4_vec3;
52 .vector lag4_vec4;
53
54 .float lag5_time;
55 .float lag5_float1;
56 .float lag5_float2;
57 .entity lag5_entity1;
58 .vector lag5_vec1;
59 .vector lag5_vec2;
60 .vector lag5_vec3;
61 .vector lag5_vec4;
62
63 .float bot_badaimtime;
64 .float bot_aimthinktime;
65 .float bot_prevaimtime;
66 .float bot_firetimer;
67 .float bot_aimlatency;
68
69 .vector bot_mouseaim;
70 .vector bot_badaimoffset;
71 .vector bot_1st_order_aimfilter;
72 .vector bot_2nd_order_aimfilter;
73 .vector bot_3th_order_aimfilter;
74 .vector bot_4th_order_aimfilter;
75 .vector bot_5th_order_aimfilter;
76 .vector bot_olddesiredang;
77
78 .vector bot_aimselforigin;
79 .vector bot_aimselfvelocity;
80 .vector bot_aimtargorigin;
81 .vector bot_aimtargvelocity;
82
83 .entity bot_aimtarg;
84
85 /*
86  * Functions
87  */
88
89 float lag_additem(float t, float f1, float f2, entity e1, vector v1, vector v2, vector v3, vector v4);
90 void lag_update();
91 void bot_lagfunc(float t, float f1, float f2, entity e1, vector v1, vector v2, vector v3, vector v4);
92
93 float bot_shouldattack(entity e);
94 float bot_aimdir(vector v, float maxfiredeviation);
95 float bot_aim(float shotspeed, float shotspeedupward, float maxshottime, float applygravity);
96 float findtrajectorywithleading(vector org, vector m1, vector m2, entity targ, float shotspeed, float shotspeedupward, float maxtime, float shotdelay, entity ignore);
97
98 vector bot_shotlead(vector targorigin, vector targvelocity, float shotspeed, float shotdelay);
99
100 .void(float t, float f1, float f2, entity e1, vector v1, vector v2, vector v3, vector v4) lag_func;
101 #endif