mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-04 18:09:53 +03:00
Compare commits
3 Commits
lightstate
...
lower_fix
| Author | SHA1 | Date | |
|---|---|---|---|
| d24120a99e | |||
| 9026dca97f | |||
| 9027b0bdb7 |
@@ -552,9 +552,9 @@ void CWeaponShotgun::SecondaryAttack( void )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: Override so shotgun can do mulitple reloads in a row
|
// Purpose: Override so shotgun can do mulitple reloads in a row
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void CWeaponShotgun::ItemPostFrame( void )
|
void CWeaponShotgun::ItemPostFrame(void)
|
||||||
{
|
{
|
||||||
CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
|
CBasePlayer* pOwner = ToBasePlayer(GetOwner());
|
||||||
if (!pOwner)
|
if (!pOwner)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -563,23 +563,23 @@ void CWeaponShotgun::ItemPostFrame( void )
|
|||||||
if (m_bInReload)
|
if (m_bInReload)
|
||||||
{
|
{
|
||||||
// If I'm primary firing and have one round stop reloading and fire
|
// If I'm primary firing and have one round stop reloading and fire
|
||||||
if ((pOwner->m_nButtons & IN_ATTACK ) && (m_iClip1 >=1))
|
if ((pOwner->m_nButtons & IN_ATTACK) && (m_iClip1 >= 1))
|
||||||
{
|
{
|
||||||
m_bInReload = false;
|
m_bInReload = false;
|
||||||
m_bNeedPump = false;
|
m_bNeedPump = false;
|
||||||
m_bDelayedFire1 = true;
|
m_bDelayedFire1 = true;
|
||||||
}
|
}
|
||||||
// If I'm secondary firing and have one round stop reloading and fire
|
// If I'm secondary firing and have one round stop reloading and fire
|
||||||
else if ((pOwner->m_nButtons & IN_ATTACK2 ) && (m_iClip1 >=2))
|
else if ((pOwner->m_nButtons & IN_ATTACK2) && (m_iClip1 >= 2))
|
||||||
{
|
{
|
||||||
m_bInReload = false;
|
m_bInReload = false;
|
||||||
m_bNeedPump = false;
|
m_bNeedPump = false;
|
||||||
m_bDelayedFire2 = true;
|
m_bDelayedFire2 = true;
|
||||||
}
|
}
|
||||||
else if (m_flNextPrimaryAttack <= gpGlobals->curtime)
|
else if (m_flNextPrimaryAttack <= gpGlobals->curtime)
|
||||||
{
|
{
|
||||||
// If out of ammo end reload
|
// If out of ammo end reload
|
||||||
if (pOwner->GetAmmoCount(m_iPrimaryAmmoType) <=0)
|
if (pOwner->GetAmmoCount(m_iPrimaryAmmoType) <= 0)
|
||||||
{
|
{
|
||||||
FinishReload();
|
FinishReload();
|
||||||
return;
|
return;
|
||||||
@@ -599,9 +599,9 @@ void CWeaponShotgun::ItemPostFrame( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Make shotgun shell invisible
|
// Make shotgun shell invisible
|
||||||
SetBodygroup(1,1);
|
SetBodygroup(1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_bNeedPump) && (m_flNextPrimaryAttack <= gpGlobals->curtime))
|
if ((m_bNeedPump) && (m_flNextPrimaryAttack <= gpGlobals->curtime))
|
||||||
@@ -609,78 +609,87 @@ void CWeaponShotgun::ItemPostFrame( void )
|
|||||||
Pump();
|
Pump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shotgun uses same timing and ammo for secondary attack
|
#ifdef GAME_DLL
|
||||||
if ((m_bDelayedFire2 || pOwner->m_nButtons & IN_ATTACK2)&&(m_flNextPrimaryAttack <= gpGlobals->curtime))
|
if (!m_bLowered)
|
||||||
{
|
{
|
||||||
m_bDelayedFire2 = false;
|
#endif // GAME_DLL
|
||||||
|
|
||||||
if ( (m_iClip1 <= 1 && UsesClipsForAmmo1()))
|
|
||||||
|
// Shotgun uses same timing and ammo for secondary attack
|
||||||
|
if ((m_bDelayedFire2 || pOwner->m_nButtons & IN_ATTACK2) && (m_flNextPrimaryAttack <= gpGlobals->curtime))
|
||||||
{
|
{
|
||||||
// If only one shell is left, do a single shot instead
|
m_bDelayedFire2 = false;
|
||||||
if ( m_iClip1 == 1 )
|
|
||||||
|
if ((m_iClip1 <= 1 && UsesClipsForAmmo1()))
|
||||||
{
|
{
|
||||||
|
// If only one shell is left, do a single shot instead
|
||||||
|
if (m_iClip1 == 1)
|
||||||
|
{
|
||||||
|
PrimaryAttack();
|
||||||
|
}
|
||||||
|
else if (!pOwner->GetAmmoCount(m_iPrimaryAmmoType))
|
||||||
|
{
|
||||||
|
DryFire();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartReload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fire underwater?
|
||||||
|
else if (GetOwner()->GetWaterLevel() == 3 && m_bFiresUnderwater == false)
|
||||||
|
{
|
||||||
|
WeaponSound(EMPTY);
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If the firing button was just pressed, reset the firing time
|
||||||
|
if (pOwner->m_afButtonPressed & IN_ATTACK)
|
||||||
|
{
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime;
|
||||||
|
}
|
||||||
|
SecondaryAttack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((m_bDelayedFire1 || pOwner->m_nButtons & IN_ATTACK) && m_flNextPrimaryAttack <= gpGlobals->curtime)
|
||||||
|
{
|
||||||
|
m_bDelayedFire1 = false;
|
||||||
|
if ((m_iClip1 <= 0 && UsesClipsForAmmo1()) || (!UsesClipsForAmmo1() && !pOwner->GetAmmoCount(m_iPrimaryAmmoType)))
|
||||||
|
{
|
||||||
|
if (!pOwner->GetAmmoCount(m_iPrimaryAmmoType))
|
||||||
|
{
|
||||||
|
DryFire();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartReload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Fire underwater?
|
||||||
|
else if (pOwner->GetWaterLevel() == 3 && m_bFiresUnderwater == false)
|
||||||
|
{
|
||||||
|
WeaponSound(EMPTY);
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If the firing button was just pressed, reset the firing time
|
||||||
|
CBasePlayer* pPlayer = ToBasePlayer(GetOwner());
|
||||||
|
if (pPlayer && pPlayer->m_afButtonPressed & IN_ATTACK)
|
||||||
|
{
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime;
|
||||||
|
}
|
||||||
PrimaryAttack();
|
PrimaryAttack();
|
||||||
}
|
}
|
||||||
else if (!pOwner->GetAmmoCount(m_iPrimaryAmmoType))
|
|
||||||
{
|
|
||||||
DryFire();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StartReload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fire underwater?
|
|
||||||
else if (GetOwner()->GetWaterLevel() == 3 && m_bFiresUnderwater == false)
|
|
||||||
{
|
|
||||||
WeaponSound(EMPTY);
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// If the firing button was just pressed, reset the firing time
|
|
||||||
if ( pOwner->m_afButtonPressed & IN_ATTACK )
|
|
||||||
{
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime;
|
|
||||||
}
|
|
||||||
SecondaryAttack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( (m_bDelayedFire1 || pOwner->m_nButtons & IN_ATTACK) && m_flNextPrimaryAttack <= gpGlobals->curtime)
|
|
||||||
{
|
|
||||||
m_bDelayedFire1 = false;
|
|
||||||
if ( (m_iClip1 <= 0 && UsesClipsForAmmo1()) || ( !UsesClipsForAmmo1() && !pOwner->GetAmmoCount(m_iPrimaryAmmoType) ) )
|
|
||||||
{
|
|
||||||
if (!pOwner->GetAmmoCount(m_iPrimaryAmmoType))
|
|
||||||
{
|
|
||||||
DryFire();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StartReload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Fire underwater?
|
|
||||||
else if (pOwner->GetWaterLevel() == 3 && m_bFiresUnderwater == false)
|
|
||||||
{
|
|
||||||
WeaponSound(EMPTY);
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// If the firing button was just pressed, reset the firing time
|
|
||||||
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
|
|
||||||
if ( pPlayer && pPlayer->m_afButtonPressed & IN_ATTACK )
|
|
||||||
{
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime;
|
|
||||||
}
|
|
||||||
PrimaryAttack();
|
|
||||||
}
|
}
|
||||||
|
#ifdef GAME_DLL
|
||||||
}
|
}
|
||||||
|
#endif // GAME_DLL
|
||||||
|
|
||||||
if ( pOwner->m_nButtons & IN_RELOAD && UsesClipsForAmmo1() && !m_bInReload )
|
if ( pOwner->m_nButtons & IN_RELOAD && UsesClipsForAmmo1() && !m_bInReload )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -94,6 +94,11 @@ CBaseCombatWeapon::CBaseCombatWeapon() : BASECOMBATWEAPON_DERIVED_FROM()
|
|||||||
|
|
||||||
m_hWeaponFileInfo = GetInvalidWeaponInfoHandle();
|
m_hWeaponFileInfo = GetInvalidWeaponInfoHandle();
|
||||||
|
|
||||||
|
#ifdef GAME_DLL
|
||||||
|
m_bLowered = false;
|
||||||
|
m_flRaiseTime = gpGlobals->curtime;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined( TF_DLL )
|
#if defined( TF_DLL )
|
||||||
UseClientSideAnimation();
|
UseClientSideAnimation();
|
||||||
#endif
|
#endif
|
||||||
@@ -1647,118 +1652,127 @@ void CBaseCombatWeapon::ItemPreFrame( void )
|
|||||||
//====================================================================================
|
//====================================================================================
|
||||||
// WEAPON BEHAVIOUR
|
// WEAPON BEHAVIOUR
|
||||||
//====================================================================================
|
//====================================================================================
|
||||||
void CBaseCombatWeapon::ItemPostFrame( void )
|
void CBaseCombatWeapon::ItemPostFrame(void)
|
||||||
{
|
{
|
||||||
CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
|
CBasePlayer* pOwner = ToBasePlayer(GetOwner());
|
||||||
if (!pOwner)
|
if (!pOwner)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
UpdateAutoFire();
|
UpdateAutoFire();
|
||||||
|
|
||||||
//Track the duration of the fire
|
//Track the duration of the fire
|
||||||
//FIXME: Check for IN_ATTACK2 as well?
|
//FIXME: Check for IN_ATTACK2 as well?
|
||||||
//FIXME: What if we're calling ItemBusyFrame?
|
//FIXME: What if we're calling ItemBusyFrame?
|
||||||
m_fFireDuration = ( pOwner->m_nButtons & IN_ATTACK ) ? ( m_fFireDuration + gpGlobals->frametime ) : 0.0f;
|
m_fFireDuration = (pOwner->m_nButtons & IN_ATTACK) ? (m_fFireDuration + gpGlobals->frametime) : 0.0f;
|
||||||
|
|
||||||
if ( UsesClipsForAmmo1() )
|
if (UsesClipsForAmmo1())
|
||||||
{
|
{
|
||||||
CheckReload();
|
CheckReload();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bFired = false;
|
bool bFired = false;
|
||||||
|
#ifdef GAME_DLL
|
||||||
// Secondary attack has priority
|
if (!m_bLowered)
|
||||||
if ((pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime))
|
|
||||||
{
|
{
|
||||||
if (UsesSecondaryAmmo() && pOwner->GetAmmoCount(m_iSecondaryAmmoType)<=0 )
|
|
||||||
{
|
|
||||||
if (m_flNextEmptySoundTime < gpGlobals->curtime)
|
|
||||||
{
|
|
||||||
WeaponSound(EMPTY);
|
|
||||||
m_flNextSecondaryAttack = m_flNextEmptySoundTime = gpGlobals->curtime + 0.5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (pOwner->GetWaterLevel() == 3 && m_bAltFiresUnderwater == false)
|
|
||||||
{
|
|
||||||
// This weapon doesn't fire underwater
|
|
||||||
WeaponSound(EMPTY);
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// FIXME: This isn't necessarily true if the weapon doesn't have a secondary fire!
|
|
||||||
// For instance, the crossbow doesn't have a 'real' secondary fire, but it still
|
|
||||||
// stops the crossbow from firing on the 360 if the player chooses to hold down their
|
|
||||||
// zoom button. (sjb) Orange Box 7/25/2007
|
|
||||||
#if !defined(CLIENT_DLL)
|
|
||||||
if( !IsX360() || !ClassMatches("weapon_crossbow") )
|
|
||||||
#endif
|
#endif
|
||||||
|
// Secondary attack has priority
|
||||||
|
if ((pOwner->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime))
|
||||||
|
{
|
||||||
|
if (UsesSecondaryAmmo() && pOwner->GetAmmoCount(m_iSecondaryAmmoType) <= 0)
|
||||||
{
|
{
|
||||||
bFired = ShouldBlockPrimaryFire();
|
if (m_flNextEmptySoundTime < gpGlobals->curtime)
|
||||||
}
|
|
||||||
|
|
||||||
SecondaryAttack();
|
|
||||||
|
|
||||||
// Secondary ammo doesn't have a reload animation
|
|
||||||
if ( UsesClipsForAmmo2() )
|
|
||||||
{
|
|
||||||
// reload clip2 if empty
|
|
||||||
if (m_iClip2 < 1)
|
|
||||||
{
|
{
|
||||||
pOwner->RemoveAmmo( 1, m_iSecondaryAmmoType );
|
WeaponSound(EMPTY);
|
||||||
m_iClip2 = m_iClip2 + 1;
|
m_flNextSecondaryAttack = m_flNextEmptySoundTime = gpGlobals->curtime + 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (pOwner->GetWaterLevel() == 3 && m_bAltFiresUnderwater == false)
|
||||||
|
{
|
||||||
|
// This weapon doesn't fire underwater
|
||||||
|
WeaponSound(EMPTY);
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// FIXME: This isn't necessarily true if the weapon doesn't have a secondary fire!
|
||||||
|
// For instance, the crossbow doesn't have a 'real' secondary fire, but it still
|
||||||
|
// stops the crossbow from firing on the 360 if the player chooses to hold down their
|
||||||
|
// zoom button. (sjb) Orange Box 7/25/2007
|
||||||
|
#if !defined(CLIENT_DLL)
|
||||||
|
if (!IsX360() || !ClassMatches("weapon_crossbow"))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
bFired = ShouldBlockPrimaryFire();
|
||||||
|
}
|
||||||
|
|
||||||
|
SecondaryAttack();
|
||||||
|
|
||||||
|
// Secondary ammo doesn't have a reload animation
|
||||||
|
if (UsesClipsForAmmo2())
|
||||||
|
{
|
||||||
|
// reload clip2 if empty
|
||||||
|
if (m_iClip2 < 1)
|
||||||
|
{
|
||||||
|
pOwner->RemoveAmmo(1, m_iSecondaryAmmoType);
|
||||||
|
m_iClip2 = m_iClip2 + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ( !bFired && (pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime))
|
|
||||||
{
|
|
||||||
// Clip empty? Or out of ammo on a no-clip weapon?
|
|
||||||
if ( !IsMeleeWeapon() &&
|
|
||||||
(( UsesClipsForAmmo1() && m_iClip1 <= 0) || ( !UsesClipsForAmmo1() && pOwner->GetAmmoCount(m_iPrimaryAmmoType)<=0 )) )
|
|
||||||
{
|
|
||||||
HandleFireOnEmpty();
|
|
||||||
}
|
|
||||||
else if (pOwner->GetWaterLevel() == 3 && m_bFiresUnderwater == false)
|
|
||||||
{
|
|
||||||
// This weapon doesn't fire underwater
|
|
||||||
WeaponSound(EMPTY);
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//NOTENOTE: There is a bug with this code with regards to the way machine guns catch the leading edge trigger
|
|
||||||
// on the player hitting the attack key. It relies on the gun catching that case in the same frame.
|
|
||||||
// However, because the player can also be doing a secondary attack, the edge trigger may be missed.
|
|
||||||
// We really need to hold onto the edge trigger and only clear the condition when the gun has fired its
|
|
||||||
// first shot. Right now that's too much of an architecture change -- jdw
|
|
||||||
|
|
||||||
// If the firing button was just pressed, or the alt-fire just released, reset the firing time
|
|
||||||
if ( ( pOwner->m_afButtonPressed & IN_ATTACK ) || ( pOwner->m_afButtonReleased & IN_ATTACK2 ) )
|
|
||||||
{
|
|
||||||
m_flNextPrimaryAttack = gpGlobals->curtime;
|
|
||||||
}
|
|
||||||
|
|
||||||
PrimaryAttack();
|
if (!bFired && (pOwner->m_nButtons & IN_ATTACK) && (m_flNextPrimaryAttack <= gpGlobals->curtime))
|
||||||
|
{
|
||||||
if ( AutoFiresFullClip() )
|
// Clip empty? Or out of ammo on a no-clip weapon?
|
||||||
|
if (!IsMeleeWeapon() &&
|
||||||
|
((UsesClipsForAmmo1() && m_iClip1 <= 0) || (!UsesClipsForAmmo1() && pOwner->GetAmmoCount(m_iPrimaryAmmoType) <= 0)))
|
||||||
{
|
{
|
||||||
m_bFiringWholeClip = true;
|
HandleFireOnEmpty();
|
||||||
}
|
}
|
||||||
|
else if (pOwner->GetWaterLevel() == 3 && m_bFiresUnderwater == false)
|
||||||
|
{
|
||||||
|
// This weapon doesn't fire underwater
|
||||||
|
WeaponSound(EMPTY);
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime + 0.2;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
//NOTENOTE: There is a bug with this code with regards to the way machine guns catch the leading edge trigger
|
||||||
|
// on the player hitting the attack key. It relies on the gun catching that case in the same frame.
|
||||||
|
// However, because the player can also be doing a secondary attack, the edge trigger may be missed.
|
||||||
|
// We really need to hold onto the edge trigger and only clear the condition when the gun has fired its
|
||||||
|
// first shot. Right now that's too much of an architecture change -- jdw
|
||||||
|
|
||||||
|
// If the firing button was just pressed, or the alt-fire just released, reset the firing time
|
||||||
|
if ((pOwner->m_afButtonPressed & IN_ATTACK) || (pOwner->m_afButtonReleased & IN_ATTACK2))
|
||||||
|
{
|
||||||
|
m_flNextPrimaryAttack = gpGlobals->curtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrimaryAttack();
|
||||||
|
|
||||||
|
if (AutoFiresFullClip())
|
||||||
|
{
|
||||||
|
m_bFiringWholeClip = true;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CLIENT_DLL
|
#ifdef CLIENT_DLL
|
||||||
pOwner->SetFiredWeapon( true );
|
pOwner->SetFiredWeapon(true);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef GAME_DLL
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// -----------------------
|
// -----------------------
|
||||||
// Reload pressed / Clip Empty
|
// Reload pressed / Clip Empty
|
||||||
// -----------------------
|
// -----------------------
|
||||||
if ( ( pOwner->m_nButtons & IN_RELOAD ) && UsesClipsForAmmo1() && !m_bInReload )
|
if ((pOwner->m_nButtons & IN_RELOAD) && UsesClipsForAmmo1() && !m_bInReload)
|
||||||
{
|
{
|
||||||
// reload when reload is pressed, or if no buttons are down and weapon is empty.
|
// reload when reload is pressed, or if no buttons are down and weapon is empty.
|
||||||
Reload();
|
Reload();
|
||||||
@@ -1771,7 +1785,7 @@ void CBaseCombatWeapon::ItemPostFrame( void )
|
|||||||
if (!((pOwner->m_nButtons & IN_ATTACK) || (pOwner->m_nButtons & IN_ATTACK2) || (CanReload() && pOwner->m_nButtons & IN_RELOAD)))
|
if (!((pOwner->m_nButtons & IN_ATTACK) || (pOwner->m_nButtons & IN_ATTACK2) || (CanReload() && pOwner->m_nButtons & IN_RELOAD)))
|
||||||
{
|
{
|
||||||
// no fire buttons down or reloading
|
// no fire buttons down or reloading
|
||||||
if ( !ReloadOrSwitchWeapons() && ( m_bInReload == false ) )
|
if (!ReloadOrSwitchWeapons() && (m_bInReload == false))
|
||||||
{
|
{
|
||||||
WeaponIdle();
|
WeaponIdle();
|
||||||
}
|
}
|
||||||
@@ -2579,6 +2593,9 @@ IMPLEMENT_NETWORKCLASS_ALIASED( BaseCombatWeapon, DT_BaseCombatWeapon )
|
|||||||
//-----------------------------------------------------------------------------//
|
//-----------------------------------------------------------------------------//
|
||||||
BEGIN_DATADESC( CBaseCombatWeapon )
|
BEGIN_DATADESC( CBaseCombatWeapon )
|
||||||
|
|
||||||
|
DEFINE_FIELD(m_bLowered, FIELD_BOOLEAN),
|
||||||
|
DEFINE_FIELD(m_flRaiseTime, FIELD_TIME),
|
||||||
|
|
||||||
DEFINE_FIELD( m_flNextPrimaryAttack, FIELD_TIME ),
|
DEFINE_FIELD( m_flNextPrimaryAttack, FIELD_TIME ),
|
||||||
DEFINE_FIELD( m_flNextSecondaryAttack, FIELD_TIME ),
|
DEFINE_FIELD( m_flNextSecondaryAttack, FIELD_TIME ),
|
||||||
DEFINE_FIELD( m_flTimeWeaponIdle, FIELD_TIME ),
|
DEFINE_FIELD( m_flTimeWeaponIdle, FIELD_TIME ),
|
||||||
|
|||||||
@@ -526,6 +526,11 @@ private:
|
|||||||
CNetworkVar( CBaseCombatCharacterHandle, m_hOwner ); // Player carrying this weapon
|
CNetworkVar( CBaseCombatCharacterHandle, m_hOwner ); // Player carrying this weapon
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
#ifdef GAME_DLL
|
||||||
|
bool m_bLowered; // Whether the viewmodel is raised or lowered
|
||||||
|
float m_flRaiseTime; // If lowered, the time we should raise the viewmodel
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined ( TF_CLIENT_DLL ) || defined ( TF_DLL )
|
#if defined ( TF_CLIENT_DLL ) || defined ( TF_DLL )
|
||||||
// Regulate crit frequency to reduce client-side seed hacking
|
// Regulate crit frequency to reduce client-side seed hacking
|
||||||
void AddToCritBucket( float flAmount );
|
void AddToCritBucket( float flAmount );
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ END_NETWORK_TABLE()
|
|||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
BEGIN_DATADESC( CBaseHLCombatWeapon )
|
BEGIN_DATADESC( CBaseHLCombatWeapon )
|
||||||
|
|
||||||
DEFINE_FIELD( m_bLowered, FIELD_BOOLEAN ),
|
|
||||||
DEFINE_FIELD( m_flRaiseTime, FIELD_TIME ),
|
|
||||||
DEFINE_FIELD( m_flHolsterTime, FIELD_TIME ),
|
DEFINE_FIELD( m_flHolsterTime, FIELD_TIME ),
|
||||||
DEFINE_FIELD( m_iPrimaryAttacks, FIELD_INTEGER ),
|
DEFINE_FIELD( m_iPrimaryAttacks, FIELD_INTEGER ),
|
||||||
DEFINE_FIELD( m_iSecondaryAttacks, FIELD_INTEGER ),
|
DEFINE_FIELD( m_iSecondaryAttacks, FIELD_INTEGER ),
|
||||||
|
|||||||
@@ -58,8 +58,10 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
#ifndef GAME_DLL
|
||||||
bool m_bLowered; // Whether the viewmodel is raised or lowered
|
bool m_bLowered; // Whether the viewmodel is raised or lowered
|
||||||
float m_flRaiseTime; // If lowered, the time we should raise the viewmodel
|
float m_flRaiseTime; // If lowered, the time we should raise the viewmodel
|
||||||
|
#endif
|
||||||
float m_flHolsterTime; // When the weapon was holstered
|
float m_flHolsterTime; // When the weapon was holstered
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ void DrawFleshInteriorBlendedPass( CBaseVSShader *pShader, IMaterialVar** params
|
|||||||
bool bUseStaticControlFlow = g_pHardwareConfig->SupportsStaticControlFlow();
|
bool bUseStaticControlFlow = g_pHardwareConfig->SupportsStaticControlFlow();
|
||||||
|
|
||||||
// Set Vertex Shader Combos
|
// Set Vertex Shader Combos
|
||||||
LightState_t lightState = { 0, false, false, false };
|
LightState_t lightState = { 0, false, false };
|
||||||
pShaderAPI->GetDX9LightState( &lightState );
|
pShaderAPI->GetDX9LightState( &lightState );
|
||||||
DECLARE_DYNAMIC_VERTEX_SHADER( flesh_interior_blended_pass_vs20 );
|
DECLARE_DYNAMIC_VERTEX_SHADER( flesh_interior_blended_pass_vs20 );
|
||||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
|
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ void DrawParticleLitGeneric_DX9( CBaseVSShader *pShader, IMaterialVar** params,
|
|||||||
pShader->BindTexture( SHADER_SAMPLER7, info.m_nFlashlightTexture, info.m_nFlashlightTextureFrame );
|
pShader->BindTexture( SHADER_SAMPLER7, info.m_nFlashlightTexture, info.m_nFlashlightTextureFrame );
|
||||||
}
|
}
|
||||||
|
|
||||||
LightState_t lightState = { 0, false, false, false };
|
LightState_t lightState = { 0, false, false };
|
||||||
if( !hasFlashlight )
|
if( !hasFlashlight )
|
||||||
pShaderAPI->GetDX9LightState( &lightState );
|
pShaderAPI->GetDX9LightState( &lightState );
|
||||||
|
|
||||||
|
|||||||
@@ -638,7 +638,7 @@ BEGIN_VS_SHADER( pyro_vision, "Help for pyro vision" )
|
|||||||
DynamicCmdsOut.SetPixelShaderConstant( 12, vParms.Base() );
|
DynamicCmdsOut.SetPixelShaderConstant( 12, vParms.Base() );
|
||||||
|
|
||||||
int numBones = pShaderAPI->GetCurrentNumBones();
|
int numBones = pShaderAPI->GetCurrentNumBones();
|
||||||
LightState_t lightState = { 0, false, false, false };
|
LightState_t lightState = { 0, false, false };
|
||||||
if ( bVertexLit && !bFullBright )
|
if ( bVertexLit && !bFullBright )
|
||||||
{
|
{
|
||||||
pShaderAPI->GetDX9LightState( &lightState );
|
pShaderAPI->GetDX9LightState( &lightState );
|
||||||
|
|||||||
@@ -611,7 +611,7 @@ void DrawSkin_DX9_Internal( CBaseVSShader *pShader, IMaterialVar** params, IShad
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LightState_t lightState = { 0, false, false, false };
|
LightState_t lightState = { 0, false, false };
|
||||||
bool bFlashlightShadows = false;
|
bool bFlashlightShadows = false;
|
||||||
if( bHasFlashlight )
|
if( bHasFlashlight )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1188,7 +1188,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
|||||||
|
|
||||||
|
|
||||||
// Set up light combo state
|
// Set up light combo state
|
||||||
LightState_t lightState = {0, false, false, false};
|
LightState_t lightState = {0, false, false};
|
||||||
if ( bVertexLitGeneric && (!bHasFlashlight || IsX360() ) )
|
if ( bVertexLitGeneric && (!bHasFlashlight || IsX360() ) )
|
||||||
{
|
{
|
||||||
pShaderAPI->GetDX9LightState( &lightState );
|
pShaderAPI->GetDX9LightState( &lightState );
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ void DrawVortWarp_DX9( CBaseVSShader *pShader, IMaterialVar** params, IShaderDyn
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set up light combo state
|
// Set up light combo state
|
||||||
LightState_t lightState = {0, false, false, false};
|
LightState_t lightState = {0, false, false};
|
||||||
if ( bVertexLitGeneric && !hasFlashlight )
|
if ( bVertexLitGeneric && !hasFlashlight )
|
||||||
{
|
{
|
||||||
pShaderAPI->GetDX9LightState( &lightState );
|
pShaderAPI->GetDX9LightState( &lightState );
|
||||||
|
|||||||
0
source-engine.unsuccessfulbuild
Normal file
0
source-engine.unsuccessfulbuild
Normal file
Reference in New Issue
Block a user