void CSpammer::Update(float frameTime, uint32 frameId) { BaseFiremode::Update(frameTime, frameId); UpdatePotentialTargets(); switch (m_state) { case EState_None: m_nextFireTimer -= frameTime; if (m_nextFireTimer < 0.0f) { if (m_firingPending) StartFire(); m_nextFireTimer = 0.0f; } break; case EState_LoadingIn: UpdateLoadIn(frameTime); break; case EState_Bursting: UpdateBurst(frameTime); break; } }
void CChronosceptor::WeaponIdle( void ) { UpdateScreen(); if ( gpGlobals->time >= m_flShockTime ) { EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/chronosceptor_idle.wav", 0.9, ATTN_NORM ); m_flShockTime = gpGlobals->time +1.6; } if (m_flTimeWeaponIdle > gpGlobals->time) return; if (m_fInAttack==1) { StartFire(); m_fInAttack = 0; return; } else if (m_fInAttack==2) { DisarmClip(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.6; return; } switch (RANDOM_LONG(0,1)) { case 0: SendWeaponAnim( CHRONO_IDLE ); break; case 1: SendWeaponAnim( CHRONO_IDLE2 ); break; } m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 ); }
//------------------------------------------------------------------------------ // Purpose : Input handler for starting the fire. //------------------------------------------------------------------------------ void CFire::InputStartFire( inputdata_t &inputdata ) { if ( !m_bEnabled ) return; StartFire(); }
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; }
bool CWeapon::OnActionAttackSecondary(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if(!m_modifying) { bool isDualWield = false; CWeapon *dualWield = NULL; GetDualWieldInfo(this,isDualWield,&dualWield); if (isDualWield) { COffHand * offHandWeapon = NULL; bool isOffHandSelected = false; GetOffHandInfo(this,isOffHandSelected,&offHandWeapon); if (activationMode == eAAM_OnPress) { if(!PreActionAttack(true)) { m_fire_alternation = false; if(!IsWeaponRaised())// && CanFire()) { StartFire(); } /*else if(OutOfAmmo(false)) Reload();*/ m_requestedFire = true; } } else if (activationMode == eAAM_OnRelease) { PreActionAttack(false); // Don't stop slave!!! if (m_fm) m_fm->StopFire(); //StopFire(actorId); m_requestedFire = false; } } else if (m_fm && activationMode == eAAM_OnPress) { m_fm->StartSecondaryFire(actorId); } } return true; }
void CGluongun::Holster( ) { if (m_fInAttack > 0) StartFire(); m_fInReload = FALSE; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.6; SendWeaponAnim( GLUONGUN_HOLSTER ); m_fInAttack = 0; }
void CGauss::Holster( ) { if (m_fInAttack > 0) { STOP_SOUND( ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gauss_charge.wav" ); StartFire(); } m_fInReload = FALSE; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.6; SendWeaponAnim( GAUSS_HOLSTER ); m_fInAttack = 0; }
void CGauss::WeaponIdle( void ) { ResetEmptySound( ); // play aftershock static discharge if ( m_pPlayer->m_flPlayAftershock && m_pPlayer->m_flPlayAftershock < gpGlobals->time ) { switch (RANDOM_LONG(0,3)) { case 0: EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro4.wav", RANDOM_FLOAT(0.7, 0.8), ATTN_NORM); break; case 1: EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro5.wav", RANDOM_FLOAT(0.7, 0.8), ATTN_NORM); break; case 2: EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro6.wav", RANDOM_FLOAT(0.7, 0.8), ATTN_NORM); break; case 3: break; // no sound } m_pPlayer->m_flPlayAftershock = 0.0; } if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) return; if (m_fInAttack != 0) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0; } else { int iAnim; float flRand = RANDOM_FLOAT(0, 1); if (flRand <= 0.5) { iAnim = GAUSS_IDLE; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); } else if (flRand <= 0.75) { iAnim = GAUSS_IDLE2; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); } else { iAnim = GAUSS_FIDGET; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3; } return; SendWeaponAnim( iAnim ); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CFire::Activate( void ) { BaseClass::Activate(); //See if we should start active if ( !m_bDidActivate && ( m_spawnflags & SF_FIRE_START_ON ) ) { m_flHeatLevel = m_flMaxHeat; StartFire(); } m_bDidActivate = true; }
//-------------------------------------------------------- void CWeapon::OnAnimationEventStartFire(const char* szCustomParameter) { if (!m_animationFiringLocator.IsSet()) { const float fAutoStopTimer = szCustomParameter ? static_cast<float>(atof(szCustomParameter)) : 0.0f; m_animationFiringLocator.Set(); StartFire(); // If the parameter is a negative value the fire is not automatically stopped. This is dangerous, but could be useful // in some cases when we know the anim can't be interrupted before the following OnAnimationEventStopFire if (fAutoStopTimer >= 0.0f) GetScheduler()->TimerAction(fAutoStopTimer, CSchedulerAction<AnimationEventFireAutoStop>::Create(AnimationEventFireAutoStop(*this)), false); } }
//--------------------------------------------------------- //Controller input (primary fire) bool CWeapon::OnActionAttackPrimary(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if (activationMode == eAAM_OnPress && (!gEnv->bMultiplayer || m_weaponNextShotTimer <= 0.f)) { if(PreActionAttack(true)) return true; StartFire(); } else if(activationMode == eAAM_OnHold) { if((!gEnv->bMultiplayer || m_weaponNextShotTimer <= 0.f) && m_fm && m_fm->CanFire() && !m_fm->IsFiring() && !IsDeselecting() && !CheckSprint()) { StartFire(); } } else { PreActionAttack(false); StopFire(); } return true; }
void CCinematicWeapon::OnAction( EntityId actorId, const ActionId& actionId, int activationMode, float value ) { const CGameActions& gameActions = g_pGame->Actions(); const bool fireAction = (actionId == gameActions.attack1_cine) || (actionId == gameActions.attack2_cine); if (fireAction) { if (activationMode == eAAM_OnPress) { StartFire(); } else if(activationMode == eAAM_OnHold) { if((m_fm != NULL) && !m_fm->IsFiring() && m_fm->CanFire()) { StartFire(); } } else { StopFire(); } } }
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 CGluongun::WeaponIdle( void ) { pev->skin = (m_iClip/2); if (m_fInAttack != 0) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0; } if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) return; SendWeaponAnim(RANDOM_LONG(GLUONGUN_IDLE, GLUONGUN_IDLE2)); m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT (15, 25); }
void CFire::AddHeat( float heat, bool selfHeat ) { if ( m_bEnabled ) { if ( !selfHeat ) { if ( IsBurning() ) { // scale back the incoming heat from surrounding fires // if I've already ignited heat *= fire_incomingheatscale.GetFloat(); } } m_lastDamage = gpGlobals->curtime + 0.5; bool start = m_flHeatLevel <= 0 ? true : false; if ( m_flHeatAbsorb > 0 ) { float absorbDamage = heat * fire_absorbrate.GetFloat(); if ( absorbDamage > m_flHeatAbsorb ) { heat -= m_flHeatAbsorb / fire_absorbrate.GetFloat(); m_flHeatAbsorb = 0; } else { m_flHeatAbsorb -= absorbDamage; heat = 0; } } m_flHeatLevel += heat; if ( start && m_flHeatLevel > 0 && m_hEffect == NULL ) { StartFire(); } if ( m_flHeatLevel > m_flMaxHeat ) m_flHeatLevel = m_flMaxHeat; } }
void CGauss::WeaponIdle( void ) { if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) return; if (m_fInAttack != 0) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0; } else { int iAnim; switch ( RANDOM_LONG( 0, 2 ) ) { case 0: iAnim = GAUSS_IDLE; break; case 1: iAnim = GAUSS_IDLE2; break; default: case 2: iAnim = GAUSS_FIDGET; break; } SendWeaponAnim( iAnim ); m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 ); } }
void AShooterWeapon::ServerStartFire_Implementation() { StartFire(); }
//-------------------------------------------------------------------- bool CWeapon::OnActionAttack(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if(!m_modifying) { if(IsTwoHand()) { COffHand * offHandWeapon = NULL; bool isOffHandSelected = false; GetOffHandInfo(this,isOffHandSelected,&offHandWeapon); if(offHandWeapon && (offHandWeapon->GetOffHandState()&(eOHS_HOLDING_GRENADE|eOHS_SWITCHING_GRENADE|eOHS_PICKING_ITEM))) return false; } if (activationMode == eAAM_OnPress) { if(PreActionAttack(true)) return true; bool isDualWield = false; CWeapon *dualWield = NULL; GetDualWieldInfo(this,isDualWield,&dualWield); if (isDualWield) { m_fire_alternation = !m_fire_alternation; m_requestedFire = true; if (m_fire_alternation || !dualWield->CanFire()) { if(!IsWeaponRaised() && CanFire()) StartFire(); else if(!dualWield->IsWeaponRaised()) dualWield->StartFire(); } else if (dualWield->CanFire()) { if(!dualWield->IsWeaponRaised() && dualWield->CanFire()) dualWield->StartFire(); else if(!IsWeaponRaised()) StartFire(); } else if(OutOfAmmo(false)) { Reload(); dualWield->Reload(); } } else { if(!m_weaponRaised) StartFire(); m_requestedFire = true; } } else if (activationMode == eAAM_OnRelease) { PreActionAttack(false); StopFire(); m_requestedFire = false; } } return true; }
void CGauss::SecondaryAttack() { entvars_t *pevOwner = VARS( pev->owner ); if ( m_pPlayer->pev->waterlevel == 3 ) { if ( m_fInAttack != 0 ) { ::WaterRadiusDamage( pev->origin, pev, pevOwner, (dmg_gauss_secondary.value*2) * (mp_wpn_power.value/100), (dmg_gauss_secondary.value*4) * (mp_wpn_power.value/100), CLASS_NONE, DMG_SHOCK | DMG_NEVERGIB); EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/electro4.wav", 0.55, ATTN_NORM); m_iClip = 0; SendWeaponAnim( GAUSS_IDLE ); m_fInAttack = 0; } else { PlayEmptySound(3); } m_flNextSecondaryAttack = m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.5; return; } if ( m_fInAttack == 0 ) { if ( m_iClip <= 0 ) { PlayEmptySound(3); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; return; } m_fPrimaryFire = FALSE; m_iClip-=2; m_iFiredAmmo++; m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase(); SendWeaponAnim( GAUSS_SPINUP ); m_fInAttack = 1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5; m_pPlayer->m_flStartCharge = gpGlobals->time; m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + GetFullChargeTime(); EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gauss_charge.wav",1.0 , ATTN_NORM, 0, 110 ); m_iSoundState = SND_CHANGE_PITCH; if ( m_iClip <= 0 ) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1; m_iClip = 0; return; } } else if (m_fInAttack == 1) { if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase()) { SendWeaponAnim( GAUSS_SPIN ); m_fInAttack = 2; } } else { // during the charging process, eat one bit of ammo every once in a while if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flNextAmmoBurn && m_pPlayer->m_flNextAmmoBurn != 1000 ) { m_iClip-=2; m_iFiredAmmo++; m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase() + 0.7; } if ( m_iClip <= 0 ) { // out of ammo! force the gun to fire StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1; m_iClip = 0; return; } if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flAmmoStartCharge ) { // don't eat any more ammo after gun is fully charged. m_pPlayer->m_flNextAmmoBurn = 1000; } int pitch = ( gpGlobals->time - m_pPlayer->m_flStartCharge ) * ( 150 / GetFullChargeTime() ) + 100; if ( pitch > 250 ) pitch = 250; if ( m_iSoundState == 0 ) EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gauss_charge.wav", 1.0, ATTN_NORM, m_iSoundState, pitch); m_iSoundState = SND_CHANGE_PITCH; if ( m_pPlayer->m_flStartCharge < gpGlobals->time - 20 ) { // Player charged up too long. Zap him. EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro4.wav", 1.0, ATTN_NORM, 0, 80 + RANDOM_LONG(0,0x3f)); EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/electro6.wav", 1.0, ATTN_NORM, 0, 75 + RANDOM_LONG(0,0x3f)); STOP_SOUND( ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gauss_charge.wav" ); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->TakeDamage( VARS(eoNullEntity), VARS(eoNullEntity), 105, DMG_SHOCK | DMG_NEVERGIB ); UTIL_ScreenFade( m_pPlayer, Vector(255,128,0), 2, 0.5, 128, FFADE_IN ); SendWeaponAnim( GAUSS_IDLE ); return; } } }
void AUPWeapon::UP_StartFire(uint8 FireMode) { StartFire(FireMode); }
//-------------------------------------------------------------------- bool CWeapon::OnActionAttack(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if(!m_modifying) { COffHand * offHandWeapon = NULL; bool isOffHandSelected = false; GetOffHandInfo(this,isOffHandSelected,&offHandWeapon); if(IsTwoHand()) { if(offHandWeapon && (offHandWeapon->GetOffHandState()&(eOHS_HOLDING_GRENADE|eOHS_SWITCHING_GRENADE|eOHS_PICKING_ITEM))) return false; } if (activationMode == eAAM_OnPress) { if(PreActionAttack(true)) return true; bool isDualWield = false; CWeapon *dualWield = NULL; GetDualWieldInfo(this,isDualWield,&dualWield); // EXPANSION: Dino has rewritten dual wield control! /*if (isDualWield) { m_fire_alternation = !m_fire_alternation; m_requestedFire = true; if (!m_fire_alternation && dualWield->OutOfAmmo(false) && dualWield->CanReload()) { dualWield->Reload(); return true; } else if(m_fire_alternation && OutOfAmmo(false) && CanReload()) { Reload(); return true; } if (m_fire_alternation || (!dualWield->CanFire() || !dualWield->IsSelected())) { if(!IsWeaponRaised() && CanFire()) StartFire(); else if(!dualWield->IsWeaponRaised() && dualWield->IsSelected()) dualWield->StartFire(); } else if (dualWield->CanFire()) { if(!dualWield->IsWeaponRaised() && dualWield->CanFire()) dualWield->StartFire(); else if(!IsWeaponRaised()) StartFire(); } }*/ // /EXPANSION if (isDualWield) { if (offHandWeapon && !(offHandWeapon->GetOffHandState() & (eOHS_INIT_STATE))) return false; m_fire_alternation = false; if (!dualWield->IsWeaponRaised())// && dualWield->CanFire()) { dualWield->StartFire(); } /* else if(dualWield->OutOfAmmo(false) && !dualWield->IsReloading()) { dualWield->Reload(); }*/ dualWield->m_requestedFire = true; } else { if(!m_weaponRaised) { StartFire(); } m_requestedFire = true; } } else if (activationMode == eAAM_OnRelease) { PreActionAttack(false); // EXP 1: Don't stop both slave and master simultaneously!!! //Stop slave if(IsDualWieldMaster()) { //FireSlave(actorId,false); CWeapon *dualWield = NULL; IItem *slave = GetDualWieldSlave(); if (slave && slave->GetIWeapon()) dualWield = static_cast<CWeapon *>(slave); if(dualWield) { dualWield->StopFire(); dualWield->m_requestedFire=false; } } else if (m_fm) { m_fm->StopFire(); m_requestedFire = false; } // StopFire(); // /EXP 1 } } return true; }
void CGauss::SecondaryAttack() { // don't fire underwater if ( m_pPlayer->pev->waterlevel == 3 ) { if ( m_fInAttack != 0 ) { EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro4.wav", 1.0, ATTN_NORM, 0, 80 + RANDOM_LONG(0,0x3f)); SendWeaponAnim( GAUSS_IDLE ); m_fInAttack = 0; } else { PlayEmptySound( ); } m_flNextSecondaryAttack = m_flNextPrimaryAttack = GetNextAttackDelay(0.5); return; } if ( m_fInAttack == 0 ) { if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 ) { EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav", 0.8, ATTN_NORM); m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; return; } m_fPrimaryFire = FALSE; m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;// take one ammo just to start the spin m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase(); // spin up m_pPlayer->m_iWeaponVolume = GAUSS_PRIMARY_CHARGE_VOLUME; SendWeaponAnim( GAUSS_SPINUP ); m_fInAttack = 1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5; m_pPlayer->m_flStartCharge = gpGlobals->time; m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + GetFullChargeTime(); PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 110, 0, 0, 0 ); m_iSoundState = SND_CHANGE_PITCH; } else if (m_fInAttack == 1) { if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase()) { SendWeaponAnim( GAUSS_SPIN ); m_fInAttack = 2; } } else { // during the charging process, eat one bit of ammo every once in a while if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flNextAmmoBurn && m_pPlayer->m_flNextAmmoBurn != 1000 ) { #ifdef CLIENT_DLL if ( bIsMultiplayer() ) #else if ( g_pGameRules->IsMultiplayer() ) #endif { m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--; m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase() + 0.1; } else { m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--; m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase() + 0.3; } } if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 ) { // out of ammo! force the gun to fire StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1; return; } if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flAmmoStartCharge ) { // don't eat any more ammo after gun is fully charged. m_pPlayer->m_flNextAmmoBurn = 1000; } int pitch = ( gpGlobals->time - m_pPlayer->m_flStartCharge ) * ( 150 / GetFullChargeTime() ) + 100; if ( pitch > 250 ) pitch = 250; // ALERT( at_console, "%d %d %d\n", m_fInAttack, m_iSoundState, pitch ); if ( m_iSoundState == 0 ) ALERT( at_console, "sound state %d\n", m_iSoundState ); PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, pitch, 0, ( m_iSoundState == SND_CHANGE_PITCH ) ? 1 : 0, 0 ); m_iSoundState = SND_CHANGE_PITCH; // hack for going through level transitions m_pPlayer->m_iWeaponVolume = GAUSS_PRIMARY_CHARGE_VOLUME; // m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1; if ( m_pPlayer->m_flStartCharge < gpGlobals->time - 10 ) { // Player charged up too long. Zap him. EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro4.wav", 1.0, ATTN_NORM, 0, 80 + RANDOM_LONG(0,0x3f)); EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/electro6.wav", 1.0, ATTN_NORM, 0, 75 + RANDOM_LONG(0,0x3f)); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; #ifndef CLIENT_DLL m_pPlayer->TakeDamage( VARS(eoNullEntity), VARS(eoNullEntity), 50, DMG_SHOCK ); UTIL_ScreenFade( m_pPlayer, Vector(255,128,0), 2, 0.5, 128, FFADE_IN ); #endif SendWeaponAnim( GAUSS_IDLE ); // Player may have been killed and this weapon dropped, don't execute any more code after this! return; } } }
void AFournoidWeapon::ServerStartFire_Implementation() { StartFire(); }
void CJaw::StartFire(const SProjectileLaunchParams& launchParams) { StartFire(); SetDestinationEntity(launchParams.trackingId); }
void AMagicBattleSoccerWeapon::ServerStartFire_Implementation() { StartFire(); }
//------------------------------------------------------------------------ void CPlant::NetStartFire() { StartFire(); }
void CGluongun::SecondaryAttack() { entvars_t *pevOwner = VARS( pev->owner ); if ( m_pPlayer->pev->waterlevel == 3 ) { if ( m_fInAttack != 0 ) { ::WaterRadiusDamage( pev->origin, pev, pevOwner, (dmg_gluon.value*WastedAmmo*2) * (mp_wpn_power.value/100), (dmg_gluon.value*WastedAmmo*4) * (mp_wpn_power.value/100), CLASS_NONE, DMG_ENERGYBLAST | DMG_NEVERGIB ); EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/electro4.wav", 0.55, ATTN_NORM); m_iClip = 0; SendWeaponAnim(GLUONGUN_IDLE); m_fInAttack = 0; } else { PlayEmptySound(3); } m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5; return; } if ( m_fInAttack == 0 ) { if ( m_iClip <= 0 ) { PlayEmptySound( ); m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5; return; } m_iClip-=2; WastedAmmo+=2; m_iFiredAmmo+=2; m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase(); pev->skin = (m_iClip/2); m_fInAttack = 1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5; m_pPlayer->m_flStartCharge = gpGlobals->time; m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + 3.2; EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gluongun_charge.wav",1.0 , ATTN_NORM, 0, 110 ); FX_FireGun(m_pPlayer->pev->angles, m_pPlayer->entindex(), GLUONGUN_CHARGE, 1, FIREGUN_GLUONGUN ); if ( m_iClip <= 0 ) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1; m_iClip = 0; return; } } else if (m_fInAttack == 1) { if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase()) { m_fInAttack = 2; } } else { // during the charging process, eat one bit of ammo every once in a while if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flNextAmmoBurn && m_pPlayer->m_flNextAmmoBurn != 1000 ) { m_iClip-=2; WastedAmmo+=2; m_iFiredAmmo+=2; m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase() + 0.8; pev->skin = (m_iClip/2); } if ( m_iClip <= 0 ) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1; m_iClip = 0; return; } if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flAmmoStartCharge ) m_pPlayer->m_flNextAmmoBurn = 1000; if ( m_pPlayer->m_flStartCharge < gpGlobals->time - 3.4) { StartFire(); m_fInAttack = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1; m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1; return; } } }