Counter Strike : Global Offensive Source Code
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.
 
 
 
 
 
 

187 lines
4.3 KiB

//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose:
//
//=============================================================================
#include "cbase.h"
#include "weapon_csbasegun.h"
#include "cs_gamerules.h"
#if defined( CLIENT_DLL )
#define CWeaponTaser C_WeaponTaser
#define CWeaponPartyPopper C_WeaponPartyPopper
#include "c_cs_player.h"
#else
#include "cs_player.h"
#endif
// memdbgon must be the last include file in a .cpp file!!!
#include <tier0/memdbgon.h>
#define TASER_BIRTHDAY_PARTICLES "weapon_confetti"
#define TASER_BIRTHDAY_SOUND "Weapon_PartyHorn.Single"
class CWeaponTaser : public CWeaponCSBaseGun
{
public:
DECLARE_CLASS( CWeaponTaser, CWeaponCSBaseGun );
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
CWeaponTaser();
virtual void Precache();
virtual void PrimaryAttack( void );
virtual const char* GetMuzzleFlashEffectName_1stPerson( void );
virtual const char* GetMuzzleFlashEffectName_3rdPerson( void );
#if defined( GAME_DLL )
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo );
virtual void ItemPostFrame();
#endif
virtual CSWeaponID GetCSWeaponID( void ) const { return WEAPON_TASER; }
private:
CWeaponTaser( const CWeaponTaser& );
float m_fFireTime;
};
IMPLEMENT_NETWORKCLASS_ALIASED( WeaponTaser, DT_WeaponTaser )
BEGIN_NETWORK_TABLE( CWeaponTaser, DT_WeaponTaser )
END_NETWORK_TABLE()
BEGIN_PREDICTION_DATA( CWeaponTaser )
END_PREDICTION_DATA()
LINK_ENTITY_TO_CLASS_ALIASED( weapon_taser, WeaponTaser );
// PRECACHE_REGISTER( weapon_taser );
CWeaponTaser::CWeaponTaser() :
m_fFireTime(0.0f)
{
}
void CWeaponTaser::Precache()
{
BaseClass::Precache();
PrecacheParticleSystem( TASER_BIRTHDAY_PARTICLES );
PrecacheScriptSound( TASER_BIRTHDAY_SOUND );
}
void CWeaponTaser::PrimaryAttack( void )
{
if ( !CSBaseGunFire( GetCycleTime(), Primary_Mode ) )
return;
m_fFireTime = gpGlobals->curtime;
if ( CSGameRules() && CSGameRules()->IsCSGOBirthday() )
{
//CPASAttenuationFilter filter( this, params.soundlevel );
//EmitSound( filter, entindex(), TASER_BIRTHDAY_SOUND, &GetLocalOrigin(), 0.0f );
CPASAttenuationFilter filter( this );
filter.UsePredictionRules();
EmitSound( filter, entindex(), TASER_BIRTHDAY_SOUND );
}
}
const char* CWeaponTaser::GetMuzzleFlashEffectName_1stPerson( void )
{
if ( CSGameRules() && CSGameRules()->IsCSGOBirthday() )
{
return TASER_BIRTHDAY_PARTICLES;
}
else
{
return GetCSWpnData().GetMuzzleFlashEffectName_1stPerson( GetEconItemView() );
}
}
const char* CWeaponTaser::GetMuzzleFlashEffectName_3rdPerson( void )
{
if ( CSGameRules() && CSGameRules()->IsCSGOBirthday() )
{
return TASER_BIRTHDAY_PARTICLES;
}
else
{
return GetCSWpnData().GetMuzzleFlashEffectName_3rdPerson( GetEconItemView() );
}
}
#if defined( GAME_DLL )
bool CWeaponTaser::Holster( CBaseCombatWeapon *pSwitchingTo )
{
if ( HasAmmo() == false )
{
// just drop it if it's out of ammo and we're trying to switch away
GetPlayerOwner()->CSWeaponDrop( this );
}
return BaseClass::Holster(pSwitchingTo);
}
void CWeaponTaser::ItemPostFrame()
{
const float kTaserDropDelay = 0.5f;
BaseClass::ItemPostFrame();
if ( HasAmmo() == false && gpGlobals->curtime >= m_fFireTime + kTaserDropDelay )
{
GetPlayerOwner()->Weapon_Drop( this, NULL, NULL );
#ifndef CLIENT_DLL
//pPlayer->RemoveWeaponOnPlayer( this );
UTIL_Remove(this);
#endif
}
}
#endif
/*
class CWeaponPartyPopper : public CWeaponTaser
{
public:
DECLARE_CLASS( CWeaponPartyPopper, CWeaponTaser );
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
//CWeaponPartyPopper();
//virtual void PrimaryAttack( void );
//virtual CSWeaponID GetCSWeaponID( void ) const { return WEAPON_TASER; }
private:
//CWeaponPartyPopper( const CWeaponPartyPopper& );
};
IMPLEMENT_NETWORKCLASS_ALIASED( WeaponPartyPopper, DT_WeaponPartyPopper )
BEGIN_NETWORK_TABLE( CWeaponPartyPopper, DT_WeaponPartyPopper )
END_NETWORK_TABLE()
BEGIN_PREDICTION_DATA( CWeaponPartyPopper )
END_PREDICTION_DATA()
LINK_ENTITY_TO_CLASS_ALIASED( weapon_partypopper, WeaponPartyPopper );
void CWeaponPartyPopper::PrimaryAttack( void )
{
BaseClass::PrimaryAttack();
if ( CSGameRules() && CSGameRules()->IsCSGOBirthday() )
{
CPASAttenuationFilter filter( this );
filter.UsePredictionRules();
EmitSound( filter, entindex(), TASER_BIRTHDAY_SOUND );
//EmitSound( filter, entindex(), "Weapon_MAC10.Single" );
}
}
*/