void CWeaponCSBaseGun::DoFireEffects() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( pPlayer ) pPlayer->DoMuzzleFlash(); }
void CWeaponElite::ELITEFire( float flSpread ) { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; pPlayer->m_iShotsFired++; if (pPlayer->m_iShotsFired > 1) return; // Mark the time of this shot and determine the accuracy modifier based on the last shot fired... m_flAccuracy -= (0.275)*(0.325 - (gpGlobals->curtime - m_flLastFire)); if (m_flAccuracy > 0.88) m_flAccuracy = 0.88; else if (m_flAccuracy < 0.55) m_flAccuracy = 0.55; m_flLastFire = gpGlobals->curtime; if (m_iClip1 <= 0) { if (m_bFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->curtime + 0.2; } return; } m_iClip1--; m_bFireRight = !m_bFireRight; // flip side pPlayer->DoMuzzleFlash(); //SetPlayerShieldAnim(); // player "shoot" animation pPlayer->SetAnimation( PLAYER_ATTACK1 ); FX_FireBullets( pPlayer->entindex(), pPlayer->Weapon_ShootPosition(), pPlayer->EyeAngles() + 2.0f * pPlayer->GetPunchAngle(), GetWeaponID(), m_bFireRight?Primary_Mode:Secondary_Mode, CBaseEntity::GetPredictionRandomSeed() & 255, flSpread ); m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->curtime + GetCSWpnData().m_flCycleTime; if (!m_iClip1 && pPlayer->GetAmmoCount( m_iPrimaryAmmoType ) <= 0) { // HEV suit - indicate out of ammo condition pPlayer->SetSuitUpdate("!HEV_AMO0", false, 0); } SetWeaponIdleTime( gpGlobals->curtime + 2.5 ); if ( m_bFireRight ) //even number { if ( m_iClip1 > 1 ) SendWeaponAnim( ACT_VM_PRIMARYATTACK ); else SendWeaponAnim( ACT_VM_DRYFIRE_LEFT ); } else { if ( m_iClip1 > 0 ) SendWeaponAnim( ACT_VM_SECONDARYATTACK ); else SendWeaponAnim( ACT_VM_DRYFIRE ); } QAngle punchAngle = pPlayer->GetPunchAngle(); punchAngle.x -= 2; pPlayer->SetPunchAngle( punchAngle ); //ResetPlayerShieldAnim(); }
void CWeaponUSP::USPFire( float flSpread ) { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; float flCycleTime = GetCSWpnData().m_flCycleTime; pPlayer->m_iShotsFired++; if (pPlayer->m_iShotsFired > 1) return; // Mark the time of this shot and determine the accuracy modifier based on the last shot fired... m_flAccuracy -= (0.275)*(0.3 - (gpGlobals->curtime - m_flLastFire)); if (m_flAccuracy > 0.92) m_flAccuracy = 0.92; else if (m_flAccuracy < 0.6) m_flAccuracy = 0.6; m_flLastFire = gpGlobals->curtime; if (m_iClip1 <= 0) { if (m_bFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->curtime + 0.2; } return; } m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->curtime + flCycleTime; m_iClip1--; SendWeaponAnim( ACT_VM_PRIMARYATTACK ); // player "shoot" animation pPlayer->SetAnimation( PLAYER_ATTACK1 ); if ( !m_bSilencerOn ) { pPlayer->DoMuzzleFlash(); } FX_FireBullets( pPlayer->entindex(), pPlayer->Weapon_ShootPosition(), pPlayer->EyeAngles() + 2.0f * pPlayer->GetPunchAngle(), GetWeaponID(), m_bSilencerOn?Secondary_Mode:Primary_Mode, CBaseEntity::GetPredictionRandomSeed() & 255, flSpread ); if (!m_iClip1 && pPlayer->GetAmmoCount( GetPrimaryAmmoType() ) <= 0) { // HEV suit - indicate out of ammo condition pPlayer->SetSuitUpdate("!HEV_AMO0", false, 0); } SetWeaponIdleTime( gpGlobals->curtime + 2 ); QAngle angle = pPlayer->GetPunchAngle(); angle.x -= 2; pPlayer->SetPunchAngle( angle ); }