From: terencehill Date: Tue, 5 Feb 2013 22:55:07 +0000 (+0100) Subject: Merge branch 'terencehill/ca_arena_freezetag_bugfixes' into terencehill/arena_gamemode X-Git-Tag: xonotic-v0.7.0~61^2~63 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b2dc1d0a1c73a6eeb47df5092be173db37da1f7d;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'terencehill/ca_arena_freezetag_bugfixes' into terencehill/arena_gamemode Conflicts: qcsrc/server/cl_client.qc qcsrc/server/scores.qc --- b2dc1d0a1c73a6eeb47df5092be173db37da1f7d diff --cc qcsrc/server/cl_client.qc index b59d98164,ae40c4e1e..6493069fa --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@@ -401,17 -401,6 +401,24 @@@ void PutObserverInServer (void WriteEntity(MSG_ONE, self); } + if(g_lms) + { + // Only if the player cannot play at all + if(PlayerScore_Add(self, SP_LMS_RANK, 0) == 666) + self.frags = FRAGS_SPECTATOR; + else + self.frags = FRAGS_LMS_LOSER; + } ++ else if((g_race && g_race_qualifying) || g_cts) ++ { ++ if(PlayerScore_Add(self, SP_RACE_FASTEST, 0)) ++ self.frags = FRAGS_LMS_LOSER; ++ else ++ self.frags = FRAGS_SPECTATOR; ++ } + else + self.frags = FRAGS_SPECTATOR; + DropAllRunes(self); MUTATOR_CALLHOOK(MakePlayerObserver); diff --cc qcsrc/server/mutators/gamemode_freezetag.qc index 42c6b04dd,3b385e063..e29079b62 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@@ -69,13 -78,9 +69,13 @@@ float freezetag_CheckTeams( } if(prev_total_players != total_players) { - string teams_missing; + string teams_missing = ""; if(!redalive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM1), ", "); if(!bluealive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM2), ", "); + if(freezetag_teams >= 3) + if(!yellowalive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM3), ", "); + if(freezetag_teams == 4) + if(!pinkalive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM4), ", "); teams_missing = substring(teams_missing, 0, strlen(teams_missing)-2); FOR_EACH_REALCLIENT(e) diff --cc qcsrc/server/scores.qc index 9895c5b04,0df5b69af..2a0a58a51 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@@ -250,12 -254,12 +254,12 @@@ float PlayerScore_Clear(entity player float i; if(teamscores_entities_count) - return; + return 0; - if(MUTATOR_CALLHOOK(ForbidPlayerScore_Clear)) return; - if(g_lms) return; - if(g_cts) return; // in CTS, you don't lose score by observing - if(g_race && g_race_qualifying) return; // in qualifying, you don't lose score by observing ++ if(MUTATOR_CALLHOOK(ForbidPlayerScore_Clear)) return 0; + if(g_lms) return 0; - if(g_arena || g_ca) return 0; + if(g_cts) return 0; // in CTS, you don't lose score by observing + if(g_race && g_race_qualifying) return 0; // in qualifying, you don't lose score by observing sk = player.scorekeeper; for(i = 0; i < MAX_SCORE; ++i)