|
|
@ -124,12 +124,6 @@ int CGauss::GetItemInfo( ItemInfo *p ) |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
BOOL CGauss::IsUseable() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// Currently charging, allow the player to fire it first. - Solokiller
|
|
|
|
|
|
|
|
return CBasePlayerWeapon::IsUseable() || m_fInAttack != 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CGauss::Deploy() |
|
|
|
BOOL CGauss::Deploy() |
|
|
|
{ |
|
|
|
{ |
|
|
|
m_pPlayer->m_flPlayAftershock = 0.0; |
|
|
|
m_pPlayer->m_flPlayAftershock = 0.0; |
|
|
@ -231,22 +225,6 @@ void CGauss::SecondaryAttack() |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Moved to before the ammo burn.
|
|
|
|
|
|
|
|
// Because we drained 1 when m_InAttack == 0, then 1 again now before checking if we're out of ammo,
|
|
|
|
|
|
|
|
// this resuled in the player having -1 ammo, which in turn caused CanDeploy to think it could be deployed.
|
|
|
|
|
|
|
|
// This will need to be fixed further down the line by preventing negative ammo unless explicitly required (infinite ammo?),
|
|
|
|
|
|
|
|
// But this check will prevent the problem for now. - Solokiller
|
|
|
|
|
|
|
|
// TODO: investigate further.
|
|
|
|
|
|
|
|
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.0f; |
|
|
|
|
|
|
|
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1; |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// during the charging process, eat one bit of ammo every once in a while
|
|
|
|
// 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 ) |
|
|
|
if( UTIL_WeaponTimeBase() >= m_pPlayer->m_flNextAmmoBurn && m_pPlayer->m_flNextAmmoBurn != 1000 ) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -266,6 +244,16 @@ void CGauss::SecondaryAttack() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ) |
|
|
|
if( UTIL_WeaponTimeBase() >= m_pPlayer->m_flAmmoStartCharge ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// don't eat any more ammo after gun is fully charged.
|
|
|
|
// don't eat any more ammo after gun is fully charged.
|
|
|
@ -583,10 +571,6 @@ void CGauss::WeaponIdle( void ) |
|
|
|
StartFire(); |
|
|
|
StartFire(); |
|
|
|
m_fInAttack = 0; |
|
|
|
m_fInAttack = 0; |
|
|
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; |
|
|
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; |
|
|
|
|
|
|
|
|
|
|
|
// Need to set m_flNextPrimaryAttack so the weapon gets a chance to complete its secondary fire animation. - Solokiller
|
|
|
|
|
|
|
|
if( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 ) |
|
|
|
|
|
|
|
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.5f; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|