void CGauss::PrimaryAttack() { // don't fire underwater if ( m_pPlayer->pev->waterlevel == 3 ) { PlayEmptySound( ); m_flNextSecondaryAttack = m_flNextPrimaryAttack = GetNextAttackDelay(0.15); return; } if ( m_pPlayer->m_rgAmmo[ m_iPrimaryAmmoType ] < 2 ) { PlayEmptySound( ); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; return; } m_pPlayer->m_iWeaponVolume = GAUSS_PRIMARY_FIRE_VOLUME; m_fPrimaryFire = TRUE; m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= 2; StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.2; }
void CShotgun::PrimaryAttack() { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if (m_iClip <= 0) { Reload( ); if (m_iClip == 0) PlayEmptySound( ); return; } PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usSingleFire ); m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->Gunflash (); m_iClip--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if ( g_pGameRules->IsDeathmatch() ) { // altered deathmatch spread m_pPlayer->FireBullets( 4, vecSrc, vecAiming, VECTOR_CONE_DM_SHOTGUN, 2048, BULLET_PLAYER_BUCKSHOT, 0 ); } else { // regular old, untouched spread. m_pPlayer->FireBullets( 6, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 2048, BULLET_PLAYER_BUCKSHOT, 0 ); } if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); if (m_iClip != 0) m_flPumpTime = gpGlobals->time + 0.5; m_flNextPrimaryAttack = gpGlobals->time + 0.75; m_flNextSecondaryAttack = gpGlobals->time + 0.75; if (m_iClip != 0) m_flTimeWeaponIdle = gpGlobals->time + 5.0; else m_flTimeWeaponIdle = 0.75; m_fInReload = 0; }
void CShotgun::SecondaryAttack( void ) { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if (m_iClip <= 1) { Reload( ); PlayEmptySound( ); return; } PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usDoubleFire ); m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->Gunflash (); m_iClip -= 2; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if ( g_pGameRules->IsDeathmatch() ) { // tuned for deathmatch m_pPlayer->FireBullets( 8, vecSrc, vecAiming, VECTOR_CONE_DM_DOUBLESHOTGUN, 2048, BULLET_PLAYER_BUCKSHOT_DOUBLE, 0 ); } else { // untouched default single player m_pPlayer->FireBullets( 12, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 2048, BULLET_PLAYER_BUCKSHOT_DOUBLE, 0 ); } if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); if (m_iClip != 0) m_flPumpTime = gpGlobals->time + 0.95; m_flNextPrimaryAttack = gpGlobals->time + 1.5; m_flNextSecondaryAttack = gpGlobals->time + 1.5; if (m_iClip != 0) m_flTimeWeaponIdle = gpGlobals->time + 6.0; else m_flTimeWeaponIdle = 1.5; m_fInReload = 0; }
void CM16::SecondaryAttack(void) { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if (m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType] == 0) { PlayEmptySound( ); return; } m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_pPlayer->m_iExtraSoundTypes = bits_SOUND_DANGER; m_pPlayer->m_flStopExtraSoundTime = gpGlobals->time + 0.2; m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]--; SendWeaponAnim( M16_LAUNCH ); // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); if ( RANDOM_LONG(0,1) ) EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/glauncher.wav", 0.8, ATTN_NORM); else EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/glauncher2.wav", 0.8, ATTN_NORM); UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); // we don't add in player velocity anymore. CGrenade::ShootContact( m_pPlayer->pev, m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16, gpGlobals->v_forward * 800 ); m_flNextPrimaryAttack = gpGlobals->time + 1; m_flNextSecondaryAttack = gpGlobals->time + 1; m_flTimeWeaponIdle = gpGlobals->time + 5;// idle pretty soon after shooting. if (!m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_pPlayer->pev->punchangle.x -= 10; }
void CMP5::SecondaryAttack( void ) { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = 0.15; return; } if (m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType] == 0) { PlayEmptySound( ); return; } m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_pPlayer->m_iExtraSoundTypes = bits_SOUND_DANGER; m_pPlayer->m_flStopExtraSoundTime = UTIL_WeaponTimeBase() + 0.2; m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); // we don't add in player velocity anymore. CGrenade::ShootContact( m_pPlayer->pev, m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16, gpGlobals->v_forward * 800 ); int flags; #if defined( CLIENT_WEAPONS ) flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT( flags, m_pPlayer->edict(), m_usMP52 ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 1; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 5;// idle pretty soon after shooting. if (!m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); }
void CTEST::PrimaryAttack() { // don''t fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if (m_iClip <= 0) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usTEST ); m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_iClip--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if ( g_pGameRules->IsDeathmatch() ) { // optimized multiplayer. Widened to make it easier to hit a moving player m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_6DEGREES, 8192, BULLET_PLAYER_MP5, 2 ); } else { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_MP5, 2 ); } m_flNextPrimaryAttack = m_flNextPrimaryAttack + 0.1; if (m_flNextPrimaryAttack < gpGlobals->time) m_flNextPrimaryAttack = gpGlobals->time + 0.1; m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 ); UpdateSpot( ); }
void CBiorifle::PrimaryAttack() { if (m_iClip <= 0) { PlayEmptySound(4); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; return; } m_iClip--; m_iFiredAmmo++; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); SendWeaponAnim((m_pPlayer->m_fHeavyArmor)?BIORIFLE_FIRE_SOLID:BIORIFLE_FIRE); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); CBiomass::ShootBiomass( m_pPlayer->pev, m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16 + gpGlobals->v_right * 7 + gpGlobals->v_up * -8, gpGlobals->v_forward * 3000, 400); EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/biorifle_fire.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xF)); m_flNextPrimaryAttack = gpGlobals->time + 0.3; m_flNextSecondaryAttack = gpGlobals->time + 0.1; m_flTimeWeaponIdle = gpGlobals->time + 2; if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= RANDOM_FLOAT(-2,5); m_pPlayer->pev->punchangle.y -= 1; } }
void CAK74::SecondaryAttack() { if (m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType] == 0) { PlayEmptySound( ); return; } m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]--; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); CAK74grenade::ShootAK74grenade( m_pPlayer->pev, m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 24 + gpGlobals->v_right * 6 + gpGlobals->v_up * -7, gpGlobals->v_forward * 4000 ); FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?AK74_GRENADE_SOLID:AK74_GRENADE, 1, FIREGUN_AK74 ); if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= 14; m_pPlayer->pev->punchangle.y -= 6; } m_flNextPrimaryAttack = gpGlobals->time + 1; m_flNextSecondaryAttack = gpGlobals->time + 2; m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT (5, 8); }
void CAK74::PrimaryAttack() { if (m_iClip <= 0) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->time + 0.5; return; } m_iClip--; m_iFiredAmmo++; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); m_pPlayer->FireMagnumBullets(m_pPlayer->GetGunPosition(), gpGlobals->v_forward, (m_pPlayer->pev->flags & FL_DUCKING)?VECTOR_CONE_4DEGREES:VECTOR_CONE_5DEGREES, 16384, BULLET_762, m_pPlayer->pev); FX_FireGun( m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?AK74_SHOOT_SOLID:AK74_SHOOT, 0, FIREGUN_AK74 ); m_flNextPrimaryAttack = gpGlobals->time + 0.1; m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT (8, 12); if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= RANDOM_FLOAT(-2,3); m_pPlayer->pev->punchangle.y -= 0.5; } }
void CFLAMETHROWER::PrimaryAttack( void ) { if (m_pPlayer->pev->waterlevel == 3 || m_iClip <= 0 || burn==FALSE) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.5; return; } m_iClip--; m_iFiredAmmo++; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); if ( gpGlobals->time >= m_flShootTime ) { SendWeaponAnim( FLAMETHROWER_FIRE ); m_flShootTime = gpGlobals->time + 1; } UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); CFlame::ShootFlame( m_pPlayer->pev, m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 24 + gpGlobals->v_right * 2 + gpGlobals->v_up * -8, gpGlobals->v_forward * 900 ); m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->time + 0.1; m_flTimeWeaponIdle = gpGlobals->time + 5; }
void CFlakcannon::PrimaryAttack() { if (m_pPlayer->pev->waterlevel == 3 || m_iClip <= 0) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.5; return; } m_iClip--; m_iFiredAmmo++; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); for ( int i = 0; i < 10; i++ ) { Vector vecSrc = m_pPlayer->GetGunPosition() + gpGlobals->v_forward * 24 + gpGlobals->v_right * 4 + gpGlobals->v_right * 2 * cos (M_PI * i * 2.0f / 10) + gpGlobals->v_up * -6 + gpGlobals->v_up * 2 * sin (M_PI * i * 2.0f / 10); CShrapnel::ShootShrapnel(m_pPlayer->pev, vecSrc, gpGlobals->v_forward * 10000); } if (m_iClip) FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?FLAKCANNON_FIRE_SOLID:FLAKCANNON_FIRE, 0, FIREGUN_FLAKCANNON ); else FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?FLAKCANNON_FIRE_SOLID_LAST:FLAKCANNON_FIRE_LAST, 0, FIREGUN_FLAKCANNON ); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 2; m_flTimeWeaponIdle = gpGlobals->time + 5; if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= 6; m_pPlayer->pev->punchangle.y -= 3; } }
void CFlakcannon::SecondaryAttack() { if (m_iClip <= 0) { PlayEmptySound(); m_flNextSecondaryAttack = gpGlobals->time + 0.5; return; } m_iClip--; m_iFiredAmmo++; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); CFlakBomb::ShootFlakBomb( m_pPlayer->pev, m_pPlayer->GetGunPosition() + gpGlobals->v_forward * 24 + gpGlobals->v_right * 4 + gpGlobals->v_up * -6, gpGlobals->v_forward * 1800); if (m_iClip) FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?FLAKCANNON_FIRE_SOLID:FLAKCANNON_FIRE, 1, FIREGUN_FLAKCANNON ); else FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?FLAKCANNON_FIRE_SOLID_LAST:FLAKCANNON_FIRE_LAST, 1, FIREGUN_FLAKCANNON ); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 2; m_flTimeWeaponIdle = gpGlobals->time + 5; if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= 6; m_pPlayer->pev->punchangle.y -= 3; } }
void Cu2::FireBurst() { if (m_pPlayer->pev->waterlevel == 3 || m_iClip <= 0) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.5; return; } m_iClip--; m_iFiredAmmo++; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); m_pPlayer->FireMagnumBullets(m_pPlayer->GetGunPosition(), gpGlobals->v_forward, (m_pPlayer->pev->flags & FL_DUCKING)?VECTOR_CONE_1DEGREES:VECTOR_CONE_2DEGREES, 16384, BULLET_556, m_pPlayer->pev); FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?U2_FIRE_SOLID:U2_FIRE, 0, FIREGUN_U2 ); if (m_iChargeLevel == 1) m_flTimeWeaponIdle = m_flNextPrimaryAttack = gpGlobals->time + 0.3; else m_flTimeWeaponIdle = m_flNextPrimaryAttack = gpGlobals->time + 0.095; if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= 1.1; m_pPlayer->pev->punchangle.y -= 0.3; } }
void Cu2::GrenadeLauncher( void ) { if (m_pPlayer->pev->waterlevel == 3 || m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType] <= 0) { PlayEmptySound( ); m_flNextSecondaryAttack = gpGlobals->time + 0.5; return; } m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]--; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); CU2Momma::ShootU2Momma( m_pPlayer->pev, m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 24 + gpGlobals->v_right * 10 + gpGlobals->v_up * -12, gpGlobals->v_forward * 900, 1 ); FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?U2_FIRE_GRENADE_SOLID:U2_FIRE_GRENADE, 1, FIREGUN_U2 ); m_flNextPrimaryAttack = gpGlobals->time + 1; m_flNextSecondaryAttack = gpGlobals->time + 2; m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT (5, 8); if (!m_pPlayer->m_fHeavyArmor) { m_pPlayer->pev->punchangle.x -= 15; m_pPlayer->pev->punchangle.y -= 5; } }
void CFamas::PrimaryAttack() { if( m_pPlayer->pev->waterlevel == 3 ) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } BOOL burstMode = FBitSet( m_fWeaponState, WEAPONSTATE_FAMAS_BURST_MODE ); if( !FBitSet( m_pPlayer->pev->flags, FL_ONGROUND ) ) { FamasFire( m_flAccuracy * 0.3 + 0.03, 0.0825, FALSE, burstMode ); } else if( m_pPlayer->pev->velocity.Length2D() > 140 ) { FamasFire( m_flAccuracy * 0.07 + 0.030, 0.0825, FALSE, burstMode ); } else { FamasFire( m_flAccuracy * 0.02, 0.0825, FALSE, burstMode ); } }
void CRpg::PrimaryAttack() { if (m_iClip) { m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_iBody = 1; //hide rocket in laubcher SendWeaponAnim(RPG_FIRE); // player "shoot" animation m_pPlayer->SetAnimation(PLAYER_ATTACK1); UTIL_MakeVectors(m_pPlayer->pev->v_angle); Vector vecSrc = m_pPlayer->GetGunPosition() + gpGlobals->v_forward * 16 + gpGlobals->v_right * 8 + gpGlobals->v_up * -8; CRpgRocket *pRocket = CRpgRocket::Create(vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this); UTIL_MakeVectors(m_pPlayer->pev->v_angle);// RpgRocket::Create stomps on globals, so remake. pRocket->pev->velocity = pRocket->pev->velocity + gpGlobals->v_forward * DotProduct(m_pPlayer->pev->velocity, gpGlobals->v_forward); // firing RPG no longer turns on the designator. ALT fire is a toggle switch for the LTD. // Ken signed up for this as a global change (sjb) m_iClip--; m_flNextPrimaryAttack = UTIL_GlobalTimeBase() + 1.5; m_flTimeWeaponIdle = UTIL_GlobalTimeBase() + 1.5; } else { PlayEmptySound(); m_flNextPrimaryAttack = UTIL_GlobalTimeBase() + 0.7;//no longer indicate fps :) } UpdateSpot(); }
void CFSniper::PrimaryAttack() { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if (m_iClip <= 0) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usFSniper ); //avec un délai pour l ejection de la cartouche PLAYBACK_EVENT_FULL ( 0, m_pPlayer->edict(), m_usFSniper, 27 / 25.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 1, 0 ); m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->Gunflash (); m_iClip--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_8DEGREES ); m_pPlayer->FireBullets( 1, vecSrc, vecAiming, Vector ( 0, 0, 0 )/*VECTOR_CONE_1DEGREES*/, 8192, BULLET_PLAYER_SNIPER, 1 ); if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_flNextPrimaryAttack = gpGlobals->time + 52 / 25.0; m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 ); }
void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim) { m_bDelayFire = true; m_iShotsFired++; m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 175.0) + 0.4; if (m_flAccuracy > 0.9) m_flAccuracy = 0.9; if (m_iClip <= 0) { if (m_fFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; } return; } m_iClip--; m_pPlayer->pev->effects |= EF_MUZZLEFLASH; #ifndef CLIENT_DLL m_pPlayer->SetAnimation(PLAYER_ATTACK1); #endif UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; Vector vecSrc = m_pPlayer->GetGunPosition(); Vector vecDir = m_pPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, flSpread, 8192, 2, BULLET_PLAYER_556MM, 32, 0.97, m_pPlayer->pev, FALSE, m_pPlayer->random_seed); int flags; #ifdef CLIENT_WEAPONS flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT_FULL(flags, m_pPlayer->edict(), m_usFireM249, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, (int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + flCycleTime; #ifndef CLIENT_DLL if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); #endif m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.6; if (!FBitSet(m_pPlayer->pev->flags, FL_ONGROUND)) KickBack(1.8, 0.65, 0.45, 0.125, 5.0, 3.5, 8); else if (m_pPlayer->pev->velocity.Length2D() > 0) KickBack(1.1, 0.5, 0.3, 0.06, 4.0, 3.0, 8); else if (FBitSet(m_pPlayer->pev->flags, FL_DUCKING)) KickBack(0.75, 0.325, 0.25, 0.025, 3.5, 2.5, 9); else KickBack(0.8, 0.35, 0.3, 0.03, 3.75, 3.0, 9); }
void CM16::PrimaryAttack() { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if (m_iClip <= 0) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usM16 ); m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->Gunflash (); m_iClip--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); // single player spread m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_4DEGREES, 8192, BULLET_PLAYER_M16, 2 ); if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_flNextPrimaryAttack = m_flNextPrimaryAttack + 0.1; if (m_flNextPrimaryAttack < gpGlobals->time) m_flNextPrimaryAttack = gpGlobals->time + 0.1; m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 ); }
void CPython::PrimaryAttack() { // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = 0.15; return; } if (m_iClip <= 0) { if (!m_fFireOnEmpty) Reload( ); else { EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav", 0.8, ATTN_NORM); m_flNextPrimaryAttack = 0.15; } return; } m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_iClip--; m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES ); Vector vecDir; vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_1DEGREES, 8192, BULLET_PLAYER_357, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed ); int flags; #if defined( CLIENT_WEAPONS ) flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usFirePython, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 ); if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) // HEV suit - indicate out of ammo condition m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_flNextPrimaryAttack = 0.75; m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); }
void CAWP::AWPFire( float flSpread, float flCycleTime, BOOL fUseSemi ) { if( m_pPlayer->pev->fov == 90 ) { flSpread += AWP_AJUSTED_SPREAD; } else { m_pPlayer->m_fResumeZoom = TRUE; m_pPlayer->m_iLastZoom = m_pPlayer->m_iFOV; m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; } if( m_iClip <= 0 ) { if( m_fFireOnEmpty ) { PlayEmptySound(); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; } /*! @todo Implements me : if( TheBots ) TheBots->OnEvent( EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer->pev, NULL ); */ return; } m_iClip--; m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); m_pPlayer->m_flEjectBrass = gpGlobals->time + AWP_EJECT_BRASSE_TIME; Vector vecDir = m_pPlayer->FireBullets3( m_pPlayer->GetGunPosition(), gpGlobals->v_forward, flSpread, 8192.0, AWP_PENETRATION, BULLET_PLAYER_338MAG, AWP_DAMAGE, AWP_RANGE_MODIFIER, m_pPlayer->pev, 0, m_pPlayer->random_seed ); PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usAwp, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, m_pPlayer->pev->punchangle.x * 100, m_pPlayer->pev->punchangle.x * 100, FALSE, FALSE ); m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + flCycleTime; if ( !m_iClip && m_pPlayer->m_rgAmmo[ m_iPrimaryAmmoType ] <= 0 ) { m_pPlayer->SetSuitUpdate( "!HEV_AMO0", FALSE, 0 ); } m_pPlayer->pev->punchangle.x -= 2.0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + AWP_IDLE_TIME; }
void CSaw :: Fire ( float nextattack ) { if (m_pPlayer->pev->waterlevel == 3 || m_iClip <= 0) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.15; return; } if ( m_iClip && m_pPlayer->pev->waterlevel != 3)//don't fire underwater { m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_iClip--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * 30; Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); Vector vecDir; //hide rounds on end tape // if(m_iClip < 9 && m_iClip) m_iBody++; // SendWeaponAnim( M249_SHOOT ); vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_357, 2, 0, m_pPlayer->pev, m_pPlayer->random_seed ); PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usSaw, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 ); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + nextattack; if ( m_flNextPrimaryAttack < UTIL_WeaponTimeBase() ) m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + nextattack + 0.02; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT ( 10, 15 ); } else { PlayEmptySound( ); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; } }
void CG3SG1::G3SG1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim) { if (m_pPlayer->pev->fov == 90) flCycleTime += 0.025; if (m_flLastFire) { m_flAccuracy = (gpGlobals->time - m_flLastFire) * 0.3 + 0.55; if (m_flAccuracy > 0.98) m_flAccuracy = 0.98; } else m_flAccuracy = 0.98; m_flLastFire = gpGlobals->time; if (m_iClip <= 0) { if (m_fFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; } return; } m_iClip--; m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_pPlayer->SetAnimation(PLAYER_ATTACK1); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; Vector vecDir = FireBullets3(m_pPlayer->GetGunPosition(), gpGlobals->v_forward, flSpread, 8192, 3, BULLET_PLAYER_762MM, 80, 0.98, m_pPlayer->pev, TRUE, m_pPlayer->random_seed); int flags; #ifdef CLIENT_WEAPONS flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT_FULL(flags, ENT(m_pPlayer->pev), m_usFireG3SG1, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, (int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.y * 100), TRUE, FALSE); m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + flCycleTime; if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8; m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_pPlayer->random_seed + 4, 2.75, 3.25) + m_pPlayer->pev->punchangle.x * 0.25; m_pPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_pPlayer->random_seed + 5, -1.25, 1.5); }
void CM3::PrimaryAttack() { if (m_iClip <= 0) { PlayEmptySound(); m_flNextPrimaryAttack = 0.15; return; } SendWeaponAnim( M3_SHOOT1 ); m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH; EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_WEAPON,"weapons/m3-1.wav", 1.0, ATTN_NORM, 0, 100 ); m_iClip -= 1; Vector vecSrc( m_pPlayer->GetGunPosition() ); Vector vecAim( m_pPlayer->GetAutoaimVector( AUTOAIM_2DEGREES ) ); Vector vecAcc( 0.08716, 0.04362, 0.00 ); Vector vecDir; vecDir = m_pPlayer->FireBulletsPlayer( 9, vecSrc, vecAim, vecAcc, 8192,0, 0, 20, m_pPlayer->pev, m_pPlayer->random_seed ); #ifndef CLIENT_DLL MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, vecSrc ); WRITE_BYTE( TE_DLIGHT ); WRITE_COORD( vecSrc.x ); WRITE_COORD( vecSrc.y ); WRITE_COORD( vecSrc.z ); WRITE_BYTE( 30 ); WRITE_BYTE( 210 ); WRITE_BYTE( 200 ); WRITE_BYTE( 60 ); WRITE_BYTE( 1 ); WRITE_BYTE( 1 ); MESSAGE_END(); #endif if( !LeftSpread ) LeftSpread = 1; m_pPlayer->pev->punchangle.x -= 5; PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_event, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, (m_iClip ? 0 : 1), 0 ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.875; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085); }
void CWeaponMP5::PrimaryAttack( void ) { const CSDKWeaponInfo &pWeaponInfo = GetSDKWpnData(); CSDKPlayer *pPlayer = GetPlayerOwner(); float flCycleTime = pWeaponInfo.m_flCycleTime; bool bPrimaryMode = true; float flSpread = 0.01f; // more spread when jumping if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) flSpread = 0.05f; pPlayer->m_iShotsFired++; // Out of ammo? if ( m_iClip1 <= 0 ) { if (m_bFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->curtime + 0.2; } } SendWeaponAnim( ACT_VM_PRIMARYATTACK ); m_iClip1--; // player "shoot" animation pPlayer->SetAnimation( PLAYER_ATTACK1 ); FX_FireBullets( pPlayer->entindex(), pPlayer->Weapon_ShootPosition(), pPlayer->EyeAngles() + pPlayer->GetPunchAngle(), GetWeaponID(), bPrimaryMode?Primary_Mode:Secondary_Mode, CBaseEntity::GetPredictionRandomSeed() & 255, flSpread ); pPlayer->DoMuzzleFlash(); m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->curtime + flCycleTime; if (!m_iClip1 && pPlayer->GetAmmoCount( m_iPrimaryAmmoType ) <= 0) { // HEV suit - indicate out of ammo condition pPlayer->SetSuitUpdate("!HEV_AMO0", false, 0); } // start idle animation in 5 seconds SetWeaponIdleTime( gpGlobals->curtime + 5.0 ); }
void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim) { if (m_pPlayer->pev->fov != 90) { m_pPlayer->m_bResumeZoom = true; m_pPlayer->m_iLastZoom = m_pPlayer->m_iFOV; m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; } else flSpread += 0.025; if (m_iClip <= 0) { if (m_fFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; } return; } m_iClip--; m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_pPlayer->SetAnimation(PLAYER_ATTACK1); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); m_pPlayer->m_flEjectBrass = gpGlobals->time + 0.56; m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; Vector vecDir = FireBullets3(m_pPlayer->GetGunPosition(), gpGlobals->v_forward, flSpread, 8192, 3, BULLET_PLAYER_762MM, 75, 0.98, m_pPlayer->pev, TRUE, m_pPlayer->random_seed); int flags; #ifdef CLIENT_WEAPONS flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT_FULL(flags, ENT(m_pPlayer->pev), m_usFireScout, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x * 1000, vecDir.y * 1000, (int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.x * 100), FALSE, FALSE); m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + flCycleTime; if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8; m_pPlayer->pev->punchangle.x -= 2; }
bool CWeaponBaseGun::BaseGunFire(float flSpread, float flCycleTime, bool bPrimaryMode) { CMomentumPlayer *pPlayer = GetPlayerOwner(); if (!pPlayer) return false; m_bDelayFire = true; pPlayer->m_iShotsFired++; // Out of ammo? #ifdef WEAPONS_USE_AMMO if (m_iClip1 <= 0) { if (m_bFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->curtime + 0.2; } return false; } m_iClip1--; #endif SendWeaponAnim(ACT_VM_PRIMARYATTACK); // player "shoot" animation pPlayer->SetAnimation(PLAYER_ATTACK1); FX_FireBullets(pPlayer->entindex(), pPlayer->Weapon_ShootPosition(), pPlayer->EyeAngles() + 2.0f * pPlayer->GetPunchAngle(), GetWeaponID(), bPrimaryMode ? Primary_Mode : Secondary_Mode, CBaseEntity::GetPredictionRandomSeed() & 255, flSpread); DoFireEffects(); m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->curtime + flCycleTime; #ifdef WEAPONS_USE_AMMO if (!m_iClip1 && pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0) { // HEV suit - indicate out of ammo condition pPlayer->SetSuitUpdate("!HEV_AMO0", false, 0); } #endif SetWeaponIdleTime(gpGlobals->curtime + m_flTimeToIdleAfterFire); return true; }
void CRpg::PrimaryAttack() { if ( m_iClip ) { m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; #ifndef CLIENT_DLL // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors( m_pPlayer->pev->v_angle ); Vector vecSrc = m_pPlayer->GetGunPosition( ) + gpGlobals->v_forward * 16 + gpGlobals->v_right * 8 + gpGlobals->v_up * -8; CRpgRocket *pRocket = CRpgRocket::CreateRpgRocket( vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this ); UTIL_MakeVectors( m_pPlayer->pev->v_angle );// RpgRocket::Create stomps on globals, so remake. pRocket->pev->velocity = pRocket->pev->velocity + gpGlobals->v_forward * DotProduct( m_pPlayer->pev->velocity, gpGlobals->v_forward ); #endif // firing RPG no longer turns on the designator. ALT fire is a toggle switch for the LTD. // Ken signed up for this as a global change (sjb) int flags; #if defined( CLIENT_WEAPONS ) flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT( flags, m_pPlayer->edict(), m_usRpg ); // Fograin92 EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/rocketfire1.wav", 0.80, ATTN_NORM); m_iClip--; m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 1.5; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5; } else { PlayEmptySound( ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; } UpdateSpot( ); }
void CGauss::PrimaryAttack() { if (m_pPlayer->pev->waterlevel == 3 || m_iClip <= 0) { PlayEmptySound(3); m_flNextPrimaryAttack = gpGlobals->time + 0.5; return; } m_iClip -= 2; m_iFiredAmmo+=2; m_fPrimaryFire = TRUE; StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.25; }
void CShotgun::PrimaryAttack() { if (m_pPlayer->pev->waterlevel == 3 || m_iClip <= 0) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->time + 0.5; return; } //LLAPb begin if (m_fInSpecialReload) { SendWeaponAnim( SHOTGUN_PUMP ); m_flNextPrimaryAttack = m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.7; if(m_iClip<8 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] && m_fInSpecialReload == 2) { m_iClip += 1; m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= 1; } m_fInSpecialReload = 0; return; } //LLAPb end m_iClip--; m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); for (int i=0; i<8; i++) m_pPlayer->FireMagnumBullets(m_pPlayer->GetGunPosition(), gpGlobals->v_forward, (m_pPlayer->pev->flags & FL_DUCKING)?VECTOR_CONE_10DEGREES:VECTOR_CONE_11DEGREES, 16384, BULLET_BUCKSHOT, m_pPlayer->pev); FX_FireGun(m_pPlayer->pev->v_angle, m_pPlayer->entindex(), (m_pPlayer->m_fHeavyArmor)?SHOTGUN_FIRE_SOLID:SHOTGUN_FIRE, m_pPlayer->m_fHeavyArmor?1:0, FIREGUN_SHOTGUN ); SetThink( shellcasing ); (m_pPlayer->m_fHeavyArmor)?pev->nextthink = gpGlobals->time + 0.25:pev->nextthink = gpGlobals->time + 0.5; if (m_iClip != 0) m_flPumpTime = gpGlobals->time + 0.5; (m_pPlayer->m_fHeavyArmor)?m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5:m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.75; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1; m_fInSpecialReload = 0; }