X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_player.qc;h=2b3e4d4db1995400d26feaeeaa73af814b8c8e74;hb=c0656e9a6b660e95a04cc8ced4e73b76d19f5c3a;hp=298948ffa91f43695190eb2b71369d4aea40da46;hpb=3846c9bd40c2b3c1aa220c1eeef9198b1912aab4;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 298948ffa..2b3e4d4db 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -186,6 +186,9 @@ void CopyBody(float keepvelocity) Drag_MoveDrag(oldself, self); + if(self.colormap <= maxclients && self.colormap > 0) + self.colormap = 1024 + self.clientcolors; + self = oldself; } @@ -226,11 +229,18 @@ void player_setupanimsformodel() self.anim_forwardleft = animfixfps(self, '20 1 1'); self.anim_backright = animfixfps(self, '21 1 1'); self.anim_backleft = animfixfps(self, '22 1 1'); - self.anim_melee = animfixfps(self, '23 1 1'); + self.anim_melee = animfixfps2(self, '23 1 1', '11 1 5'); + self.anim_duckwalkbackwards = animfixfps2(self, '24 1 1', '4 1 1'); + self.anim_duckwalkstrafeleft = animfixfps2(self, '25 1 1', '4 1 1'); + self.anim_duckwalkstraferight = animfixfps2(self, '26 1 1', '4 1 1'); + self.anim_duckwalkforwardright = animfixfps2(self, '27 1 1', '4 1 1'); + self.anim_duckwalkforwardleft = animfixfps2(self, '28 1 1', '4 1 1'); + self.anim_duckwalkbackright = animfixfps2(self, '29 1 1', '4 1 1'); + self.anim_duckwalkbackleft = animfixfps2(self, '30 1 1', '4 1 1'); // TODO introspect models for finding right "fps" value (1/duration) // reset animstate now setanim(self, self.anim_idle, TRUE, FALSE, TRUE); -}; +} void player_anim (void) { @@ -283,8 +293,22 @@ void player_anim (void) } else if (self.crouch) { - if (self.movement_x * self.movement_x + self.movement_y * self.movement_y > 20) + if (self.movement_x > 0 && self.movement_y == 0) setanim(self, self.anim_duckwalk, TRUE, FALSE, FALSE); + else if (self.movement_x < 0 && self.movement_y == 0) + setanim(self, self.anim_duckwalkbackwards, TRUE, FALSE, FALSE); + else if (self.movement_x == 0 && self.movement_y > 0) + setanim(self, self.anim_duckwalkstraferight, TRUE, FALSE, FALSE); + else if (self.movement_x == 0 && self.movement_y < 0) + setanim(self, self.anim_duckwalkstrafeleft, TRUE, FALSE, FALSE); + else if (self.movement_x > 0 && self.movement_y > 0) + setanim(self, self.anim_duckwalkforwardright, TRUE, FALSE, FALSE); + else if (self.movement_x > 0 && self.movement_y < 0) + setanim(self, self.anim_duckwalkforwardleft, TRUE, FALSE, FALSE); + else if (self.movement_x < 0 && self.movement_y > 0) + setanim(self, self.anim_duckwalkbackright, TRUE, FALSE, FALSE); + else if (self.movement_x < 0 && self.movement_y < 0) + setanim(self, self.anim_duckwalkbackleft, TRUE, FALSE, FALSE); else setanim(self, self.anim_duckidle, TRUE, FALSE, FALSE); } @@ -493,7 +517,8 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht self.armorvalue = self.armorvalue - save; self.health = self.health - take; // pause regeneration for 5 seconds - self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_pause_health_regen); + if(take) + self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_pause_health_regen); if (time > self.pain_finished) //Don't switch pain sequences like crazy { @@ -660,6 +685,8 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht MUTATOR_CALLHOOK(PlayerDies); weapon_action(self.weapon, WR_PLAYERDEATH); + RemoveGrapplingHook(self); + if(self.flagcarried) { if(attacker.classname != "player")