void CM249::WeaponIdle( void ) { if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase() ) { if ( m_fInSpecialReload ) { UpdateClip(); m_fInSpecialReload = 0; SendWeaponAnim( M249_RELOAD2 , UseDecrement() ? 1 : 0, pev->body ); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 111.0 / 45.0; m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 111.0 / 45.0; } else { ResetEmptySound( ); UpdateClip(); int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 ); if (flRand <= 0.8) { iAnim = M249_SLOWIDLE; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (45.0/9.0); } else { iAnim = M249_IDLE1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (74.0/12.0);// * RANDOM_LONG(2, 5); } SendWeaponAnim( iAnim , UseDecrement() ? 1 : 0, pev->body ); } } }
bool C4MouseControl::Init(int32_t iPlayer) { Clear(); Default(); Active = true; Player = iPlayer; InitCentered = false; UpdateClip(); return true; }
void CM249::Reload( void ) { if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == MAX_CLIP_M249) return; if (m_iClip != 50 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0 ) { UpdateClip(); m_fInSpecialReload = 1; DefaultReload( MAX_CLIP_M249, M249_RELOAD, 1.5, pev->body ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + (61 / 40)+(111 / 45); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 61 / 40; } }
void CM249::PrimaryAttack() { if ( m_fInSpecialReload ) return; // don't fire underwater if (m_pPlayer->pev->waterlevel == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = 0.15; return; } if (m_iClip <= 0) { UpdateClip(); PlayEmptySound(); m_flNextPrimaryAttack = 0.15; return; } m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_iClip--; UpdateClip(); m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); Vector vecDir; vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_4DEGREES, 8192, BULLET_PLAYER_556, 2, 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_usM249, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 ); // Fograin92: Server side sound switch( RANDOM_LONG(1,3) ) { case 1: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/saw_fire1.wav", 0.80, ATTN_NORM); break; case 2: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/saw_fire2.wav", 0.80, ATTN_NORM); break; case 3: EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/saw_fire3.wav", 0.80, ATTN_NORM); break; } 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 = UTIL_WeaponTimeBase() + 0.0675; if ( m_flNextPrimaryAttack < UTIL_WeaponTimeBase() ) m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.0675; if ( !FBitSet( m_pPlayer->pev->flags, FL_DUCKING ) ) { float flOldPlayerVel = m_pPlayer->pev->velocity.z; m_pPlayer->pev->velocity = m_pPlayer->pev->velocity + (50 * -gpGlobals->v_forward); m_pPlayer->pev->velocity.z = flOldPlayerVel; } m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 7.0 / 30.0; }
void CM249::Holster( int skiplocal /* = 0 */) { UpdateClip(); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; SendWeaponAnim( M249_HOLSTER, UseDecrement() ? 1 : 0, pev->body ); }
// Fograin92: Changed deploy function BOOL CM249::Deploy( ) { UpdateClip(); return DefaultDeploy( "models/v_saw.mdl", "models/p_saw.mdl", M249_DRAW, "mp5", UseDecrement() ? 1 : 0, pev->body ); }
void C4MouseControl::Clear() { Active = false; Selection.Clear(); UpdateClip(); // reset mouse clipping! }