From: Mario Date: Sun, 10 Feb 2013 01:47:24 +0000 (+1100) Subject: Merge branch 'master' into mario/monsters X-Git-Tag: xonotic-v0.8.0~241^2^2~524 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=5d4356eea933cc687e5958e9632695f0e2890159;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into mario/monsters --- 5d4356eea933cc687e5958e9632695f0e2890159 diff --cc qcsrc/server/cl_client.qc index d0203c78e,1078eea13..837e79f01 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@@ -2802,8 -2790,19 +2802,19 @@@ 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 && !self.freezetag_frozen && !self.frozen) // prevent crouching if using melee attack + float do_crouch = self.BUTTON_CROUCH; + if(self.hook.state) + do_crouch = 0; + if(self.health <= g_bloodloss) + do_crouch = 1; + if(self.vehicle) + do_crouch = 0; - if(self.freezetag_frozen) ++ if(self.freezetag_frozen || self.frozen) + do_crouch = 0; + if(self.weapon == WEP_SHOTGUN && self.weaponentity.wframe == WFRAME_FIRE2 && time < self.weapon_nextthink) + do_crouch = 0; + + if (do_crouch) { if (!self.crouch) { diff --cc qcsrc/server/cl_player.qc index 2d028c17c,03347a9c8..84a8ce5f7 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@@ -264,93 -238,31 +238,31 @@@ void player_setupanimsformodel( void player_anim (void) { - updateanim(self); - if (self.weaponentity) - updateanim(self.weaponentity); - - if (self.deadflag != DEAD_NO) - return; - - if (!self.animstate_override) - { - if (self.freezetag_frozen || self.frozen) - setanim(self, self.anim_idle, TRUE, FALSE, FALSE); - else if (!(self.flags & FL_ONGROUND) || self.BUTTON_JUMP) - { - if (self.crouch) - { - if (self.animstate_startframe != self.anim_duckjump_x) // don't perform another trace if already playing the crouch jump anim - { - traceline(self.origin + '0 0 1' * PL_CROUCH_MIN_z, self.origin + '0 0 1' * (PL_CROUCH_MIN_z - autocvar_sv_player_jumpanim_minfall), TRUE, self); - if(!trace_startsolid && trace_fraction == 1 || !(self.animstate_startframe == self.anim_duckwalk_x || self.animstate_startframe == self.anim_duckidle_x)) // don't get stuck on non-crouch anims - { - setanim(self, self.anim_duckjump, FALSE, TRUE, self.restart_jump); - self.restart_jump = FALSE; - } - } - } - else - { - if (self.animstate_startframe != self.anim_jump_x) // don't perform another trace if already playing the jump anim - { - traceline(self.origin + '0 0 1' * PL_MIN_z, self.origin + '0 0 1' * (PL_MIN_z - autocvar_sv_player_jumpanim_minfall), TRUE, self); - if(!trace_startsolid && trace_fraction == 1 || self.animstate_startframe == self.anim_idle_x || (self.animstate_startframe == self.anim_melee_x && time - self.animstate_starttime >= 21/20)) // don't get stuck on idle animation in midair, nor melee after it finished - { - setanim(self, self.anim_jump, FALSE, TRUE, self.restart_jump); - self.restart_jump = FALSE; - } - } - } - } - else if (self.crouch) - { - 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); - } - else 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_run, TRUE, FALSE, FALSE); - else if (self.movement_x < 0 && self.movement_y == 0) - setanim(self, self.anim_runbackwards, TRUE, FALSE, FALSE); - else if (self.movement_x == 0 && self.movement_y > 0) - setanim(self, self.anim_straferight, TRUE, FALSE, FALSE); - else if (self.movement_x == 0 && self.movement_y < 0) - setanim(self, self.anim_strafeleft, TRUE, FALSE, FALSE); - else if (self.movement_x > 0 && self.movement_y > 0) - setanim(self, self.anim_forwardright, TRUE, FALSE, FALSE); - else if (self.movement_x > 0 && self.movement_y < 0) - setanim(self, self.anim_forwardleft, TRUE, FALSE, FALSE); - else if (self.movement_x < 0 && self.movement_y > 0) - setanim(self, self.anim_backright, TRUE, FALSE, FALSE); - else if (self.movement_x < 0 && self.movement_y < 0) - setanim(self, self.anim_backleft, TRUE, FALSE, FALSE); - else - setanim(self, self.anim_run, TRUE, FALSE, FALSE); - } + float deadbits = (self.anim_state & (ANIMSTATE_DEAD1 | ANIMSTATE_DEAD2)); + if(self.deadflag && !deadbits) + if(random() < 0.5) + deadbits = ANIMSTATE_DEAD1; else - setanim(self, self.anim_idle, TRUE, FALSE, FALSE); - } + deadbits = ANIMSTATE_DEAD2; + float animbits = deadbits; - if(self.freezetag_frozen) ++ if(self.freezetag_frozen || self.frozen) + animbits |= ANIMSTATE_FROZEN; + if(self.crouch) + animbits |= ANIMSTATE_DUCK; + animdecide_setstate(self, animbits, FALSE); + animdecide_setimplicitstate(self, (self.flags & FL_ONGROUND)); + + #ifndef NO_LEGACY_NETWORKING + if(!self.iscsqcmodel) + animdecide_setframes(self, FALSE, frame, frame1time, frame2, frame2time); + #endif if (self.weaponentity) - if (!self.weaponentity.animstate_override) - setanim(self.weaponentity, self.weaponentity.anim_idle, TRUE, FALSE, FALSE); + { + updateanim(self.weaponentity); + if (!self.weaponentity.animstate_override) + setanim(self.weaponentity, self.weaponentity.anim_idle, TRUE, FALSE, FALSE); + } } void SpawnThrownWeapon (vector org, float w)