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.
75 lines
2.7 KiB
75 lines
2.7 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: Medic's plasma rifle
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
#include "cbase.h"
|
||
|
#include "tf_player.h"
|
||
|
#include "in_buttons.h"
|
||
|
#include "gamerules.h"
|
||
|
#include "ammodef.h"
|
||
|
#include "entitylist.h"
|
||
|
#include "plasmaprojectile.h"
|
||
|
#include "tf_shareddefs.h"
|
||
|
#include "basegrenade_shared.h"
|
||
|
#include "tf_basecombatweapon.h"
|
||
|
|
||
|
// Damage CVars
|
||
|
ConVar weapon_plasmarifle_damage( "weapon_plasmarifle_damage","0", FCVAR_NONE, "Plasma Rifle maximum damage" );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CWeaponPlasmaRifle : public CTFMachineGun
|
||
|
{
|
||
|
DECLARE_CLASS( CWeaponPlasmaRifle, CTFMachineGun );
|
||
|
public:
|
||
|
virtual void FireBullets( CBaseTFCombatWeapon *pWeapon, int cShots, const Vector &vecSrc, const Vector &vecDirShooting, const Vector &vecSpread, float flDistance, int iBulletType, int iTracerFreq);
|
||
|
virtual const Vector& GetBulletSpread( void );
|
||
|
virtual float GetFireRate( void );
|
||
|
};
|
||
|
|
||
|
LINK_ENTITY_TO_CLASS( weapon_plasmarifle, CWeaponPlasmaRifle );
|
||
|
PRECACHE_WEAPON_REGISTER(weapon_plasmarifle);
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CWeaponPlasmaRifle::FireBullets( CBaseTFCombatWeapon *pWeapon, int cShots, const Vector &vecSrc, const Vector &vecDirShooting, const Vector &vecSpread, float flDistance, int iBulletType, int iTracerFreq )
|
||
|
{
|
||
|
CBaseTFPlayer *pPlayer = static_cast< CBaseTFPlayer * >( GetOwner() );
|
||
|
if ( !pPlayer )
|
||
|
return;
|
||
|
|
||
|
Vector vecForward;
|
||
|
pPlayer->EyeVectors( &vecForward );
|
||
|
Vector vecOrigin = pPlayer->EyePosition();
|
||
|
trace_t tr;
|
||
|
|
||
|
Vector vecTracerSrc = pWeapon->GetTracerSrc( (Vector&)vecSrc, (Vector&)vecDirShooting );
|
||
|
|
||
|
// Fire the emp projectile
|
||
|
CBasePlasmaProjectile *pPlasma = CBasePlasmaProjectile::Create( vecTracerSrc, vecDirShooting, DMG_ENERGYBEAM, pPlayer );
|
||
|
pPlasma->SetDamage( weapon_plasmarifle_damage.GetFloat() );
|
||
|
pPlasma->m_hOwner = pPlayer;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Get the accuracy derived from weapon and player, and return it
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const Vector& CWeaponPlasmaRifle::GetBulletSpread( void )
|
||
|
{
|
||
|
static Vector cone = VECTOR_CONE_4DEGREES;
|
||
|
return cone;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
float CWeaponPlasmaRifle::GetFireRate( void )
|
||
|
{
|
||
|
return 0.2;
|
||
|
}
|
||
|
|