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.
122 lines
3.0 KiB
122 lines
3.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//
|
|
//=============================================================================
|
|
#include "cbase.h"
|
|
#include "tf_weapon_syringegun.h"
|
|
#include "tf_fx_shared.h"
|
|
#include "tf_weapon_medigun.h"
|
|
|
|
// Client specific.
|
|
#ifdef CLIENT_DLL
|
|
#include "c_tf_player.h"
|
|
// Server specific.
|
|
#else
|
|
#include "tf_player.h"
|
|
#endif
|
|
|
|
//=============================================================================
|
|
//
|
|
// Weapon Syringe Gun tables.
|
|
//
|
|
IMPLEMENT_NETWORKCLASS_ALIASED( TFSyringeGun, DT_WeaponSyringeGun )
|
|
|
|
BEGIN_NETWORK_TABLE( CTFSyringeGun, DT_WeaponSyringeGun )
|
|
END_NETWORK_TABLE()
|
|
|
|
BEGIN_PREDICTION_DATA( CTFSyringeGun )
|
|
END_PREDICTION_DATA()
|
|
|
|
LINK_ENTITY_TO_CLASS( tf_weapon_syringegun_medic, CTFSyringeGun );
|
|
PRECACHE_WEAPON_REGISTER( tf_weapon_syringegun_medic );
|
|
|
|
// Server specific.
|
|
#ifndef CLIENT_DLL
|
|
BEGIN_DATADESC( CTFSyringeGun )
|
|
END_DATADESC()
|
|
#endif
|
|
|
|
//=============================================================================
|
|
//
|
|
// Weapon SyringeGun functions.
|
|
//
|
|
void CTFSyringeGun::Precache()
|
|
{
|
|
BaseClass::Precache();
|
|
|
|
#ifndef CLIENT_DLL
|
|
PrecacheParticleSystem( "nailtrails_medic_blue_crit" );
|
|
PrecacheParticleSystem( "nailtrails_medic_blue" );
|
|
PrecacheParticleSystem( "nailtrails_medic_red_crit" );
|
|
PrecacheParticleSystem( "nailtrails_medic_red" );
|
|
#endif
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
bool CTFSyringeGun::Deploy()
|
|
{
|
|
CBaseEntity *pOwner = GetOwnerEntity();
|
|
if ( pOwner )
|
|
{
|
|
ToTFPlayer( pOwner )->TeamFortress_SetSpeed();
|
|
}
|
|
|
|
return BaseClass::Deploy();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
bool CTFSyringeGun::Holster( CBaseCombatWeapon *pSwitchingTo )
|
|
{
|
|
CBaseEntity *pOwner = GetOwnerEntity();
|
|
if ( pOwner )
|
|
{
|
|
ToTFPlayer( pOwner )->TeamFortress_SetSpeed();
|
|
}
|
|
|
|
return BaseClass::Holster( pSwitchingTo );
|
|
}
|
|
|
|
void CTFSyringeGun::RemoveProjectileAmmo( CTFPlayer *pPlayer )
|
|
{
|
|
float flUberChargeAmmoPerShot = UberChargeAmmoPerShot();
|
|
if ( flUberChargeAmmoPerShot > 0.0f )
|
|
{
|
|
#ifndef CLIENT_DLL
|
|
if ( !pPlayer )
|
|
return;
|
|
|
|
CWeaponMedigun *pMedigun = static_cast< CWeaponMedigun * >( pPlayer->Weapon_OwnsThisID( TF_WEAPON_MEDIGUN ) );
|
|
if ( !pMedigun )
|
|
return;
|
|
|
|
pMedigun->SubtractCharge( flUberChargeAmmoPerShot );
|
|
#endif
|
|
return;
|
|
}
|
|
|
|
return BaseClass::RemoveProjectileAmmo( pPlayer );
|
|
}
|
|
|
|
bool CTFSyringeGun::HasPrimaryAmmo( void )
|
|
{
|
|
float flUberChargeAmmoPerShot = UberChargeAmmoPerShot();
|
|
if ( flUberChargeAmmoPerShot > 0.0f )
|
|
{
|
|
CTFPlayer *pPlayer = ToTFPlayer( GetOwnerEntity() );
|
|
if ( !pPlayer )
|
|
return false;
|
|
|
|
CWeaponMedigun *pMedigun = static_cast< CWeaponMedigun * >( pPlayer->Weapon_OwnsThisID( TF_WEAPON_MEDIGUN ) );
|
|
if ( !pMedigun )
|
|
return false;
|
|
|
|
float flCharge = pMedigun->GetChargeLevel();
|
|
return flUberChargeAmmoPerShot <= flCharge;
|
|
}
|
|
|
|
return BaseClass::HasPrimaryAmmo();
|
|
}
|