entity bot_spawn()
{
- local entity oldself, bot;
+ entity oldself, bot;
bot = spawnclient();
if (bot)
{
self = oldself;
}
return bot;
-};
+}
void bot_think()
{
// now call the current bot AI (havocbot for example)
self.bot_ai();
-};
+}
void bot_setnameandstuff()
{
self.cvar_cl_accuracy_data_share = 1; // share the bots weapon accuracy data with the world
self.cvar_cl_accuracy_data_receive = 0; // don't receive any weapon accuracy data
-};
+}
void bot_custom_weapon_priority_setup()
{
- local float tokens, i, c, w;
+ float tokens, i, c, w;
bot_custom_weapon = FALSE;
bot_weapons_close[c] = -1;
bot_custom_weapon = TRUE;
-};
+}
void bot_endgame()
{
- local entity e;
+ entity e;
//dprint("bot_endgame\n");
e = bot_list;
while (e)
e = e.nextbot;
}
// if dynamic waypoints are ever implemented, save them here
-};
+}
void bot_relinkplayerlist()
{
- local entity e;
- local entity prevbot;
+ entity e;
+ entity prevbot;
player_count = 0;
currentbots = 0;
player_list = e = findchainflags(flags, FL_CLIENT);
dprint(strcat("relink: ", ftos(currentbots), " bots seen.\n"));
bot_strategytoken = bot_list;
bot_strategytoken_taken = TRUE;
-};
+}
void bot_clientdisconnect()
{
JoinBestTeam(self, FALSE, TRUE);
havocbot_setupbot();
-};
+}
void bot_removefromlargestteam()
{
- local float besttime, bestcount, thiscount;
- local entity best, head;
+ float besttime, bestcount, thiscount;
+ entity best, head;
CheckAllowedTeams(world);
GetTeamCounts(world);
head = findchainfloat(isbot, TRUE);
}
currentbots = currentbots - 1;
dropclient(best);
-};
+}
void bot_removenewest()
{
- local float besttime;
- local entity best, head;
+ float besttime;
+ entity best, head;
if(teamplay)
{
}
currentbots = currentbots - 1;
dropclient(best);
-};
+}
void autoskill(float factor)
{
head.totalfrags_lastcheck = head.totalfrags;
}
+void bot_calculate_stepheightvec(void)
+{
+ stepheightvec = autocvar_sv_stepheight * '0 0 1';
+ jumpstepheightvec = stepheightvec +
+ ((autocvar_sv_jumpvelocity * autocvar_sv_jumpvelocity) / (2 * autocvar_sv_gravity)) * '0 0 0.85';
+ // 0.75 factor is for safety to make the jumps easy
+}
+
void bot_serverframe()
{
float realplayers, bots, activerealplayers;
if (time < 2)
return;
- stepheightvec = autocvar_sv_stepheight * '0 0 1';
+ bot_calculate_stepheightvec();
bot_navigation_movemode = ((autocvar_bot_navigation_ignoreplayers) ? MOVE_NOMONSTERS : MOVE_NORMAL);
if(time > autoskill_nextthink)
else
{
// TODO: Make this check cleaner
- local entity wp = findchain(classname, "waypoint");
+ entity wp = findchain(classname, "waypoint");
if(time - wp.nextthink > 10)
waypoint_save_links();
}
if (botframe_nextdangertime < time)
{
- local float interval;
+ float interval;
interval = autocvar_bot_ai_dangerdetectioninterval;
if (botframe_nextdangertime < time - interval * 1.5)
botframe_nextdangertime = time;
bot_custom_weapon_priority_setup();
bot_cvar_nextthink = time + 5;
}
-};
+}