//----------------------------------------------------------------------------- // Purpose: Override so SLAM to so secondary attack when no secondary ammo // but satchel is in the world // Input : // Output : //----------------------------------------------------------------------------- void CWeapon_SLAM::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) { return; } if ((pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime)) { SecondaryAttack(); } else if (!m_bNeedReload && (pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime)) { PrimaryAttack(); } // ----------------------- // No buttons down // ----------------------- else { WeaponIdle( ); return; } }
//Fire both barrels void CWeaponSawedOff::SecondaryAttack( void ) { if ( m_iClip1 < 2 ) { if ( m_iClip1 == 1 ) PrimaryAttack(); return; } CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); WeaponSound(WPN_DOUBLE); pOwner->DoMuzzleFlash(); SendWeaponAnim( ACT_VM_SECONDARYATTACK ); m_iClip1 -= 2; pOwner->SetAnimation( PLAYER_ATTACK1 ); Vector vecSrc = pOwner->Weapon_ShootPosition( ); Vector vecAiming = pOwner->GetAutoaimVector( AUTOAIM_SCALE_DEFAULT ); FireBulletsInfo_t info( 14, vecSrc, vecAiming, CDHLBaseWeapon::GetBulletSpread(), MAX_TRACE_LENGTH, m_iPrimaryAmmoType ); info.m_pAttacker = pOwner; pOwner->FireBullets( info ); AddDHLViewKick( BaseClass::GetRecoilX(), BaseClass::GetRecoilY() ); }
void CWeaponGravityGun::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) return; if ( pOwner->m_afButtonPressed & IN_ATTACK2 ) { SecondaryAttack(); } else if ( pOwner->m_nButtons & IN_ATTACK ) { PrimaryAttack(); } else if ( pOwner->m_afButtonPressed & IN_RELOAD ) { Reload(); } // ----------------------- // No buttons down // ----------------------- else { WeaponIdle( ); return; } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponCombatBaseGrenade::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) return; AllowShieldPostFrame( !m_flStartedThrowAt ); // Look for button downs if ( (pOwner->m_nButtons & IN_ATTACK) && GetShieldState() == SS_DOWN && !m_flStartedThrowAt && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { m_flStartedThrowAt = gpGlobals->curtime; SendWeaponAnim( ACT_VM_DRAW ); } // Look for button ups if ( (pOwner->m_afButtonReleased & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime) && m_flStartedThrowAt ) { m_flNextPrimaryAttack = gpGlobals->curtime; PrimaryAttack(); m_flStartedThrowAt = 0; } // No buttons down? if ( !((pOwner->m_nButtons & IN_ATTACK) || (pOwner->m_nButtons & IN_ATTACK2) || (pOwner->m_nButtons & IN_RELOAD)) ) { WeaponIdle( ); } }
void CWeaponAR33::ItemPostFrame( void ) { CGEPlayer *pOwner = ToGEPlayer ( GetOwner() ); if ( !pOwner ) return; if ( !m_bInBurst && m_nNumShotsFired > 0 ) m_iBurst = (m_nNumShotsFired < 3) ? (3 - m_nNumShotsFired) : (m_nNumShotsFired % 3); if ( m_iBurst > 0 && ( pOwner->m_nButtons & IN_ATTACK ) == false && !pOwner->IsInAimMode() ) { m_bInBurst = true; if ( gpGlobals->curtime > m_flNextPrimaryAttack ) { PrimaryAttack(); m_iBurst--; } } else { m_bInBurst = false; m_iBurst = 0; } BaseClass::ItemPostFrame(); }
//----------------------------------------------------------------------------- // Purpose: Override so shotgun can do mulitple reloads in a row // Input : // Output : //----------------------------------------------------------------------------- void CWeaponMolotov::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) { return; } if ((pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime)) { SecondaryAttack(); } else if ((pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime)) { // Uses secondary ammo only if (pOwner->GetAmmoCount(m_iSecondaryAmmoType)) { PrimaryAttack(); } } else if (m_bNeedDraw) { DrawAmmo(); } else { WeaponIdle( ); } }
//=====================================================================================// // Purpose: Controls the attacks and the call of WeaponIdle() method //=====================================================================================// void CTDPBludgeonWeaponBase::ItemPostFrame() { // Do we have a valid owner holding the weapon? CTDPPlayer *pPlayer = GetPlayerOwner(); if ( !pPlayer ) return; static int lastButton = 0; //TDP_TODO if ( pPlayer->m_nButtons & IN_ATTACK3 && m_flNextSecondaryAttack <= gpGlobals->curtime && (lastButton != pPlayer->m_afButtonPressed) ) { ThirdAttack(); } lastButton = pPlayer->m_afButtonPressed; // Is the player pressing the secondary attack button and is it time for the next // secondary attack? if ( pPlayer->m_nButtons & IN_ATTACK2 && m_flNextSecondaryAttack <= gpGlobals->curtime ) SecondaryAttack(); // Is the player pressing the primary attack button and is it time for the next // primary attack? if ( pPlayer->m_nButtons & IN_ATTACK && m_flNextPrimaryAttack <= gpGlobals->curtime ) PrimaryAttack(); // If the player is not pressing any of the attack buttons let's try to idle if ( !( pPlayer->m_nButtons & IN_ATTACK3 || pPlayer->m_nButtons & IN_ATTACK2 || pPlayer->m_nButtons & IN_ATTACK ) ) WeaponIdle(); //BaseClass::ItemPostFrame(); // Make this conditionnal return; }
//------------------------------------------------------------------------------ // Purpose : Update weapon //------------------------------------------------------------------------------ void CBaseHLBludgeonWeapon::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( pOwner == NULL ) return; if ( CheckSwingMotion() ) { // Handles it's own animation.... } else if ( (pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { PrimaryAttack(); } else if ( (pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime) ) { SecondaryAttack(); } else { WeaponIdle(); return; } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponMortar::Fire( float flPower, float flAccuracy ) { m_flFiringPower = flPower; m_flFiringAccuracy = flAccuracy; PrimaryAttack(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponBuilder::ItemPostFrame( void ) { CBaseTFPlayer *pOwner = ToBaseTFPlayer( GetOwner() ); if ( !pOwner ) return; // Ignore input while the player's building anything if ( pOwner->IsBuilding() ) return; // Switch away if I'm not in placement mode if ( m_iBuildState != BS_PLACING && m_iBuildState != BS_PLACING_INVALID ) { pOwner->SwitchToNextBestWeapon( NULL ); return; } if (( pOwner->m_nButtons & IN_ATTACK ) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { PrimaryAttack(); } // Allow shield post frame AllowShieldPostFrame( true ); WeaponIdle(); }
bool CASW_Weapon_Buff_Grenade::OffhandActivate() { if (!GetMarine() || GetMarine()->GetFlags() & FL_FROZEN) // don't allow this if the marine is frozen return false; PrimaryAttack(); return true; }
//----------------------------------------------------------------------------- // Purpose: Allow activation even if this is our last piece of ammo //----------------------------------------------------------------------------- void CWeaponHopwire::HandleFireOnEmpty( void ) { if ( m_hActiveHopWire!= NULL ) { // FIXME: This toggle is hokey m_bRedraw = false; PrimaryAttack(); m_bRedraw = true; } }
bool CASW_Weapon_Stim::OffhandActivate() { if (!GetMarine() || GetMarine()->GetFlags() & FL_FROZEN) // don't allow this if the marine is frozen return false; if (m_flNextPrimaryAttack < gpGlobals->curtime) PrimaryAttack(); return true; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponGrapple::ItemPostFrame( void ) { //Enforces being able to use PrimaryAttack and Secondary Attack CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( ( pOwner->m_nButtons & IN_ATTACK ) ) { if ( m_flNextPrimaryAttack < gpGlobals->curtime ) { PrimaryAttack(); } } else if ( m_bMustReload ) //&& HasWeaponIdleTimeElapsed() ) { Reload(); } if ( ( pOwner->m_afButtonPressed & IN_ATTACK2 ) ) { if ( m_flNextPrimaryAttack < gpGlobals->curtime ) { SecondaryAttack(); } } else if ( m_bMustReload ) //&& HasWeaponIdleTimeElapsed() ) { Reload(); } //Allow a refire as fast as the player can click if ( ( ( pOwner->m_nButtons & IN_ATTACK ) == false ) ) { m_flNextPrimaryAttack = gpGlobals->curtime - 0.1f; } #ifndef CLIENT_DLL if ( m_hHook ) { if ( !(pOwner->m_nButtons & IN_ATTACK) && !(pOwner->m_nButtons & IN_ATTACK2)) { m_hHook->SetTouch( NULL ); m_hHook->SetThink( NULL ); UTIL_Remove( m_hHook ); m_hHook = NULL; NotifyHookDied(); m_bMustReload = true; } } #endif // BaseClass::ItemPostFrame(); }
//----------------------------------------------------------------------------- // Purpose: Handle deploying, undeploying, firing, etc. // TODO: Add a deploy to the firing! Currently no reloading! //----------------------------------------------------------------------------- void CWeaponRocketLauncher::ItemPostFrame( void ) { // Get the player. CBaseTFPlayer *pPlayer = ToBaseTFPlayer( GetOwner() ); if ( !pPlayer ) return; if ( UsesClipsForAmmo1() ) { CheckReload(); } #if !defined( CLIENT_DLL ) if ( !HasPrimaryAmmo() && ( m_flNextPrimaryAttack <= gpGlobals->curtime ) ) { pPlayer->SwitchToNextBestWeapon( NULL ); } #endif // Handle Firing if ( GetShieldState() == SS_DOWN && !m_bInReload ) { // Attempting to fire. if ( ( pPlayer->m_nButtons & IN_ATTACK ) && ( m_flNextPrimaryAttack <= gpGlobals->curtime ) ) { if ( m_iClip1 > 0 ) { PrimaryAttack(); } else { Reload(); } } // Reload button (or fire button when we're out of ammo) if ( m_flNextPrimaryAttack <= gpGlobals->curtime ) { if ( pPlayer->m_nButtons & IN_RELOAD ) { Reload(); } else if ( !((pPlayer->m_nButtons & IN_ATTACK) || (pPlayer->m_nButtons & IN_ATTACK2) || (pPlayer->m_nButtons & IN_RELOAD)) ) { if ( !m_iClip1 && HasPrimaryAmmo() ) { Reload(); } } } } // Prevent shield post frame if we're not ready to attack, or we're charging AllowShieldPostFrame( m_flNextPrimaryAttack <= gpGlobals->curtime || m_bInReload ); }
void CWeaponMine::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) return; if (!m_bNeedReload && (pOwner->m_nButtons & IN_ATTACK) && m_flNextPrimaryAttack <= gpGlobals->curtime && !((pOwner->m_nButtons & IN_ATTACK) && m_bAttachMine)) PrimaryAttack(); else WeaponIdle(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponCombatLaserRifle::ItemPostFrame( void ) { CBaseTFPlayer *pOwner = ToBaseTFPlayer( GetOwner() ); if (!pOwner) return; if ( UsesClipsForAmmo1() ) { CheckReload(); } RecalculateAccuracy(); // Handle firing if ( GetShieldState() == SS_DOWN && !m_bInReload ) { if ( (pOwner->m_nButtons & IN_ATTACK ) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { if ( m_iClip1 > 0 ) { // Fire the plasma shot PrimaryAttack(); } else { Reload(); } } // Reload button (or fire button when we're out of ammo) if ( m_flNextPrimaryAttack <= gpGlobals->curtime ) { if ( pOwner->m_nButtons & IN_RELOAD ) { Reload(); } else if ( !((pOwner->m_nButtons & IN_ATTACK) || (pOwner->m_nButtons & IN_ATTACK2) || (pOwner->m_nButtons & IN_RELOAD)) ) { if ( !m_iClip1 && HasPrimaryAmmo() ) { Reload(); } } } } // Prevent shield post frame if we're not ready to attack, or we're charging AllowShieldPostFrame( m_flNextPrimaryAttack <= gpGlobals->curtime || m_bInReload ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTFFlameThrower::ItemPostFrame() { if ( m_bLowered ) return; // Get the player owning the weapon. CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() ); if ( !pOwner ) return; int iAmmo = pOwner->GetAmmoCount( m_iPrimaryAmmoType ); bool bFired = false; if ( ( pOwner->m_nButtons & IN_ATTACK2 ) && m_flNextSecondaryAttack <= gpGlobals->curtime ) { float flAmmoPerSecondaryAttack = TF_FLAMETHROWER_AMMO_PER_SECONDARY_ATTACK; CALL_ATTRIB_HOOK_FLOAT( flAmmoPerSecondaryAttack, mult_airblast_cost ); if ( iAmmo >= flAmmoPerSecondaryAttack ) { SecondaryAttack(); bFired = true; } } else if ( ( pOwner->m_nButtons & IN_ATTACK ) && iAmmo > 0 && m_iWeaponState != FT_STATE_AIRBLASTING ) { PrimaryAttack(); bFired = true; } if ( !bFired ) { if ( m_iWeaponState > FT_STATE_IDLE ) { SendWeaponAnim( ACT_MP_ATTACK_STAND_POSTFIRE ); pOwner->DoAnimationEvent( PLAYERANIMEVENT_ATTACK_POST ); m_iWeaponState = FT_STATE_IDLE; m_bCritFire = false; m_bHitTarget = false; } if ( !ReloadOrSwitchWeapons() ) { WeaponIdle(); } } //BaseClass::ItemPostFrame(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponHarpoon::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) return; // Look for button downs if ( (pOwner->m_afButtonPressed & IN_ATTACK) && !m_flStartedThrowAt && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { // If we don't have a harpoon, throw one out. Otherwise, yank it back. if ( m_bActiveHarpoon ) { YankHarpoon(); } else { m_bActiveHarpoon = true; m_flStartedThrowAt = gpGlobals->curtime; PlayAttackAnimation( ACT_VM_PULLBACK ); m_flCantThrowUntil = gpGlobals->curtime + SequenceDuration(); } } else if ( m_flCantThrowUntil && m_bActiveHarpoon && !(pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime) && (m_flCantThrowUntil <= gpGlobals->curtime) ) { m_flNextPrimaryAttack = gpGlobals->curtime; PrimaryAttack(); m_flStartedThrowAt = 0; m_flCantThrowUntil = 0; } else if ( (pOwner->m_nButtons & IN_ATTACK2) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { PlayAttackAnimation( ACT_VM_SECONDARYATTACK ); m_flSecondaryAttackAt = gpGlobals->curtime + SequenceDuration() * 0.3; m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); } else if ( m_flSecondaryAttackAt && m_flSecondaryAttackAt < gpGlobals->curtime ) { SecondaryAttack(); m_flSecondaryAttackAt = 0; } // No buttons down? if ( !((pOwner->m_nButtons & IN_ATTACK) || (pOwner->m_nButtons & IN_ATTACK2) || (pOwner->m_nButtons & IN_RELOAD)) ) { WeaponIdle( ); } }
//----------------------------------------------------------------------------- // Purpose: Override so shotgun can do mulitple reloads in a row // Input : // Output : //----------------------------------------------------------------------------- void CWeaponBrickbat::ItemPostFrame( void ) { /* HANDY FOR DEBUG for (int i=0;i<NUM_BRICKBAT_AMMO_TYPES;i++) { Msg("%i %s",m_nAmmoCount[i],BrickBatAmmoArray[i].m_sClassName); if (i==m_iCurrentAmmoType) { Msg("**"); } Msg("\n"); } */ CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (!pOwner) { return; } if (m_bNeedThrow) { Throw(); } else if ((pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime)) { SecondaryAttack(); } else if ((pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime)) { // Uses secondary ammo only if (pOwner->GetAmmoCount(m_iPrimaryAmmoType)) { PrimaryAttack(); } } else if (m_bNeedDraw) { DrawAmmo(); } else { SendWeaponAnim( ACT_VM_IDLE ); //pOwner->m_flNextAttack = gpGlobals->curtime + SequenceDuration(); } }
//------------------------------------------------------------------------------ // Purpose : Update weapon //------------------------------------------------------------------------------ void CWeaponDAMelee::ItemPostFrame( void ) { CDAPlayer *pPlayer = GetPlayerOwner(); if ( pPlayer == NULL ) return; if (IsDoingDrugs()) { if (MaintainDoDrugs()) return; } else if (IsThrowingGrenade()) { if (MaintainGrenadeToss()) return; } else if ((pPlayer->m_nButtons & IN_ALT2) && !IsThrowingGrenade() && pPlayer->GetAmmoCount(GetAmmoDef()->Index("grenades")) && pPlayer->CanAttack()) { bool bAllow = (m_flNextPrimaryAttack < GetCurrentTime()); if (m_bInReload) bAllow = true; if (bAllow) { StartGrenadeToss(); return; } } if (GetSwingTime() > 0 && GetSwingTime() <= GetCurrentTime()) { Swing(); } else if ( (pPlayer->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= GetCurrentTime()) && pPlayer->CanAttack() ) { PrimaryAttack(); } else if ( (pPlayer->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= GetCurrentTime()) && pPlayer->CanAttack() ) { SecondaryAttack(); } else { WeaponIdle(); } }
//------------------------------------------------------------------------------ // Purpose : Update weapon //------------------------------------------------------------------------------ void CWeaponCrowbar::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( pOwner == NULL ) return; if ( (pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { PrimaryAttack(); } else { WeaponIdle(); return; } }
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 } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTFSniperRifle::Fire( CTFPlayer *pPlayer ) { // Check the ammo. We don't use clip ammo, check the primary ammo type. if ( pPlayer->GetAmmoCount( m_iPrimaryAmmoType ) <= 0 ) { HandleFireOnEmpty(); return; } if ( m_flNextPrimaryAttack > gpGlobals->curtime ) return; // Fire the sniper shot. PrimaryAttack(); if ( IsZoomed() ) { // If we have more bullets, zoom out, play the bolt animation and zoom back in if( pPlayer->GetAmmoCount( m_iPrimaryAmmoType ) > 0 ) { SetRezoom( true, 0.5f ); // zoom out in 0.5 seconds, then rezoom } else { //just zoom out SetRezoom( false, 0.5f ); // just zoom out in 0.5 seconds } } else { // Prevent primary fire preventing zooms m_flNextSecondaryAttack = gpGlobals->curtime + SequenceDuration(); } m_flChargedDamage = 0.0f; #ifdef GAME_DLL if ( m_hSniperDot ) { m_hSniperDot->ResetChargeTime(); } #endif }
//------------------------------------------------------------------------------ // Purpose : Update weapon //------------------------------------------------------------------------------ void CWeaponSDKMelee::ItemPostFrame( void ) { CSDKPlayer *pPlayer = GetPlayerOwner(); if ( pPlayer == NULL ) return; if ( (pPlayer->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime) && pPlayer->CanAttack() ) { PrimaryAttack(); } else if ( (pPlayer->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime) && pPlayer->CanAttack() ) { SecondaryAttack(); } else { WeaponIdle(); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponBugBait::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( pOwner == NULL ) return; // See if we're cocked and ready to throw if ( m_bDrawBackFinished ) { DrawArc(); if ( ( pOwner->m_nButtons & IN_ATTACK ) == false ) { SendWeaponAnim( ACT_VM_THROW ); m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); HideArc(); m_bDrawBackFinished = false; } } else { //See if we're attacking if ( ( pOwner->m_nButtons & IN_ATTACK ) && ( m_flNextPrimaryAttack < gpGlobals->curtime ) ) { PrimaryAttack(); } else if ( ( pOwner->m_nButtons & IN_ATTACK2 ) && ( m_flNextSecondaryAttack < gpGlobals->curtime ) ) { SecondaryAttack(); } } if ( m_bRedraw ) { if ( IsViewModelSequenceFinished() ) { Reload(); } } WeaponIdle(); }
void CWeaponGrenade::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if (pOwner) { //Si on est pas en attente de lancer et que le nouton est appuyé if(!m_bAttackPaused && (pOwner->m_nButtons & IN_ATTACK) && HasPrimaryAmmo() && gpGlobals->curtime > m_flNextPrimaryAttack) PrimaryAttack(); //Sinon si on est en attente de lancer et que le bouton n'est plus appuyé else if(m_bAttackPaused && !(pOwner->m_nButtons & IN_ATTACK)) PrimaryAttackThrow(); } BaseClass::ItemPostFrame(); if ( m_bRedraw ) if ( IsViewModelSequenceFinished() ) Reload(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponGrapple::ItemPostFrame(void) { // Allow zoom toggling CheckZoomToggle(); CBasePlayer *pOwner = ToBasePlayer(GetOwner()); if ((pOwner->m_nButtons & IN_ATTACK)) { if (m_flNextPrimaryAttack < gpGlobals->curtime) { PrimaryAttack(); } } else if (m_bMustReload) //&& HasWeaponIdleTimeElapsed() ) { Reload(); } #ifndef CLIENT_DLL if (m_hHook) { if (m_hRope) m_hRope->RecalculateLength(); if (!(pOwner->m_nButtons & IN_ATTACK)) { m_hHook->SetTouch(NULL); m_hHook->SetThink(NULL); UTIL_Remove(m_hHook); m_hHook = NULL; NotifyHookDied(); m_bMustReload = true; } } #endif // BaseClass::ItemPostFrame(); }
//------------------------------------------------------------------------------ // Purpose : Update weapon //------------------------------------------------------------------------------ void CBaseHL2MPBludgeonWeapon::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( pOwner == NULL ) return; if ( (pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { PrimaryAttack(); } else if ( (pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime) ) { SecondaryAttack(); } else { WeaponIdle(); return; } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTFWeaponBuilder::ItemPostFrame( void ) { CTFPlayer *pOwner = ToTFPlayer( GetOwner() ); if ( !pOwner ) return; // If we're building, and our team has lost, stop placing the object if ( m_hObjectBeingBuilt.Get() && TFGameRules()->State_Get() == GR_STATE_TEAM_WIN && pOwner->GetTeamNumber() != TFGameRules()->GetWinningTeam() ) { StopPlacement(); return; } // Check that I still have enough resources to build this item if ( pOwner->CanBuild( m_iObjectType ) != CB_CAN_BUILD ) { SwitchOwnersWeaponToLast(); } if (( pOwner->m_nButtons & IN_ATTACK ) && (m_flNextPrimaryAttack <= gpGlobals->curtime) ) { PrimaryAttack(); } if ( pOwner->m_nButtons & IN_ATTACK2 ) { if ( m_flNextSecondaryAttack <= gpGlobals->curtime ) { SecondaryAttack(); } } else { m_bInAttack2 = false; } WeaponIdle(); }