Browse Source

Merge boltgun source code into crossbow.

coldice
Night Owl 8 years ago
parent
commit
0d05236654
  1. 2
      cl_dll/CMakeLists.txt
  2. 6
      cl_dll/ev_hldm.cpp
  3. 11
      cl_dll/hl/hl_weapons.cpp
  4. 4
      dlls/CMakeLists.txt
  5. 180
      dlls/crossbow.cpp
  6. 6
      dlls/weapons.h

2
cl_dll/CMakeLists.txt

@ -29,7 +29,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-write-strings -DLINUX -D_LINUX -Dstricm
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
set (CLDLL_SOURCES set (CLDLL_SOURCES
# ../dlls/crossbow.cpp ../dlls/crossbow.cpp
../dlls/crowbar.cpp ../dlls/crowbar.cpp
../dlls/egon.cpp ../dlls/egon.cpp
# ../dlls/gauss.cpp # ../dlls/gauss.cpp

6
cl_dll/ev_hldm.cpp

@ -1232,7 +1232,7 @@ void EV_FireCrossbow2( event_args_t *args )
VectorMA( vecSrc, 8192, forward, vecEnd ); VectorMA( vecSrc, 8192, forward, vecEnd );
gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/xbow_fire1.wav", 1, ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) ); gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/boltgun1.wav", 1, ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) );
gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_ITEM, "weapons/xbow_reload1.wav", gEngfuncs.pfnRandomFloat( 0.95, 1.0 ), ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) ); gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_ITEM, "weapons/xbow_reload1.wav", gEngfuncs.pfnRandomFloat( 0.95, 1.0 ), ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) );
if( EV_IsLocal( idx ) ) if( EV_IsLocal( idx ) )
@ -1279,7 +1279,7 @@ void EV_FireCrossbow2( event_args_t *args )
gEngfuncs.pEfxAPI->R_SparkShower( tr.endpos ); gEngfuncs.pEfxAPI->R_SparkShower( tr.endpos );
vec3_t vBoltAngles; vec3_t vBoltAngles;
int iModelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "models/crossbow_bolt.mdl" ); int iModelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "models/bolt.mdl" );
VectorAngles( forward, vBoltAngles ); VectorAngles( forward, vBoltAngles );
@ -1307,7 +1307,7 @@ void EV_FireCrossbow( event_args_t *args )
idx = args->entindex; idx = args->entindex;
VectorCopy( args->origin, origin ); VectorCopy( args->origin, origin );
gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/xbow_fire1.wav", 1, ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) ); gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/boltgun1.wav", 1, ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) );
gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_ITEM, "weapons/xbow_reload1.wav", gEngfuncs.pfnRandomFloat( 0.95, 1.0 ), ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) ); gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_ITEM, "weapons/xbow_reload1.wav", gEngfuncs.pfnRandomFloat( 0.95, 1.0 ), ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0xF ) );
//Only play the weapon anims if I shot it. //Only play the weapon anims if I shot it.

11
cl_dll/hl/hl_weapons.cpp

