summaryrefslogtreecommitdiff
path: root/game/server/EntityFlame.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/EntityFlame.h')
-rw-r--r--game/server/EntityFlame.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/game/server/EntityFlame.h b/game/server/EntityFlame.h
new file mode 100644
index 0000000..9ea1360
--- /dev/null
+++ b/game/server/EntityFlame.h
@@ -0,0 +1,66 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef ENTITYFLAME_H
+#define ENTITYFLAME_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#define FLAME_DAMAGE_INTERVAL 0.2f // How often to deal damage.
+#define FLAME_DIRECT_DAMAGE_PER_SEC 5.0f
+#define FLAME_RADIUS_DAMAGE_PER_SEC 4.0f
+
+#define FLAME_DIRECT_DAMAGE ( FLAME_DIRECT_DAMAGE_PER_SEC * FLAME_DAMAGE_INTERVAL )
+#define FLAME_RADIUS_DAMAGE ( FLAME_RADIUS_DAMAGE_PER_SEC * FLAME_DAMAGE_INTERVAL )
+
+#define FLAME_MAX_LIFETIME_ON_DEAD_NPCS 10.0f
+
+class CEntityFlame : public CBaseEntity
+{
+public:
+ DECLARE_SERVERCLASS();
+ DECLARE_CLASS( CEntityFlame, CBaseEntity );
+
+ CEntityFlame( void );
+
+ static CEntityFlame *Create( CBaseEntity *pTarget, bool useHitboxes = true );
+
+ void AttachToEntity( CBaseEntity *pTarget );
+ void SetLifetime( float lifetime );
+ void SetUseHitboxes( bool use );
+ void SetNumHitboxFires( int iNumHitBoxFires );
+ void SetHitboxFireScale( float flHitboxFireScale );
+
+ float GetRemainingLife( void );
+ int GetNumHitboxFires( void );
+ float GetHitboxFireScale( void );
+
+ virtual void Precache();
+ virtual void UpdateOnRemove();
+
+ void SetSize( float size ) { m_flSize = size; }
+
+ DECLARE_DATADESC();
+
+protected:
+
+ void InputIgnite( inputdata_t &inputdata );
+
+ void FlameThink( void );
+
+ CNetworkHandle( CBaseEntity, m_hEntAttached ); // The entity that we are burning (attached to).
+
+ CNetworkVar( float, m_flSize );
+ CNetworkVar( bool, m_bUseHitboxes );
+ CNetworkVar( int, m_iNumHitboxFires );
+ CNetworkVar( float, m_flHitboxFireScale );
+
+ CNetworkVar( float, m_flLifetime );
+ bool m_bPlayingSound;
+};
+
+#endif // ENTITYFLAME_H