]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/server/bot/bot.qh
cloc
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / bot / bot.qh
1 #pragma once
2 /*
3  * Globals and Fields
4  */
5
6 const int AI_STATUS_ROAMING                                             = BIT(0);       // Bot is just crawling the map. No enemies at sight
7 const int AI_STATUS_ATTACKING                                   = BIT(1);       // There are enemies at sight
8 const int AI_STATUS_RUNNING                                             = BIT(2);       // Bot is bunny hopping
9 const int AI_STATUS_DANGER_AHEAD                                = BIT(3);       // There is lava/slime/trigger_hurt ahead
10 const int AI_STATUS_OUT_JUMPPAD                                 = BIT(4);       // Trying to get out of a "vertical" jump pad
11 const int AI_STATUS_OUT_WATER                                   = BIT(5);       // Trying to get out of water
12 const int AI_STATUS_WAYPOINT_PERSONAL_LINKING   = BIT(6);       // Waiting for the personal waypoint to be linked
13 const int AI_STATUS_WAYPOINT_PERSONAL_GOING             = BIT(7);       // Going to a personal waypoint
14 const int AI_STATUS_WAYPOINT_PERSONAL_REACHED   = BIT(8);       // Personal waypoint reached
15 const int AI_STATUS_JETPACK_FLYING                              = BIT(9);
16 const int AI_STATUS_JETPACK_LANDING                             = BIT(10);
17 const int AI_STATUS_STUCK                                               = BIT(11);  // Cannot reach any goal
18
19 .float isbot; // true if this client is actually a bot
20 .int aistatus;
21
22 // Skill system
23 float skill;
24 float autoskill_nextthink;
25
26 // havocbot_keyboardskill // keyboard movement
27 .float bot_moveskill; // moving technique
28 .float bot_dodgeskill; // dodging
29
30 .float bot_pingskill; // ping offset
31
32 .float bot_weaponskill; // weapon usage skill (combos, e.g.)
33 .float bot_aggresskill; // aggressivity, controls "think before fire" behaviour
34 .float bot_rangepreference; // weapon choice offset for range (>0 = prefer long range earlier "sniper", <0 = prefer short range "spammer")
35
36 .float bot_aimskill; // aim accuracy
37 .float bot_offsetskill; // aim breakage
38 .float bot_mouseskill; // mouse "speed"
39
40 .float bot_thinkskill; // target choice
41 .float bot_aiskill; // strategy choice
42
43 .float totalfrags_lastcheck;
44
45 // Custom weapon priorities
46 float bot_custom_weapon;
47 float bot_distance_far;
48 float bot_distance_close;
49
50 float bot_weapons_far[Weapons_MAX];
51 float bot_weapons_mid[Weapons_MAX];
52 float bot_weapons_close[Weapons_MAX];
53
54 entity bot_list;
55 .entity nextbot;
56 .string cleanname;
57 .string netname_freeme;
58 .string playermodel_freeme;
59 .string playerskin_freeme;
60
61 .float bot_nextthink;
62
63 .float createdtime;
64 .float bot_preferredcolors;
65 .float bot_attack;
66 .float bot_dodge;
67 .float bot_dodgerating;
68
69 .float bot_pickup;
70 .float bot_pickupbasevalue;
71 .float bot_canfire;
72 .float bot_strategytime;
73
74 .float bot_forced_team;
75 .float bot_config_loaded;
76
77 float bot_strategytoken_taken;
78 entity bot_strategytoken;
79
80 float botframe_spawnedwaypoints;
81 float botframe_nextthink;
82 float botframe_nextdangertime;
83 float bot_cvar_nextthink;
84 float bot_ignore_bots; // let bots not attack other bots (only works in non-teamplay)
85
86 /*
87  * Functions
88  */
89
90 entity bot_spawn();
91 float bot_fixcount();
92
93 void bot_think(entity this);
94 void bot_setnameandstuff(entity this);
95 void bot_custom_weapon_priority_setup();
96 void bot_endgame();
97 void bot_relinkplayerlist();
98 void bot_clientdisconnect(entity this);
99 void bot_clientconnect(entity this);
100 void bot_removefromlargestteam();
101 void bot_removenewest();
102 void autoskill(float factor);
103 void bot_serverframe();
104
105 .void(entity this) bot_ai;
106 .float(entity player, entity item) bot_pickupevalfunc;
107
108 /*
109  * Imports
110  */
111
112 void(entity this) havocbot_setupbot;
113
114 void bot_calculate_stepheightvec();