@ -57,8 +57,9 @@ vec3_t previousorigin;
CCrowbar g_Crowbar; CCrowbar g_Crowbar;
/* /*
CPython g_Python; CPython g_Python;
CMP5 g_Mp5; CMP5 g_Mp5*/;
CCrossbow g_Crossbow; CCrossbow g_Crossbow;
/*
CShotgun g_Shotgun; CShotgun g_Shotgun;
CRpg g_Rpg; CRpg g_Rpg;
CGauss g_Gauss;*/ CGauss g_Gauss;*/
@ -627,9 +628,9 @@ void HUD_InitClientWeapons( void )
//HUD_PrepEntity( &g_Glock, &player ); //HUD_PrepEntity( &g_Glock, &player );
HUD_PrepEntity( &g_Crowbar, &player ); HUD_PrepEntity( &g_Crowbar, &player );
/*HUD_PrepEntity( &g_Python, &player ); /*HUD_PrepEntity( &g_Python, &player );
HUD_PrepEntity( &g_Mp5, &player ); HUD_PrepEntity( &g_Mp5, &player );*/
HUD_PrepEntity( &g_Crossbow, &player ); HUD_PrepEntity( &g_Crossbow, &player );
HUD_PrepEntity( &g_Shotgun, &player ); /*HUD_PrepEntity( &g_Shotgun, &player );
HUD_PrepEntity( &g_Rpg, &player ); HUD_PrepEntity( &g_Rpg, &player );
HUD_PrepEntity( &g_Gauss, &player );*/ HUD_PrepEntity( &g_Gauss, &player );*/
HUD_PrepEntity( &g_Egon, &player ); HUD_PrepEntity( &g_Egon, &player );
@ -712,10 +713,10 @@ void HUD_WeaponsPostThink( local_state_s *from, local_state_s *to, usercmd_t *cm
break; break;
case WEAPON_MP5: case WEAPON_MP5:
pWeapon = &g_Mp5; pWeapon = &g_Mp5;
break; break;*/
case WEAPON_CROSSBOW: case WEAPON_CROSSBOW:
pWeapon = &g_Crossbow; pWeapon = &g_Crossbow;
break; break;/*
case WEAPON_SHOTGUN: case WEAPON_SHOTGUN:
pWeapon = &g_Shotgun; pWeapon = &g_Shotgun;
break; break;

4
dlls/CMakeLists.txt

@ -46,7 +46,7 @@ set (SVDLL_SOURCES
client.cpp client.cpp
combat.cpp combat.cpp
controller.cpp controller.cpp
# crossbow.cpp crossbow.cpp
crowbar.cpp crowbar.cpp
defaultai.cpp defaultai.cpp
doors.cpp doors.cpp
@ -139,7 +139,7 @@ set (SVDLL_SOURCES
coldice/mac_10.cpp coldice/mac_10.cpp
# coldice/railgun.cpp # coldice/railgun.cpp
coldice/sword.cpp coldice/sword.cpp
coldice/boltgun.cpp # coldice/boltgun.cpp
coldice/double_uzi.cpp coldice/double_uzi.cpp
coldice/mag60.cpp coldice/mag60.cpp
coldice/rifle.cpp coldice/rifle.cpp

180
dlls/crossbow.cpp

@ -41,9 +41,6 @@ class CCrossbowBolt : public CBaseEntity
int Classify( void ); int Classify( void );
void EXPORT BubbleThink( void ); void EXPORT BubbleThink( void );
void EXPORT BoltTouch( CBaseEntity *pOther ); void EXPORT BoltTouch( CBaseEntity *pOther );
void EXPORT ExplodeThink( void );
int m_iTrail;
public: public:
static CCrossbowBolt *BoltCreate( void ); static CCrossbowBolt *BoltCreate( void );
@ -69,7 +66,7 @@ void CCrossbowBolt::Spawn()
pev->gravity = 0.5; pev->gravity = 0.5;
SET_MODEL( ENT( pev ), "models/crossbow_bolt.mdl" ); SET_MODEL( ENT( pev ), "models/bolt.mdl" );
UTIL_SetOrigin( pev, pev->origin ); UTIL_SetOrigin( pev, pev->origin );
UTIL_SetSize( pev, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) ); UTIL_SetSize( pev, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) );
@ -81,13 +78,11 @@ void CCrossbowBolt::Spawn()
void CCrossbowBolt::Precache() void CCrossbowBolt::Precache()
{ {
PRECACHE_MODEL( "models/crossbow_bolt.mdl" ); PRECACHE_MODEL( "models/bolt.mdl" );
PRECACHE_SOUND( "weapons/xbow_hitbod1.wav" ); PRECACHE_SOUND( "weapons/xbow_hitbod1.wav" );
PRECACHE_SOUND( "weapons/xbow_hitbod2.wav" ); PRECACHE_SOUND( "weapons/xbow_hitbod2.wav" );
PRECACHE_SOUND( "weapons/xbow_fly1.wav" ); PRECACHE_SOUND( "weapons/xbow_fly1.wav" );
PRECACHE_SOUND( "weapons/xbow_hit1.wav" ); PRECACHE_SOUND( "weapons/xbow_hit1.wav" );
PRECACHE_SOUND( "fvox/beep.wav" );
m_iTrail = PRECACHE_MODEL( "sprites/streak.spr" );
} }
int CCrossbowBolt::Classify( void ) int CCrossbowBolt::Classify( void )
@ -112,14 +107,11 @@ void CCrossbowBolt::BoltTouch( CBaseEntity *pOther )
if( pOther->IsPlayer() ) if( pOther->IsPlayer() )
{ {
pOther->TraceAttack( pevOwner, gSkillData.plrDmgCrossbowClient, pev->velocity.Normalize(), &tr, DMG_NEVERGIB ); pOther->TraceAttack( pevOwner, gSkillData.plrDmgBoltgun, pev->velocity.Normalize(), &tr, DMG_NEVERGIB );
}
else
{
pOther->TraceAttack( pevOwner, gSkillData.plrDmgCrossbowMonster, pev->velocity.Normalize(), &tr, DMG_BULLET | DMG_NEVERGIB );
} }
ApplyMultiDamage( pev, pevOwner ); ApplyMultiDamage( pev, pevOwner );
UTIL_Remove(this); //remove!
pev->velocity = Vector( 0, 0, 0 ); pev->velocity = Vector( 0, 0, 0 );
// play body "thwack" sound // play body "thwack" sound
@ -156,7 +148,7 @@ void CCrossbowBolt::BoltTouch( CBaseEntity *pOther )
pev->velocity = Vector( 0, 0, 0 ); pev->velocity = Vector( 0, 0, 0 );
pev->avelocity.z = 0; pev->avelocity.z = 0;
pev->angles.z = RANDOM_LONG( 0, 360 ); pev->angles.z = RANDOM_LONG( 0, 360 );
pev->nextthink = gpGlobals->time + 10.0; pev->nextthink = gpGlobals->time + 0.5;
} }
else if( pOther->pev->movetype == MOVETYPE_PUSH || pOther->pev->movetype == MOVETYPE_PUSHSTEP ) else if( pOther->pev->movetype == MOVETYPE_PUSH || pOther->pev->movetype == MOVETYPE_PUSHSTEP )
{ {
@ -167,7 +159,7 @@ void CCrossbowBolt::BoltTouch( CBaseEntity *pOther )
pev->velocity = Vector( 0, 0, 0 ); pev->velocity = Vector( 0, 0, 0 );
pev->avelocity.z = 0; pev->avelocity.z = 0;
pev->angles.z = RANDOM_LONG( 0, 360 ); pev->angles.z = RANDOM_LONG( 0, 360 );
pev->nextthink = gpGlobals->time + 10.0; pev->nextthink = gpGlobals->time + 0.5;
if (gPhysicsInterfaceInitialized) { if (gPhysicsInterfaceInitialized) {
// g-cont. Setup movewith feature // g-cont. Setup movewith feature
@ -181,12 +173,6 @@ void CCrossbowBolt::BoltTouch( CBaseEntity *pOther )
UTIL_Sparks( pev->origin ); UTIL_Sparks( pev->origin );
} }
} }
if( g_pGameRules->IsMultiplayer() )
{
SetThink( &CCrossbowBolt::ExplodeThink );
pev->nextthink = gpGlobals->time + 0.1;
}
} }
void CCrossbowBolt::BubbleThink( void ) void CCrossbowBolt::BubbleThink( void )
@ -198,46 +184,6 @@ void CCrossbowBolt::BubbleThink( void )
UTIL_BubbleTrail( pev->origin - pev->velocity * 0.1, pev->origin, 1 ); UTIL_BubbleTrail( pev->origin - pev->velocity * 0.1, pev->origin, 1 );
} }
void CCrossbowBolt::ExplodeThink( void )
{
int iContents = UTIL_PointContents( pev->origin );
int iScale;
pev->dmg = 40;
iScale = 10;
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_EXPLOSION );
WRITE_COORD( pev->origin.x );
WRITE_COORD( pev->origin.y );
WRITE_COORD( pev->origin.z );
if( iContents != CONTENTS_WATER )
{
WRITE_SHORT( g_sModelIndexFireball );
}
else
{
WRITE_SHORT( g_sModelIndexWExplosion );
}
WRITE_BYTE( iScale ); // scale * 10
WRITE_BYTE( 15 ); // framerate
WRITE_BYTE( TE_EXPLFLAG_NONE );
MESSAGE_END();
entvars_t *pevOwner;
if( pev->owner )
pevOwner = VARS( pev->owner );
else
pevOwner = NULL;
pev->owner = NULL; // can't traceline attack owner if this is set
::RadiusDamage( pev->origin, pev, pevOwner, pev->dmg, 128, CLASS_NONE, DMG_BLAST | DMG_ALWAYSGIB );
UTIL_Remove( this );
}
#endif #endif
enum crossbow_e enum crossbow_e
@ -256,15 +202,17 @@ enum crossbow_e
CROSSBOW_HOLSTER2 // empty CROSSBOW_HOLSTER2 // empty
}; };
LINK_ENTITY_TO_CLASS( weapon_crossbow, CCrossbow ) LINK_ENTITY_TO_CLASS( weapon_boltgun, CCrossbow );
LINK_ENTITY_TO_CLASS( weapon_hornetgun, CCrossbow );
void CCrossbow::Spawn() void CCrossbow::Spawn()
{ {
pev->classname = MAKE_STRING("weapon_boltgun");
Precache(); Precache();
m_iId = WEAPON_CROSSBOW; m_iId = WEAPON_BOLTGUN;
SET_MODEL( ENT( pev ), "models/w_crossbow.mdl" ); SET_MODEL( ENT( pev ), "models/w_crossbow.mdl" );
m_iDefaultAmmo = CROSSBOW_DEFAULT_GIVE; m_iDefaultAmmo = BOLTGUN_DEFAULT_GIVE;
FallInit();// get ready to fall down. FallInit();// get ready to fall down.
} }
@ -287,8 +235,8 @@ void CCrossbow::Precache( void )
PRECACHE_MODEL( "models/v_crossbow.mdl" ); PRECACHE_MODEL( "models/v_crossbow.mdl" );
PRECACHE_MODEL( "models/p_crossbow.mdl" ); PRECACHE_MODEL( "models/p_crossbow.mdl" );
PRECACHE_SOUND( "weapons/xbow_fire1.wav" );
PRECACHE_SOUND( "weapons/xbow_reload1.wav" ); PRECACHE_SOUND( "weapons/xbow_reload1.wav" );
PRECACHE_SOUND( "weapons/boltgun1.wav" );
UTIL_PrecacheOther( "crossbow_bolt" ); UTIL_PrecacheOther( "crossbow_bolt" );
@ -300,15 +248,15 @@ int CCrossbow::GetItemInfo( ItemInfo *p )
{ {
p->pszName = STRING( pev->classname ); p->pszName = STRING( pev->classname );
p->pszAmmo1 = "bolts"; p->pszAmmo1 = "bolts";
p->iMaxAmmo1 = BOLT_MAX_CARRY; p->iMaxAmmo1 = BOLTGUN_MAX_CARRY;
p->pszAmmo2 = NULL; p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1; p->iMaxAmmo2 = -1;
p->iMaxClip = CROSSBOW_MAX_CLIP; p->iMaxClip = BOLTGUN_MAX_CLIP;
p->iSlot = 2; p->iSlot = 2;
p->iPosition = 2; p->iPosition = 2;
p->iId = WEAPON_CROSSBOW; p->iId = WEAPON_BOLTGUN;
p->iFlags = 0; p->iFlags = 0;
p->iWeight = CROSSBOW_WEIGHT; p->iWeight = BOLTGUN_WEIGHT;
return 1; return 1;
} }
@ -323,11 +271,6 @@ void CCrossbow::Holster( int skiplocal /* = 0 */ )
{ {
m_fInReload = FALSE;// cancel any reload in progress. m_fInReload = FALSE;// cancel any reload in progress.
if( m_fInZoom )
{
SecondaryAttack();
}
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
if( m_iClip ) if( m_iClip )
SendWeaponAnim( CROSSBOW_HOLSTER1 ); SendWeaponAnim( CROSSBOW_HOLSTER1 );
@ -337,64 +280,9 @@ void CCrossbow::Holster( int skiplocal /* = 0 */ )
void CCrossbow::PrimaryAttack( void ) void CCrossbow::PrimaryAttack( void )
{ {
#ifdef CLIENT_DLL
if( m_fInZoom && bIsMultiplayer() )
#else
if( m_fInZoom && g_pGameRules->IsMultiplayer() )
#endif
{
FireSniperBolt();
return;
}
FireBolt(); FireBolt();
} }
// this function only gets called in multiplayer
void CCrossbow::FireSniperBolt()
{
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.75;
if( m_iClip == 0 )
{
PlayEmptySound();
return;
}
TraceResult tr;
m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME;
m_iClip--;
int flags;
#if defined( CLIENT_WEAPONS )
flags = FEV_NOTHOST;
#else
flags = 0;
#endif
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrossbow2, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType], 0, 0 );
// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
Vector anglesAim = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
UTIL_MakeVectors( anglesAim );
Vector vecSrc = m_pPlayer->GetGunPosition() - gpGlobals->v_up * 2;
Vector vecDir = gpGlobals->v_forward;
UTIL_TraceLine( vecSrc, vecSrc + vecDir * 8192, dont_ignore_monsters, m_pPlayer->edict(), &tr );
#ifndef CLIENT_DLL
if( tr.pHit->v.takedamage )
{
ClearMultiDamage();
CBaseEntity::Instance( tr.pHit )->TraceAttack( m_pPlayer->pev, 120, vecDir, &tr, DMG_BULLET | DMG_NEVERGIB );
ApplyMultiDamage( pev, m_pPlayer->pev );
}
#endif
}
void CCrossbow::FireBolt() void CCrossbow::FireBolt()
{ {
TraceResult tr; TraceResult tr;
@ -447,13 +335,7 @@ void CCrossbow::FireBolt()
pBolt->pev->avelocity.z = 10; pBolt->pev->avelocity.z = 10;
#endif #endif
if( !m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 ) m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
// HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate( "!HEV_AMO0", FALSE, 0 );
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.75;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.75;
if( m_iClip != 0 ) if( m_iClip != 0 )
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 5.0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 5.0;
@ -461,34 +343,12 @@ void CCrossbow::FireBolt()
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75;
} }
void CCrossbow::SecondaryAttack()
{
if( m_pPlayer->pev->fov != 0 )
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 0; // 0 means reset to default fov
m_fInZoom = 0;
}
else if( m_pPlayer->pev->fov != 20 )
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 20;
m_fInZoom = 1;
}
pev->nextthink = UTIL_WeaponTimeBase() + 0.1;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
}
void CCrossbow::Reload( void ) void CCrossbow::Reload( void )
{ {
if( m_pPlayer->ammo_bolts <= 0 ) if( m_pPlayer->ammo_bolts <= 0 )
return; return;
if( m_pPlayer->pev->fov != 0 ) if( DefaultReload( 30, CROSSBOW_RELOAD, 4.5 ) )
{
SecondaryAttack();
}
if( DefaultReload( 5, CROSSBOW_RELOAD, 4.5 ) )
{ {
EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_ITEM, "weapons/xbow_reload1.wav", RANDOM_FLOAT( 0.95, 1.0 ), ATTN_NORM, 0, 93 + RANDOM_LONG( 0, 0xF ) ); EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_ITEM, "weapons/xbow_reload1.wav", RANDOM_FLOAT( 0.95, 1.0 ), ATTN_NORM, 0, 93 + RANDOM_LONG( 0, 0xF ) );
} }
@ -547,7 +407,7 @@ class CCrossbowAmmo : public CBasePlayerAmmo
} }
BOOL AddAmmo( CBaseEntity *pOther ) BOOL AddAmmo( CBaseEntity *pOther )
{ {
if( pOther->GiveAmmo( AMMO_CROSSBOWCLIP_GIVE, "bolts", BOLT_MAX_CARRY ) != -1 ) if( pOther->GiveAmmo( AMMO_BOLTGUN_GIVE, "bolts", BOLT_MAX_CARRY ) != -1 )
{ {
EMIT_SOUND( ENT( pev ), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM ); EMIT_SOUND( ENT( pev ), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM );
return TRUE; return TRUE;
@ -556,5 +416,5 @@ class CCrossbowAmmo : public CBasePlayerAmmo
} }
}; };
LINK_ENTITY_TO_CLASS( ammo_crossbow, CCrossbowAmmo ) LINK_ENTITY_TO_CLASS( ammo_boltgun, CCrossbowAmmo )
#endif #endif

