From 56b5c93e82b9bb44bf6a427ebaaa24671803ccd8 Mon Sep 17 00:00:00 2001 From: FruitieX Date: Wed, 17 Nov 2010 21:41:48 +0200 Subject: [PATCH] add some failsafes --- qcsrc/server/mutators/gamemode_freezetag.qc | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index d57a01125..5c36d491b 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -31,7 +31,8 @@ void freezetag_CheckWinner() if(e.freezetag_frozen == 0 && e.classname == "player" && e.health >= 1) // here's one player from the winning team... good { winner = e; - TeamScore_AddToTeam(winner.team, ST_SCORE, +1); // just in case a winner isn't found, we do this already here (causes crashes otherwise...) + if(winner != world) // just in case a winner isn't found (causes crashes otherwise...) + TeamScore_AddToTeam(winner.team, ST_SCORE, +1); break; // break, we found the winner } } @@ -100,8 +101,17 @@ void freezetag_Unfreeze() MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) { - self.freezetag_frozen = 1; - count_alive_players(); + if(self.freezetag_frozen == 0) + { + if(self.team == COLOR_TEAM1) + --redalive; + else if(self.team == COLOR_TEAM2) + --bluealive; + else if(self.team == COLOR_TEAM3) + --yellowalive; + else if(self.team == COLOR_TEAM4) + --pinkalive; + } freezetag_CheckWinner(); freezetag_Unfreeze(); @@ -111,13 +121,8 @@ MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) { - // if the player was previously not frozen (should be the case anyway), decrement alive playercount before running CheckWinner - if (self.team == COLOR_TEAM1 && self.freezetag_frozen == 0) redalive -= 1; - else if (self.team == COLOR_TEAM2 && self.freezetag_frozen == 0) bluealive -= 1; - else if (self.team == COLOR_TEAM3 && self.freezetag_frozen == 0) yellowalive -= 1; - else if (self.team == COLOR_TEAM4 && self.freezetag_frozen == 0) pinkalive -= 1; - freezetag_Freeze(); + count_alive_players(); centerprint(frag_attacker, strcat("^2You froze ^7", frag_target.netname, ".\n")); if(frag_attacker == frag_target || frag_attacker == world) -- 2.39.2