Add a hack to fix players with MOVETYPE_FOLLOW
authorMario <zacjardine@y7mail.com>
Sun, 30 Aug 2015 10:07:45 +0000 (20:07 +1000)
committerMario <zacjardine@y7mail.com>
Sun, 30 Aug 2015 10:07:45 +0000 (20:07 +1000)
qcsrc/common/animdecide.qc
qcsrc/common/animdecide.qh
qcsrc/server/cl_player.qc

index 8a624aa..5c2caa6 100644 (file)
@@ -158,6 +158,8 @@ vector animdecide_getupperanim(entity e)
 vector animdecide_getloweranim(entity e)
 {
        // death etc.
+       if(e.anim_state & ANIMSTATE_FOLLOW)
+               return vec3(((e.anim_state & ANIMSTATE_DUCK) ? e.anim_duckidle_x : e.anim_idle_x), e.anim_time, ANIMPRIO_DEAD); // dead priority so it's above all
        if(e.anim_state & ANIMSTATE_FROZEN)
                return vec3(e.anim_idle.x, e.anim_time, ANIMPRIO_DEAD);
        if(e.anim_state & ANIMSTATE_DEAD1)
index f1bdcb7..d122b6a 100644 (file)
@@ -66,6 +66,7 @@ const int ANIMSTATE_DEAD1 = 1; // base frames: die1
 const int ANIMSTATE_DEAD2 = 2; // base frames: die2
 const int ANIMSTATE_DUCK = 4; // turns walk into duckwalk, jump into duckjump, etc.
 const int ANIMSTATE_FROZEN = 8; // force idle
+const int ANIMSTATE_FOLLOW = 16; // also force idle
 
 // implicit anim states (inferred from velocity, etc.)
 const int ANIMIMPLICITSTATE_INAIR = 1;
index 9add7e8..7625397 100644 (file)
@@ -153,6 +153,8 @@ void player_anim (void)
        int animbits = deadbits;
        if(self.frozen)
                animbits |= ANIMSTATE_FROZEN;
+       if(self.movetype == MOVETYPE_FOLLOW)
+               animbits |= ANIMSTATE_FOLLOW;
        if(self.crouch)
                animbits |= ANIMSTATE_DUCK;
        animdecide_setstate(self, animbits, false);