mirror of https://github.com/FWGS/hlsdk-xash3d
83 lines
1.9 KiB
C++
83 lines
1.9 KiB
C++
#include "extdll.h"
|
|
#include "util.h"
|
|
#include "cbase.h"
|
|
#include "monsters.h"
|
|
#include "weapons.h"
|
|
#include "nodes.h"
|
|
#include "player.h"
|
|
#include "gamerules.h"
|
|
|
|
LINK_ENTITY_TO_CLASS( tf_weapon_railgun, CTFRailgun )
|
|
|
|
void CTFRailgun::Spawn()
|
|
{
|
|
Precache();
|
|
|
|
//pev->classname = STRING("tf_weapon_railgun");
|
|
SET_MODEL( ENT( pev ), "models/w_gauss.mdl" );
|
|
m_iId = 21;
|
|
m_iDefaultAmmo = 17;
|
|
pev->solid = SOLID_TRIGGER;
|
|
}
|
|
|
|
int CTFRailgun::GetItemInfo( ItemInfo *p )
|
|
{
|
|
p->pszAmmo1 = "";
|
|
p->pszName = STRING( pev->classname );
|
|
p->iMaxAmmo1 = 50;
|
|
p->pszAmmo2 = 0;
|
|
p->iMaxAmmo2 = -1;
|
|
p->iSlot = 1;
|
|
p->iPosition = 2;
|
|
p->iFlags = 0;
|
|
p->iMaxClip = -1;
|
|
p->iId = 21;
|
|
p->iWeight = 10;
|
|
return 1;
|
|
}
|
|
|
|
void CTFRailgun::Precache()
|
|
{
|
|
PRECACHE_MODEL("models/v_tfc_railgun.mdl");
|
|
PRECACHE_MODEL("models/w_gauss.mdl");
|
|
PRECACHE_MODEL("models/p_9mmhandgun.mdl");
|
|
PRECACHE_MODEL("models/p_9mmhandgun2.mdl");
|
|
PRECACHE_SOUND("weapons/railgun.wav");
|
|
m_usFireRail = PRECACHE_EVENT(1, "events/wpn/tf_rail.sc");
|
|
}
|
|
|
|
BOOL CTFRailgun::Deploy()
|
|
{
|
|
return DefaultDeploy( "models/v_tfc_railgun.mdl", "models/p_9mmhandgun.mdl", 2, "onehanded", 1 );
|
|
}
|
|
|
|
void CTFRailgun::PrimaryAttack()
|
|
{
|
|
if(m_pPlayer->ammo_bolts <= 0)
|
|
{
|
|
PlayEmptySound();
|
|
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2;
|
|
return;
|
|
}
|
|
|
|
m_pPlayer->m_iWeaponVolume = 600;
|
|
m_pPlayer->m_iWeaponFlash = 256;
|
|
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usFireRail, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
|
|
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
|
|
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
|
|
m_pPlayer->ammo_bolts--;
|
|
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.4;
|
|
m_flTimeWeaponIdle = 12.5;
|
|
}
|
|
|
|
void CTFRailgun::WeaponIdle( void )
|
|
{
|
|
ResetEmptySound();
|
|
|
|
if(m_flTimeWeaponIdle <= 0.0)
|
|
{
|
|
m_flTimeWeaponIdle = 12.5;
|
|
SendWeaponAnim(0, 1);
|
|
}
|
|
}
|