Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------------
- // CWeaponPistol
- //-----------------------------------------------------------------------------
- class CWeaponPistol : public CBaseHLCombatWeapon
- {
- DECLARE_DATADESC();
- public:
- DECLARE_CLASS( CWeaponPistol, CBaseHLCombatWeapon );
- CWeaponPistol(void);
- DECLARE_SERVERCLASS();
- void Precache( void );
- void ItemPostFrame( void );
- void ItemPreFrame( void );
- void ItemBusyFrame( void );
- void PrimaryAttack( void );
- void AddViewKick( void );
- void DryFire( void );
- void Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator );
- //void DrawHitmarker( void );
- void UpdatePenaltyTime( void );
- int CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; }
- Activity GetPrimaryAttackActivity( void );
- virtual bool Reload( void );
- virtual const Vector& GetBulletSpread( void )
- {
- // Handle NPCs first
- static Vector npcCone = VECTOR_CONE_5DEGREES;
- if ( GetOwner() && GetOwner()->IsNPC() )
- return npcCone;
- static Vector cone;
- if ( pistol_use_new_accuracy.GetBool() )
- {
- float ramp = RemapValClamped( m_flAccuracyPenalty,
- 0.0f,
- PISTOL_ACCURACY_MAXIMUM_PENALTY_TIME,
- 0.0f,
- 1.0f );
- // We lerp from very accurate to inaccurate over time
- VectorLerp( VECTOR_CONE_1DEGREES, VECTOR_CONE_6DEGREES, ramp, cone );
- }
- else
- {
- // Old value
- cone = VECTOR_CONE_4DEGREES;
- }
- return cone;
- }
- virtual int GetMinBurst()
- {
- return 1;
- }
- virtual int GetMaxBurst()
- {
- return 3;
- }
- virtual float GetFireRate( void )
- {
- return 0.5f;
- }
- DECLARE_ACTTABLE();
- private:
- float m_flSoonestPrimaryAttack;
- float m_flLastAttackTime;
- float m_flAccuracyPenalty;
- int m_nNumShotsFired;
- };
- IMPLEMENT_SERVERCLASS_ST(CWeaponPistol, DT_WeaponPistol)
- END_SEND_TABLE()
- LINK_ENTITY_TO_CLASS( weapon_pistol, CWeaponPistol );
- PRECACHE_WEAPON_REGISTER( weapon_pistol );
- BEGIN_DATADESC( CWeaponPistol )
- DEFINE_FIELD( m_flSoonestPrimaryAttack, FIELD_TIME ),
- DEFINE_FIELD( m_flLastAttackTime, FIELD_TIME ),
- DEFINE_FIELD( m_flAccuracyPenalty, FIELD_FLOAT ), //NOTENOTE: This is NOT tracking game time
- DEFINE_FIELD( m_nNumShotsFired, FIELD_INTEGER ),
- END_DATADESC()
- acttable_t CWeaponPistol::m_acttable[] =
- {
- { ACT_IDLE, ACT_IDLE_PISTOL, true },
- { ACT_IDLE_ANGRY, ACT_IDLE_ANGRY_PISTOL, true },
- { ACT_RANGE_ATTACK1, ACT_RANGE_ATTACK_PISTOL, true },
- { ACT_RELOAD, ACT_RELOAD_PISTOL, true },
- { ACT_WALK_AIM, ACT_WALK_AIM_PISTOL, true },
- { ACT_RUN_AIM, ACT_RUN_AIM_PISTOL, true },
- { ACT_GESTURE_RANGE_ATTACK1, ACT_GESTURE_RANGE_ATTACK_PISTOL,true },
- { ACT_RELOAD_LOW, ACT_RELOAD_PISTOL_LOW, false },
- { ACT_RANGE_ATTACK1_LOW, ACT_RANGE_ATTACK_PISTOL_LOW, false },
- { ACT_COVER_LOW, ACT_COVER_PISTOL_LOW, false },
- { ACT_RANGE_AIM_LOW, ACT_RANGE_AIM_PISTOL_LOW, false },
- { ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_PISTOL, false },
- { ACT_WALK, ACT_WALK_PISTOL, false },
- { ACT_RUN, ACT_RUN_PISTOL, false },
- { ACT_HL2MP_IDLE, ACT_HL2MP_IDLE_PISTOL, false },
- { ACT_HL2MP_RUN, ACT_HL2MP_RUN_PISTOL, false },
- { ACT_HL2MP_IDLE_CROUCH, ACT_HL2MP_IDLE_CROUCH_PISTOL, false },
- { ACT_HL2MP_WALK_CROUCH, ACT_HL2MP_WALK_CROUCH_PISTOL, false },
- { ACT_HL2MP_GESTURE_RANGE_ATTACK, ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL, false },
- { ACT_HL2MP_GESTURE_RELOAD, ACT_HL2MP_GESTURE_RELOAD_PISTOL, false },
- { ACT_HL2MP_JUMP, ACT_HL2MP_JUMP_PISTOL, false },
- { ACT_RANGE_ATTACK1, ACT_RANGE_ATTACK_PISTOL, false },
- };
- IMPLEMENT_ACTTABLE( CWeaponPistol );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement