#pragma once
-#include <server/defs.qh>
+#include <common/weapons/_all.qh>
+#include <common/stats.qh>
#include <common/weapons/_all.qh>
#include <common/physics/player.qh>
+bool autocvar_g_waypoints_for_items;
+bool bot_waypoints_for_items;
+
const int WAYPOINTFLAG_GENERATED = BIT(23);
const int WAYPOINTFLAG_ITEM = BIT(22);
const int WAYPOINTFLAG_TELEPORT = BIT(21); // teleports, warpzones and jumppads
.int wpflags;
.entity wphw00, wphw01, wphw02, wphw03, wphw04, wphw05, wphw06, wphw07;
-bool bot_aim(entity this, .entity weaponentity, float shotspeed, float shotspeedupward, float maxshottime, float applygravity);
+bool bot_aim(entity this, .entity weaponentity, float shotspeed, float shotspeedupward, float maxshottime, float applygravity, bool shot_accurate);
void bot_aim_reset(entity this);
void bot_clientconnect(entity this);
void bot_clientdisconnect(entity this);
void bot_cmdhelp(string scmd);
void bot_endgame();
-bool bot_fixcount();
+bool bot_fixcount(bool multiple_per_frame);
void bot_list_commands();
void bot_queuecommand(entity bot, string cmdstring);
-void bot_clear(entity this);
void bot_relinkplayerlist();
void bot_resetqueues();
void bot_serverframe();
.float ignoregoaltime;
.entity ignoregoal;
+bool bots_would_leave;
+
+int player_count;
+int currentbots;
+
.entity bot_basewaypoint;
.bool navigation_dynamicgoal;
void navigation_dynamicgoal_init(entity this, bool initially_static);
void waypoint_getSymmetricalOrigin_cmd(entity caller, bool save, int arg_idx);
void waypoint_getSymmetricalAxis_cmd(entity caller, bool save, int arg_idx);
+
+IntrusiveList g_waypoints;
+IntrusiveList g_bot_targets;
+IntrusiveList g_bot_dodge;
+STATIC_INIT(botapi)
+{
+ g_waypoints = IL_NEW();
+ g_bot_targets = IL_NEW();
+ g_bot_dodge = IL_NEW();
+}