//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Molotov weapon // // $Workfile: $ // $Date: $ // //----------------------------------------------------------------------------- // $Log: $ // // $NoKeywords: $ //=============================================================================// #include "basehlcombatweapon.h" #ifndef WEAPON_MOLOTOV_H #define WEAPON_MOLOTOV_H class CGrenade_Molotov; class CWeaponMolotov : public CBaseHLCombatWeapon { public: DECLARE_CLASS( CWeaponMolotov, CBaseHLCombatWeapon ); DECLARE_SERVERCLASS(); private: int m_nNumAmmoTypes; bool m_bNeedDraw; int m_iThrowBits; // Save the current throw bits state float m_fNextThrowCheck; // When to check throw ability next Vector m_vecTossVelocity; public: void Precache( void ); void Spawn( void ); void DrawAmmo( void ); virtual int WeaponRangeAttack1Condition( float flDot, float flDist ); virtual bool WeaponLOSCondition(const Vector &ownerPos, const Vector &targetPos, bool bSetConditions); void SetPickupTouch( void ); void MolotovTouch( CBaseEntity *pOther ); // default weapon touch int CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; } bool ObjectInWay( void ); void ThrowMolotov( const Vector &vecSrc, const Vector &vecVelocity); void ItemPostFrame( void ); void PrimaryAttack( void ); void SecondaryAttack( void ); void Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator ); DECLARE_ACTTABLE(); DECLARE_DATADESC(); CWeaponMolotov(void); }; #endif //WEAPON_MOLOTOV_H