summaryrefslogtreecommitdiff
path: root/game/server/tf/entity_grenadepack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/tf/entity_grenadepack.cpp')
-rw-r--r--game/server/tf/entity_grenadepack.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/game/server/tf/entity_grenadepack.cpp b/game/server/tf/entity_grenadepack.cpp
new file mode 100644
index 0000000..6396e73
--- /dev/null
+++ b/game/server/tf/entity_grenadepack.cpp
@@ -0,0 +1,85 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: CTF GrenadePack.
+//
+//=============================================================================//
+#include "cbase.h"
+#include "items.h"
+#include "tf_gamerules.h"
+#include "tf_shareddefs.h"
+#include "tf_player.h"
+#include "tf_team.h"
+#include "engine/IEngineSound.h"
+#include "entity_grenadepack.h"
+
+//=============================================================================
+//
+// CTF GrenadePack defines.
+//
+
+#define TF_GRENADEPACK_MODEL "models/items/grenade_pack.mdl"
+#define TF_GRENADEPACK_PICKUP_SOUND "GrenadePack.Touch"
+#define TF_GRENADEPACK_GRENADES1 4
+#define TF_GRENADEPACK_GRENADES2 4
+
+LINK_ENTITY_TO_CLASS( item_grenadepack, CGrenadePack );
+
+//=============================================================================
+//
+// CTF GrenadePack functions.
+//
+
+//-----------------------------------------------------------------------------
+// Purpose: Spawn function for the grenadepack
+//-----------------------------------------------------------------------------
+void CGrenadePack::Spawn( void )
+{
+ Precache();
+ SetModel( TF_GRENADEPACK_MODEL );
+
+ BaseClass::Spawn();
+
+ // Grenades have been removed, so remove ourself.
+ UTIL_Remove(this);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Precache function for the grenadepack
+//-----------------------------------------------------------------------------
+void CGrenadePack::Precache( void )
+{
+ PrecacheModel( TF_GRENADEPACK_MODEL );
+ PrecacheScriptSound( TF_GRENADEPACK_PICKUP_SOUND );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: MyTouch function for the grenadepack
+//-----------------------------------------------------------------------------
+bool CGrenadePack::MyTouch( CBasePlayer *pPlayer )
+{
+ bool bSuccess = false;
+
+ if ( ValidTouch( pPlayer ) )
+ {
+ // try to give primary grenades
+ if ( pPlayer->GiveAmmo( TF_GRENADEPACK_GRENADES1, TF_AMMO_GRENADES1, true ) )
+ {
+ bSuccess = true;
+ }
+
+ // try to give secondary grenades
+ if ( pPlayer->GiveAmmo( TF_GRENADEPACK_GRENADES2, TF_AMMO_GRENADES2, true ) )
+ {
+ bSuccess = true;
+ }
+
+ // did we give them anything?
+ if ( bSuccess )
+ {
+ CSingleUserRecipientFilter filter( pPlayer );
+ EmitSound( filter, entindex(), TF_GRENADEPACK_PICKUP_SOUND );
+ }
+ }
+
+ return bSuccess;
+}