X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fgamemode_freezetag.qc;h=df75dfa122e2ab965be708f4b42ae3d8fbad03cb;hp=f74c9951fd4d49027e518057685823896b6a7def;hb=8dd9e564bf844bd71312218ce4714e6324d6beb5;hpb=7ebcc5909749de7bef057ec43f434e796742da57 diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index f74c9951fd..df75dfa122 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -13,7 +13,7 @@ void freezetag_CheckWinner() if(next_round || (time > warmup - autocvar_g_freezetag_warmup && time < warmup)) return; // already waiting for next round to start - if((redalive >= 1 && bluealive >= 1) // counted in arena.qc + if((redalive >= 1 && bluealive >= 1) || (redalive >= 1 && yellowalive >= 1) || (redalive >= 1 && pinkalive >= 1) || (bluealive >= 1 && yellowalive >= 1) @@ -27,7 +27,7 @@ void freezetag_CheckWinner() FOR_EACH_PLAYER(e) { - if(e.freezetag_frozen == 0 && e.classname == "player" && e.health >= 1) // here's one player from the winning team... good + if(e.freezetag_frozen == 0 && e.health >= 1) // here's one player from the winning team... good { winner = e; break; // break, we found the winner @@ -131,7 +131,7 @@ void freezetag_Unfreeze(entity attacker) MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) { - if(self.freezetag_frozen == 0) + if(self.freezetag_frozen == 0 && self.health >= 1) { if(self.team == COLOR_TEAM1) --redalive; @@ -144,7 +144,7 @@ MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) --totalalive; } - if(totalspawned > 2) // only check for winners if we had more than two players (one of them left, don't let the other player win just because of that) + if(total_players > 2) // only check for winners if we had more than two players (one of them left, don't let the other player win just because of that) freezetag_CheckWinner(); freezetag_Unfreeze(world); @@ -166,22 +166,21 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) --pinkalive; --totalalive; - freezetag_Freeze(frag_attacker); + freezetag_Freeze(frag_attacker); } - if(frag_attacker.classname == STR_PLAYER) - centerprint(frag_attacker, strcat("^2You froze ^7", frag_target.netname, ".\n")); - if(frag_attacker == frag_target || frag_attacker == world) { - if(frag_target.classname == STR_PLAYER) - centerprint(frag_target, "^1You froze yourself.\n"); + if(frag_target.classname == STR_PLAYER) + centerprint(frag_target, "^1You froze yourself.\n"); bprint("^7", frag_target.netname, "^1 froze himself.\n"); } else { - if(frag_target.classname == STR_PLAYER) - centerprint(frag_target, strcat("^1You were frozen by ^7", frag_attacker.netname, ".\n")); + if(frag_target.classname == STR_PLAYER) + centerprint(frag_target, strcat("^1You were frozen by ^7", frag_attacker.netname, ".\n")); + if(frag_attacker.classname == STR_PLAYER) + centerprint(frag_attacker, strcat("^2You froze ^7", frag_target.netname, ".\n")); bprint("^7", frag_target.netname, "^1 was frozen by ^7", frag_attacker.netname, ".\n"); } @@ -194,9 +193,9 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) MUTATOR_HOOKFUNCTION(freezetag_PlayerSpawn) { - freezetag_Unfreeze(world); // start by making sure that all ice blocks are removed + freezetag_Unfreeze(world); // start by making sure that all ice blocks are removed - if(totalspawned == 1 && time > game_starttime) // only one player active on server, start a new match immediately + if(total_players == 1 && time > game_starttime) // only one player active on server, start a new match immediately if(!next_round && warmup && (time < warmup - autocvar_g_freezetag_warmup || time > warmup)) // not awaiting next round { next_round = time; @@ -351,13 +350,11 @@ MUTATOR_DEFINITION(gamemode_freezetag) { if(time > 1) // game loads at time 1 error("This is a game type and it cannot be added at runtime."); - g_freezetag = 1; freezetag_Initialize(); } MUTATOR_ONREMOVE { - g_freezetag = 0; error("This is a game type and it cannot be removed at runtime."); }