diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/hl1/hl1_item_ammo.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/server/hl1/hl1_item_ammo.cpp')
| -rw-r--r-- | game/server/hl1/hl1_item_ammo.cpp | 410 |
1 files changed, 410 insertions, 0 deletions
diff --git a/game/server/hl1/hl1_item_ammo.cpp b/game/server/hl1/hl1_item_ammo.cpp new file mode 100644 index 0000000..e5d44bc --- /dev/null +++ b/game/server/hl1/hl1_item_ammo.cpp @@ -0,0 +1,410 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Ammo boxes for HL1 +// +//=============================================================================// + + +#include "cbase.h" +#include "player.h" +#include "gamerules.h" +#include "items.h" +#include "hl1_items.h" + + +// ======================================================================== +// >> Crossbow bolts +// ======================================================================== +#define AMMO_CROSSBOW_GIVE 5 +#define AMMO_CROSSBOW_MODEL "models/w_crossbow_clip.mdl" + +class CCrossbowAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CCrossbowAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_CROSSBOW_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel( AMMO_CROSSBOW_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_CROSSBOW_GIVE, "XBowBolt" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_crossbow, CCrossbowAmmo); +PRECACHE_REGISTER(ammo_crossbow); + + +// ======================================================================== +// >> Egon ammo +// ======================================================================== +#define AMMO_EGON_GIVE 20 +#define AMMO_EGON_MODEL "models/w_chainammo.mdl" + +class CEgonAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CEgonAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_EGON_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_EGON_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_EGON_GIVE, "Uranium" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_egonclip, CEgonAmmo); +PRECACHE_REGISTER(ammo_egonclip); + + +// ======================================================================== +// >> Gauss ammo +// ======================================================================== +#define AMMO_GAUSS_GIVE 20 +#define AMMO_GAUSS_MODEL "models/w_gaussammo.mdl" + +class CGaussAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CGaussAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_GAUSS_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_GAUSS_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_GAUSS_GIVE, "Uranium" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_gaussclip, CGaussAmmo); +PRECACHE_REGISTER(ammo_gaussclip); + + +// ======================================================================== +// >> Glock ammo +// ======================================================================== +#define AMMO_GLOCK_GIVE 18 +#define AMMO_GLOCK_MODEL "models/w_9mmclip.mdl" + +class CGlockAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CGlockAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_GLOCK_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_GLOCK_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_GLOCK_GIVE, "9mmRound" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_glockclip, CGlockAmmo); +PRECACHE_REGISTER(ammo_glockclip); +LINK_ENTITY_TO_CLASS(ammo_9mmclip, CGlockAmmo); +PRECACHE_REGISTER(ammo_9mmclip); + + +// ======================================================================== +// >> MP5 ammo +// ======================================================================== +#define AMMO_MP5_GIVE 50 +#define AMMO_MP5_MODEL "models/w_9mmARclip.mdl" + +class CMP5AmmoClip : public CHL1Item +{ +public: + DECLARE_CLASS( CMP5AmmoClip, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_MP5_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_MP5_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_MP5_GIVE, "9mmRound" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_mp5clip, CMP5AmmoClip); +PRECACHE_REGISTER(ammo_mp5clip); +LINK_ENTITY_TO_CLASS(ammo_9mmar, CMP5AmmoClip); +PRECACHE_REGISTER(ammo_9mmar); + + +// ======================================================================== +// >> MP5Chain (?) ammo +// ======================================================================== +#define AMMO_MP5CHAIN_GIVE 200 +#define AMMO_MP5CHAIN_MODEL "models/w_chainammo.mdl" + +class CMP5Chainammo : public CHL1Item +{ +public: + DECLARE_CLASS( CMP5Chainammo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_MP5CHAIN_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_MP5CHAIN_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_MP5CHAIN_GIVE, "9mmRound" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_9mmbox, CMP5Chainammo); +PRECACHE_REGISTER(ammo_9mmbox); + + +// ======================================================================== +// >> MP5 grenades +// ======================================================================== +#define AMMO_MP5GRENADE_GIVE 2 +#define AMMO_MP5GRENADE_MODEL "models/w_ARgrenade.mdl" + +class CMP5AmmoGrenade : public CHL1Item +{ +public: + DECLARE_CLASS( CMP5AmmoGrenade, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_MP5GRENADE_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_MP5GRENADE_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_MP5GRENADE_GIVE, "MP5_Grenade" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_mp5grenades, CMP5AmmoGrenade); +PRECACHE_REGISTER(ammo_mp5grenades); +LINK_ENTITY_TO_CLASS(ammo_argrenades, CMP5AmmoGrenade); +PRECACHE_REGISTER(ammo_argrenades); + + +// ======================================================================== +// >> 357 ammo +// ======================================================================== +#define AMMO_357_GIVE 6 +#define AMMO_357_MODEL "models/w_357ammobox.mdl" + +class CPythonAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CPythonAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_357_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_357_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_357_GIVE, "357Round" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_357, CPythonAmmo); +PRECACHE_REGISTER(ammo_357); + + +// ======================================================================== +// >> RPG rockets +// ======================================================================== +#define AMMO_RPG_GIVE 1 +#define AMMO_RPG_MODEL "models/w_rpgammo.mdl" + +class CRpgAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CRpgAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_RPG_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_RPG_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + int nGive; + + if ( g_pGameRules->IsMultiplayer() ) + { + // hand out more ammo per rocket in multiplayer. + nGive = AMMO_RPG_GIVE * 2; + } + else + { + nGive = AMMO_RPG_GIVE; + } + + if (pPlayer->GiveAmmo( nGive, "RPG_Rocket" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_rpgclip, CRpgAmmo); +PRECACHE_REGISTER(ammo_rpgclip); + + +// ======================================================================== +// >> Shotgun ammo +// ======================================================================== +#define AMMO_SHOTGUN_GIVE 12 +#define AMMO_SHOTGUN_MODEL "models/w_shotbox.mdl" + +class CShotgunAmmo : public CHL1Item +{ +public: + DECLARE_CLASS( CShotgunAmmo, CHL1Item ); + + void Spawn( void ) + { + Precache(); + SetModel( AMMO_SHOTGUN_MODEL ); + BaseClass::Spawn(); + } + void Precache( void ) + { + PrecacheModel ( AMMO_SHOTGUN_MODEL ); + } + bool MyTouch( CBasePlayer *pPlayer ) + { + if (pPlayer->GiveAmmo( AMMO_SHOTGUN_GIVE, "Buckshot" ) ) + { + if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) + { + UTIL_Remove( this ); + } + return true; + } + return false; + } +}; +LINK_ENTITY_TO_CLASS(ammo_buckshot, CShotgunAmmo); +PRECACHE_REGISTER(ammo_buckshot); |