From: terencehill Date: Sat, 9 Jul 2011 21:13:37 +0000 (+0200) Subject: Freezetag: when a player gets frozen set his health to 1 instead of g_balance_health_... X-Git-Tag: xonotic-v0.5.0~148^2~44^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=2e004af0c87e9291e03964ce8d19425b41fc7263;p=xonotic%2Fxonotic-data.pk3dir.git Freezetag: when a player gets frozen set his health to 1 instead of g_balance_health_start; while he's getting revived increase the health until he gets unfrozen (reached g_balance_health_start). I think it's a very intuitive way to represent the revival progress. --- diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index c3d927259..f74c9951f 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -69,6 +69,7 @@ void freezetag_Freeze(entity attacker) return; self.freezetag_frozen = 1; self.freezetag_revive_progress = 0; + self.health = 1; entity ice; ice = spawn(); @@ -113,6 +114,7 @@ void freezetag_Unfreeze(entity attacker) { self.freezetag_frozen = 0; self.freezetag_revive_progress = 0; + self.health = autocvar_g_balance_health_start; // remove the ice block entity ice; @@ -183,7 +185,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) bprint("^7", frag_target.netname, "^1 was frozen by ^7", frag_attacker.netname, ".\n"); } - frag_target.health = autocvar_g_balance_health_start; // "respawn" the player :P + frag_target.health = 1; // "respawn" the player :P freezetag_CheckWinner(); @@ -244,6 +246,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) if(n && self.freezetag_frozen) // OK, there is at least one teammate reviving us { self.freezetag_revive_progress = bound(0, self.freezetag_revive_progress + frametime * autocvar_g_freezetag_revive_speed, 1); + self.health = max(1, self.freezetag_revive_progress * autocvar_g_balance_health_start); if(self.freezetag_revive_progress >= 1) { @@ -292,6 +295,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) else if(!n && self.freezetag_frozen) // only if no teammate is nearby will we reset { self.freezetag_revive_progress = bound(0, self.freezetag_revive_progress - frametime * autocvar_g_freezetag_revive_clearspeed, 1); + self.health = max(1, self.freezetag_revive_progress * autocvar_g_balance_health_start); } else if(!n) {