X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fteamplay.qc;h=ba1b4e6eedacb91412044bd0529c472ac3ffb977;hb=165d542813201a21cb6152ea5d22454e43e117c7;hp=bd5d3607c127e2178a62cce0241d72a09ae7c32f;hpb=b03338e49b3b16ec20c59a9809abe16bebcd29ce;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index bd5d3607c..ba1b4e6ee 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -1,20 +1,10 @@ -string cache_mutatormsg; -string cache_lastmutatormsg; - -// client counts for each team -float c1, c2, c3, c4; -// # of bots on those teams -float cb1, cb2, cb3, cb4; - -//float audit_teams_time; +#include "teamplay.qh" void TeamchangeFrags(entity e) { PlayerScore_Clear(e); } -void entcs_init(); - void LogTeamchange(float player_id, float team_number, float type) { if(!autocvar_sv_eventlog) @@ -84,10 +74,9 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_tdm_point_limit; leadlimit_override = autocvar_g_tdm_point_leadlimit; - MUTATOR_ADD(gamemode_tdm); - if(autocvar_g_tdm_team_spawns) have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_tdm); } if(g_domination) @@ -95,12 +84,10 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_domination_point_limit; leadlimit_override = autocvar_g_domination_point_leadlimit; - MUTATOR_ADD(gamemode_domination); - if(autocvar_g_domination_roundbased && autocvar_g_domination_roundbased_point_limit) fraglimit_override = autocvar_g_domination_roundbased_point_limit; - have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_domination); } if(g_ctf) @@ -108,8 +95,8 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_capturelimit_override; leadlimit_override = autocvar_captureleadlimit_override; - MUTATOR_ADD(gamemode_ctf); have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_ctf); } if(g_lms) @@ -126,9 +113,9 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_ca_point_limit; leadlimit_override = autocvar_g_ca_point_leadlimit; - MUTATOR_ADD(gamemode_ca); if(autocvar_g_ca_team_spawns) have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_ca); } if(g_keyhunt) @@ -144,16 +131,16 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_freezetag_point_limit; leadlimit_override = autocvar_g_freezetag_point_leadlimit; - MUTATOR_ADD(gamemode_freezetag); if(autocvar_g_freezetag_team_spawns) have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_freezetag); } if(g_assault) { ActivateTeamplay(); - MUTATOR_ADD(gamemode_assault); have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_assault); } if(g_onslaught) @@ -173,11 +160,34 @@ void InitGameplayMode() } else race_teams = 0; - qualifying_override = autocvar_g_race_qualifying_timelimit_override; fraglimit_override = autocvar_g_race_laps_limit; leadlimit_override = 0; // currently not supported by race + // we need to find out the correct value for g_race_qualifying + float want_qualifying = ((qualifying_override >= 0) ? qualifying_override : autocvar_g_race_qualifying_timelimit) > 0; + + if(autocvar_g_campaign) + { + g_race_qualifying = 1; + independent_players = 1; + } + else if(!autocvar_g_campaign && want_qualifying) + { + g_race_qualifying = 2; + independent_players = 1; + race_fraglimit = (race_fraglimit >= 0) ? fraglimit_override : autocvar_fraglimit; + race_leadlimit = (race_leadlimit >= 0) ? leadlimit_override : autocvar_leadlimit; + race_timelimit = (race_timelimit >= 0) ? timelimit_override : autocvar_timelimit; + fraglimit_override = 0; + leadlimit_override = 0; + timelimit_override = autocvar_g_race_qualifying_timelimit; + } + else + { + g_race_qualifying = 0; + } + MUTATOR_ADD(gamemode_race); } @@ -186,16 +196,17 @@ void InitGameplayMode() g_race_qualifying = 1; fraglimit_override = 0; leadlimit_override = 0; + independent_players = 1; MUTATOR_ADD(gamemode_cts); } if(g_nexball) { - fraglimit_override = autocvar_g_nexball_goallimit; - leadlimit_override = autocvar_g_nexball_goalleadlimit; - ActivateTeamplay(); - have_team_spawns = -1; // request team spawns - MUTATOR_ADD(gamemode_nexball); + fraglimit_override = autocvar_g_nexball_goallimit; + leadlimit_override = autocvar_g_nexball_goalleadlimit; + ActivateTeamplay(); + have_team_spawns = -1; // request team spawns + MUTATOR_ADD(gamemode_nexball); } if(g_keepaway) @@ -234,31 +245,6 @@ void InitGameplayMode() cvar_set("g_race_qualifying_timelimit", ftos(qualifying_override)); } - if(g_race) - { - // we need to find out the correct value for g_race_qualifying - if(autocvar_g_campaign) - { - g_race_qualifying = 1; - } - else if(!autocvar_g_campaign && autocvar_g_race_qualifying_timelimit > 0) - { - g_race_qualifying = 2; - race_fraglimit = autocvar_fraglimit; - race_leadlimit = autocvar_leadlimit; - race_timelimit = autocvar_timelimit; - cvar_set("fraglimit", "0"); - cvar_set("leadlimit", "0"); - cvar_set("timelimit", ftos(autocvar_g_race_qualifying_timelimit)); - } - else - g_race_qualifying = 0; - } - - if(g_race || g_cts) - if(g_race_qualifying) - independent_players = 1; - InitializeEntity(world, default_delayedinit, INITPRIO_GAMETYPE_FALLBACK); } @@ -599,11 +585,11 @@ float TeamSmallerEqThanTeam(float ta, float tb, entity e) // invalid if(ca < 0 || cb < 0) - return FALSE; + return false; // equal if(ta == tb) - return TRUE; + return true; if(IS_REAL_CLIENT(e)) { @@ -617,10 +603,10 @@ float TeamSmallerEqThanTeam(float ta, float tb, entity e) // keep teams alive (teams of size 0 always count as smaller, ignoring score) if(ca < 1) if(cb >= 1) - return TRUE; + return true; if(ca >= 1) if(cb < 1) - return FALSE; + return false; // first, normalize f = max(ca, cb, 1); @@ -739,7 +725,7 @@ float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) // otherwise end up on the smallest team (handled below) } - smallest = FindSmallestTeam(pl, TRUE); + smallest = FindSmallestTeam(pl, true); if(!only_return_best && !pl.bot_forced_team) { @@ -816,7 +802,7 @@ void SV_ChangeTeam(float _color) if(scolor == dcolor) { //bprint("same team change\n"); - SetPlayerTeam(self, dteam, steam, TRUE); + SetPlayerTeam(self, dteam, steam, true); return; } @@ -844,7 +830,7 @@ void SV_ChangeTeam(float _color) TeamchangeFrags(self); } - SetPlayerTeam(self, dteam, steam, FALSE); + SetPlayerTeam(self, dteam, steam, false); if(IS_PLAYER(self) && steam != dteam) { @@ -988,7 +974,7 @@ void ShufflePlayerOutOfTeam (float source_team) // move the player to the new team TeamchangeFrags(selected); - SetPlayerTeam(selected, smallestteam, source_team, FALSE); + SetPlayerTeam(selected, smallestteam, source_team, false); if(selected.deadflag == DEAD_NO) Damage(selected, selected, selected, 100000, DEATH_AUTOTEAMCHANGE, selected.origin, '0 0 0');