/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) { // check for changing follow mode if ( ps->clientNum != ops->clientNum ) { cg.thisFrameTeleport = qtrue; // make sure we don't get any unwanted transition effects *ops = *ps; // DHM - Nerve :: After Limbo, make sure and do a CG_Respawn if ( ps->clientNum == cg.clientNum ) { ops->persistant[PERS_SPAWN_COUNT]--; } } // damage events (player is getting wounded) if ( ps->damageEvent != ops->damageEvent && ps->damageCount ) { CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount ); } // respawning if ( ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT] ) { CG_Respawn(); } if ( cg.mapRestart ) { CG_Respawn(); cg.mapRestart = qfalse; } if ( cg.snap->ps.pm_type != PM_INTERMISSION && ps->persistant[PERS_TEAM] != TEAM_SPECTATOR ) { CG_CheckLocalSounds( ps, ops ); } // check for going low on ammo CG_CheckAmmo(); // run events CG_CheckPlayerstateEvents( ps, ops ); // smooth the ducking viewheight change if ( ps->viewheight != ops->viewheight ) { cg.duckChange = ps->viewheight - ops->viewheight; cg.duckTime = cg.time; } }
/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) { // teleporting if ( ( ps->eFlags ^ ops->eFlags ) & EF_TELEPORT_BIT ) { cg.thisFrameTeleport = qtrue; } else { cg.thisFrameTeleport = qfalse; } // check for changing follow mode if ( ps->clientNum != ops->clientNum ) { cg.thisFrameTeleport = qtrue; // make sure we don't get any unwanted transition effects *ops = *ps; } // damage events (player is getting wounded) if ( ps->damageEvent != ops->damageEvent && ps->damageCount ) { CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount ); } // respawning if ( ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT] ) { CG_Respawn(); } // check for going low on ammo CG_CheckAmmo(); // run events CG_CheckPlayerstateEvents( ps, ops ); // smooth the ducking viewheight change if ( ps->viewheight != ops->viewheight ) { if ( !cg.nextFrameTeleport ) {//when we crouch/uncrouch in mid-air, our viewhieght doesn't actually change in //absolute world coordinates, just locally. cg.duckChange = ps->viewheight - ops->viewheight; cg.duckTime = cg.time; } } }
/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) { // OSP - MV client handling if(cg.mvTotalClients > 0) { if (ps->clientNum != ops->clientNum) { cg.thisFrameTeleport = qtrue; // clear voicechat cg.predictedPlayerEntity.voiceChatSpriteTime = 0; // CHECKME: should we do this here? cg_entities[ps->clientNum].voiceChatSpriteTime = 0; *ops = *ps; } CG_CheckLocalSounds( ps, ops ); return; } // check for changing follow mode if ( ps->clientNum != ops->clientNum ) { cg.thisFrameTeleport = qtrue; // clear voicechat cg.predictedPlayerEntity.voiceChatSpriteTime = 0; cg_entities[ps->clientNum].voiceChatSpriteTime = 0; // make sure we don't get any unwanted transition effects *ops = *ps; // DHM - Nerve :: After Limbo, make sure and do a CG_Respawn if ( ps->clientNum == cg.clientNum ) ops->persistant[PERS_SPAWN_COUNT]--; } if( ps->eFlags & EF_FIRING ) { cg.lastFiredWeaponTime = 0; cg.weaponFireTime += cg.frametime; } else { if( cg.weaponFireTime > 500 && cg.weaponFireTime ) { cg.lastFiredWeaponTime = cg.time; } cg.weaponFireTime = 0; } // damage events (player is getting wounded) if( cg_damageKick.integer ) { // Terifire - only if the client wants this if( ps->damageEvent != ops->damageEvent && ps->damageCount ) { CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount ); } } // respawning if( ps->persistant[PERS_SPAWN_COUNT] != ops->persistant[PERS_SPAWN_COUNT] ) { CG_Respawn( ps->persistant[PERS_REVIVE_COUNT] != ops->persistant[PERS_REVIVE_COUNT] ? qtrue : qfalse ); } if ( cg.mapRestart ) { CG_Respawn( qfalse ); cg.mapRestart = qfalse; } if ( cg.snap->ps.pm_type != PM_INTERMISSION && ps->persistant[PERS_TEAM] != TEAM_SPECTATOR ) { CG_CheckLocalSounds( ps, ops ); } // check for going low on ammo CG_CheckAmmo(); if( ps->eFlags & EF_PRONE_MOVING ) { if( ps->weapon == WP_BINOCULARS ) { if( ps->eFlags & EF_ZOOMING ) { trap_SendConsoleCommand( "-zoom\n" ); } } if( !(ops->eFlags & EF_PRONE_MOVING) ) { // ydnar: this screws up auto-switching when dynamite planted or grenade thrown/out of ammo //% CG_FinishWeaponChange( cg.weaponSelect, ps->nextWeapon ); cg.proneMovingTime = cg.time; } } else if( ops->eFlags & EF_PRONE_MOVING ) { cg.proneMovingTime = -cg.time; } if( !(ps->eFlags & EF_PRONE) && ops->eFlags & EF_PRONE ) { if( cg.weaponSelect == WP_MOBILE_MG42_SET ) CG_FinishWeaponChange( cg.weaponSelect, ps->nextWeapon ); } // run events CG_CheckPlayerstateEvents( ps, ops ); // smooth the ducking viewheight change if ( ps->viewheight != ops->viewheight ) { cg.duckChange = ps->viewheight - ops->viewheight; cg.duckTime = cg.time; } }