aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/basegrenade_contact.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/basegrenade_contact.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/basegrenade_contact.cpp')
-rw-r--r--mp/src/game/server/basegrenade_contact.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/mp/src/game/server/basegrenade_contact.cpp b/mp/src/game/server/basegrenade_contact.cpp
new file mode 100644
index 00000000..fe6665a4
--- /dev/null
+++ b/mp/src/game/server/basegrenade_contact.cpp
@@ -0,0 +1,71 @@
+//========= 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"
+
+extern ConVar sk_plr_dmg_grenade;
+
+// ==========================================================================================
+
+class CBaseGrenadeContact : public CBaseGrenade
+{
+ DECLARE_CLASS( CBaseGrenadeContact, CBaseGrenade );
+public:
+
+ void Spawn( void );
+ void Precache( void );
+};
+LINK_ENTITY_TO_CLASS( npc_contactgrenade, CBaseGrenadeContact );
+
+
+void CBaseGrenadeContact::Spawn( void )
+{
+ // point sized, solid, bouncing
+ SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE );
+ SetSolid( SOLID_BBOX );
+ SetCollisionGroup( COLLISION_GROUP_PROJECTILE );
+ SetModel( "models/weapons/w_grenade.mdl" ); // BUG: wrong model
+
+ UTIL_SetSize(this, vec3_origin, vec3_origin);
+
+ // contact grenades arc lower
+ SetGravity( UTIL_ScaleForGravity( 400 ) ); // use a lower gravity for grenades to make them easier to see
+
+ QAngle angles;
+ VectorAngles(GetAbsVelocity(), angles);
+ SetLocalAngles( angles );
+
+ // make NPCs afaid of it while in the air
+ SetThink( &CBaseGrenadeContact::DangerSoundThink );
+ SetNextThink( gpGlobals->curtime );
+
+ // Tumble in air
+ QAngle vecAngVelocity( random->RandomFloat ( -100, -500 ), 0, 0 );
+ SetLocalAngularVelocity( vecAngVelocity );
+
+ // Explode on contact
+ SetTouch( &CBaseGrenadeContact::ExplodeTouch );
+
+ m_flDamage = sk_plr_dmg_grenade.GetFloat();
+
+ // Allow player to blow this puppy up in the air
+ m_takedamage = DAMAGE_YES;
+
+ m_iszBounceSound = NULL_STRING;
+}
+
+
+void CBaseGrenadeContact::Precache( void )
+{
+ BaseClass::Precache( );
+
+ PrecacheModel("models/weapons/w_grenade.mdl");
+}