/* ===================== CBaseEntity::FireBulletsPlayer Only produces random numbers to match the server ones. ===================== */ Vector CBaseEntity::FireBulletsPlayer ( ULONG cShots, Vector vecSrc, Vector vecDirShooting, Vector vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker, int shared_rand ) { float x = 0.0, y = 0.0, z; for ( ULONG iShot = 1; iShot <= cShots; iShot++ ) { if ( pevAttacker == NULL ) { // get circular gaussian spread do { x = RANDOM_FLOAT(-0.5, 0.5) + RANDOM_FLOAT(-0.5, 0.5); y = RANDOM_FLOAT(-0.5, 0.5) + RANDOM_FLOAT(-0.5, 0.5); z = x*x+y*y; } while (z > 1); } else { //Use player's random seed. // get circular gaussian spread x = UTIL_SharedRandomFloat( shared_rand + iShot, -0.5, 0.5 ) + UTIL_SharedRandomFloat( shared_rand + ( 1 + iShot ) , -0.5, 0.5 ); y = UTIL_SharedRandomFloat( shared_rand + ( 2 + iShot ), -0.5, 0.5 ) + UTIL_SharedRandomFloat( shared_rand + ( 3 + iShot ), -0.5, 0.5 ); z = x * x + y * y; } } return Vector ( x * vecSpread.x, y * vecSpread.y, 0.0 ); }
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); }
Vector UTIL_GetRandomSpreadDir(unsigned int inSeed, int inShotNumber, const Vector& inBaseDirection, const Vector& inRight, const Vector& inUp, const Vector& inSpread) { // Use player's random seed. // get circular gaussian spread float x = UTIL_SharedRandomFloat( inSeed + inShotNumber, -0.5, 0.5 ) + UTIL_SharedRandomFloat( inSeed + ( 1 + inShotNumber ) , -0.5, 0.5 ); float y = UTIL_SharedRandomFloat( inSeed + ( 2 + inShotNumber ), -0.5, 0.5 ) + UTIL_SharedRandomFloat( inSeed + ( 3 + inShotNumber ), -0.5, 0.5 ); float z = x * x + y * y; Vector theRandomDir = inBaseDirection + x * inSpread.x * inRight + y * inSpread.y * inUp; return theRandomDir; }
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 ); } }
void cNoSpread::GetSpreadXY(unsigned int seed, int future, float *velocity, float *vec) { float vecspread, speed; vec[0] = UTIL_SharedRandomFloat(seed + future, -0.5, 0.5) + UTIL_SharedRandomFloat(seed + 1 + future, -0.5, 0.5); vec[1] = UTIL_SharedRandomFloat(seed + 2 + future, -0.5, 0.5) + UTIL_SharedRandomFloat(seed + 3 + future, -0.5, 0.5); vecspread = GetVecSpread(velocity); vec[0] *= vecspread; vec[1] *= vecspread; return; }
BOOL CBasePlayerWeapon :: DefaultDeploy( char *szViewModel, char *szWeaponModel, int iAnim, char *szAnimExt, int skiplocal /* = 0 */, int body ) { m_pPlayer->TabulateAmmo(); m_pPlayer->pev->viewmodel = MAKE_STRING(szViewModel); m_pPlayer->pev->weaponmodel = MAKE_STRING(szWeaponModel); if( m_pPlayer->pev->team == 1 || m_pPlayer->pev->team == 2 ) pev->body = m_pPlayer->pev->team - 1; strcpy( m_pPlayer->m_szAnimExtention, szAnimExt ); SendWeaponAnim( iAnim, skiplocal, body ); m_flTimeWeaponIdle = 1.0; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; MESSAGE_BEGIN( MSG_ONE, gmsgScopeToggle, NULL, m_pPlayer->pev ); WRITE_BYTE( 0 ); MESSAGE_END(); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085); return TRUE; }
void CAUG::PrimaryAttack() { if( Scope ) { DefaultFire( m_pPlayer, 1, wepspread_s, 32, AUG_SHOOT1, "weapons/aug-1.wav", m_event, 20 ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1825; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085); } else { DefaultFire( m_pPlayer, 1, wepspread_s, 32, AUG_SHOOT1, "weapons/aug-1.wav", m_event, 20 ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.0825; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085); } }
void CPython::Holster( int skiplocal /* = 0 */ ) { if (m_fInZoom == TRUE) { m_pPlayer->b_EstaEnZoom = FALSE; #ifndef CLIENT_DLL if (!FStringNull (v_model) ) m_pPlayer->pev->viewmodel = v_model; else m_pPlayer->pev->viewmodel = MAKE_STRING("models/weapons/357/v_357.mdl"); #else if (!FStringNull (v_model) ) m_pPlayer->pev->viewmodel = v_model; else LoadVModel ( "models/weapons/357/v_357.mdl", m_pPlayer ); #endif m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 0; // 0 means reset to default fov m_fInZoom = FALSE; } m_fInReload = FALSE;// cancel any reload in progress. // if ( m_fInZoom ) // { // SecondaryAttack(); // } m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); SendWeaponAnim( PYTHON_IDLE1 );//PYTHON_HOLSTER }
void CGlock::WeaponIdle( void ) { ResetEmptySound( ); m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES ); if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return; // only idle if the slid isn't back if (m_iClip != 0) { int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0.0, 1.0 ); if (flRand <= 0.3 + 0 * 0.75) { iAnim = GLOCK_IDLE3; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 49.0 / 16; } else if (flRand <= 0.6 + 0 * 0.875) { iAnim = GLOCK_IDLE1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60.0 / 16.0; } else { iAnim = GLOCK_IDLE2; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 40.0 / 16.0; } SendWeaponAnim( iAnim, 1 ); } }
void CAK74::WeaponIdle( void ) { /* if (!FStringNull (v_model) ) { ALERT (at_console, "v_model is %s \n",STRING( v_model)); ALERT (at_console, "p_model is %s \n",STRING( p_model)); ALERT (at_console, "w_model is %s \n",STRING( w_model)); } */ ResetEmptySound( ); m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return; int iAnim; switch ( RANDOM_LONG( 0, 1 ) ) { case 0: iAnim = AK_NMC_IDLE1; break; default: case 1: iAnim = AK_NMC_IDLE2; break; } SendWeaponAnim( iAnim ); m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); // how long till we do this again. }
void CAK74::Reload( void ) { int iResult; if (m_iClip == 0) iResult = DefaultReload( 30, AK_NMC_RELOAD_B_VACIO, 2.40 ); else iResult = DefaultReload( 30, AK_NMC_RELOAD_B_VACIO, 2.40 ); /* { switch (RANDOM_LONG(0,3)) { case 0: iResult = DefaultReload( 28, AK_NMC_RELOAD_A, 2.06 ); break; case 1: iResult = DefaultReload( 19, AK_NMC_RELOAD_A, 2.06 ); break; case 2: iResult = DefaultReload( 30, AK_NMC_RELOAD_A, 2.06 ); break; case 3: iResult = DefaultReload( 30, AK_NMC_RELOAD_B, 2.06 ); break; } } */ if (iResult) { m_pPlayer->SetAnimation( PLAYER_RELOAD ); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); /* Vector vecSrc = m_pPlayer->GetGunPosition( ); CBaseEntity *pEntity = Create( "item_clip_rifle", vecSrc, pev->angles ); */ } //m_pPlayer->SetAnimation( PLAYER_RELOAD ); }
void CMP5::Holster( int skiplocal /* = 0 */ ) { m_fInReload = FALSE;// cancel any reload in progress. m_pPlayer->m_bIron = FALSE; m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); }
void CMP5::WeaponIdle( void ) { ResetEmptySound( ); m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return; int iAnim; switch ( RANDOM_LONG( 0, 1 ) ) { case 0: iAnim = MP5_LONGIDLE; break; default: case 1: iAnim = MP5_IDLE1; break; } SendWeaponAnim( iAnim ); m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); // how long till we do this again. }
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 ); } } }
void CMP5::Reload( void ) { // if( (m_pPlayer->pev->weaponanim == SD2_UNSUPRESS) || (m_pPlayer->pev->weaponanim == A2_SUPRESS) )//can't reload right now // return; if ( m_pPlayer->ammo_9mm <= 0 ) return; int iResult; if ( m_fDefaultAnim == SILENCER_OFF_FULLAUTO || m_fDefaultAnim == SILENCER_OFF_SEMI ) iResult = DefaultReload( 30, A2_RELOADLAST, 3.70 ); else iResult = DefaultReload( 30, SD2_RELOADLAST, 3.70 ); m_pPlayer->SetAnimation( PLAYER_RELOAD ); if (iResult) { m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); Vector vecSrc = m_pPlayer->GetGunPosition( ); CBaseEntity *pEntity = Create( "item_clip_rifle", vecSrc, pev->angles ); } }
void CEgon::WeaponIdle( void ) { ResetEmptySound( ); if ( m_flTimeWeaponIdle > gpGlobals->time ) return; if ( m_fireState != FIRE_OFF ) EndAttack(); int iAnim; float flRand = RANDOM_FLOAT(0,1); if ( flRand <= 0.5 ) { iAnim = EGON_IDLE1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); } else { iAnim = EGON_FIDGET1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3; } SendWeaponAnim( iAnim ); m_deployed = TRUE; }
void CTripmine::WeaponIdle( void ) { if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return; if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0 ) { SendWeaponAnim( TRIPMINE_DRAW ); } else { RetireWeapon(); return; } int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 ); if (flRand <= 0.25) { iAnim = TRIPMINE_IDLE1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 90.0 / 30.0; } else if (flRand <= 0.75) { iAnim = TRIPMINE_IDLE2; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60.0 / 30.0; } else { iAnim = TRIPMINE_FIDGET; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 100.0 / 30.0; } SendWeaponAnim( iAnim ); }
void CHgun::WeaponIdle( void ) { Reload( ); if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) return; int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 ); if (flRand <= 0.75) { iAnim = HGUN_IDLE1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 30.0 / 16 * (2); } else if (flRand <= 0.875) { iAnim = HGUN_FIDGETSWAY; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 40.0 / 16.0; } else { iAnim = HGUN_FIDGETSHAKE; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 35.0 / 16.0; } SendWeaponAnim( iAnim ); }
void CMP5::WeaponIdle( void ) { ResetEmptySound( ); m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) return; if (m_iClip != 0) { if ( m_fDefaultAnim == SILENCER_OFF_FULLAUTO || m_fDefaultAnim == SILENCER_OFF_SEMI ) { if (RANDOM_LONG(0,1)) SendWeaponAnim( A2_IDLE1 ); else SendWeaponAnim( A2_IDLE2 ); } else { if (RANDOM_LONG(0,1)) SendWeaponAnim( SD2_IDLE1 ); else SendWeaponAnim( SD2_IDLE2 ); } m_flTimeWeaponIdle = UTIL_SharedRandomFloat(m_pPlayer->random_seed, 10, 15); } }
void CSqueak::WeaponIdle( void ) { #ifndef CLIENT_DLL if ( gameplayMods::snarkPenguins.isActive() ) { MESSAGE_BEGIN( MSG_ONE, gmsgSetSkin, NULL, m_pPlayer->pev ); WRITE_BYTE( gameplayMods::snarkNuclear.isActive() ? 0 : 1 ); MESSAGE_END(); } #endif if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return; if (m_fJustThrown) { m_fJustThrown = 0; if ( !m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()] ) { RetireWeapon(); return; } SendWeaponAnim( SQUEAK_UP, 1, !gameplayMods::snarkNuclear.isActive() ); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); return; } int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 ); if (flRand <= 0.75) { iAnim = SQUEAK_IDLE1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 30.0 / 16 * (2); } else if (flRand <= 0.875) { iAnim = SQUEAK_FIDGETFIT; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 70.0 / 16.0; } else { iAnim = SQUEAK_FIDGETNIP; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 80.0 / 16.0; } SendWeaponAnim( iAnim, 1, !gameplayMods::snarkNuclear.isActive() ); }
void CShotgun::WeaponIdle( void ) { ResetEmptySound(); m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if( m_flPumpTime && m_flPumpTime < gpGlobals->time ) { // play pumping sound EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_ITEM, "weapons/scock1.wav", 1, ATTN_NORM, 0, 95 + RANDOM_LONG( 0, 0x1f ) ); m_flPumpTime = 0; } if( m_flTimeWeaponIdle < UTIL_WeaponTimeBase() ) { if( m_iClip == 0 && m_fInSpecialReload == 0 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] ) { Reload(); } else if( m_fInSpecialReload != 0 ) { if( m_iClip != 8 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] ) { Reload(); } else { // reload debounce has timed out SendWeaponAnim( SHOTGUN_PUMP ); // play cocking sound EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_ITEM, "weapons/scock1.wav", 1, ATTN_NORM, 0, 95 + RANDOM_LONG( 0, 0x1f ) ); m_fInSpecialReload = 0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5; } } else { int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 ); if( flRand <= 0.8 ) { iAnim = SHOTGUN_IDLE_DEEP; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + ( 60.0 / 12.0 );// * RANDOM_LONG( 2, 5 ); } else if( flRand <= 0.95 ) { iAnim = SHOTGUN_IDLE; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + ( 20.0 / 9.0 ); } else { iAnim = SHOTGUN_IDLE4; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + ( 20.0 / 9.0 ); } SendWeaponAnim( iAnim ); } } }
void CAK47::PrimaryAttack() { DefaultFire( m_pPlayer, 1, wepspread_s, 35, AK47_SHOOT1, "weapons/ak47-1.wav", m_event, 20 ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085); }
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 CTripmine::PrimaryAttack( void ) { if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) return; UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming = gpGlobals->v_forward; TraceResult tr; UTIL_TraceLine( vecSrc, vecSrc + vecAiming * 128, dont_ignore_monsters, ENT( m_pPlayer->pev ), &tr ); int flags; #ifdef CLIENT_WEAPONS flags = FEV_NOTHOST; #else flags = 0; #endif PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usTripFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, 0, 0 ); if (tr.flFraction < 1.0) { CBaseEntity *pEntity = CBaseEntity::Instance( tr.pHit ); if ( pEntity && !(pEntity->pev->flags & FL_CONVEYOR) ) { Vector angles = UTIL_VecToAngles( tr.vecPlaneNormal ); CBaseEntity *pEnt = CBaseEntity::Create( "monster_tripmine", tr.vecEndPos + tr.vecPlaneNormal * 8, angles, m_pPlayer->edict() ); m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--; // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 ) { // no more mines! RetireWeapon(); return; } } else { // ALERT( at_console, "no deploy\n" ); } } else { } m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.3; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); }
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); }
// Fograin92: The correct model will be deployed BOOL CSatchel::Deploy( ) { m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 ); if ( m_chargeReady ) return DefaultDeploy( "models/v_satchel_radio.mdl", "models/p_satchel_radio.mdl", SATCHEL_RADIO_DRAW, "hive" ); else return DefaultDeploy( "models/v_satchel.mdl", "models/p_satchel.mdl", SATCHEL_DRAW, "trip" ); }
void CDEAGLE::PrimaryAttack() { if(! ( m_pPlayer->m_afButtonPressed & IN_ATTACK ) ) return; DefaultFire( m_pPlayer, 1, wepspread_s, 47, DEAGLE_SHOOT1, "weapons/deagle-1.wav", m_event, 20 ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.18; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085); }
//========================================================= // StartFire- since all of this code has to run and then // call Fire(), it was easier at this point to rip it out // of weaponidle() and make its own function then to try to // merge this into Fire(), which has some identical variable names //========================================================= void CGauss::StartFire( void ) { float flDamage; UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle ); Vector vecAiming = gpGlobals->v_forward; Vector vecSrc = m_pPlayer->GetGunPosition( ); // + gpGlobals->v_up * -8 + gpGlobals->v_right * 8; if ( gpGlobals->time - m_pPlayer->m_flStartCharge > GetFullChargeTime() ) { flDamage = 200; } else { flDamage = 200 * (( gpGlobals->time - m_pPlayer->m_flStartCharge) / GetFullChargeTime() ); } if ( m_fPrimaryFire ) { // fixed damage on primary attack #ifdef CLIENT_DLL flDamage = 20; #else flDamage = gSkillData.plrDmgGauss; #endif } if (m_fInAttack != 3) { //ALERT ( at_console, "Time:%f Damage:%f\n", gpGlobals->time - m_pPlayer->m_flStartCharge, flDamage ); #ifndef CLIENT_DLL float flZVel = m_pPlayer->pev->velocity.z; if ( !m_fPrimaryFire ) { m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * flDamage * 5; } if ( !g_pGameRules->IsMultiplayer() ) { // in deathmatch, gauss can pop you up into the air. Not in single play. m_pPlayer->pev->velocity.z = flZVel; } #endif // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); } // time until aftershock 'static discharge' sound m_pPlayer->m_flPlayAftershock = gpGlobals->time + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0.3, 0.8 ); Fire( vecSrc, vecAiming, flDamage ); }
void AvHBasePlayerWeapon::SetNextIdle(void) { float theRandomIdle = UTIL_SharedRandomFloat(this->m_pPlayer->random_seed, 10, 15); this->m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + theRandomIdle; // Just added these next two lines 8/8/01 (trying to fix prediction wackiness) if(this->m_flTimeWeaponIdle < 0) { this->m_flTimeWeaponIdle = theRandomIdle; } }
void CShotgun::WeaponIdle( void ) { ResetEmptySound( ); m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase() ) { if (m_iClip == 0 && m_InSpecialReload == ReloadState::NOT_RELOADING && m_pPlayer->m_rgAmmo[ PrimaryAmmoIndex() ]) { Reload( ); } else if (m_InSpecialReload != ReloadState::NOT_RELOADING ) { if (m_iClip != iMaxClip() && m_pPlayer->m_rgAmmo[ PrimaryAmmoIndex() ]) { Reload( ); } else { // reload debounce has timed out SendWeaponAnim( SHOTGUN_PUMP ); // play cocking sound EMIT_SOUND_DYN( m_pPlayer, CHAN_ITEM, "weapons/scock1.wav", 1, ATTN_NORM, 0, 95 + RANDOM_LONG(0,0x1f)); m_InSpecialReload = ReloadState::NOT_RELOADING; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5; } } else { int iAnim; float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 ); if (flRand <= 0.8) { iAnim = SHOTGUN_IDLE_DEEP; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (60.0/12.0);// * RANDOM_LONG(2, 5); } else if (flRand <= 0.95) { iAnim = SHOTGUN_IDLE; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (20.0/9.0); } else { iAnim = SHOTGUN_IDLE4; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (20.0/9.0); } SendWeaponAnim( iAnim ); } } }