diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/tf2/weapon_pistols.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/shared/tf2/weapon_pistols.cpp')
| -rw-r--r-- | game/shared/tf2/weapon_pistols.cpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/game/shared/tf2/weapon_pistols.cpp b/game/shared/tf2/weapon_pistols.cpp new file mode 100644 index 0000000..47c51a9 --- /dev/null +++ b/game/shared/tf2/weapon_pistols.cpp @@ -0,0 +1,134 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Recon's dual semi-auto pistols +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "tf_player.h" +#include "tf_basecombatweapon.h" +#include "in_buttons.h" +#include "gamerules.h" +#include "ammodef.h" +#include "basegrenade_shared.h" + +ConVar weapon_pistols_damage( "weapon_pistols_damage","0", FCVAR_NONE, "Recon pistols maximum damage" ); +ConVar weapon_pistols_range( "weapon_pistols_range","0", FCVAR_NONE, "Recon pistols maximum range" ); + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CWeaponPistols : public CTFMachineGun +{ + DECLARE_CLASS( CWeaponPistols, CTFMachineGun ); +public: + virtual float GetFireRate( void ); + virtual const Vector& GetBulletSpread( void ); + virtual bool Deploy( void ); + virtual void PrimaryAttack( void ); + virtual void SecondaryAttack( void ); + virtual void ItemPostFrame( void ); + +private: + float m_flSoonestPrimaryAttack; + float m_flLastPrimaryAttack; +}; + +LINK_ENTITY_TO_CLASS( weapon_pistols, CWeaponPistols ); +PRECACHE_WEAPON_REGISTER(weapon_pistols); + +//----------------------------------------------------------------------------- +// Purpose: Get the accuracy derived from weapon and player, and return it +//----------------------------------------------------------------------------- +const Vector& CWeaponPistols::GetBulletSpread( void ) +{ + static Vector cone; + cone = VECTOR_CONE_10DEGREES; + + // Modify accuracy based upon firing rate + // Maximum accuracy's used if you're firing at the standard rate of the gun + float flModifier = MIN( GetFireRate(), gpGlobals->curtime - m_flLastPrimaryAttack ); + flModifier = 1.0 - RemapVal( flModifier, 0, GetFireRate(), 0, 1.0 ); + cone *= flModifier; + + return cone; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +float CWeaponPistols::GetFireRate( void ) +{ + return 0.5; +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +bool CWeaponPistols::Deploy( void ) +{ + m_flSoonestPrimaryAttack = gpGlobals->curtime; + m_flLastPrimaryAttack = gpGlobals->curtime; + return BaseClass::Deploy(); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CWeaponPistols::PrimaryAttack( void ) +{ + m_flSoonestPrimaryAttack = gpGlobals->curtime + 0.1; + BaseClass::PrimaryAttack(); + m_flLastPrimaryAttack = gpGlobals->curtime; +} + +//----------------------------------------------------------------------------- +// Purpose: Throw out a sticky bomb +//----------------------------------------------------------------------------- +void CWeaponPistols::SecondaryAttack( void ) +{ + /* FIXME: Temporarily disabled + CBasePlayer *pPlayer = GetOwner(); + if ( pPlayer == NULL ) + return; + + // Calculate position & velocity + Vector vecForward; + pPlayer->EyeVectors( &vecForward ); + Vector vecOrigin = pPlayer->EyePosition(); + vecOrigin += (vecForward * 16); + + // Create the stickybomb + CBaseGrenade *pGrenade = (CBaseGrenade*)CreateEntityByName("grenade_stickybomb"); + UTIL_SetOrigin( pGrenade->pev, vecOrigin ); + pGrenade->Spawn(); + pGrenade->SetOwnerEntity( pPlayer ); + pGrenade->m_hOwner = pPlayer; + pGrenade->m_vecVelocity = vecForward * 1200; + VectorAngles( vecForward, pGrenade->GetAngles() ); + + // Reduce ammo, setup for refire + pPlayer->m_iAmmo[m_iSecondaryAmmoType]--; + m_flNextSecondaryAttack = gpGlobals->curtime + 0.5; + */ +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CWeaponPistols::ItemPostFrame( void ) +{ + CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); + if ( pPlayer == NULL ) + return; + + // Allow a refire as fast as the player can click + if ( ( ( pPlayer->m_nButtons & IN_ATTACK ) == false ) && ( m_flSoonestPrimaryAttack < gpGlobals->curtime ) + /* && ( m_flNextSecondaryAttack < gpGlobals->curtime )*/ ) + { + m_flNextPrimaryAttack = gpGlobals->curtime - 0.1f; + } + + BaseClass::ItemPostFrame(); +} + |