Predicted grapple

This commit is contained in:
Roman Chistokhodov 2019-08-06 11:58:33 +03:00
parent fe601bce06
commit 12cd2832d4
3 changed files with 20 additions and 16 deletions

View File

@ -76,6 +76,7 @@ CPipeWrench g_PipeWrench;
CShockrifle g_Shock;
CSniperrifle g_Sniper;
CSporelauncher g_Spore;
CBarnacleGrapple g_Grapple;
/*
======================
@ -634,6 +635,7 @@ void HUD_InitClientWeapons( void )
HUD_PrepEntity( &g_Shock, &player );
HUD_PrepEntity( &g_Sniper, &player );
HUD_PrepEntity( &g_Spore, &player );
HUD_PrepEntity( &g_Grapple, &player );
}
/*
@ -766,6 +768,9 @@ void HUD_WeaponsPostThink( local_state_s *from, local_state_s *to, usercmd_t *cm
case WEAPON_SPORELAUNCHER:
pWeapon = &g_Spore;
break;
case WEAPON_GRAPPLE:
pWeapon = &g_Grapple;
break;
}
// Store pointer to our destination entity_state_t so we can get our origin, etc. from it

View File

@ -63,9 +63,6 @@ void CBarnacleGrapple::Precache( void )
PRECACHE_MODEL( "sprites/tongue.spr" );
UTIL_PrecacheOther( "grapple_tip" );
m_flNextPrimaryAttack = 0;
m_flNextSecondaryAttack = 0;
m_flTimeWeaponIdle = 0;
}
void CBarnacleGrapple::Spawn( void )
@ -110,7 +107,7 @@ int CBarnacleGrapple::AddToPlayer( CBasePlayer* pPlayer )
BOOL CBarnacleGrapple::Deploy()
{
int r = DefaultDeploy("models/v_bgrap.mdl", "models/p_bgrap.mdl", BGRAPPLE_UP, "gauss" );
m_flTimeWeaponIdle = gpGlobals->time + 1.1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.1;
return r;
}
@ -128,7 +125,7 @@ void CBarnacleGrapple::WeaponIdle( void )
{
ResetEmptySound();
if( m_flTimeWeaponIdle > gpGlobals->time )
if( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() )
return;
if( m_fireState != OFF )
@ -146,19 +143,19 @@ void CBarnacleGrapple::WeaponIdle( void )
if( flNextIdle <= 0.5 )
{
iAnim = BGRAPPLE_LONGIDLE;
m_flTimeWeaponIdle = gpGlobals->time + 10.0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 10.0;
}
else if( flNextIdle > 0.95 )
{
EMIT_SOUND_DYN( ENT(m_pPlayer->pev), CHAN_STATIC, "weapons/bgrapple_cough.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
iAnim = BGRAPPLE_COUGH;
m_flTimeWeaponIdle = gpGlobals->time + 4.6;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 4.6;
}
else
{
iAnim = BGRAPPLE_BREATHE;
m_flTimeWeaponIdle = gpGlobals->time + 2.566;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.566;
}
SendWeaponAnim( iAnim );
@ -168,7 +165,7 @@ void CBarnacleGrapple::PrimaryAttack( void )
{
if( m_bMissed )
{
m_flTimeWeaponIdle = gpGlobals->time + 0.1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1;
return;
}
@ -300,7 +297,7 @@ void CBarnacleGrapple::PrimaryAttack( void )
m_pPlayer->m_iWeaponVolume = 450;
m_flTimeWeaponIdle = gpGlobals->time + 0.1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1;
#ifndef CLIENT_DLL
if( g_pGameRules->IsMultiplayer() )
{
@ -317,7 +314,7 @@ void CBarnacleGrapple::PrimaryAttack( void )
if( !m_pTip )
{
m_flNextPrimaryAttack = gpGlobals->time + 0.01;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.01;
return;
}
@ -425,7 +422,7 @@ void CBarnacleGrapple::PrimaryAttack( void )
else
*/
{
m_flNextPrimaryAttack = gpGlobals->time + 0.01;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.01;
}
}
@ -466,9 +463,9 @@ void CBarnacleGrapple::EndAttack( void )
EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_WEAPON, "weapons/bgrapple_pull.wav", 0.0, ATTN_NONE, SND_STOP, 100 );
m_flTimeWeaponIdle = gpGlobals->time + 0.9;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.9;
m_flNextPrimaryAttack = gpGlobals->time + 0.01;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.01;
DestroyEffect();

View File

@ -1182,11 +1182,13 @@ public:
void DestroyEffect( void );
virtual BOOL UseDecrement(void)
{
#if defined( CLIENT_WEAPONS )
return TRUE;
#else
return FALSE;
#endif
}
const char* MyWModel() { return "models/w_bgrap.mdl"; }
private:
CBarnacleGrappleTip* m_pTip;