/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) { // check for changing follow mode if ( ps->clientNum != ops->clientNum ) { cg.thisFrameTeleport = true; // 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(); } if ( cg.mapRestart ) { CG_Respawn(); cg.mapRestart = false; } if ( cg.snap->ps.pm_type != PM_INTERMISSION && ps->persistant[PERS_TEAM] != ClientBase::TEAM_SPECTATOR ) { CG_CheckLocalSounds( ps, ops ); } // run events CG_CheckPlayerstateEvents( ps, ops ); }
/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) { // check for changing follow mode if ( ps->clientNum != ops->clientNum ) { cg.thisFrameTeleport = true; // make sure we don't get any unwanted transition effects *ops = *ps; CG_ResetPainBlend(); } // 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 = false; } if ( cg.snap->ps.pm_type != PM_INTERMISSION && ps->persistant[ PERS_SPECSTATE ] == SPECTATOR_NOT ) { CG_CheckLocalSounds( ps, ops ); } // 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; } // changed team if ( ps->persistant[ PERS_TEAM ] != ops->persistant[ PERS_TEAM ] ) { cg.lastHealthCross = 0; cg.chargeMeterAlpha = 0.0f; } if ( ps->stats[ STAT_TAGSCORE ] != ops->stats[ STAT_TAGSCORE ] ) cg.tagScoreTime = cg.time; }
/* =============== 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; CG_ResetPainBlend( ); } // 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_SPECSTATE ] == SPECTATOR_NOT ) CG_CheckLocalSounds( ps, ops ); // 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; } // changed team if( ps->stats[ STAT_TEAM ] != ops->stats[ STAT_TEAM ] ) { cg.lastHealthCross = 0; cg.chargeMeterAlpha = 0.0f; } if( ps->stats[ STAT_FUEL ] < JETPACK_FUEL_JUMP && ops->stats[ STAT_FUEL ] >= JETPACK_FUEL_JUMP && cg.predictedPlayerEntity.jetPackJumpTime + 1000 > cg.time ) { trap_S_StartSound( NULL, cg.predictedPlayerState.clientNum, CHAN_AUTO, cgs.media.jetpackNoJumpFuelSound ); } }
/* =============== 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 ) { if(ps->clientNum != ops->clientNum){ cg.thisFrameTeleport = qtrue; *ops = *ps; } 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); } CG_CheckPlayerstateEvents(ps,ops); if(ps->viewheight != ops->viewheight){ cg.duckChange = ps->viewheight - ops->viewheight; cg.duckTime = cg.time; } cg.tierSelectionMode = 0; cg.tierSelect = -1; if(ps->powerLevel[plTierChanged] == 1 && ops->powerLevel[plTierChanged] != 1) { cg.tierCurrent = ps->powerLevel[plTierCurrent]; cg.weaponDesired = -1; cg.weaponSelectionMode = 0; } if(ps->currentSkill[WPSTAT_CHANGED] != 0){ //If the server validated a weapon change, changes it cg.weaponSelectionMode = 0; cg.weaponDesired = -1; cg.weaponSelect = ps->weapon; if(ps->currentSkill[WPSTAT_CHANGED] != -1) { cg.drawWeaponBar = 1; } } }
/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState(playerState_t *ps, playerState_t *ops) { #if FEATURE_MULTIVIEW // 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; } #endif // 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; // 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 (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); } 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)) { // 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.weaponSelect == WP_MOBILE_BROWNING_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; } }
/* =============== CG_TransitionPlayerState =============== */ void CG_TransitionPlayerState(playerState_t *ps, playerState_t *ops) { // 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 (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(); } CG_CheckLocalSounds(ps, ops); if (ps->eFlags & EF_PRONE_MOVING) { if (ps->weapon == WP_BINOCULARS && ps->eFlags & EF_ZOOMING) { trap_SendConsoleCommand("-zoom\n"); } if (!(ops->eFlags & EF_PRONE_MOVING)) { cg.proneMovingTime = cg.time; } } else if (ops->eFlags & EF_PRONE_MOVING) { cg.proneMovingTime = -cg.time; } if (!(ps->eFlags & EF_PRONE) && ops->eFlags & EF_PRONE && 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; } }