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.
96 lines
2.6 KiB
96 lines
2.6 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: TF Gas Grenade.
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
#include "cbase.h"
|
||
|
#include "tf_weaponbase.h"
|
||
|
#include "tf_gamerules.h"
|
||
|
#include "npcevent.h"
|
||
|
#include "engine/IEngineSound.h"
|
||
|
#include "tf_weapon_grenade_smoke_bomb.h"
|
||
|
|
||
|
// Server specific.
|
||
|
#ifdef GAME_DLL
|
||
|
#include "tf_player.h"
|
||
|
#include "items.h"
|
||
|
#include "tf_weaponbase_grenadeproj.h"
|
||
|
#include "soundent.h"
|
||
|
#include "KeyValues.h"
|
||
|
#include "particle_parse.h"
|
||
|
#include "te_effect_dispatch.h"
|
||
|
#endif
|
||
|
|
||
|
//=============================================================================
|
||
|
//
|
||
|
// TF Smoke Bomb tables.
|
||
|
//
|
||
|
|
||
|
IMPLEMENT_NETWORKCLASS_ALIASED( TFGrenadeSmokeBomb, DT_TFGrenadeSmokeBomb )
|
||
|
|
||
|
BEGIN_NETWORK_TABLE( CTFGrenadeSmokeBomb, DT_TFGrenadeSmokeBomb )
|
||
|
END_NETWORK_TABLE()
|
||
|
|
||
|
BEGIN_PREDICTION_DATA( CTFGrenadeSmokeBomb )
|
||
|
END_PREDICTION_DATA()
|
||
|
|
||
|
LINK_ENTITY_TO_CLASS( tf_weapon_grenade_smoke_bomb, CTFGrenadeSmokeBomb );
|
||
|
PRECACHE_WEAPON_REGISTER( tf_weapon_grenade_smoke_bomb );
|
||
|
|
||
|
//=============================================================================
|
||
|
//
|
||
|
// TF Smoke Bomb functions.
|
||
|
//
|
||
|
|
||
|
// Server specific.
|
||
|
#ifdef GAME_DLL
|
||
|
|
||
|
BEGIN_DATADESC( CTFGrenadeSmokeBomb )
|
||
|
END_DATADESC()
|
||
|
|
||
|
extern ConVar tf_smoke_bomb_time;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CTFWeaponBaseGrenadeProj *CTFGrenadeSmokeBomb::EmitGrenade( Vector vecSrc, QAngle vecAngles, Vector vecVel,
|
||
|
AngularImpulse angImpulse, CBasePlayer *pPlayer, float flTime, int iflags )
|
||
|
{
|
||
|
#if 0
|
||
|
CTFPlayer *pTFPlayer = ToTFPlayer( pPlayer );
|
||
|
|
||
|
if ( pTFPlayer )
|
||
|
{
|
||
|
CDisablePredictionFiltering disabler;
|
||
|
|
||
|
// Explosion effect on client
|
||
|
CEffectData explosionData;
|
||
|
explosionData.m_vOrigin = pPlayer->GetAbsOrigin();
|
||
|
explosionData.m_vAngles = pPlayer->GetAbsAngles();
|
||
|
explosionData.m_fFlags = GetWeaponID();
|
||
|
// DispatchEffect( "TF_Explosion", explosionData );
|
||
|
|
||
|
// give them the smoke bomb condition
|
||
|
// ( invis for X seconds, able to move full speed )
|
||
|
// ( attacking removes the condition )
|
||
|
|
||
|
if ( pTFPlayer->CanGoInvisible() )
|
||
|
{
|
||
|
pTFPlayer->m_Shared.AddCond( TF_COND_SMOKE_BOMB, tf_smoke_bomb_time.GetFloat() );
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Don't explode automatically
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool CTFGrenadeSmokeBomb::ShouldDetonate( void )
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
#endif // GAME_DLL
|