//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponGaussGun::ItemPostFrame() { //Get the view kick CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); if ( !pPlayer ) return; if ( pPlayer->m_afButtonReleased & IN_ATTACK2 ) { if ( m_bCharging ) ChargedFire(); } #ifndef CLIENT_DLL m_flCoilVelocity = UTIL_Approach( m_flCoilMaxVelocity, m_flCoilVelocity, 10.0f ); m_flCoilAngle = UTIL_AngleMod( m_flCoilAngle + ( m_flCoilVelocity * gpGlobals->frametime ) ); static float fanAngle = 0.0f; fanAngle = UTIL_AngleMod( fanAngle + 2 ); //Update spinning bits SetBoneController( 0, fanAngle ); SetBoneController( 1, m_flCoilAngle ); #endif BaseClass::ItemPostFrame(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponGaussGun::IncreaseCharge() { if ( m_flNextChargeTime > gpGlobals->curtime ) return; CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( pOwner == NULL ) return; //Check our charge time if ( ( gpGlobals->curtime - m_flChargeStartTime ) > MAX_GAUSS_CHARGE_TIME ) { //Notify the player they're at maximum charge if ( m_bChargeIndicated == false ) { WeaponSound( SPECIAL2 ); m_bChargeIndicated = true; } #ifndef CLIENT_DLL if ( ( gpGlobals->curtime - m_flChargeStartTime ) > DANGER_GAUSS_CHARGE_TIME ) { //Damage the player WeaponSound( SPECIAL2 ); // Add DMG_CRUSH because we don't want any physics force pOwner->TakeDamage( CTakeDamageInfo( this, this, 25, DMG_SHOCK | DMG_CRUSH ) ); color32 gaussDamage = {255,128,0,128}; UTIL_ScreenFade( pOwner, gaussDamage, 0.2f, 0.2f, FFADE_IN ); m_flNextChargeTime = gpGlobals->curtime + random->RandomFloat( 0.5f, 2.5f ); } #endif return; } //Decrement power pOwner->RemoveAmmo( 1, m_iPrimaryAmmoType ); //Make sure we can draw power if ( pOwner->GetAmmoCount( m_iPrimaryAmmoType ) <= 0 ) { ChargedFire(); return; } m_flNextChargeTime = gpGlobals->curtime + GAUSS_CHARGE_TIME; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponGauss::ItemPostFrame( void ) { //Get the view kick CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); if ( pPlayer == NULL ) return; if ( pPlayer->m_afButtonReleased & IN_ATTACK2 ) { if ( m_bCharging ){ ChargedFire(); ChargedFireFirstBeam(); } } BaseClass::ItemPostFrame(); }
//----------------------------------------------------------------------------- // Purpose: // Input : *pSwitchingTo - // Output : Returns true on success, false on failure. //----------------------------------------------------------------------------- bool CWeaponGauss::Holster( CBaseCombatWeapon *pSwitchingTo ) { StopChargeSound(); if (m_bCharging == true ){ ChargedFire(); ChargedFireFirstBeam(); } m_bCharging = false; m_bChargeIndicated = false; if ( m_sndCharge != NULL ) { (CSoundEnvelopeController::GetController()).SoundFadeOut( m_sndCharge, 0.1f ); } m_sndCharge = NULL; StopChargeSound(); return BaseClass::Holster( pSwitchingTo ); }