You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
3.2 KiB
132 lines
3.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
//========= Copyright © 1996-2003, Valve LLC, All rights reserved. ============ |
|
// |
|
// Purpose: This is the incendiary rifle. |
|
// |
|
//============================================================================= |
|
|
|
|
|
#include "cbase.h" |
|
#include "npcevent.h" |
|
#include "basehlcombatweapon.h" |
|
#include "basecombatcharacter.h" |
|
#include "soundent.h" |
|
#include "player.h" |
|
#include "IEffects.h" |
|
#include "vstdlib/random.h" |
|
#include "engine/IEngineSound.h" |
|
#include "weapon_flaregun.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
//########################################################################### |
|
// >> CWeaponIRifle |
|
//########################################################################### |
|
|
|
class CWeaponIRifle : public CBaseHLCombatWeapon |
|
{ |
|
public: |
|
|
|
CWeaponIRifle(); |
|
|
|
DECLARE_SERVERCLASS(); |
|
DECLARE_CLASS( CWeaponIRifle, CBaseHLCombatWeapon ); |
|
|
|
void Precache( void ); |
|
bool Deploy( void ); |
|
|
|
void PrimaryAttack( void ); |
|
virtual float GetFireRate( void ) { return 1; }; |
|
|
|
int CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; } |
|
|
|
virtual const Vector& GetBulletSpread( void ) |
|
{ |
|
static Vector cone = VECTOR_CONE_3DEGREES; |
|
return cone; |
|
} |
|
|
|
DECLARE_ACTTABLE(); |
|
}; |
|
|
|
IMPLEMENT_SERVERCLASS_ST(CWeaponIRifle, DT_WeaponIRifle) |
|
END_SEND_TABLE() |
|
|
|
LINK_ENTITY_TO_CLASS( weapon_irifle, CWeaponIRifle ); |
|
PRECACHE_WEAPON_REGISTER(weapon_irifle); |
|
|
|
//--------------------------------------------------------- |
|
// Activity table |
|
//--------------------------------------------------------- |
|
acttable_t CWeaponIRifle::m_acttable[] = |
|
{ |
|
{ ACT_RANGE_ATTACK1, ACT_RANGE_ATTACK_ML, true }, |
|
}; |
|
IMPLEMENT_ACTTABLE(CWeaponIRifle); |
|
|
|
//--------------------------------------------------------- |
|
// Constructor |
|
//--------------------------------------------------------- |
|
CWeaponIRifle::CWeaponIRifle() |
|
{ |
|
m_bReloadsSingly = true; |
|
|
|
m_fMinRange1 = 65; |
|
m_fMinRange2 = 65; |
|
m_fMaxRange1 = 200; |
|
m_fMaxRange2 = 200; |
|
} |
|
|
|
//--------------------------------------------------------- |
|
//--------------------------------------------------------- |
|
void CWeaponIRifle::Precache( void ) |
|
{ |
|
BaseClass::Precache(); |
|
} |
|
|
|
//--------------------------------------------------------- |
|
//--------------------------------------------------------- |
|
void CWeaponIRifle::PrimaryAttack( void ) |
|
{ |
|
CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); |
|
|
|
if ( pOwner == NULL ) |
|
return; |
|
|
|
m_iClip1 = m_iClip1 - 1; |
|
|
|
SendWeaponAnim( ACT_VM_PRIMARYATTACK ); |
|
pOwner->m_flNextAttack = gpGlobals->curtime + 1; |
|
|
|
CFlare *pFlare = CFlare::Create( pOwner->Weapon_ShootPosition(), pOwner->EyeAngles(), pOwner, FLARE_DURATION ); |
|
|
|
if ( pFlare == NULL ) |
|
return; |
|
|
|
Vector forward; |
|
pOwner->EyeVectors( &forward ); |
|
|
|
pFlare->SetAbsVelocity( forward * 1500 ); |
|
|
|
WeaponSound( SINGLE ); |
|
} |
|
|
|
//--------------------------------------------------------- |
|
// BUGBUG - don't give ammo here. |
|
//--------------------------------------------------------- |
|
bool CWeaponIRifle::Deploy( void ) |
|
{ |
|
CBaseCombatCharacter *pOwner = GetOwner(); |
|
if (pOwner) |
|
{ |
|
pOwner->GiveAmmo( 90, m_iPrimaryAmmoType); |
|
} |
|
return BaseClass::Deploy(); |
|
}
|
|
|