From: Rudolf Polzer <divverent@alientrap.org>
Date: Sat, 13 Nov 2010 21:29:40 +0000 (+0100)
Subject: fixed for forced team
X-Git-Tag: xonotic-v0.1.0preview~145
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=0370f82ad420827a6df92dc387ef3068a3dcdf7f;p=xonotic%2Fxonotic-data.pk3dir.git

fixed for forced team
---

diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc
index bb3e4774a..97bffaacc 100644
--- a/qcsrc/server/cl_client.qc
+++ b/qcsrc/server/cl_client.qc
@@ -2388,7 +2388,7 @@ void ShowRespawnCountdown()
 void LeaveSpectatorMode()
 {
 	if(isJoinAllowed()) {
-		if(!teams_matter || cvar("g_campaign") || cvar("g_balance_teams") || (self.wasplayer && cvar("g_changeteam_banned"))) {
+		if(!teams_matter || cvar("g_campaign") || cvar("g_balance_teams") || (self.wasplayer && cvar("g_changeteam_banned")) || self.team_forced > 0) {
 			self.classname = "player";
 
 			if(cvar("g_campaign") || cvar("g_balance_teams") || cvar("g_balance_teams_force"))
diff --git a/qcsrc/server/clientcommands.qc b/qcsrc/server/clientcommands.qc
index df19ab592..0cbe3017e 100644
--- a/qcsrc/server/clientcommands.qc
+++ b/qcsrc/server/clientcommands.qc
@@ -171,7 +171,7 @@ void SV_ParseClientCommand(string s) {
 			PutClientInServer();
 		} else if(cvar("g_campaign") || cvar("g_balance_teams") || cvar("g_balance_teams_force")) {
 			//JoinBestTeam(self, FALSE, TRUE);
-		} else if(teams_matter && !cvar("sv_spectate")) {
+		} else if(teams_matter && !cvar("sv_spectate") && !(self.team_forced > 0)) {
 			self.classname = "observer";
 			stuffcmd(self,"menu_showteamselect\n");
 		}
@@ -249,9 +249,11 @@ void SV_ParseClientCommand(string s) {
 		if not(self.flags & FL_CLIENT)
 			return;
 		if( !teams_matter ) {
-			sprint( self, "selecteam can only be used in teamgames\n");
+			sprint( self, "selectteam can only be used in teamgames\n");
 		} else if(cvar("g_campaign")) {
 			//JoinBestTeam(self, 0);
+		} else if(self.team_forced > 0) {
+			sprint( self, "selectteam can not be used as your team is forced\n");
 		} else if(lockteams) {
 			sprint( self, "^7The game has already begun, you must wait until the next map to be able to join a team.\n");
 		} else if( argv(1) == "red" ) {
diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc
index d784c72d8..b9064c783 100644
--- a/qcsrc/server/teamplay.qc
+++ b/qcsrc/server/teamplay.qc
@@ -803,7 +803,7 @@ float FindSmallestTeam(entity pl, float ignore_pl)
 	if(c4 >= 0)
 		totalteams = totalteams + 1;
 
-	if(cvar("bot_vs_human") && totalteams == 1)
+	if((cvar("bot_vs_human") || pl.team_forced > 0) && totalteams == 1)
 		totalteams += 1;
 
 	if(totalteams <= 1)