Team Fortress 2 Source Code as on 22/4/2020
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.

85 lines
2.4 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose: CTF GrenadePack.
  4. //
  5. //=============================================================================//
  6. #include "cbase.h"
  7. #include "items.h"
  8. #include "tf_gamerules.h"
  9. #include "tf_shareddefs.h"
  10. #include "tf_player.h"
  11. #include "tf_team.h"
  12. #include "engine/IEngineSound.h"
  13. #include "entity_grenadepack.h"
  14. //=============================================================================
  15. //
  16. // CTF GrenadePack defines.
  17. //
  18. #define TF_GRENADEPACK_MODEL "models/items/grenade_pack.mdl"
  19. #define TF_GRENADEPACK_PICKUP_SOUND "GrenadePack.Touch"
  20. #define TF_GRENADEPACK_GRENADES1 4
  21. #define TF_GRENADEPACK_GRENADES2 4
  22. LINK_ENTITY_TO_CLASS( item_grenadepack, CGrenadePack );
  23. //=============================================================================
  24. //
  25. // CTF GrenadePack functions.
  26. //
  27. //-----------------------------------------------------------------------------
  28. // Purpose: Spawn function for the grenadepack
  29. //-----------------------------------------------------------------------------
  30. void CGrenadePack::Spawn( void )
  31. {
  32. Precache();
  33. SetModel( TF_GRENADEPACK_MODEL );
  34. BaseClass::Spawn();
  35. // Grenades have been removed, so remove ourself.
  36. UTIL_Remove(this);
  37. }
  38. //-----------------------------------------------------------------------------
  39. // Purpose: Precache function for the grenadepack
  40. //-----------------------------------------------------------------------------
  41. void CGrenadePack::Precache( void )
  42. {
  43. PrecacheModel( TF_GRENADEPACK_MODEL );
  44. PrecacheScriptSound( TF_GRENADEPACK_PICKUP_SOUND );
  45. }
  46. //-----------------------------------------------------------------------------
  47. // Purpose: MyTouch function for the grenadepack
  48. //-----------------------------------------------------------------------------
  49. bool CGrenadePack::MyTouch( CBasePlayer *pPlayer )
  50. {
  51. bool bSuccess = false;
  52. if ( ValidTouch( pPlayer ) )
  53. {
  54. // try to give primary grenades
  55. if ( pPlayer->GiveAmmo( TF_GRENADEPACK_GRENADES1, TF_AMMO_GRENADES1, true ) )
  56. {
  57. bSuccess = true;
  58. }
  59. // try to give secondary grenades
  60. if ( pPlayer->GiveAmmo( TF_GRENADEPACK_GRENADES2, TF_AMMO_GRENADES2, true ) )
  61. {
  62. bSuccess = true;
  63. }
  64. // did we give them anything?
  65. if ( bSuccess )
  66. {
  67. CSingleUserRecipientFilter filter( pPlayer );
  68. EmitSound( filter, entindex(), TF_GRENADEPACK_PICKUP_SOUND );
  69. }
  70. }
  71. return bSuccess;
  72. }