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(); |
|
}
|
|
|