void CWeaponUSP::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; if ( m_bSilencerOn ) { if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) USPFire( 1.3f * (1 - m_flAccuracy) ); else if (pPlayer->GetAbsVelocity().Length2D() > 5) USPFire( 0.25f * (1 - m_flAccuracy) ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) USPFire( 0.125f * (1 - m_flAccuracy) ); else USPFire( 0.15f * (1 - m_flAccuracy) ); } else { if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) USPFire( 1.2f * (1 - m_flAccuracy ) ); else if (pPlayer->GetAbsVelocity().Length2D() > 5) USPFire( 0.225f * (1 - m_flAccuracy) ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) USPFire( 0.08f * (1 - m_flAccuracy) ); else USPFire( 0.1f * (1 - m_flAccuracy) ); } }
void CWeaponUSP::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( m_bSilencerOn ) { if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) USPFire( (1.3) * (1 - m_flAccuracy), 0.225, false ); else if (pPlayer->GetAbsVelocity().Length2D() > 0) USPFire( (0.25) * (1 - m_flAccuracy), 0.225, false ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) USPFire( (0.125) * (1 - m_flAccuracy), 0.225, false ); else USPFire( (0.15) * (1 - m_flAccuracy), 0.225, false ); } else { if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) USPFire( (1.2) * (1 - m_flAccuracy), 0.225, false ); else if (pPlayer->GetAbsVelocity().Length2D() > 0) USPFire( (0.225) * (1 - m_flAccuracy), 0.225, false ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) USPFire( (0.08) * (1 - m_flAccuracy), 0.225, false ); else USPFire( (0.1) * (1 - m_flAccuracy), 0.225, false ); } }
void CWeaponM4A1::M4A1Fire( float flSpread, float flCycleTime ) { if ( !CSBaseGunFire( flSpread, flCycleTime ) ) return; CCSPlayer *pPlayer = GetPlayerOwner(); if (pPlayer->GetAbsVelocity().Length2D() > 0) KickBack (1.0, 0.45, 0.28, 0.045, 3.75, 3, 7); else if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) KickBack (1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) KickBack (0.6, 0.3, 0.2, 0.0125, 3.25, 2, 7); else KickBack (0.65, 0.35, 0.25, 0.015, 3.5, 2.25, 7); }
void CWeaponSG552::SG552Fire( float flSpread, float flCycleTime ) { if ( !CSBaseGunFire( flSpread, flCycleTime ) ) return; CCSPlayer *pPlayer = GetPlayerOwner(); if (pPlayer->GetAbsVelocity().Length2D() > 0) KickBack (1, 0.45, 0.28, 0.04, 4.25, 2.5, 7); else if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) KickBack (1.25, 0.45, 0.22, 0.18, 6, 4, 5); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) KickBack (0.6, 0.35, 0.2, 0.0125, 3.7, 2, 10); else KickBack (0.625, 0.375, 0.25, 0.0125, 4, 2.25, 9); }
void CDEagle::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) DEAGLEFire( (1.5) * (1 - m_flAccuracy), 0.3, false ); else if (pPlayer->GetAbsVelocity().Length2D() > 0) DEAGLEFire( (0.25) * (1 - m_flAccuracy), 0.3, false ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) DEAGLEFire( (0.115) * (1 - m_flAccuracy), 0.3, false ); else DEAGLEFire( (0.13) * (1 - m_flAccuracy), 0.3, false ); }
void CAK47::AK47Fire( float flSpread, float flCycleTime ) { if ( !CSBaseGunFire( flSpread, flCycleTime ) ) return; CCSPlayer *pPlayer = GetPlayerOwner(); if (pPlayer->GetAbsVelocity().Length2D() > 0 ) KickBack ( 1.5, 0.45, 0.225, 0.05, 6.5, 2.5, 7 ); else if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) KickBack ( 2, 1.0, 0.5, 0.35, 9, 6, 5 ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) KickBack ( 0.9, 0.35, 0.15, 0.025, 5.5, 1.5, 9 ); else KickBack ( 1, 0.375, 0.175, 0.0375, 5.75, 1.75, 8 ); }
void CWeaponG3SG1::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) G3SG1Fire( (0.45) * (1 - m_flAccuracy), 0.25, false ); else if (pPlayer->GetAbsVelocity().Length2D() > 0) G3SG1Fire( 0.15, 0.25, false ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) G3SG1Fire( (0.035) * (1 - m_flAccuracy), 0.25, false ); else G3SG1Fire( (0.055) * (1 - m_flAccuracy), 0.25, false ); }
void CWeaponScout::PrimaryAttack( void ) { CCSPlayer *pPlayer = GetPlayerOwner(); if (pPlayer == NULL) { Assert(pPlayer != NULL); return; } if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) SCOUTFire( 0.2 ); else if (pPlayer->GetAbsVelocity().Length2D() > 170) SCOUTFire( 0.075 ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) SCOUTFire( 0.0 ); else SCOUTFire( 0.007 ); }
void CWeaponElite::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) ELITEFire( 1.3f * (1 - m_flAccuracy) ); else if (pPlayer->GetAbsVelocity().Length2D() > 5) ELITEFire( 0.175f * (1 - m_flAccuracy) ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) ELITEFire( 0.08f * (1 - m_flAccuracy) ); else ELITEFire( 0.1f * (1 - m_flAccuracy)); }
void CAK47::AK47Fire( float flSpread ) { if ( !CSBaseGunFire( flSpread, GetCSWpnData().m_flCycleTime, true ) ) return; CCSPlayer *pPlayer = GetPlayerOwner(); // CSBaseGunFire can kill us, forcing us to drop our weapon, if we shoot something that explodes if ( !pPlayer ) return; if (pPlayer->GetAbsVelocity().Length2D() > 5 ) pPlayer->KickBack ( 1.5, 0.45, 0.225, 0.05, 6.5, 2.5, 7 ); else if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) pPlayer->KickBack ( 2, 1.0, 0.5, 0.35, 9, 6, 5 ); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) pPlayer->KickBack ( 0.9, 0.35, 0.15, 0.025, 5.5, 1.5, 9 ); else pPlayer->KickBack ( 1, 0.375, 0.175, 0.0375, 5.75, 1.75, 8 ); }
void CWeaponGalil::GalilFire( float flSpread ) { if ( !CSBaseGunFire( flSpread, GetCSWpnData().m_flCycleTime, true ) ) return; CCSPlayer *pPlayer = GetPlayerOwner(); // CSBaseGunFire can kill us, forcing us to drop our weapon, if we shoot something that explodes if ( !pPlayer ) return; if (pPlayer->GetAbsVelocity().Length2D() > 5) pPlayer->KickBack (1.0, 0.45, 0.28, 0.045, 3.75, 3, 7); else if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) pPlayer->KickBack (1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6); else if ( FBitSet( pPlayer->GetFlags(), FL_DUCKING ) ) pPlayer->KickBack (0.6, 0.3, 0.2, 0.0125, 3.25, 2, 7); else pPlayer->KickBack (0.65, 0.35, 0.25, 0.015, 3.5, 2.25, 7); }
void CAK47::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) Error( "CAK47::PrimaryAttack - !pPlayer" ); if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) AK47Fire( 0.04 + (0.4) * m_flAccuracy, 0.0955 ); else if (pPlayer->GetAbsVelocity().Length2D() > 140) AK47Fire( 0.04 + (0.07) * m_flAccuracy, 0.0955 ); else AK47Fire( (0.0275) * m_flAccuracy, 0.0955 ); }
void CWeaponSG552::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) SG552Fire( 0.035 + (0.45) * (m_flAccuracy), 0.0825 ); else if (pPlayer->GetAbsVelocity().Length2D() > 140) SG552Fire( 0.035 + (0.075) * (m_flAccuracy), 0.0825 ); else if (pPlayer->GetFOV() == 90) SG552Fire( (0.02) * (m_flAccuracy), 0.0825 ); else SG552Fire( (0.02) * (m_flAccuracy), 0.135 ); }
void CAK47::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) AK47Fire( 0.04f + 0.4f * m_flAccuracy ); else if (pPlayer->GetAbsVelocity().Length2D() > 140) AK47Fire( 0.04f + 0.07f * m_flAccuracy ); else AK47Fire( 0.0275f * m_flAccuracy ); }
void CWeaponM4A1::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) { M4A1Fire( 0.035 + (0.4) * (m_flAccuracy), 0.0875 ); } else if (pPlayer->GetAbsVelocity().Length2D() > 140) { M4A1Fire( 0.035 + (0.07) * (m_flAccuracy), 0.0875 ); } else { if ( m_bSilencerOn ) M4A1Fire( (0.025) * (m_flAccuracy), 0.0875 ); else M4A1Fire( (0.02) * (m_flAccuracy), 0.0875 ); } }
void CWeaponGalil::PrimaryAttack() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; // don't fire underwater if (pPlayer->GetWaterLevel() == 3) { PlayEmptySound( ); m_flNextPrimaryAttack = gpGlobals->curtime + 0.15; return; } if ( !FBitSet( pPlayer->GetFlags(), FL_ONGROUND ) ) GalilFire( 0.04f + 0.3f * m_flAccuracy ); else if (pPlayer->GetAbsVelocity().Length2D() > 140) GalilFire( 0.04f + 0.07f * m_flAccuracy ); else GalilFire( 0.0375f * m_flAccuracy ); }
void CC4::PrimaryAttack() { bool PlaceBomb = false; CCSPlayer *pPlayer = GetPlayerOwner(); int onGround = FBitSet( pPlayer->GetFlags(), FL_ONGROUND ); if( m_bStartedArming == false ) { if( pPlayer->m_bInBombZone && onGround ) { m_bStartedArming = true; m_fArmedTime = gpGlobals->curtime + WEAPON_C4_ARM_TIME; m_bBombPlacedAnimation = false; //SendWeaponAnim( C4_ARM, UseDecrement() ? 1: 0 ); #if !defined( CLIENT_DLL ) // freeze the player in place while planting pPlayer->SetMaxSpeed( 1 ); // player "arming bomb" animation pPlayer->SetAnimation( PLAYER_ATTACK1 ); pPlayer->SetProgressBarTime( 3 ); #endif } else { if ( !pPlayer->m_bInBombZone ) { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Plant_At_Bomb_Spot"); } else { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground"); } m_flNextPrimaryAttack = gpGlobals->curtime + 1.0; return; } } else { if ( !onGround || !pPlayer->m_bInBombZone ) { if( !pPlayer->m_bInBombZone ) { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Arming_Cancelled" ); } else { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground" ); } m_flNextPrimaryAttack = gpGlobals->curtime + 1.5; m_bStartedArming = false; #if !defined( CLIENT_DLL ) // release the player from being frozen, we've somehow left the bomb zone pPlayer->ResetMaxSpeed(); pPlayer->SetProgressBarTime( 0 ); //pPlayer->SetAnimation( PLAYER_HOLDBOMB ); #endif /* if(m_bBombPlacedAnimation == true) //this means the placement animation is canceled { SendWeaponAnim( C4_DRAW, UseDecrement() ? 1: 0 ); } else { SendWeaponAnim( C4_IDLE1, UseDecrement() ? 1: 0 ); } */ return; } else { if( gpGlobals->curtime >= m_fArmedTime ) //the c4 is ready to be armed { //check to make sure the player is still in the bomb target area PlaceBomb = true; } else if( ( gpGlobals->curtime >= (m_fArmedTime - 0.75) ) && ( !m_bBombPlacedAnimation ) ) { //call the c4 Placement animation m_bBombPlacedAnimation = true; //SendWeaponAnim( C4_DROP, UseDecrement() ? 1: 0 ); #if !defined( CLIENT_DLL ) // player "place" animation //pPlayer->SetAnimation( PLAYER_HOLDBOMB ); #endif } } } if ( PlaceBomb && m_bStartedArming ) { m_bStartedArming = false; m_fArmedTime = 0; if( pPlayer->m_bInBombZone ) { #if !defined( CLIENT_DLL ) //Broadcast("BOMBPL"); CPlantedC4::ShootSatchelCharge( pPlayer, pPlayer->GetAbsOrigin(), QAngle(0,0,0) ); // send director message, that something important happened here /* MESSAGE_BEGIN( MSG_SPEC, SVC_DIRECTOR ); WRITE_BYTE ( 9 ); // command length in bytes WRITE_BYTE ( DRC_CMD_EVENT ); // bomb placed WRITE_SHORT( ENTINDEX(pPlayer->edict()) ); WRITE_SHORT( 0 ); WRITE_LONG( 11 | DRC_FLAG_FACEPLAYER ); // eventflags (priority and flags) MESSAGE_END(); */ // tell the Ts the bomb has been planted (on radar) CTeam *pTeam = GetGlobalTeam( TEAM_TERRORIST ); for ( int iPlayer=0; iPlayer < pTeam->GetNumPlayers(); iPlayer++ ) { CBasePlayer *pTempPlayer = pTeam->GetPlayer( iPlayer ); if ( pTempPlayer->m_lifeState != LIFE_DEAD ) { /* MESSAGE_BEGIN( MSG_ONE, gmsgBombDrop, NULL, pTempPlayer->pev ); WRITE_COORD( pBomb->pev->origin.x ); WRITE_COORD( pBomb->pev->origin.y ); WRITE_COORD( pBomb->pev->origin.z ); WRITE_BYTE( 1 ); // bomb was planted MESSAGE_END(); */ } } UTIL_ClientPrintAll( HUD_PRINTCENTER,"#Bomb_Planted" ); pPlayer->SetProgressBarTime( 0 ); // tell bots the bomb has been planted //g_pBotControl->OnEvent( EVENT_BOMB_PLANTED, pPlayer ); CSGameRules()->m_bBombDropped = false; // Play the plant sound. CPASAttenuationFilter filter( this ); EmitSound( filter, entindex(), "c4.plant" ); // release the player from being frozen pPlayer->ResetMaxSpeed(); // Remove the C4 icon from the HUD //pPlayer->SetBombIcon(); // No more c4! pPlayer->Weapon_Drop( this, NULL, NULL ); UTIL_Remove( this ); #endif return; } else { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Activated_At_Bomb_Spot" ); #if !defined( CLIENT_DLL ) //pPlayer->SetAnimation( PLAYER_HOLDBOMB ); // release the player from being frozen pPlayer->ResetMaxSpeed(); #endif m_flNextPrimaryAttack = gpGlobals->curtime + 1.0; return; } } m_flNextPrimaryAttack = gpGlobals->curtime + 0.3; m_flTimeWeaponIdle = gpGlobals->curtime + random->RandomFloat ( 10, 15 ); }
void CC4::PrimaryAttack() { bool PlaceBomb = false; CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; int onGround = FBitSet( pPlayer->GetFlags(), FL_ONGROUND ); CBaseEntity *groundEntity = (onGround) ? pPlayer->GetGroundEntity() : NULL; if ( groundEntity ) { // Don't let us stand on players, breakables, or pushaway physics objects to plant if ( groundEntity->IsPlayer() || IsPushableEntity( groundEntity ) || #ifndef CLIENT_DLL IsBreakableEntity( groundEntity ) || #endif // !CLIENT_DLL IsPushAwayEntity( groundEntity ) ) { onGround = false; } } if( m_bStartedArming == false && m_bBombPlanted == false ) { if( pPlayer->m_bInBombZone && onGround ) { m_bStartedArming = true; m_fArmedTime = gpGlobals->curtime + WEAPON_C4_ARM_TIME; m_bBombPlacedAnimation = false; #if !defined( CLIENT_DLL ) // init the beep flags int i; for( i=0;i<NUM_BEEPS;i++ ) m_bPlayedArmingBeeps[i] = false; // freeze the player in place while planting pPlayer->SetMaxSpeed( 1 ); // player "arming bomb" animation pPlayer->SetAnimation( PLAYER_ATTACK1 ); pPlayer->SetNextAttack( gpGlobals->curtime ); IGameEvent * event = gameeventmanager->CreateEvent( "bomb_beginplant" ); if( event ) { event->SetInt("userid", pPlayer->GetUserID() ); event->SetInt("site", pPlayer->m_iBombSiteIndex ); event->SetInt( "priority", 8 ); gameeventmanager->FireEvent( event ); } #endif SendWeaponAnim( ACT_VM_PRIMARYATTACK ); FX_PlantBomb( pPlayer->entindex(), pPlayer->Weapon_ShootPosition() ); } else { if ( !pPlayer->m_bInBombZone ) { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Plant_At_Bomb_Spot"); } else { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground"); } m_flNextPrimaryAttack = gpGlobals->curtime + 1.0; return; } } else { if ( !onGround || !pPlayer->m_bInBombZone ) { if( !pPlayer->m_bInBombZone ) { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Arming_Cancelled" ); } else { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground" ); } m_flNextPrimaryAttack = gpGlobals->curtime + 1.5; m_bStartedArming = false; #if !defined( CLIENT_DLL ) // release the player from being frozen, we've somehow left the bomb zone pPlayer->ResetMaxSpeed(); pPlayer->SetProgressBarTime( 0 ); //pPlayer->SetAnimation( PLAYER_HOLDBOMB ); IGameEvent * event = gameeventmanager->CreateEvent( "bomb_abortplant" ); if( event ) { event->SetInt("userid", pPlayer->GetUserID() ); event->SetInt("site", pPlayer->m_iBombSiteIndex ); event->SetInt( "priority", 8 ); gameeventmanager->FireEvent( event ); } #endif if(m_bBombPlacedAnimation == true) //this means the placement animation is canceled { SendWeaponAnim( ACT_VM_DRAW ); } else { SendWeaponAnim( ACT_VM_IDLE ); } return; } else { #ifndef CLIENT_DLL PlayArmingBeeps(); #endif if( gpGlobals->curtime >= m_fArmedTime ) //the c4 is ready to be armed { //check to make sure the player is still in the bomb target area PlaceBomb = true; } else if( ( gpGlobals->curtime >= (m_fArmedTime - 0.75) ) && ( !m_bBombPlacedAnimation ) ) { //call the c4 Placement animation m_bBombPlacedAnimation = true; SendWeaponAnim( ACT_VM_SECONDARYATTACK ); #if !defined( CLIENT_DLL ) // player "place" animation //pPlayer->SetAnimation( PLAYER_HOLDBOMB ); #endif } } } if ( PlaceBomb && m_bStartedArming ) { m_bStartedArming = false; m_fArmedTime = 0; if( pPlayer->m_bInBombZone ) { #if !defined( CLIENT_DLL ) CPlantedC4 *pC4 = CPlantedC4::ShootSatchelCharge( pPlayer, pPlayer->GetAbsOrigin(), pPlayer->GetAbsAngles() ); if ( pC4 ) { pC4->SetBombSiteIndex( pPlayer->m_iBombSiteIndex ); trace_t tr; UTIL_TraceEntity( pC4, GetAbsOrigin(), GetAbsOrigin() + Vector(0,0,-200), MASK_SOLID, this, COLLISION_GROUP_NONE, &tr ); pC4->SetAbsOrigin( tr.endpos ); CBombTarget *pBombTarget = (CBombTarget*)UTIL_EntityByIndex( pPlayer->m_iBombSiteIndex ); if ( pBombTarget ) { CBaseEntity *pAttachPoint = gEntList.FindEntityByName( NULL, pBombTarget->GetBombMountTarget() ); if ( pAttachPoint ) { pC4->SetAbsOrigin( pAttachPoint->GetAbsOrigin() ); pC4->SetAbsAngles( pAttachPoint->GetAbsAngles() ); pC4->SetParent( pAttachPoint ); } variant_t emptyVariant; pBombTarget->AcceptInput( "BombPlanted", pC4, pC4, emptyVariant, 0 ); } } IGameEvent * event = gameeventmanager->CreateEvent( "bomb_planted" ); if( event ) { event->SetInt("userid", pPlayer->GetUserID() ); event->SetInt("site", pPlayer->m_iBombSiteIndex ); event->SetInt("posx", pPlayer->GetAbsOrigin().x ); event->SetInt("posy", pPlayer->GetAbsOrigin().y ); event->SetInt( "priority", 8 ); gameeventmanager->FireEvent( event ); } // Fire a beep event also so the bots have a chance to hear the bomb event = gameeventmanager->CreateEvent( "bomb_beep" ); if ( event ) { event->SetInt( "entindex", entindex() ); gameeventmanager->FireEvent( event ); } pPlayer->SetProgressBarTime( 0 ); CSGameRules()->m_bBombDropped = false; CSGameRules()->m_bBombPlanted = true; // Play the plant sound. Vector plantPosition = pPlayer->GetAbsOrigin() + Vector( 0, 0, 5 ); CPASAttenuationFilter filter( plantPosition ); EmitSound( filter, entindex(), "c4.plant" ); // release the player from being frozen pPlayer->ResetMaxSpeed(); // No more c4! pPlayer->Weapon_Drop( this, NULL, NULL ); UTIL_Remove( this ); #endif //don't allow the planting to start over again next frame. m_bBombPlanted = true; return; } else { ClientPrint( pPlayer, HUD_PRINTCENTER, "#C4_Activated_At_Bomb_Spot" ); #if !defined( CLIENT_DLL ) //pPlayer->SetAnimation( PLAYER_HOLDBOMB ); // release the player from being frozen pPlayer->ResetMaxSpeed(); IGameEvent * event = gameeventmanager->CreateEvent( "bomb_abortplant" ); if( event ) { event->SetInt("userid", pPlayer->GetUserID() ); event->SetInt("site", pPlayer->m_iBombSiteIndex ); event->SetInt( "priority", 8 ); gameeventmanager->FireEvent( event ); } #endif m_flNextPrimaryAttack = gpGlobals->curtime + 1.0; return; } } m_flNextPrimaryAttack = gpGlobals->curtime + 0.3; SetWeaponIdleTime( gpGlobals->curtime + SharedRandomFloat("C4IdleTime", 10, 15 ) ); }