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.
132 lines
3.9 KiB
132 lines
3.9 KiB
#ifndef _ASW_WEAPON_HEALGRENADE_H |
|
#define _ASW_WEAPON_HEALGRENADE_H |
|
#pragma once |
|
|
|
#ifdef CLIENT_DLL |
|
#include "c_asw_weapon.h" |
|
#include "c_asw_aoegrenade_projectile.h" |
|
#define CASW_Weapon C_ASW_Weapon |
|
#define CASW_Weapon_HealGrenade C_ASW_Weapon_HealGrenade |
|
#define CASW_Marine C_ASW_Marine |
|
#else |
|
#include "asw_weapon.h" |
|
#include "asw_aoegrenade_projectile.h" |
|
#endif |
|
|
|
#include "asw_shareddefs.h" |
|
#include "basegrenade_shared.h" |
|
|
|
#ifdef CLIENT_DLL |
|
class C_ASW_HealGrenade_Projectile : public C_ASW_AOEGrenade_Projectile |
|
{ |
|
public: |
|
DECLARE_CLASS( C_ASW_HealGrenade_Projectile, C_ASW_AOEGrenade_Projectile ); |
|
DECLARE_CLIENTCLASS(); |
|
|
|
virtual Color GetGrenadeColor( void ); |
|
virtual const char* GetIdleLoopSoundName( void ) { return "ASW_MedGrenade.ActiveLoop"; } |
|
virtual const char* GetLoopSoundName( void ) { return "ASW_MedGrenade.BuffLoop"; } |
|
virtual const char* GetStartSoundName( void ) { return "ASW_MedGrenade.StartBuff"; } |
|
virtual const char* GetActivateSoundName( void ) { return "ASW_MedGrenade.GrenadeActivate"; } |
|
virtual const char* GetPingEffectName( void ) { return "medgrenade_pulse"; } |
|
virtual const char* GetArcEffectName( void ) { return "medgrenade_attach_arc"; } |
|
virtual const char* GetArcAttachmentName( void ) { return "zipline"; } |
|
virtual bool ShouldSpawnSphere( void ) { return true; } |
|
virtual float GetSphereScale( void ) { return 0.9f; } |
|
virtual int GetSphereSkin( void ) { return 1; } |
|
|
|
// Classification |
|
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_HEALGRENADE_PROJECTILE; } |
|
}; |
|
#else |
|
|
|
DECLARE_AUTO_LIST( IHealGrenadeAutoList ); |
|
|
|
class CASW_HealGrenade_Projectile : public CASW_AOEGrenade_Projectile, public IHealGrenadeAutoList |
|
{ |
|
DECLARE_CLASS( CASW_HealGrenade_Projectile, CASW_AOEGrenade_Projectile ); |
|
|
|
DECLARE_SERVERCLASS(); |
|
DECLARE_DATADESC(); |
|
|
|
public: |
|
|
|
CASW_HealGrenade_Projectile(); |
|
|
|
void Precache( void ); |
|
|
|
static CASW_AOEGrenade_Projectile* Grenade_Projectile_Create( const Vector &position, const QAngle &angles, const Vector &velocity, |
|
const AngularImpulse &angVelocity, CBaseEntity *pOwner, |
|
float flHealPerSecond, float flInfestationCureAmount, float flRadius, float flDuration, float flTotalHealAmount ); |
|
|
|
virtual float GetInfestationCureAmount( void ); |
|
|
|
virtual float GetGrenadeGravity( void ); |
|
|
|
virtual void OnBurnout( void ); |
|
|
|
virtual bool ShouldTouchEntity( CBaseEntity *pEntity ); |
|
|
|
virtual void DoAOE( CBaseEntity *pEntity ); |
|
|
|
virtual float GetDoAOEDelayTime( void ) { return 1.0f; } |
|
|
|
IMPLEMENT_AUTO_LIST_GET(); // IHealGrenadeAutoList |
|
|
|
CUtlVector< EHANDLE > m_hHealedEntities; |
|
|
|
float m_flHealPerSecond; |
|
float m_flInfestationCureAmount; |
|
float m_flHealAmountLeft; |
|
float m_flHealAmountTotal; |
|
|
|
// Classification |
|
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_HEALGRENADE_PROJECTILE; } |
|
}; |
|
|
|
#endif |
|
|
|
class CASW_Weapon_HealGrenade : public CASW_Weapon |
|
{ |
|
public: |
|
DECLARE_CLASS( CASW_Weapon_HealGrenade, CASW_Weapon ); |
|
DECLARE_NETWORKCLASS(); |
|
DECLARE_PREDICTABLE(); |
|
|
|
virtual void Precache(); |
|
virtual bool ShouldMarineMoveSlow() { return false; } // firing doesn't slow the marine down |
|
virtual bool Reload() { return false; } |
|
virtual void PrimaryAttack(); |
|
float GetFireRate( void ) { return 3.0f; } |
|
|
|
virtual const Vector& GetBulletSpread( void ) |
|
{ |
|
static Vector cone; |
|
cone = Vector(0,0,0); |
|
return cone; |
|
} |
|
|
|
#ifndef CLIENT_DLL |
|
DECLARE_DATADESC(); |
|
|
|
virtual CASW_AOEGrenade_Projectile* CreateProjectile( const Vector &vecSrc, const QAngle &angles, const Vector &vecVel, |
|
const AngularImpulse &rotSpeed, CBaseEntity *pOwner ); |
|
|
|
virtual const char* GetPickupClass() { return "asw_pickup_heal_grenade"; } |
|
#else |
|
|
|
#endif |
|
|
|
virtual bool IsOffensiveWeapon() { return false; } |
|
virtual bool OffhandActivate(); |
|
|
|
virtual float GetRefireTime( void ); |
|
|
|
float m_flSoonestPrimaryAttack; |
|
|
|
// Classification |
|
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_HEALGRENADE; } |
|
}; |
|
|
|
|
|
#endif /* _ASW_WEAPON_HEALGRENADE_H */
|
|
|