#include <common/physics/player.qh>
#include <common/constants.qh>
+#include <common/net_linked.qh>
#include <common/mapinfo.qh>
#include <common/teams.qh>
#include <common/util.qh>
if (!IS_PLAYER(this) || (autocvar_g_campaign && !campaign_bots_may_start))
{
+ this.movement = '0 0 0';
this.bot_nextthink = time + 0.5;
return;
}
// if dead, just wait until we can respawn
if (IS_DEAD(this))
{
+ this.movement = '0 0 0';
if (this.deadflag == DEAD_DEAD)
{
PHYS_INPUT_BUTTON_JUMP(this) = true; // press jump to respawn
break;
}
));
- RandomSelection_Add(NULL, 0, readfile, 1, prio);
+ RandomSelection_AddString(readfile, 1, prio);
}
readfile = RandomSelection_chosen_string;
fclose(file);
void bot_endgame()
{
- entity e;
- //dprint("bot_endgame\n");
- e = bot_list;
+ bot_relinkplayerlist();
+ entity e = bot_list;
while (e)
{
setcolor(e, e.bot_preferredcolors);
this.playerskin_freeme = string_null;
if(this.bot_cmd_current)
delete(this.bot_cmd_current);
- if(bot_waypoint_queue_owner==this)
+ if(bot_waypoint_queue_owner == this)
bot_waypoint_queue_owner = NULL;
}
int bestcount = 0;
int bcount = 0;
- FOREACH_ENTITY_FLOAT(isbot, true,
+ FOREACH_CLIENT(it.isbot,
{
++bcount;
entity best = NULL;
int bcount = 0;
- FOREACH_ENTITY_FLOAT(isbot, true,
+ FOREACH_CLIENT(it.isbot,
{
++bcount;
return true;
}
+void bot_remove_from_bot_list(entity this)
+{
+ entity e = bot_list;
+ entity prev_bot = NULL;
+ while (e)
+ {
+ if(e == this)
+ {
+ if(!prev_bot)
+ bot_list = this.nextbot;
+ else
+ prev_bot.nextbot = this.nextbot;
+ if(bot_strategytoken == this)
+ {
+ bot_strategytoken = this.nextbot;
+ bot_strategytoken_taken = true;
+ }
+ this.nextbot = NULL;
+ break;
+ }
+ prev_bot = e;
+ e = e.nextbot;
+ }
+}
+
+void bot_clear(entity this)
+{
+ bot_remove_from_bot_list(this);
+ if(bot_waypoint_queue_owner == this)
+ bot_waypoint_queue_owner = NULL;
+ this.aistatus &= ~AI_STATUS_STUCK; // otherwise bot_waypoint_queue_owner will be set again to this by navigation_unstuck
+}
+
void bot_serverframe()
{
- if (intermission_running)
+ if (gameover)
return;
if (time < 2)