From 2d97e4ca7a99417401aaf279768c302286b5fe6e Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Sun, 2 Mar 2008 15:01:37 +0000 Subject: [PATCH] fixed bug with bots not joining the smallest team git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3476 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/bots.qc | 7 +++---- data/qcsrc/server/cl_client.qc | 8 ++++---- data/qcsrc/server/clientcommands.qc | 14 +++++++------- data/qcsrc/server/teamplay.qc | 4 ++-- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/data/qcsrc/server/bots.qc b/data/qcsrc/server/bots.qc index 76c18bf84..919808c6b 100644 --- a/data/qcsrc/server/bots.qc +++ b/data/qcsrc/server/bots.qc @@ -1443,9 +1443,8 @@ void() bot_setnameandstuff = pants = bound(0, floor(random() * 13), 13); //shirt = bound(0, floor(random() * 16), 15); shirt = pants; - self.clientcolors = shirt * 16 + pants; + setcolor(self, shirt * 16 + pants); self.bot_preferredcolors = self.clientcolors; - self.team = pants + 1; // now pick a name... @@ -1898,7 +1897,7 @@ void() bot_relinkplayerlist = }; void() havocbot_setupbot; -float JoinBestTeam(entity pl, float only_return_best); +float JoinBestTeam(entity pl, float only_return_best, float forcebestteam); void() bot_clientconnect = { @@ -1909,7 +1908,7 @@ void() bot_clientconnect = self.lag_func = bot_lagfunc; self.isbot = TRUE; self.createdtime = self.nextthink; - JoinBestTeam(self, FALSE); + JoinBestTeam(self, FALSE, TRUE); havocbot_setupbot(); self.bot_mouseskill=random()-0.5; self.bot_thinkskill=random()-0.5; diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index cb820de33..c89c06c63 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -692,7 +692,7 @@ void ClientKill_Now_TeamChange() if(self.killindicator_teamchange == -1) { self.team = -1; - JoinBestTeam( self, 0 ); + JoinBestTeam( self, FALSE, FALSE ); } else { @@ -864,7 +864,7 @@ void ClientConnect (void) //if(g_domination) // dom_player_join_team(self); - //JoinBestTeam(self, FALSE); + //JoinBestTeam(self, FALSE, FALSE); if((cvar("sv_spectate") == 1 && !g_lms) || cvar("g_campaign")) { self.classname = "observer"; @@ -1434,8 +1434,8 @@ void LeaveSpectatorMode() { if(!cvar("teamplay") || cvar("g_campaign") || cvar("g_balance_teams")) { self.classname = "player"; - if(cvar("g_campaign") || cvar("g_balance_teams")) - JoinBestTeam(self, 0); + if(cvar("g_campaign") || cvar("g_balance_teams") || cvar("g_balance_teams_force")) + JoinBestTeam(self, FALSE, TRUE); if(cvar("g_campaign")) campaign_bots_may_start = 1; PutClientInServer(); diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index 30e56cd02..99944922e 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -161,7 +161,7 @@ entity GetKickVoteVictim(string vote, string cmd) ns = substring(argv(1), 1, 999); t = 2; } - + if(tokens >= 3) if(argv(1) == "#") { @@ -175,7 +175,7 @@ entity GetKickVoteVictim(string vote, string cmd) for(i = t; i < tokens; ++i) GetKickVoteVictim_reason = strcat(GetKickVoteVictim_reason, argv(i), " "); GetKickVoteVictim_reason = substring(GetKickVoteVictim_reason, 0, strlen(GetKickVoteVictim_reason) - 1); - + n = stof(ns); if(ns == ftos(n)) if(n >= 1) if(n <= maxclients) { @@ -426,13 +426,13 @@ void SV_ParseClientCommand(string s) { } else { self.version = stof(argv(1)); } - if(self.version != cvar("gameversion")) + if(self.version != cvar("gameversion")) { self.classname = "observer"; self.frags = -2; PutClientInServer(); - } else if(cvar("g_campaign") || cvar("g_balance_teams")) { - //JoinBestTeam(self, 0); + } else if(cvar("g_campaign") || cvar("g_balance_teams") || cvar("g_balance_teams_force")) { + //JoinBestTeam(self, FALSE, TRUE); } else if(cvar("teamplay") && !cvar("sv_spectate")) { self.classname = "observer"; stuffcmd(self,"menu_showteamselect\n"); @@ -828,7 +828,7 @@ void ReadyCount() return; bprint("^1Server is restarting...\n"); - + // no arena, assault & onslaught support yet... if(g_arena | g_assault | g_onslaught | gameover | intermission_running) localcmd("restart\n"); @@ -843,7 +843,7 @@ void ReadyCount() } reset_map(); - + if(cvar("sv_eventlog")) GameLogEcho(":restart", FALSE); } diff --git a/data/qcsrc/server/teamplay.qc b/data/qcsrc/server/teamplay.qc index f3e4c8882..da4f49b21 100644 --- a/data/qcsrc/server/teamplay.qc +++ b/data/qcsrc/server/teamplay.qc @@ -805,7 +805,7 @@ float FindSmallestTeam(entity pl, float ignore_pl) return smallestteam; } -float JoinBestTeam(entity pl, float only_return_best) +float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) { float smallest, selectedteam; @@ -826,7 +826,7 @@ float JoinBestTeam(entity pl, float only_return_best) // if we don't care what team he ends up on, put him on whatever team he entered as. // if he's not on a valid team, then let other code put him on the smallest team - if(!cvar("g_campaign") && !cvar("g_balance_teams") && !cvar("g_balance_teams_force")) + if(!forcebestteam) { if( c1 >= 0 && pl.team == COLOR_TEAM1) selectedteam = pl.team; -- 2.39.2