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
19 .float isbot; // true if this client is actually a bot
24 float autoskill_nextthink;
26 // havocbot_keyboardskill // keyboard movement
27 .float bot_moveskill; // moving technique
28 .float bot_dodgeskill; // dodging
30 .float bot_pingskill; // ping offset
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")
36 .float bot_aimskill; // aim accuracy
37 .float bot_offsetskill; // aim breakage
38 .float bot_mouseskill; // mouse "speed"
40 .float bot_thinkskill; // target choice
41 .float bot_aiskill; // strategy choice
43 .float totalfrags_lastcheck;
45 // Custom weapon priorities
46 float bot_custom_weapon;
47 float bot_distance_far;
48 float bot_distance_close;
50 float bot_weapons_far[Weapons_MAX];
51 float bot_weapons_mid[Weapons_MAX];
52 float bot_weapons_close[Weapons_MAX];
59 .string netname_freeme;
60 .string playermodel_freeme;
61 .string playerskin_freeme;
66 .float bot_preferredcolors;
69 .float bot_dodgerating;
72 .float bot_pickupbasevalue;
74 .float bot_strategytime;
76 .float bot_forced_team;
77 .float bot_config_loaded;
79 float bot_strategytoken_taken;
80 entity bot_strategytoken;
82 float botframe_spawnedwaypoints;
83 float botframe_nextthink;
84 float botframe_nextdangertime;
85 float bot_cvar_nextthink;
86 float bot_ignore_bots; // let bots not attack other bots (only works in non-teamplay)
96 void bot_setnameandstuff();
97 void bot_custom_weapon_priority_setup();
99 void bot_relinkplayerlist();
100 void bot_clientdisconnect();
101 void bot_clientconnect(entity this);
102 void bot_removefromlargestteam();
103 void bot_removenewest();
104 void autoskill(float factor);
105 void bot_serverframe();
108 .float(entity player, entity item) bot_pickupevalfunc;
114 void() havocbot_setupbot;
116 void bot_calculate_stepheightvec();