diff --git a/game/server/hl2/weapon_shotgun.cpp b/game/server/hl2/weapon_shotgun.cpp index a832a3d6..a889d379 100644 --- a/game/server/hl2/weapon_shotgun.cpp +++ b/game/server/hl2/weapon_shotgun.cpp @@ -552,9 +552,9 @@ void CWeaponShotgun::SecondaryAttack( void ) //----------------------------------------------------------------------------- // 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) { return; @@ -563,23 +563,23 @@ void CWeaponShotgun::ItemPostFrame( void ) if (m_bInReload) { // 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_bNeedPump = false; + m_bInReload = false; + m_bNeedPump = false; m_bDelayedFire1 = true; } // 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_bNeedPump = false; + m_bInReload = false; + m_bNeedPump = false; m_bDelayedFire2 = true; } else if (m_flNextPrimaryAttack <= gpGlobals->curtime) { // If out of ammo end reload - if (pOwner->GetAmmoCount(m_iPrimaryAmmoType) <=0) + if (pOwner->GetAmmoCount(m_iPrimaryAmmoType) <= 0) { FinishReload(); return; @@ -599,9 +599,9 @@ void CWeaponShotgun::ItemPostFrame( void ) } } else - { + { // Make shotgun shell invisible - SetBodygroup(1,1); + SetBodygroup(1, 1); } if ((m_bNeedPump) && (m_flNextPrimaryAttack <= gpGlobals->curtime)) @@ -609,78 +609,87 @@ void CWeaponShotgun::ItemPostFrame( void ) Pump(); return; } - - // Shotgun uses same timing and ammo for secondary attack - if ((m_bDelayedFire2 || pOwner->m_nButtons & IN_ATTACK2)&&(m_flNextPrimaryAttack <= gpGlobals->curtime)) + +#ifdef GAME_DLL + if (!m_bLowered) { - m_bDelayedFire2 = false; - - if ( (m_iClip1 <= 1 && UsesClipsForAmmo1())) +#endif // GAME_DLL + + + // 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 - if ( m_iClip1 == 1 ) + m_bDelayedFire2 = false; + + 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(); } - 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 ) { diff --git a/game/shared/basecombatweapon_shared.cpp b/game/shared/basecombatweapon_shared.cpp index b0d52d96..0df84929 100644 --- a/game/shared/basecombatweapon_shared.cpp +++ b/game/shared/basecombatweapon_shared.cpp @@ -94,6 +94,11 @@ CBaseCombatWeapon::CBaseCombatWeapon() : BASECOMBATWEAPON_DERIVED_FROM() m_hWeaponFileInfo = GetInvalidWeaponInfoHandle(); +#ifdef GAME_DLL + m_bLowered = false; + m_flRaiseTime = gpGlobals->curtime; +#endif + #if defined( TF_DLL ) UseClientSideAnimation(); #endif diff --git a/game/shared/basecombatweapon_shared.h b/game/shared/basecombatweapon_shared.h index ba075ec6..b83b2b99 100644 --- a/game/shared/basecombatweapon_shared.h +++ b/game/shared/basecombatweapon_shared.h @@ -526,7 +526,6 @@ private: CNetworkVar( CBaseCombatCharacterHandle, m_hOwner ); // Player carrying this weapon 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 diff --git a/game/shared/hl2/basehlcombatweapon_shared.h b/game/shared/hl2/basehlcombatweapon_shared.h index 485437e4..6572e9f2 100644 --- a/game/shared/hl2/basehlcombatweapon_shared.h +++ b/game/shared/hl2/basehlcombatweapon_shared.h @@ -58,6 +58,10 @@ public: protected: +#ifndef 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 float m_flHolsterTime; // When the weapon was holstered };