diff options
Diffstat (limited to 'src/baseq2/p_view.c')
-rw-r--r-- | src/baseq2/p_view.c | 511 |
1 files changed, 219 insertions, 292 deletions
diff --git a/src/baseq2/p_view.c b/src/baseq2/p_view.c index c049ba0..9fa7bf3 100644 --- a/src/baseq2/p_view.c +++ b/src/baseq2/p_view.c @@ -8,7 +8,7 @@ of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -39,25 +39,25 @@ SV_CalcRoll =============== */ -float SV_CalcRoll (vec3_t angles, vec3_t velocity) +float SV_CalcRoll(vec3_t angles, vec3_t velocity) { float sign; float side; float value; - - side = DotProduct (velocity, right); + + side = DotProduct(velocity, right); sign = side < 0 ? -1 : 1; side = fabs(side); - + value = sv_rollangle->value; if (side < sv_rollspeed->value) side = side * value / sv_rollspeed->value; else side = value; - - return side*sign; - + + return side * sign; + } @@ -68,7 +68,7 @@ P_DamageFeedback Handles color blends and view kicks =============== */ -void P_DamageFeedback (edict_t *player) +void P_DamageFeedback(edict_t *player) { gclient_t *client; float side; @@ -94,31 +94,26 @@ void P_DamageFeedback (edict_t *player) return; // didn't take any damage // start a pain animation if still in the player model - if (client->anim_priority < ANIM_PAIN && player->s.modelindex == 255) - { + if (client->anim_priority < ANIM_PAIN && player->s.modelindex == 255) { static int i; client->anim_priority = ANIM_PAIN; - if (client->ps.pmove.pm_flags & PMF_DUCKED) - { - player->s.frame = FRAME_crpain1-1; + if (client->ps.pmove.pm_flags & PMF_DUCKED) { + player->s.frame = FRAME_crpain1 - 1; client->anim_end = FRAME_crpain4; - } - else - { - i = (i+1)%3; - switch (i) - { + } else { + i = (i + 1) % 3; + switch (i) { case 0: - player->s.frame = FRAME_pain101-1; + player->s.frame = FRAME_pain101 - 1; client->anim_end = FRAME_pain104; break; case 1: - player->s.frame = FRAME_pain201-1; + player->s.frame = FRAME_pain201 - 1; client->anim_end = FRAME_pain204; break; case 2: - player->s.frame = FRAME_pain301-1; + player->s.frame = FRAME_pain301 - 1; client->anim_end = FRAME_pain304; break; } @@ -130,9 +125,8 @@ void P_DamageFeedback (edict_t *player) count = 10; // always make a visible effect // play an apropriate pain sound - if ((level.time > player->pain_debounce_time) && !(player->flags & FL_GODMODE) && (client->invincible_framenum <= level.framenum)) - { - r = 1 + (rand()&1); + if ((level.time > player->pain_debounce_time) && !(player->flags & FL_GODMODE) && (client->invincible_framenum <= level.framenum)) { + r = 1 + (rand() & 1); player->pain_debounce_time = level.time + 0.7; if (player->health < 25) l = 25; @@ -142,13 +136,13 @@ void P_DamageFeedback (edict_t *player) l = 75; else l = 100; - gi.sound (player, CHAN_VOICE, gi.soundindex(va("*pain%i_%i.wav", l, r)), 1, ATTN_NORM, 0); + gi.sound(player, CHAN_VOICE, gi.soundindex(va("*pain%i_%i.wav", l, r)), 1, ATTN_NORM, 0); } // the total alpha of the blend is always proportional to count if (client->damage_alpha < 0) client->damage_alpha = 0; - client->damage_alpha += count*0.01; + client->damage_alpha += count * 0.01; if (client->damage_alpha < 0.2) client->damage_alpha = 0.2; if (client->damage_alpha > 0.6) @@ -156,37 +150,36 @@ void P_DamageFeedback (edict_t *player) // the color of the blend will vary based on how much was absorbed // by different armors - VectorClear (v); + VectorClear(v); if (client->damage_parmor) - VectorMA (v, (float)client->damage_parmor/realcount, power_color, v); + VectorMA(v, (float)client->damage_parmor / realcount, power_color, v); if (client->damage_armor) - VectorMA (v, (float)client->damage_armor/realcount, acolor, v); + VectorMA(v, (float)client->damage_armor / realcount, acolor, v); if (client->damage_blood) - VectorMA (v, (float)client->damage_blood/realcount, bcolor, v); - VectorCopy (v, client->damage_blend); + VectorMA(v, (float)client->damage_blood / realcount, bcolor, v); + VectorCopy(v, client->damage_blend); // // calculate view angle kicks // kick = abs(client->damage_knockback); - if (kick && player->health > 0) // kick of 0 means no view adjust at all - { + if (kick && player->health > 0) { // kick of 0 means no view adjust at all kick = kick * 100 / player->health; - if (kick < count*0.5) - kick = count*0.5; + if (kick < count * 0.5) + kick = count * 0.5; if (kick > 50) kick = 50; - VectorSubtract (client->damage_from, player->s.origin, v); - VectorNormalize (v); - - side = DotProduct (v, right); - client->v_dmg_roll = kick*side*0.3; - - side = -DotProduct (v, forward); - client->v_dmg_pitch = kick*side*0.3; + VectorSubtract(client->damage_from, player->s.origin, v); + VectorNormalize(v); + + side = DotProduct(v, right); + client->v_dmg_roll = kick * side * 0.3; + + side = -DotProduct(v, forward); + client->v_dmg_pitch = kick * side * 0.3; client->v_dmg_time = level.time + DAMAGE_TIME; } @@ -213,13 +206,13 @@ Auto pitching on slopes? fall from 256: 580 = 336400 fall from 384: 720 = 518400 fall from 512: 800 = 640000 - fall from 640: 960 = + fall from 640: 960 = damage = deltavelocity*deltavelocity * 0.0001 =============== */ -void SV_CalcViewOffset (edict_t *ent) +void SV_CalcViewOffset(edict_t *ent) { float *angles; float bob; @@ -234,25 +227,21 @@ void SV_CalcViewOffset (edict_t *ent) angles = ent->client->ps.kick_angles; // if dead, fix the angle and don't add any kick - if (ent->deadflag) - { - VectorClear (angles); + if (ent->deadflag) { + VectorClear(angles); ent->client->ps.viewangles[ROLL] = 40; ent->client->ps.viewangles[PITCH] = -15; ent->client->ps.viewangles[YAW] = ent->client->killer_yaw; - } - else - { + } else { // add angles based on weapon kick - VectorCopy (ent->client->kick_angles, angles); + VectorCopy(ent->client->kick_angles, angles); // add angles based on damage kick ratio = (ent->client->v_dmg_time - level.time) / DAMAGE_TIME; - if (ratio < 0) - { + if (ratio < 0) { ratio = 0; ent->client->v_dmg_pitch = 0; ent->client->v_dmg_roll = 0; @@ -269,11 +258,11 @@ void SV_CalcViewOffset (edict_t *ent) // add angles based on velocity - delta = DotProduct (ent->velocity, forward); - angles[PITCH] += delta*run_pitch->value; - - delta = DotProduct (ent->velocity, right); - angles[ROLL] += delta*run_roll->value; + delta = DotProduct(ent->velocity, forward); + angles[PITCH] += delta * run_pitch->value; + + delta = DotProduct(ent->velocity, right); + angles[ROLL] += delta * run_roll->value; // add angles based on bob @@ -293,7 +282,7 @@ void SV_CalcViewOffset (edict_t *ent) // base origin - VectorClear (v); + VectorClear(v); // add view height @@ -316,7 +305,7 @@ void SV_CalcViewOffset (edict_t *ent) // add kick offset - VectorAdd (v, ent->client->kick_origin, v); + VectorAdd(v, ent->client->kick_origin, v); // absolutely bound offsets // so the view can never be outside the player box @@ -334,7 +323,7 @@ void SV_CalcViewOffset (edict_t *ent) else if (v[2] > 30) v[2] = 30; - VectorCopy (v, ent->client->ps.viewoffset); + VectorCopy(v, ent->client->ps.viewoffset); } /* @@ -342,7 +331,7 @@ void SV_CalcViewOffset (edict_t *ent) SV_CalcGunOffset ============== */ -void SV_CalcGunOffset (edict_t *ent) +void SV_CalcGunOffset(edict_t *ent) { int i; float delta; @@ -350,8 +339,7 @@ void SV_CalcGunOffset (edict_t *ent) // gun angles from bobbing ent->client->ps.gunangles[ROLL] = xyspeed * bobfracsin * 0.005; ent->client->ps.gunangles[YAW] = xyspeed * bobfracsin * 0.01; - if (bobcycle & 1) - { + if (bobcycle & 1) { ent->client->ps.gunangles[ROLL] = -ent->client->ps.gunangles[ROLL]; ent->client->ps.gunangles[YAW] = -ent->client->ps.gunangles[YAW]; } @@ -359,8 +347,7 @@ void SV_CalcGunOffset (edict_t *ent) ent->client->ps.gunangles[PITCH] = xyspeed * bobfracsin * 0.005; // gun angles from delta movement - for (i=0 ; i<3 ; i++) - { + for (i = 0 ; i < 3 ; i++) { delta = ent->client->oldviewangles[i] - ent->client->ps.viewangles[i]; if (delta > 180) delta -= 360; @@ -371,20 +358,19 @@ void SV_CalcGunOffset (edict_t *ent) if (delta < -45) delta = -45; if (i == YAW) - ent->client->ps.gunangles[ROLL] += 0.1*delta; + ent->client->ps.gunangles[ROLL] += 0.1 * delta; ent->client->ps.gunangles[i] += 0.2 * delta; } // gun height - VectorClear (ent->client->ps.gunoffset); + VectorClear(ent->client->ps.gunoffset); // ent->ps->gunorigin[2] += bob; // gun_x / gun_y / gun_z are development tools - for (i=0 ; i<3 ; i++) - { - ent->client->ps.gunoffset[i] += forward[i]*(gun_y->value); - ent->client->ps.gunoffset[i] += right[i]*gun_x->value; - ent->client->ps.gunoffset[i] += up[i]* (-gun_z->value); + for (i = 0 ; i < 3 ; i++) { + ent->client->ps.gunoffset[i] += forward[i] * (gun_y->value); + ent->client->ps.gunoffset[i] += right[i] * gun_x->value; + ent->client->ps.gunoffset[i] += up[i] * (-gun_z->value); } } @@ -394,18 +380,18 @@ void SV_CalcGunOffset (edict_t *ent) SV_AddBlend ============= */ -void SV_AddBlend (float r, float g, float b, float a, float *v_blend) +void SV_AddBlend(float r, float g, float b, float a, float *v_blend) { float a2, a3; if (a <= 0) return; - a2 = v_blend[3] + (1-v_blend[3])*a; // new total alpha - a3 = v_blend[3]/a2; // fraction of color from old + a2 = v_blend[3] + (1 - v_blend[3]) * a; // new total alpha + a3 = v_blend[3] / a2; // fraction of color from old - v_blend[0] = v_blend[0]*a3 + r*(1-a3); - v_blend[1] = v_blend[1]*a3 + g*(1-a3); - v_blend[2] = v_blend[2]*a3 + b*(1-a3); + v_blend[0] = v_blend[0] * a3 + r * (1 - a3); + v_blend[1] = v_blend[1] * a3 + g * (1 - a3); + v_blend[2] = v_blend[2] * a3 + b * (1 - a3); v_blend[3] = a2; } @@ -415,71 +401,64 @@ void SV_AddBlend (float r, float g, float b, float a, float *v_blend) SV_CalcBlend ============= */ -void SV_CalcBlend (edict_t *ent) +void SV_CalcBlend(edict_t *ent) { int contents; vec3_t vieworg; int remaining; - ent->client->ps.blend[0] = ent->client->ps.blend[1] = - ent->client->ps.blend[2] = ent->client->ps.blend[3] = 0; + ent->client->ps.blend[0] = ent->client->ps.blend[1] = + ent->client->ps.blend[2] = ent->client->ps.blend[3] = 0; // add for contents - VectorAdd (ent->s.origin, ent->client->ps.viewoffset, vieworg); - contents = gi.pointcontents (vieworg); - if (contents & (CONTENTS_LAVA|CONTENTS_SLIME|CONTENTS_WATER) ) + VectorAdd(ent->s.origin, ent->client->ps.viewoffset, vieworg); + contents = gi.pointcontents(vieworg); + if (contents & (CONTENTS_LAVA | CONTENTS_SLIME | CONTENTS_WATER)) ent->client->ps.rdflags |= RDF_UNDERWATER; else ent->client->ps.rdflags &= ~RDF_UNDERWATER; - if (contents & (CONTENTS_SOLID|CONTENTS_LAVA)) - SV_AddBlend (1.0, 0.3, 0.0, 0.6, ent->client->ps.blend); + if (contents & (CONTENTS_SOLID | CONTENTS_LAVA)) + SV_AddBlend(1.0, 0.3, 0.0, 0.6, ent->client->ps.blend); else if (contents & CONTENTS_SLIME) - SV_AddBlend (0.0, 0.1, 0.05, 0.6, ent->client->ps.blend); + SV_AddBlend(0.0, 0.1, 0.05, 0.6, ent->client->ps.blend); else if (contents & CONTENTS_WATER) - SV_AddBlend (0.5, 0.3, 0.2, 0.4, ent->client->ps.blend); + SV_AddBlend(0.5, 0.3, 0.2, 0.4, ent->client->ps.blend); // add for powerups - if (ent->client->quad_framenum > level.framenum) - { + if (ent->client->quad_framenum > level.framenum) { remaining = ent->client->quad_framenum - level.framenum; if (remaining == 30) // beginning to fade gi.sound(ent, CHAN_ITEM, gi.soundindex("items/damage2.wav"), 1, ATTN_NORM, 0); - if (remaining > 30 || (remaining & 4) ) - SV_AddBlend (0, 0, 1, 0.08, ent->client->ps.blend); - } - else if (ent->client->invincible_framenum > level.framenum) - { + if (remaining > 30 || (remaining & 4)) + SV_AddBlend(0, 0, 1, 0.08, ent->client->ps.blend); + } else if (ent->client->invincible_framenum > level.framenum) { remaining = ent->client->invincible_framenum - level.framenum; if (remaining == 30) // beginning to fade gi.sound(ent, CHAN_ITEM, gi.soundindex("items/protect2.wav"), 1, ATTN_NORM, 0); - if (remaining > 30 || (remaining & 4) ) - SV_AddBlend (1, 1, 0, 0.08, ent->client->ps.blend); - } - else if (ent->client->enviro_framenum > level.framenum) - { + if (remaining > 30 || (remaining & 4)) + SV_AddBlend(1, 1, 0, 0.08, ent->client->ps.blend); + } else if (ent->client->enviro_framenum > level.framenum) { remaining = ent->client->enviro_framenum - level.framenum; if (remaining == 30) // beginning to fade gi.sound(ent, CHAN_ITEM, gi.soundindex("items/airout.wav"), 1, ATTN_NORM, 0); - if (remaining > 30 || (remaining & 4) ) - SV_AddBlend (0, 1, 0, 0.08, ent->client->ps.blend); - } - else if (ent->client->breather_framenum > level.framenum) - { + if (remaining > 30 || (remaining & 4)) + SV_AddBlend(0, 1, 0, 0.08, ent->client->ps.blend); + } else if (ent->client->breather_framenum > level.framenum) { remaining = ent->client->breather_framenum - level.framenum; if (remaining == 30) // beginning to fade gi.sound(ent, CHAN_ITEM, gi.soundindex("items/airout.wav"), 1, ATTN_NORM, 0); - if (remaining > 30 || (remaining & 4) ) - SV_AddBlend (0.4, 1, 0.4, 0.04, ent->client->ps.blend); + if (remaining > 30 || (remaining & 4)) + SV_AddBlend(0.4, 1, 0.4, 0.04, ent->client->ps.blend); } // add for damage if (ent->client->damage_alpha > 0) - SV_AddBlend (ent->client->damage_blend[0],ent->client->damage_blend[1] - ,ent->client->damage_blend[2], ent->client->damage_alpha, ent->client->ps.blend); + SV_AddBlend(ent->client->damage_blend[0], ent->client->damage_blend[1] + , ent->client->damage_blend[2], ent->client->damage_alpha, ent->client->ps.blend); if (ent->client->bonus_alpha > 0) - SV_AddBlend (0.85, 0.7, 0.3, ent->client->bonus_alpha, ent->client->ps.blend); + SV_AddBlend(0.85, 0.7, 0.3, ent->client->bonus_alpha, ent->client->ps.blend); // drop the damage value ent->client->damage_alpha -= 0.06; @@ -498,7 +477,7 @@ void SV_CalcBlend (edict_t *ent) P_FallingDamage ================= */ -void P_FallingDamage (edict_t *ent) +void P_FallingDamage(edict_t *ent) { float delta; int damage; @@ -510,17 +489,14 @@ void P_FallingDamage (edict_t *ent) if (ent->movetype == MOVETYPE_NOCLIP) return; - if ((ent->client->oldvelocity[2] < 0) && (ent->velocity[2] > ent->client->oldvelocity[2]) && (!ent->groundentity)) - { + if ((ent->client->oldvelocity[2] < 0) && (ent->velocity[2] > ent->client->oldvelocity[2]) && (!ent->groundentity)) { delta = ent->client->oldvelocity[2]; - } - else - { + } else { if (!ent->groundentity) return; delta = ent->velocity[2] - ent->client->oldvelocity[2]; } - delta = delta*delta * 0.0001; + delta = delta * delta * 0.0001; // never take falling damage if completely underwater if (ent->waterlevel == 3) @@ -533,37 +509,32 @@ void P_FallingDamage (edict_t *ent) if (delta < 1) return; - if (delta < 15) - { + if (delta < 15) { ent->s.event = EV_FOOTSTEP; return; } - ent->client->fall_value = delta*0.5; + ent->client->fall_value = delta * 0.5; if (ent->client->fall_value > 40) ent->client->fall_value = 40; ent->client->fall_time = level.time + FALL_TIME; - if (delta > 30) - { - if (ent->health > 0) - { + if (delta > 30) { + if (ent->health > 0) { if (delta >= 55) ent->s.event = EV_FALLFAR; else ent->s.event = EV_FALL; } ent->pain_debounce_time = level.time; // no normal pain sound - damage = (delta-30)/2; + damage = (delta - 30) / 2; if (damage < 1) damage = 1; - VectorSet (dir, 0, 0, 1); + VectorSet(dir, 0, 0, 1); - if (!deathmatch->value || !((int)dmflags->value & DF_NO_FALLING) ) - T_Damage (ent, world, world, dir, ent->s.origin, vec3_origin, damage, 0, 0, MOD_FALLING); - } - else - { + if (!deathmatch->value || !((int)dmflags->value & DF_NO_FALLING)) + T_Damage(ent, world, world, dir, ent->s.origin, vec3_origin, damage, 0, 0, MOD_FALLING); + } else { ent->s.event = EV_FALLSHORT; return; } @@ -576,14 +547,13 @@ void P_FallingDamage (edict_t *ent) P_WorldEffects ============= */ -void P_WorldEffects (void) +void P_WorldEffects(void) { qboolean breather; qboolean envirosuit; int waterlevel, old_waterlevel; - if (current_player->movetype == MOVETYPE_NOCLIP) - { + if (current_player->movetype == MOVETYPE_NOCLIP) { current_player->air_finished = level.time + 12; // don't need air return; } @@ -598,15 +568,14 @@ void P_WorldEffects (void) // // if just entered a water volume, play a sound // - if (!old_waterlevel && waterlevel) - { + if (!old_waterlevel && waterlevel) { PlayerNoise(current_player, current_player->s.origin, PNOISE_SELF); if (current_player->watertype & CONTENTS_LAVA) - gi.sound (current_player, CHAN_BODY, gi.soundindex("player/lava_in.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_BODY, gi.soundindex("player/lava_in.wav"), 1, ATTN_NORM, 0); else if (current_player->watertype & CONTENTS_SLIME) - gi.sound (current_player, CHAN_BODY, gi.soundindex("player/watr_in.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_BODY, gi.soundindex("player/watr_in.wav"), 1, ATTN_NORM, 0); else if (current_player->watertype & CONTENTS_WATER) - gi.sound (current_player, CHAN_BODY, gi.soundindex("player/watr_in.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_BODY, gi.soundindex("player/watr_in.wav"), 1, ATTN_NORM, 0); current_player->flags |= FL_INWATER; // clear damage_debounce, so the pain sound will play immediately @@ -616,53 +585,46 @@ void P_WorldEffects (void) // // if just completely exited a water volume, play a sound // - if (old_waterlevel && ! waterlevel) - { + if (old_waterlevel && ! waterlevel) { PlayerNoise(current_player, current_player->s.origin, PNOISE_SELF); - gi.sound (current_player, CHAN_BODY, gi.soundindex("player/watr_out.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_BODY, gi.soundindex("player/watr_out.wav"), 1, ATTN_NORM, 0); current_player->flags &= ~FL_INWATER; } // // check for head just going under water // - if (old_waterlevel != 3 && waterlevel == 3) - { - gi.sound (current_player, CHAN_BODY, gi.soundindex("player/watr_un.wav"), 1, ATTN_NORM, 0); + if (old_waterlevel != 3 && waterlevel == 3) { + gi.sound(current_player, CHAN_BODY, gi.soundindex("player/watr_un.wav"), 1, ATTN_NORM, 0); } // // check for head just coming out of water // - if (old_waterlevel == 3 && waterlevel != 3) - { - if (current_player->air_finished < level.time) - { // gasp for air - gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/gasp1.wav"), 1, ATTN_NORM, 0); + if (old_waterlevel == 3 && waterlevel != 3) { + if (current_player->air_finished < level.time) { + // gasp for air + gi.sound(current_player, CHAN_VOICE, gi.soundindex("player/gasp1.wav"), 1, ATTN_NORM, 0); PlayerNoise(current_player, current_player->s.origin, PNOISE_SELF); - } - else if (current_player->air_finished < level.time + 11) - { // just break surface - gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/gasp2.wav"), 1, ATTN_NORM, 0); + } else if (current_player->air_finished < level.time + 11) { + // just break surface + gi.sound(current_player, CHAN_VOICE, gi.soundindex("player/gasp2.wav"), 1, ATTN_NORM, 0); } } // // check for drowning // - if (waterlevel == 3) - { + if (waterlevel == 3) { // breather or envirosuit give air - if (breather || envirosuit) - { + if (breather || envirosuit) { current_player->air_finished = level.time + 10; - if (((int)(current_client->breather_framenum - level.framenum) % 25) == 0) - { + if (((int)(current_client->breather_framenum - level.framenum) % 25) == 0) { if (!current_client->breather_sound) - gi.sound (current_player, CHAN_AUTO, gi.soundindex("player/u_breath1.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_AUTO, gi.soundindex("player/u_breath1.wav"), 1, ATTN_NORM, 0); else - gi.sound (current_player, CHAN_AUTO, gi.soundindex("player/u_breath2.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_AUTO, gi.soundindex("player/u_breath2.wav"), 1, ATTN_NORM, 0); current_client->breather_sound ^= 1; PlayerNoise(current_player, current_player->s.origin, PNOISE_SELF); //FIXME: release a bubble? @@ -670,11 +632,10 @@ void P_WorldEffects (void) } // if out of air, start drowning - if (current_player->air_finished < level.time) - { // drown! - if (current_player->client->next_drown_time < level.time - && current_player->health > 0) - { + if (current_player->air_finished < level.time) { + // drown! + if (current_player->client->next_drown_time < level.time + && current_player->health > 0) { current_player->client->next_drown_time = level.time + 1; // take more damage the longer underwater @@ -684,20 +645,18 @@ void P_WorldEffects (void) // play a gurp sound instead of a normal pain sound if (current_player->health <= current_player->dmg) - gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/drown1.wav"), 1, ATTN_NORM, 0); - else if (rand()&1) - gi.sound (current_player, CHAN_VOICE, gi.soundindex("*gurp1.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_VOICE, gi.soundindex("player/drown1.wav"), 1, ATTN_NORM, 0); + else if (rand() & 1) + gi.sound(current_player, CHAN_VOICE, gi.soundindex("*gurp1.wav"), 1, ATTN_NORM, 0); else - gi.sound (current_player, CHAN_VOICE, gi.soundindex("*gurp2.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_VOICE, gi.soundindex("*gurp2.wav"), 1, ATTN_NORM, 0); current_player->pain_debounce_time = level.time; - T_Damage (current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, current_player->dmg, 0, DAMAGE_NO_ARMOR, MOD_WATER); + T_Damage(current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, current_player->dmg, 0, DAMAGE_NO_ARMOR, MOD_WATER); } } - } - else - { + } else { current_player->air_finished = level.time + 12; current_player->dmg = 2; } @@ -705,32 +664,28 @@ void P_WorldEffects (void) // // check for sizzle damage // - if (waterlevel && (current_player->watertype&(CONTENTS_LAVA|CONTENTS_SLIME)) ) - { - if (current_player->watertype & CONTENTS_LAVA) - { + if (waterlevel && (current_player->watertype & (CONTENTS_LAVA | CONTENTS_SLIME))) { + if (current_player->watertype & CONTENTS_LAVA) { if (current_player->health > 0 && current_player->pain_debounce_time <= level.time - && current_client->invincible_framenum < level.framenum) - { - if (rand()&1) - gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/burn1.wav"), 1, ATTN_NORM, 0); + && current_client->invincible_framenum < level.framenum) { + if (rand() & 1) + gi.sound(current_player, CHAN_VOICE, gi.soundindex("player/burn1.wav"), 1, ATTN_NORM, 0); else - gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/burn2.wav"), 1, ATTN_NORM, 0); + gi.sound(current_player, CHAN_VOICE, gi.soundindex("player/burn2.wav"), 1, ATTN_NORM, 0); current_player->pain_debounce_time = level.time + 1; } if (envirosuit) // take 1/3 damage with envirosuit - T_Damage (current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, 1*waterlevel, 0, 0, MOD_LAVA); + T_Damage(current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, 1 * waterlevel, 0, 0, MOD_LAVA); else - T_Damage (current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, 3*waterlevel, 0, 0, MOD_LAVA); + T_Damage(current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, 3 * waterlevel, 0, 0, MOD_LAVA); } - if (current_player->watertype & CONTENTS_SLIME) - { - if (!envirosuit) - { // no damage from slime with envirosuit - T_Damage (current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, 1*waterlevel, 0, 0, MOD_SLIME); + if (current_player->watertype & CONTENTS_SLIME) { + if (!envirosuit) { + // no damage from slime with envirosuit + T_Damage(current_player, world, world, vec3_origin, current_player->s.origin, vec3_origin, 1 * waterlevel, 0, 0, MOD_SLIME); } } } @@ -742,7 +697,7 @@ void P_WorldEffects (void) G_SetClientEffects =============== */ -void G_SetClientEffects (edict_t *ent) +void G_SetClientEffects(edict_t *ent) { int pa_type; int remaining; @@ -753,39 +708,32 @@ void G_SetClientEffects (edict_t *ent) if (ent->health <= 0 || level.intermissiontime) return; - if (ent->powerarmor_time > level.time) - { - pa_type = PowerArmorType (ent); - if (pa_type == POWER_ARMOR_SCREEN) - { + if (ent->powerarmor_time > level.time) { + pa_type = PowerArmorType(ent); + if (pa_type == POWER_ARMOR_SCREEN) { ent->s.effects |= EF_POWERSCREEN; - } - else if (pa_type == POWER_ARMOR_SHIELD) - { + } else if (pa_type == POWER_ARMOR_SHIELD) { ent->s.effects |= EF_COLOR_SHELL; ent->s.renderfx |= RF_SHELL_GREEN; } } - if (ent->client->quad_framenum > level.framenum) - { + if (ent->client->quad_framenum > level.framenum) { remaining = ent->client->quad_framenum - level.framenum; - if (remaining > 30 || (remaining & 4) ) + if (remaining > 30 || (remaining & 4)) ent->s.effects |= EF_QUAD; } - if (ent->client->invincible_framenum > level.framenum) - { + if (ent->client->invincible_framenum > level.framenum) { remaining = ent->client->invincible_framenum - level.framenum; - if (remaining > 30 || (remaining & 4) ) + if (remaining > 30 || (remaining & 4)) ent->s.effects |= EF_PENT; } // show cheaters!!! - if (ent->flags & FL_GODMODE) - { + if (ent->flags & FL_GODMODE) { ent->s.effects |= EF_COLOR_SHELL; - ent->s.renderfx |= (RF_SHELL_RED|RF_SHELL_GREEN|RF_SHELL_BLUE); + ent->s.renderfx |= (RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE); } } @@ -795,14 +743,13 @@ void G_SetClientEffects (edict_t *ent) G_SetClientEvent =============== */ -void G_SetClientEvent (edict_t *ent) +void G_SetClientEvent(edict_t *ent) { if (ent->s.event) return; - if ( ent->groundentity && xyspeed > 225) - { - if ( (int)(current_client->bobtime+bobmove) != bobcycle ) + if (ent->groundentity && xyspeed > 225) { + if ((int)(current_client->bobtime + bobmove) != bobcycle) ent->s.event = EV_FOOTSTEP; } } @@ -812,21 +759,19 @@ void G_SetClientEvent (edict_t *ent) G_SetClientSound =============== */ -void G_SetClientSound (edict_t *ent) +void G_SetClientSound(edict_t *ent) { char *weap; - if (ent->client->pers.game_helpchanged != game.helpchanged) - { + if (ent->client->pers.game_helpchanged != game.helpchanged) { ent->client->pers.game_helpchanged = game.helpchanged; ent->client->pers.helpchanged = 1; } // help beep (no more than three times) - if (ent->client->pers.helpchanged && ent->client->pers.helpchanged <= 3 && !(level.framenum&63) ) - { + if (ent->client->pers.helpchanged && ent->client->pers.helpchanged <= 3 && !(level.framenum & 63)) { ent->client->pers.helpchanged++; - gi.sound (ent, CHAN_VOICE, gi.soundindex ("misc/pc_up.wav"), 1, ATTN_STATIC, 0); + gi.sound(ent, CHAN_VOICE, gi.soundindex("misc/pc_up.wav"), 1, ATTN_STATIC, 0); } @@ -835,7 +780,7 @@ void G_SetClientSound (edict_t *ent) else weap = ""; - if (ent->waterlevel && (ent->watertype&(CONTENTS_LAVA|CONTENTS_SLIME)) ) + if (ent->waterlevel && (ent->watertype & (CONTENTS_LAVA | CONTENTS_SLIME))) ent->s.sound = snd_fry; else if (strcmp(weap, "weapon_railgun") == 0) ent->s.sound = gi.soundindex("weapons/rg_hum.wav"); @@ -852,7 +797,7 @@ void G_SetClientSound (edict_t *ent) G_SetClientFrame =============== */ -void G_SetClientFrame (edict_t *ent) +void G_SetClientFrame(edict_t *ent) { gclient_t *client; qboolean duck, run; @@ -879,24 +824,20 @@ void G_SetClientFrame (edict_t *ent) if (!ent->groundentity && client->anim_priority <= ANIM_WAVE) goto newanim; - if(client->anim_priority == ANIM_REVERSE) - { - if(ent->s.frame > client->anim_end) - { + if (client->anim_priority == ANIM_REVERSE) { + if (ent->s.frame > client->anim_end) { ent->s.frame--; return; } - } - else if (ent->s.frame < client->anim_end) - { // continue an animation + } else if (ent->s.frame < client->anim_end) { + // continue an animation ent->s.frame++; return; } if (client->anim_priority == ANIM_DEATH) return; // stay there - if (client->anim_priority == ANIM_JUMP) - { + if (client->anim_priority == ANIM_JUMP) { if (!ent->groundentity) return; // stay there ent->client->anim_priority = ANIM_WAVE; @@ -911,35 +852,26 @@ newanim: client->anim_duck = duck; client->anim_run = run; - if (!ent->groundentity) - { + if (!ent->groundentity) { client->anim_priority = ANIM_JUMP; if (ent->s.frame != FRAME_jump2) ent->s.frame = FRAME_jump1; client->anim_end = FRAME_jump2; - } - else if (run) - { // running - if (duck) - { + } else if (run) { + // running + if (duck) { ent->s.frame = FRAME_crwalk1; client->anim_end = FRAME_crwalk6; - } - else - { + } else { ent->s.frame = FRAME_run1; client->anim_end = FRAME_run6; } - } - else - { // standing - if (duck) - { + } else { + // standing + if (duck) { ent->s.frame = FRAME_crstnd01; client->anim_end = FRAME_crstnd19; - } - else - { + } else { ent->s.frame = FRAME_stand01; client->anim_end = FRAME_stand40; } @@ -955,7 +887,7 @@ Called for each player at the end of the server frame and right after spawning ================= */ -void ClientEndServerFrame (edict_t *ent) +void ClientEndServerFrame(edict_t *ent) { float bobtime; int i; @@ -967,59 +899,55 @@ void ClientEndServerFrame (edict_t *ent) // If the origin or velocity have changed since ClientThink(), // update the pmove values. This will happen when the client // is pushed by a bmodel or kicked by an explosion. - // + // // If it wasn't updated here, the view position would lag a frame // behind the body position when pushed -- "sinking into plats" // - for (i=0 ; i<3 ; i++) - { - current_client->ps.pmove.origin[i] = ent->s.origin[i]*8.0; - current_client->ps.pmove.velocity[i] = ent->velocity[i]*8.0; + for (i = 0 ; i < 3 ; i++) { + current_client->ps.pmove.origin[i] = ent->s.origin[i] * 8.0; + current_client->ps.pmove.velocity[i] = ent->velocity[i] * 8.0; } // // If the end of unit layout is displayed, don't give // the player any normal movement attributes // - if (level.intermissiontime) - { + if (level.intermissiontime) { // FIXME: add view drifting here? current_client->ps.blend[3] = 0; current_client->ps.fov = 90; - G_SetStats (ent); + G_SetStats(ent); return; } - AngleVectors (ent->client->v_angle, forward, right, up); + AngleVectors(ent->client->v_angle, forward, right, up); // burn from lava, etc - P_WorldEffects (); + P_WorldEffects(); // // set model angles from view angles so other things in // the world can tell which direction you are looking // if (ent->client->v_angle[PITCH] > 180) - ent->s.angles[PITCH] = (-360 + ent->client->v_angle[PITCH])/3; + ent->s.angles[PITCH] = (-360 + ent->client->v_angle[PITCH]) / 3; else - ent->s.angles[PITCH] = ent->client->v_angle[PITCH]/3; + ent->s.angles[PITCH] = ent->client->v_angle[PITCH] / 3; ent->s.angles[YAW] = ent->client->v_angle[YAW]; ent->s.angles[ROLL] = 0; - ent->s.angles[ROLL] = SV_CalcRoll (ent->s.angles, ent->velocity)*4; + ent->s.angles[ROLL] = SV_CalcRoll(ent->s.angles, ent->velocity) * 4; // // calculate speed and cycle to be used for // all cyclic walking effects // - xyspeed = sqrt(ent->velocity[0]*ent->velocity[0] + ent->velocity[1]*ent->velocity[1]); + xyspeed = sqrt(ent->velocity[0] * ent->velocity[0] + ent->velocity[1] * ent->velocity[1]); - if (xyspeed < 5) - { + if (xyspeed < 5) { bobmove = 0; current_client->bobtime = 0; // start at beginning of cycle again - } - else if (ent->groundentity) - { // so bobbing only cycles when on ground + } else if (ent->groundentity) { + // so bobbing only cycles when on ground if (xyspeed > 210) bobmove = 0.25; else if (xyspeed > 100) @@ -1027,61 +955,60 @@ void ClientEndServerFrame (edict_t *ent) else bobmove = 0.0625; } - + bobtime = (current_client->bobtime += bobmove); if (current_client->ps.pmove.pm_flags & PMF_DUCKED) bobtime *= 4; bobcycle = (int)bobtime; - bobfracsin = fabs(sin(bobtime*M_PI)); + bobfracsin = fabs(sin(bobtime * M_PI)); // detect hitting the floor - P_FallingDamage (ent); + P_FallingDamage(ent); // apply all the damage taken this frame - P_DamageFeedback (ent); + P_DamageFeedback(ent); // determine the view offsets - SV_CalcViewOffset (ent); + SV_CalcViewOffset(ent); // determine the gun offsets - SV_CalcGunOffset (ent); + SV_CalcGunOffset(ent); // determine the full screen color blend // must be after viewoffset, so eye contents can be // accurately determined // FIXME: with client prediction, the contents // should be determined by the client - SV_CalcBlend (ent); + SV_CalcBlend(ent); // chase cam stuff if (ent->client->resp.spectator) G_SetSpectatorStats(ent); else - G_SetStats (ent); + G_SetStats(ent); G_CheckChaseStats(ent); - G_SetClientEvent (ent); + G_SetClientEvent(ent); - G_SetClientEffects (ent); + G_SetClientEffects(ent); - G_SetClientSound (ent); + G_SetClientSound(ent); - G_SetClientFrame (ent); + G_SetClientFrame(ent); - VectorCopy (ent->velocity, ent->client->oldvelocity); - VectorCopy (ent->client->ps.viewangles, ent->client->oldviewangles); + VectorCopy(ent->velocity, ent->client->oldvelocity); + VectorCopy(ent->client->ps.viewangles, ent->client->oldviewangles); // clear weapon kicks - VectorClear (ent->client->kick_origin); - VectorClear (ent->client->kick_angles); + VectorClear(ent->client->kick_origin); + VectorClear(ent->client->kick_angles); // if the scoreboard is up, update it - if (ent->client->showscores && !(level.framenum & 31) ) - { - DeathmatchScoreboardMessage (ent, ent->enemy); - gi.unicast (ent, qfalse); + if (ent->client->showscores && !(level.framenum & 31)) { + DeathmatchScoreboardMessage(ent, ent->enemy); + gi.unicast(ent, qfalse); } } |