Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.
 
 
 
 
 
 

95 lines
2.6 KiB

#ifndef _INCLUDED_ASW_WEAPON_AMMO_BAG_H
#define _INCLUDED_ASW_WEAPON_AMMO_BAG_H
#pragma once
#ifdef CLIENT_DLL
#include "c_asw_weapon.h"
#define CASW_Weapon C_ASW_Weapon
#define CASW_Weapon_Ammo_Bag C_ASW_Weapon_Ammo_Bag
#define CASW_Marine C_ASW_Marine
#else
#include "asw_weapon.h"
#include "npc_combine.h"
#endif
#include "asw_shareddefs.h"
#include "basegrenade_shared.h"
// ammo bag stores clips for a number of different weapons
// holding marine can reload from the bag
// holding marine can give ammo clips to nearby marines
class CASW_Weapon_Ammo_Bag : public CASW_Weapon
{
public:
DECLARE_CLASS( CASW_Weapon_Ammo_Bag, CASW_Weapon );
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
CASW_Weapon_Ammo_Bag();
Activity GetPrimaryAttackActivity( void );
void PrimaryAttack();
void ThrowAmmo();
#ifndef CLIENT_DLL
DECLARE_DATADESC();
int CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; }
virtual const char* GetPickupClass() { return "asw_pickup_ammo_bag"; }
void GiveClipTo(CASW_Marine *pTargetMarine, int iAmmoType, bool bSuppressSound=false);
virtual void OnMarineDamage(const CTakeDamageInfo &info); // marine was hurt when holding this weapon
float m_fBurnDamage;
virtual int AddAmmo(int iBullets, int iAmmoIndex);
virtual bool DropAmmoPickup(int iAmmoType);
#else
virtual void MouseOverEntity(C_BaseEntity *pEnt, Vector vecWorldCursor);
#endif
virtual bool IsOffensiveWeapon() { return false; }
// these differ because of server latency
static float GetAIMaxAmmoGiveDistance() { return 50.0f; }
static float GetPlayerMaxAmmoGiveDistance() { return 300.0f; }
virtual bool PrimaryAmmoLoaded( void );
bool CanGiveAmmoToWeapon(CASW_Weapon *pWeapon);
bool BagHasAmmo(int iAmmoType);
int NumClipsForWeapon(CASW_Weapon *pWeapon);
int FindBagIndexForAmmoType(int iAmmoType);
int SelectAmmoTypeToGive(CASW_Marine *pOtherMarine);
bool HasRoomForAmmo(int iAmmoType);
virtual int AmmoCount(int index);
virtual int MaxAmmoCount(int index);
CNetworkArray( int, m_AmmoCount, ASW_AMMO_BAG_SLOTS );
int m_MaxAmmoCount[ASW_AMMO_BAG_SLOTS];
void DebugContents();
int m_iAmmoType[ASW_AMMO_BAG_SLOTS];
char m_szWeaponClass[ASW_AMMO_BAG_SLOTS][64];
char m_szAmmoClass[ASW_AMMO_BAG_SLOTS][64];
enum {
ASW_BAG_SLOT_RIFLE = 0,
ASW_BAG_SLOT_AUTOGUN,
ASW_BAG_SLOT_SHOTGUN,
ASW_BAG_SLOT_ASSAULT_SHOTGUN,
ASW_BAG_SLOT_FLAMER,
//ASW_BAG_SLOT_RAILGUN,
ASW_BAG_SLOT_PDW,
ASW_BAG_SLOT_PISTOL
};
// Classification
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_AMMO_BAG; }
};
#endif /* _INCLUDED_ASW_WEAPON_AMMO_BAG_H */