READSKILL(bot_thinkskill, 1, 0.5); // think skill
READSKILL(bot_aiskill, 2, 0); // "ai" skill
+ if (file >= 0 && argv(prio) != "")
+ LOG_INFOF("^1Warning^7: too many parameters for bot %s, please check format of %s", bot_name, autocvar_bot_config_file);
+
this.bot_config_loaded = true;
// this is really only a default, TeamBalance_JoinBestTeam is called later
bot_setclientfields(this);
}
- if(this.bot_forced_team==1)
- this.team = NUM_TEAM_1;
- else if(this.bot_forced_team==2)
- this.team = NUM_TEAM_2;
- else if(this.bot_forced_team==3)
- this.team = NUM_TEAM_3;
- else if(this.bot_forced_team==4)
- this.team = NUM_TEAM_4;
+ if (teamplay && Team_IsValidIndex(this.bot_forced_team))
+ {
+ SetPlayerTeam(this, this.bot_forced_team, TEAM_CHANGE_MANUAL);
+ }
else
+ {
+ this.bot_forced_team = 0;
TeamBalance_JoinBestTeam(this);
+ }
havocbot_setupbot(this);
}
stepheightvec = autocvar_sv_stepheight * '0 0 1';
jumpheight_vec = (autocvar_sv_jumpvelocity ** 2) / (2 * autocvar_sv_gravity) * '0 0 1';
jumpstepheightvec = stepheightvec + jumpheight_vec * 0.85; // reduce it a bit to make the jumps easy
+ jumpheight_time = autocvar_sv_jumpvelocity / autocvar_sv_gravity;
}
bool bot_fixcount()
else if ((realplayers || autocvar_bot_join_empty || (currentbots > 0 && time < 5)))
{
int minplayers = max(0, floor(autocvar_minplayers));
+ if (teamplay)
+ minplayers = max(0, floor(autocvar_minplayers_per_team) * AvailableTeams());
int minbots = max(0, floor(autocvar_bot_number));
// add bots to reach minplayers if needed
// cap bots to the max players allowed by the server
int player_limit = GetPlayerLimit();
if(player_limit)
- bots = min(bots, player_limit - activerealplayers);
+ bots = min(bots, max(player_limit - activerealplayers, 0));
bots = min(bots, maxclients - realplayers);
if(bots > minbots)
return false;
}
}
- while (currentbots > bots)
+ while (currentbots > bots && bots >= 0)
bot_removenewest();
}
if(botframe_cachedwaypointlinks)
{
if(!botframe_loadedforcedlinks)
- waypoint_load_links_hardwired();
+ waypoint_load_hardwiredlinks();
}
else
{