*/
void V_ParseDamage (void)
{
- int i, armor, blood;
+ int armor, blood;
vec3_t from;
//vec3_t forward, right;
vec3_t localfrom;
armor = MSG_ReadByte ();
blood = MSG_ReadByte ();
- for (i=0 ; i<3 ; i++)
- from[i] = MSG_ReadCoord ();
+ MSG_ReadVector(from, cl.protocol);
count = blood*0.5 + armor*0.5;
if (count < 10)
{
static float oldz;
entity_t *ent;
- float vieworg[3], viewangles[3], newz;
+ float vieworg[3], viewangles[3];
Matrix4x4_CreateIdentity(&viewmodelmatrix);
Matrix4x4_CreateIdentity(&r_refdef.viewentitymatrix);
if (cls.state == ca_connected && cls.signon == SIGNONS)
VectorCopy(cl.viewangles, viewangles);
// stair smoothing
- newz = vieworg[2];
- oldz -= newz;
- oldz += (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
- oldz = bound(-16, oldz, 0);
- vieworg[2] += oldz;
- oldz += newz;
+ //Con_Printf("cl.onground %i oldz %f newz %f\n", cl.onground, oldz, vieworg[2]);
+ if (cl.onground && oldz < vieworg[2])
+ {
+ oldz += (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
+ oldz = vieworg[2] = bound(vieworg[2] - 16, oldz, vieworg[2]);
+ }
+ else if (cl.onground && oldz > vieworg[2])
+ {
+ oldz -= (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
+ oldz = vieworg[2] = bound(vieworg[2], oldz, vieworg[2] + 16);
+ }
+ else
+ oldz = vieworg[2];
if (chase_active.value)
{
{
// first person view from entity
// angles
- if (cl.stats[STAT_HEALTH] <= 0)
+ if (cl.stats[STAT_HEALTH] <= 0 && gamemode != GAME_FNIGGIUM)
viewangles[ROLL] = 80; // dead view angle
VectorAdd(viewangles, cl.punchangle, viewangles);
viewangles[ROLL] += V_CalcRoll(cl.viewangles, cl.velocity);
r_refdef.viewblend[1] = 0;
r_refdef.viewblend[2] = 0;
r_refdef.viewblend[3] = 0;
- if (cls.state == ca_connected && cls.signon == SIGNONS)
+ if (cls.state == ca_connected && cls.signon == SIGNONS && gl_polyblend.value > 0)
{
// set contents color
switch (CL_PointQ1Contents(r_vieworigin))
if (a2 > 0)
{
VectorLerp(r_refdef.viewblend, a2, cl.cshifts[j].destcolor, r_refdef.viewblend);
- r_refdef.viewblend[3] = 1 - (1 - r_refdef.viewblend[3]) * (1 - a2); // correct alpha multiply... took a while to find it on the web
+ r_refdef.viewblend[3] = (1 - (1 - r_refdef.viewblend[3]) * (1 - a2)); // correct alpha multiply... took a while to find it on the web
}
}
// saturate color (to avoid blending in black)
r_refdef.viewblend[0] = bound(0.0f, r_refdef.viewblend[0] * (1.0f/255.0f), 1.0f);
r_refdef.viewblend[1] = bound(0.0f, r_refdef.viewblend[1] * (1.0f/255.0f), 1.0f);
r_refdef.viewblend[2] = bound(0.0f, r_refdef.viewblend[2] * (1.0f/255.0f), 1.0f);
- r_refdef.viewblend[3] = bound(0.0f, r_refdef.viewblend[3] , 1.0f);
+ r_refdef.viewblend[3] = bound(0.0f, r_refdef.viewblend[3] * gl_polyblend.value, 1.0f);
}
}