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.

71 lines
2.1 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef GRENADE_LIMPETMINE_H
#define GRENADE_LIMPETMINE_H
#ifdef _WIN32
#pragma once
#endif
class CWeaponLimpetmine;
//=====================================================================================================
// LIMPET MINE
//=====================================================================================================
class CLimpetMine : public CBaseGrenade
{
DECLARE_CLASS( CLimpetMine, CBaseGrenade );
public:
DECLARE_SERVERCLASS();
DECLARE_DATADESC();
CLimpetMine( void );
virtual ~CLimpetMine( void );
// Creation and Initialization
virtual void Spawn( void );
virtual void Precache( void );
static CLimpetMine* CLimpetMine::Create( const Vector &vecOrigin, const Vector &vecAngles, CBasePlayer *pOwner );
virtual int GetDamageType() const { return DMG_BLAST; }
virtual bool CanBePoweredUp( void ) { return false; }
// Detonation
virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
bool IsLive( void );
virtual int ObjectCaps( void ) { return BaseClass::ObjectCaps() | FCAP_IMPULSE_USE; }
// EMP
virtual bool CanTakeEMPDamage() { return true; }
virtual bool TakeEMPDamage( float duration );
bool IsEMPed( void ) { return m_bEMPed; }
// Think and Touch
void LiveThink( void );
void StickyTouch( CBaseEntity *pOther );
void LimpetThink( void );
// Parent
void SetLauncher( CWeaponLimpetmine *pLauncher );
public:
static CLimpetMine* allLimpets; // A linked list of all limpets
CLimpetMine* nextLimpet; // The next limpet in list of all limpets
CNetworkVar( bool, m_bLive ); // are we active?
bool m_bStuckToTarget; // If true, the limpet stuck to something when it went active
bool m_bEMPed; // have we been EMPed?
bool m_bFizzleInit; // initialize the fizzle (EMP) process
float m_flFizzleDuration; // fizzle duration
CHandle<CWeaponLimpetmine> m_hLauncher; // parent (weapon launched from)
};
#endif // GRENADE_LIMPETMINE_H