blob: be57e3d156b25a79868b3dfb1fc83874074b38b1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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();
}
|