From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/server/basegrenade_timed.cpp | 73 ++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 mp/src/game/server/basegrenade_timed.cpp (limited to 'mp/src/game/server/basegrenade_timed.cpp') diff --git a/mp/src/game/server/basegrenade_timed.cpp b/mp/src/game/server/basegrenade_timed.cpp new file mode 100644 index 00000000..238a72d1 --- /dev/null +++ b/mp/src/game/server/basegrenade_timed.cpp @@ -0,0 +1,73 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#include "cbase.h" +#include "basegrenade_shared.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +class CBaseGrenadeTimed : public CBaseGrenade +{ +public: + DECLARE_CLASS( CBaseGrenadeTimed, CBaseGrenade ); + + void Spawn( void ); + void Precache( void ); +}; +LINK_ENTITY_TO_CLASS( npc_handgrenade, CBaseGrenadeTimed ); + + +void CBaseGrenadeTimed::Spawn( void ) +{ + SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE ); + SetSolid( SOLID_BBOX ); + SetCollisionGroup( COLLISION_GROUP_PROJECTILE ); + SetModel( "models/Weapons/w_grenade.mdl" ); + + UTIL_SetSize(this, Vector( -4, -4, -4), Vector(4, 4, 4)); + + QAngle angles; + Vector vel = GetAbsVelocity(); + + VectorAngles( vel, angles ); + SetLocalAngles( angles ); + + SetTouch( &CBaseGrenadeTimed::BounceTouch ); // Bounce if touched + + // Take one second off of the desired detonation time and set the think to PreDetonate. PreDetonate + // will insert a DANGER sound into the world sound list and delay detonation for one second so that + // the grenade explodes after the exact amount of time specified in the call to ShootTimed(). + + SetThink( &CBaseGrenadeTimed::TumbleThink ); + SetNextThink( gpGlobals->curtime + 0.1f ); + + // if the delay is < 0.1 seconds, don't fly anywhere + if ((m_flDetonateTime - gpGlobals->curtime) < 0.1) + { + SetNextThink( gpGlobals->curtime ); + SetAbsVelocity( vec3_origin ); + } + + // Tumble through the air + // pGrenade->m_vecAngVelocity.x = -400; + SetGravity(1.0); // Don't change or throw calculations will be off! + SetFriction(0.8); + + m_flDamage = 100; // ???? + + m_takedamage = DAMAGE_NO; +} + + + +void CBaseGrenadeTimed::Precache( void ) +{ + BaseClass::Precache( ); + + PrecacheModel("models/weapons/w_grenade.mdl"); +} -- cgit v1.2.3