Fix cl_rollkillspeed causing the view to flicker a lot when dead if v_deathtilt is... 315/head
authorterencehill <piuntn@gmail.com>
Sun, 1 May 2016 07:28:53 +0000 (09:28 +0200)
committerterencehill <piuntn@gmail.com>
Sun, 1 May 2016 07:28:53 +0000 (09:28 +0200)
qcsrc/lib/warpzone/client.qc

index 6467dad..c93dd91 100644 (file)
@@ -241,7 +241,6 @@ void WarpZone_FixView()
 {
        entity e;
        vector org, ang, nearclip, corner0, corner1, corner2, corner3, o;
-       float f;
 
        warpzone_save_view_origin = org = getpropertyvec(VF_ORIGIN);
        warpzone_save_view_angles = ang = getpropertyvec(VF_ANGLES);
@@ -257,16 +256,21 @@ void WarpZone_FixView()
                WarpZone_View_Outside();
 
 #ifndef KEEP_ROLL
-       float rick;
-       if(autocvar_cl_rollkillspeed)
-               f = max(0, (1 - frametime * autocvar_cl_rollkillspeed));
-       else
-               f = 0;
-
-       rick = getproperty(VF_CL_VIEWANGLES_Z);
-       rick *= f;
-       setproperty(VF_CL_VIEWANGLES_Z, rick);
-       ang.z *= f;
+       static float rollkill;
+       if (STAT(HEALTH) <= 0 && STAT(HEALTH) != -666 && STAT(HEALTH) != -2342)
+       {
+               if(autocvar_cl_rollkillspeed)
+               {
+                       rollkill += frametime * autocvar_cl_rollkillspeed;
+                       rollkill = min(1, rollkill);
+               }
+               float rick;
+               rick = getproperty(VF_CL_VIEWANGLES_Z) * rollkill;
+               setproperty(VF_CL_VIEWANGLES_Z, rick);
+               ang.z *= rollkill;
+       }
+       else if(rollkill)
+               rollkill = 0;
 #endif
 
        setproperty(VF_ORIGIN, org);