//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponSniperRifle::PrimaryAttack( void ) { // Only the player fires this way so we can cast safely. CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); if (!pPlayer) { return; } if ( gpGlobals->curtime >= m_flNextPrimaryAttack ) { // If my clip is empty (and I use clips) start reload if ( !m_iClip1 ) { Reload(); return; } // MUST call sound before removing a round from the clip of a CMachineGun dvs: does this apply to the sniper rifle? I don't know. WeaponSound(SINGLE); pPlayer->DoMuzzleFlash(); SendWeaponAnim( ACT_VM_PRIMARYATTACK ); // player "shoot" animation pPlayer->SetAnimation( PLAYER_ATTACK1 ); // Don't fire again until fire animation has completed m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); m_iClip1 = m_iClip1 - 1; Vector vecSrc = pPlayer->Weapon_ShootPosition(); Vector vecAiming = pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); // Fire the bullets pPlayer->FireBullets( SNIPER_BULLET_COUNT_PLAYER, vecSrc, vecAiming, GetBulletSpread(), MAX_TRACE_LENGTH, m_iPrimaryAmmoType, SNIPER_TRACER_FREQUENCY_PLAYER ); CSoundEnt::InsertSound( SOUND_COMBAT, GetAbsOrigin(), 600, 0.2 ); QAngle vecPunch(random->RandomFloat( -SNIPER_KICKBACK, SNIPER_KICKBACK ), 0, 0); pPlayer->ViewPunch(vecPunch); // Indicate out of ammo condition if we run out of ammo. if (!m_iClip1 && pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0) { pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); } } // Register a muzzleflash for the AI. pPlayer->SetMuzzleFlashTime( gpGlobals->curtime + 0.5 ); }
void CWeaponAWM::AddViewKick( void ) { CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); if( !pPlayer ) return; QAngle vecPunch( random->RandomFloat(-AWM_KICKBACK, -AWM_KICKBACK), 0, 0 ); pPlayer->ViewPunch( vecPunch ); //Disorient the player QAngle angles = pPlayer->GetLocalAngles(); angles.x += random->RandomInt( -1, 1 ); angles.y += random->RandomInt( -1, 1 ); angles.z = 0; #ifndef CLIENT_DLL pPlayer->SnapEyeAngles( angles ); #endif }