mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-12 03:39:10 +00:00
1
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
//========= 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();
|
||||
}
|
||||
Reference in New Issue
Block a user