mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-01-11 15:38:12 +00:00
Merge 33413807d0
This commit is contained in:
parent
e7b324da5e
commit
19bdc1d01b
@ -123,6 +123,12 @@ int CGauss::GetItemInfo( ItemInfo *p )
|
||||
return 1;
|
||||
}
|
||||
|
||||
BOOL CGauss::IsUseable()
|
||||
{
|
||||
// Currently charging, allow the player to fire it first. - Solokiller
|
||||
return CBasePlayerWeapon::IsUseable() || m_InAttack != 0;
|
||||
}
|
||||
|
||||
BOOL CGauss::Deploy()
|
||||
{
|
||||
m_pPlayer->m_flPlayAftershock = 0.0;
|
||||
@ -224,6 +230,22 @@ void CGauss::SecondaryAttack()
|
||||
}
|
||||
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.0;
|
||||
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1;
|
||||
return;
|
||||
}
|
||||
|
||||
// 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 )
|
||||
{
|
||||
@ -243,16 +265,6 @@ 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 )
|
||||
{
|
||||
// don't eat any more ammo after gun is fully charged.
|
||||
@ -558,6 +570,10 @@ void CGauss::WeaponIdle( void )
|
||||
StartFire();
|
||||
m_fInAttack = 0;
|
||||
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
|
||||
|
||||
// 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.5;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -741,7 +741,7 @@ public:
|
||||
int iItemSlot( void ) { return 4; }
|
||||
int GetItemInfo(ItemInfo *p);
|
||||
int AddToPlayer( CBasePlayer *pPlayer );
|
||||
|
||||
BOOL IsUseable();
|
||||
BOOL Deploy( void );
|
||||
void Holster( int skiplocal = 0 );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user