6
dlls/weapons.h

@ -631,7 +631,7 @@ private:
unsigned short m_usMP5; unsigned short m_usMP5;
unsigned short m_usMP52; unsigned short m_usMP52;
}; };
*/
class CCrossbow : public CBasePlayerWeapon class CCrossbow : public CBasePlayerWeapon
{ {
public: public:
@ -641,9 +641,7 @@ public:
int GetItemInfo(ItemInfo *p); int GetItemInfo(ItemInfo *p);
void FireBolt( void ); void FireBolt( void );
void FireSniperBolt( void );
void PrimaryAttack( void ); void PrimaryAttack( void );
void SecondaryAttack( void );
int AddToPlayer( CBasePlayer *pPlayer ); int AddToPlayer( CBasePlayer *pPlayer );
BOOL Deploy( ); BOOL Deploy( );
void Holster( int skiplocal = 0 ); void Holster( int skiplocal = 0 );
@ -665,7 +663,7 @@ private:
unsigned short m_usCrossbow; unsigned short m_usCrossbow;
unsigned short m_usCrossbow2; unsigned short m_usCrossbow2;
}; };
/*
class CShotgun : public CBasePlayerWeapon class CShotgun : public CBasePlayerWeapon
{ {
public: public:

Loading…
Cancel
Save