From 8db1ea65ccbb6a2e6232359f51de5e5b35297659 Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Wed, 15 Sep 2010 16:19:13 +0300 Subject: [PATCH] Allow forcing the player to a given team in campaign mode. Useful for story based campaigns where you might want the player to play only in team X. No, bot_vs_human can't replace this iirc. For one thing, bot_vs_human is useless if you have more than 2 teams. Also, bot_vs_human can only force the player in team X while forcing bots in the other team (so you can't put the player to the team you want without braking bot balance). --- defaultXonotic.cfg | 1 + qcsrc/server/teamplay.qc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 8e29eb492..acc84b013 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -1118,6 +1118,7 @@ set quit_and_redirect "" "set to an IP to redirect all players at the end of the // singleplayer campaign set g_campaign 0 +set g_campaign_forceteam 0 "Forces the player to a given team in campaign mode, 1 = red, 2 = blue, 3 = yellow, 4 = pink" seta g_campaign_name "xonotic25" set g_campaign_skill 0 set g_campaignxonotic20_index 0 diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 0798b29b2..a37acb8af 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -879,6 +879,29 @@ float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) // find out what teams are available CheckAllowedTeams(pl); + // if we want the player in a certain team for campaign, force him there + if(cvar("g_campaign")) + if(clienttype(pl) == CLIENTTYPE_REAL) // only players, not bots + { + switch(cvar("g_campaign_forceteam")) + { + case 1: + SetPlayerColors(pl, COLOR_TEAM1 - 1); + return COLOR_TEAM1; + case 2: + SetPlayerColors(pl, COLOR_TEAM2 - 1); + return COLOR_TEAM2; + case 3: + SetPlayerColors(pl, COLOR_TEAM3 - 1); + return COLOR_TEAM3; + case 4: + SetPlayerColors(pl, COLOR_TEAM4 - 1); + return COLOR_TEAM4; + default: + break; + } + } + // 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(!forcebestteam) -- 2.39.2