bool CWeaponCSBaseGun::Reload() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return false; if (pPlayer->GetAmmoCount( GetPrimaryAmmoType() ) <= 0) return false; int iResult = DefaultReload( GetMaxClip1(), GetMaxClip2(), ACT_VM_RELOAD ); if ( !iResult ) return false; pPlayer->SetAnimation( PLAYER_RELOAD ); #ifndef CLIENT_DLL if ((iResult) && (pPlayer->GetFOV() != pPlayer->GetDefaultFOV())) { pPlayer->SetFOV( pPlayer, pPlayer->GetDefaultFOV() ); } #endif m_flAccuracy = 0.2; pPlayer->m_iShotsFired = 0; m_bDelayFire = false; pPlayer->SetShieldDrawnState( false ); return true; }
float CWeaponScout::GetMaxSpeed() const { CCSPlayer *pPlayer = GetPlayerOwner(); if (pPlayer == NULL) { Assert(pPlayer != NULL); return BaseClass::GetMaxSpeed(); } if ( pPlayer->GetFOV() == pPlayer->GetDefaultFOV() ) return BaseClass::GetMaxSpeed(); else return 220; // zoomed in. }
bool CDEagle::Reload() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( pPlayer->GetAmmoCount( GetPrimaryAmmoType() ) <= 0 ) return false; if ( !DefaultReload( 7, DEAGLE_RELOAD, 2.2 ) ) return false; //m_pPlayer->SetAnimation( PLAYER_RELOAD ); m_flAccuracy = 0.9; return true; }
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); }
bool CWeaponCSBase::IsUseable() { CCSPlayer *pPlayer = GetPlayerOwner(); if ( Clip1() <= 0 ) { if ( pPlayer->GetAmmoCount( GetPrimaryAmmoType() ) <= 0 && GetMaxClip1() != -1 ) { // clip is empty (or nonexistant) and the player has no more ammo of this type. return false; } } return true; }
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); }
bool CWeaponUSP::Reload() { CCSPlayer *pPlayer = GetPlayerOwner(); if (pPlayer->GetAmmoCount( GetPrimaryAmmoType() ) <= 0) return true; int iResult = DefaultReload( 12, 0, ACT_VM_RELOAD ); if (!iResult) return true; pPlayer->SetAnimation( PLAYER_RELOAD ); m_flAccuracy = 0.92; return true; }
float CCSPlayerAnimState::GetCurrentMaxGroundSpeed() { Activity currentActivity = m_pOuter->GetSequenceActivity( m_pOuter->GetSequence() ); if ( currentActivity == ACT_WALK || currentActivity == ACT_IDLE ) return ANIM_TOPSPEED_WALK; else if ( currentActivity == ACT_RUN ) { if ( m_pPlayer ) { CBaseCombatWeapon *activeWeapon = m_pPlayer->GetActiveWeapon(); if ( activeWeapon ) { CWeaponCSBase *csWeapon = dynamic_cast< CWeaponCSBase * >( activeWeapon ); if ( csWeapon ) { return csWeapon->GetMaxSpeed(); } } } return ANIM_TOPSPEED_RUN; } else if ( currentActivity == ACT_RUN_CROUCH ) return ANIM_TOPSPEED_RUN_CROUCH; else return 0; }
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 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 CC4::PlayArmingBeeps( void ) { float flStartTime = m_fArmedTime - WEAPON_C4_ARM_TIME; float flProgress = ( gpGlobals->curtime - flStartTime ) / ( WEAPON_C4_ARM_TIME - 0.75 ); int currentFrame = (int)( (float)iNumArmingAnimFrames * flProgress ); int i; for( i=0;i<NUM_BEEPS;i++ ) { if( currentFrame <= m_iBeepFrames[i] ) { break; } else if( !m_bPlayedArmingBeeps[i] ) { m_bPlayedArmingBeeps[i] = true; CCSPlayer *owner = GetPlayerOwner(); Vector soundPosition = owner->GetAbsOrigin() + Vector( 0, 0, 5 ); CPASAttenuationFilter filter( soundPosition ); filter.RemoveRecipient( owner ); // remove anyone that is first person spec'ing the planter int i; CBasePlayer *pPlayer; for( i=1;i<=gpGlobals->maxClients;i++ ) { pPlayer = UTIL_PlayerByIndex( i ); if ( !pPlayer ) continue; if( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE && pPlayer->GetObserverTarget() == GetOwner() ) { filter.RemoveRecipient( pPlayer ); } } EmitSound(filter, entindex(), "c4.click"); break; } } }
bool MyTouch( CBasePlayer *pBasePlayer ) { CCSPlayer *pPlayer = dynamic_cast< CCSPlayer* >( pBasePlayer ); if ( !pPlayer ) { Assert( false ); return false; } pPlayer->m_iKevlar = 2; // player now has kevlar AND helmet pPlayer->SetArmorValue( 100 ); CPASAttenuationFilter filter( pBasePlayer ); EmitSound( filter, entindex(), "BaseCombatCharacter.ItemPickup2" ); return true; }
//----------------------------------------------------------------------------- // Purpose: // Input : // Output : //----------------------------------------------------------------------------- void CWeapon_SLAM::TripmineAttach( void ) { CCSPlayer *pOwner = ToCSPlayer( GetOwner() ); if (!pOwner) { return; } m_bAttachTripmine = false; Vector vecSrc, vecAiming; // Take the eye position and direction vecSrc = pOwner->EyePosition(); QAngle angles = pOwner->GetLocalAngles(); AngleVectors( angles, &vecAiming ); trace_t tr; UTIL_TraceLine( vecSrc, vecSrc + (vecAiming * 128), MASK_SOLID, pOwner, COLLISION_GROUP_NONE, &tr ); if (tr.fraction < 1.0) { CBaseEntity *pEntity = tr.m_pEnt; if (pEntity && !(pEntity->GetFlags() & FL_CONVEYOR)) { #ifndef CLIENT_DLL QAngle angles; VectorAngles(tr.plane.normal, angles); angles.x += 90; CBaseEntity *pEnt = CBaseEntity::Create( "npc_tripmine", tr.endpos + tr.plane.normal * 3, angles, NULL ); CTripmineGrenade *pMine = (CTripmineGrenade *)pEnt; pMine->m_hOwner = GetOwner(); #endif pOwner->RemoveAmmo( 1, m_iSecondaryAmmoType ); } } }
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 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 CC4::ItemPostFrame() { CCSPlayer *pPlayer = GetPlayerOwner(); // Disable all the firing code.. the C4 grenade is all custom. if ( pPlayer->m_nButtons & IN_ATTACK ) { PrimaryAttack(); } else { WeaponIdle(); #ifndef CLIENT_DLL pPlayer->ResetMaxSpeed(); #endif } }
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 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 CWeaponUSP::WeaponIdle() { CCSPlayer *pPlayer = GetPlayerOwner(); //ResetEmptySound( ); pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES ); if (m_flTimeWeaponIdle > gpGlobals->curtime) return; // only idle if the slid isn't back if (m_iClip1 != 0) { m_flTimeWeaponIdle = gpGlobals->curtime + 60.0; SendWeaponAnim( ACT_VM_IDLE ); } }
// GOOSEMAN : Kick the view.. void CWeaponCSBase::KickBack( float up_base, float lateral_base, float up_modifier, float lateral_modifier, float up_max, float lateral_max, int direction_change ) { CCSPlayer *pPlayer = GetPlayerOwner(); float flKickUp; float flKickLateral; if (m_iShotsFired == 1) // This is the first round fired { flKickUp = up_base; flKickLateral = lateral_base; } else { flKickUp = up_base + m_iShotsFired*up_modifier; flKickLateral = lateral_base + m_iShotsFired*lateral_modifier; } QAngle angle = pPlayer->GetPunchAngle(); angle.x -= flKickUp; if ( angle.x < -1 * up_max ) angle.x = -1 * up_max; if ( m_iDirection == 1 ) { angle.y += flKickLateral; if (angle.y > lateral_max) angle.y = lateral_max; } else { angle.y -= flKickLateral; if ( angle.y < -1 * lateral_max ) angle.y = -1 * lateral_max; } if ( !SHARED_RANDOMINT( 0, direction_change ) ) m_iDirection = 1 - m_iDirection; pPlayer->SetPunchAngle( angle ); }
//----------------------------------------------------------------------------- // Purpose: // Input : // Output : //----------------------------------------------------------------------------- bool CWeapon_SLAM::CanAttachSLAM( void ) { CCSPlayer *pOwner = ToCSPlayer( GetOwner() ); if (!pOwner) { return false; } Vector vecSrc, vecAiming; // Take the eye position and direction vecSrc = pOwner->EyePosition(); QAngle angles = pOwner->GetLocalAngles(); AngleVectors( angles, &vecAiming ); trace_t tr; Vector vecEnd = vecSrc + (vecAiming * 42); UTIL_TraceLine( vecSrc, vecEnd, MASK_SOLID, pOwner, COLLISION_GROUP_NONE, &tr ); if (tr.fraction < 1.0) { // Don't attach to a living creature if (tr.m_pEnt) { CBaseEntity *pEntity = tr.m_pEnt; CBaseCombatCharacter *pBCC = ToBaseCombatCharacter( pEntity ); if (pBCC) { return false; } } return true; } else { return false; } }
bool operator()( CBasePlayer *player ) { if ( !player->IsAlive() || player->GetTeamNumber() != m_team ) return true; CCSPlayer *csPlayer = ToCSPlayer( player ); if ( !csPlayer ) return true; if ( csPlayer->IsBlind() ) return true; Vector eye, forward; player->EyePositionAndVectors( &eye, &forward, NULL, NULL ); Vector path( m_target - eye ); float distance = path.Length(); path.NormalizeInPlace(); float dot = DotProduct( forward, path ); if( (dot > 0.995f ) || (dot > 0.98f && distance < 900) || (dot > 0.8f && distance < 250) ) { trace_t tr; CTraceFilterSkipTwoEntities filter( player, m_targetEntity, COLLISION_GROUP_DEBRIS ); UTIL_TraceLine( eye, m_target, (CONTENTS_OPAQUE|CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_DEBRIS), &filter, &tr ); if( tr.fraction == 1.0f ) { //if ( TheCSBots()->IsLineBlockedBySmoke( eye, m_target ) ) //{ // return true; //} m_spotted = true; return false; // spotted already, so no reason to check for other players spotting the same thing. } } return true; }
void CC4::WeaponIdle() { if ( m_bStartedArming ) { m_bStartedArming = false; //if the player releases the attack button cancel the arming sequence CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; #if !defined( CLIENT_DLL ) // release the player from being frozen pPlayer->ResetMaxSpeed(); m_flNextPrimaryAttack = gpGlobals->curtime + 1.0; pPlayer->SetProgressBarTime( 0 ); 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 // TODO: make this use SendWeaponAnim and activities when the C4 has the activities hooked up. if ( pPlayer ) { SendWeaponAnim( ACT_VM_IDLE ); pPlayer->SetNextAttack( gpGlobals->curtime ); } if(m_bBombPlacedAnimation == true) //this means the placement animation is canceled SendWeaponAnim( ACT_VM_DRAW ); else SendWeaponAnim( ACT_VM_IDLE ); } }
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::UpdateShieldState( void ) { //ADRIANTODO CCSPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; if ( pPlayer->HasShield() ) { pPlayer->SetShieldDrawnState( false ); CBaseViewModel *pVM = pPlayer->GetViewModel( 1 ); if ( pVM ) { pVM->AddEffects( EF_NODRAW ); } //pPlayer->SetHitBoxSet( 3 ); } else BaseClass::UpdateShieldState(); }
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 CWeaponG3SG1::SecondaryAttack() { #ifndef CLIENT_DLL CCSPlayer *pPlayer = GetPlayerOwner(); if ( pPlayer->GetFOV() == 90 ) { pPlayer->SetFOV( 40 ); } else if (pPlayer->GetFOV() == 40) { pPlayer->SetFOV( 15 ); } else if (pPlayer->GetFOV() == 15) { pPlayer->SetFOV( 90 ); } pPlayer->ResetMaxSpeed(); WeaponSound( SPECIAL3 ); // zoom sound #endif m_flNextSecondaryAttack = gpGlobals->curtime + 0.3; }