From: Jakob MG Date: Thu, 23 Aug 2012 19:43:12 +0000 (+0200) Subject: Merge remote-tracking branch 'origin/terencehill/freezetag_fixes' X-Git-Tag: xonotic-v0.7.0~269 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=8dd9e564bf844bd71312218ce4714e6324d6beb5;hp=900a3c09e97e21b6db27f930b20edd97f85d340a Merge remote-tracking branch 'origin/terencehill/freezetag_fixes' Conflicts: qcsrc/server/cl_client.qc --- diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 7c3308041e..391bff6829 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -2800,7 +2800,7 @@ void PlayerPreThink (void) self.prevorigin = self.origin; if (!self.vehicle) - if (((self.BUTTON_CROUCH && !self.hook.state) || self.health <= g_bloodloss) && self.animstate_startframe != self.anim_melee_x) // prevent crouching if using melee attack + if (((self.BUTTON_CROUCH && !self.hook.state) || self.health <= g_bloodloss) && self.animstate_startframe != self.anim_melee_x && !self.freezetag_frozen) // prevent crouching if using melee attack { if (!self.crouch) { diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 51bfc62c63..3e2268d897 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -1074,7 +1074,7 @@ void SV_PlayerPhysics() PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0); } } - else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO)) + else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.freezetag_frozen) { //makevectors(self.v_angle_y * '0 1 0'); makevectors(self.v_angle); @@ -1176,7 +1176,7 @@ void SV_PlayerPhysics() else if (self.flags & FL_ONGROUND) { // we get here if we ran out of ammo - if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32)) + if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01) sprint(self, "You don't have any fuel for the ^2Jetpack\n"); // walking @@ -1259,7 +1259,7 @@ void SV_PlayerPhysics() { float wishspeed0; // we get here if we ran out of ammo - if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32)) + if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01) sprint(self, "You don't have any fuel for the ^2Jetpack\n"); if(maxspd_mod < 1) diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index b57c18a178..608d359595 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -272,7 +272,9 @@ void player_anim (void) if (!self.animstate_override) { - if (!(self.flags & FL_ONGROUND) || self.BUTTON_JUMP) + if (self.freezetag_frozen) + setanim(self, self.anim_idle, TRUE, FALSE, FALSE); + else if (!(self.flags & FL_ONGROUND) || self.BUTTON_JUMP) { if (self.crouch) { diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index 2a2ae9ee29..df75dfa122 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -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; @@ -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,7 +193,7 @@ 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(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