From 75dbbcd65be6f48394b1fec362bb7bddee04fd86 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 26 Jul 2008 17:26:02 +0000 Subject: [PATCH] fix the CTF win modes; get rid of capturelimit cvar git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3927 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 6 +++--- data/qcsrc/server/ctf.qc | 19 ++++++++++++++----- data/qcsrc/server/g_world.qc | 6 ------ data/qcsrc/server/teamplay.qc | 6 ++++-- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 63f3cf1b6..5524be3f2 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -319,13 +319,13 @@ exec newhook.cfg // this means that timelimit can be overidden globally and fraglimit can be overidden for each game mode: DM/TDM, Domination, CTF, and Runematch. seta timelimit_override -1 seta fraglimit_override -1 -seta capturelimit_override -1 // actual captures, if g_ctf_win_mode 0 -seta g_ctf_capture_limit -1 // points, if g_ctf_win_mode 1 +seta capturelimit_override -1 // actual captures, if g_ctf_win_mode 0 or 1 +seta g_ctf_capture_limit -1 // points, if g_ctf_win_mode 2 seta g_domination_point_limit -1 seta g_runematch_point_limit -1 seta g_keyhunt_point_limit -1 -seta g_ctf_win_mode 1 // 0: captures only, 1: points +seta g_ctf_win_mode 2 // 0: captures only, 1: captures, then points, 2: points only // 50% of the spawns shall be far away from any players set g_spawn_furthest 0.5 diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index 67f574ce5..11f41681c 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -669,11 +669,20 @@ void ctf_delayedinit() ctf_spawnteams(); float sp_score, sp_caps; - sp_score = sp_caps = SFL_SORT_PRIO_SECONDARY; - if(g_ctf_win_mode) - sp_score = SFL_SORT_PRIO_PRIMARY; - else - sp_caps = SFL_SORT_PRIO_PRIMARY; + sp_score = sp_caps = 0; + switch(g_ctf_win_mode) + { + case 0: // caps only + sp_caps = SFL_SORT_PRIO_PRIMARY; + break; + case 1: // caps, then score + sp_caps = SFL_SORT_PRIO_PRIMARY; + sp_score = SFL_SORT_PRIO_SECONDARY; + break; + case 2: // score only + sp_score = SFL_SORT_PRIO_SECONDARY; + break; + } CheckAllowedTeams(world); ScoreInfo_Init(2 + (c3>=0)); // NOTE this assumes that the rogue team is team 3 diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 520c069ba..e801286a8 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -1551,7 +1551,6 @@ void CheckRules_World() local float status; local float timelimit; local float fraglimit; - local float capturelimit; VoteThink(); MapVote_Think(); @@ -1580,7 +1579,6 @@ void CheckRules_World() timelimit = cvar("timelimit") * 60; fraglimit = cvar("fraglimit"); - capturelimit = cvar("capturelimit"); if(checkrules_overtimeend) { @@ -1626,10 +1624,6 @@ void CheckRules_World() { status = WinningCondition_Onslaught(); // TODO remove this? } - else if(g_ctf && !g_ctf_win_mode) - { - status = WinningCondition_Scores(capturelimit); - } else { status = WinningCondition_Scores(fraglimit); diff --git a/data/qcsrc/server/teamplay.qc b/data/qcsrc/server/teamplay.qc index 79b35dc5a..993376690 100644 --- a/data/qcsrc/server/teamplay.qc +++ b/data/qcsrc/server/teamplay.qc @@ -324,6 +324,10 @@ void InitGameplayMode() cache_lastmutatormsg = strzone(""); cache_lastmotd = strzone(""); + if(g_ctf) + if(g_ctf_win_mode != 2) + fraglimit_override = capturelimit_override; + // enforce the server's universal frag/time limits if(!cvar("g_campaign")) { @@ -331,8 +335,6 @@ void InitGameplayMode() cvar_set("fraglimit", ftos(fraglimit_override)); if(timelimit_override >= 0) cvar_set("timelimit", ftos(timelimit_override)); - if(capturelimit_override >= 0) - cvar_set("capturelimit", ftos(capturelimit_override)); } if (game == GAME_DOMINATION)//cvar("g_domination")) -- 2.39.2