diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/hl2/npc_headcrab.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/hl2/npc_headcrab.h')
| -rw-r--r-- | mp/src/game/server/hl2/npc_headcrab.h | 592 |
1 files changed, 296 insertions, 296 deletions
diff --git a/mp/src/game/server/hl2/npc_headcrab.h b/mp/src/game/server/hl2/npc_headcrab.h index 09e2eca9..daf79b46 100644 --- a/mp/src/game/server/hl2/npc_headcrab.h +++ b/mp/src/game/server/hl2/npc_headcrab.h @@ -1,296 +1,296 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose: Defines the headcrab, a tiny, jumpy alien parasite.
-//
-//=============================================================================//
-
-#ifndef NPC_HEADCRAB_H
-#define NPC_HEADCRAB_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "ai_squadslot.h"
-#include "ai_basenpc.h"
-#include "soundent.h"
-
-
-
-abstract_class CBaseHeadcrab : public CAI_BaseNPC
-{
- DECLARE_CLASS( CBaseHeadcrab, CAI_BaseNPC );
-
-public:
- void Spawn( void );
- void Precache( void );
- void RunTask( const Task_t *pTask );
- void StartTask( const Task_t *pTask );
-
- void OnChangeActivity( Activity NewActivity );
-
- bool IsFirmlyOnGround();
- void MoveOrigin( const Vector &vecDelta );
- void ThrowAt( const Vector &vecPos );
- void ThrowThink( void );
- virtual void JumpAttack( bool bRandomJump, const Vector &vecPos = vec3_origin, bool bThrown = false );
- void JumpToBurrowHint( CAI_Hint *pHint );
-
- bool HasHeadroom();
- void LeapTouch ( CBaseEntity *pOther );
- virtual void TouchDamage( CBaseEntity *pOther );
- bool CorpseGib( const CTakeDamageInfo &info );
- void Touch( CBaseEntity *pOther );
- Vector BodyTarget( const Vector &posSrc, bool bNoisy = true );
- float GetAutoAimRadius();
- void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator );
- void Ignite( float flFlameLifetime, bool bNPCOnly = true, float flSize = 0.0f, bool bCalledByLevelDesigner = false );
-
- float MaxYawSpeed( void );
- void GatherConditions( void );
- void PrescheduleThink( void );
- Class_T Classify( void );
- void HandleAnimEvent( animevent_t *pEvent );
- int RangeAttack1Conditions ( float flDot, float flDist );
- int OnTakeDamage_Alive( const CTakeDamageInfo &info );
- void ClampRagdollForce( const Vector &vecForceIn, Vector *vecForceOut );
- void Event_Killed( const CTakeDamageInfo &info );
- void BuildScheduleTestBits( void );
- bool FValidateHintType( CAI_Hint *pHint );
-
- bool IsJumping( void ) { return m_bMidJump; }
-
- virtual void BiteSound( void ) = 0;
- virtual void AttackSound( void ) {};
- virtual void ImpactSound( void ) {};
- virtual void TelegraphSound( void ) {};
-
- virtual int SelectSchedule( void );
- virtual int SelectFailSchedule( int failedSchedule, int failedTask, AI_TaskFailureCode_t taskFailCode );
- virtual int TranslateSchedule( int scheduleType );
-
- virtual float GetReactionDelay( CBaseEntity *pEnemy ) { return 0.0; }
-
- bool HandleInteraction(int interactionType, void *data, CBaseCombatCharacter* sourceEnt);
-
- void CrawlFromCanister();
-
- virtual bool AllowedToIgnite( void ) { return true; }
-
- virtual bool CanBeAnEnemyOf( CBaseEntity *pEnemy );
-
- bool IsHangingFromCeiling( void )
- {
-#ifdef HL2_EPISODIC
- return m_bHangingFromCeiling;
-#else
- return false;
-#endif
- }
-
- virtual void PlayerHasIlluminatedNPC( CBasePlayer *pPlayer, float flDot );
-
- void DropFromCeiling( void );
-
- DEFINE_CUSTOM_AI;
- DECLARE_DATADESC();
-
-protected:
- void HeadcrabInit();
-
- void Leap( const Vector &vecVel );
-
- void GrabHintNode( CAI_Hint *pHint );
- bool FindBurrow( const Vector &origin, float distance, bool excludeNear );
- bool ValidBurrowPoint( const Vector &point );
- void ClearBurrowPoint( const Vector &origin );
- void Burrow( void );
- void Unburrow( void );
- void SetBurrowed( bool bBurrowed );
- void JumpFromCanister();
-
- // Begins the climb from the canister
- void BeginClimbFromCanister();
-
- void InputBurrow( inputdata_t &inputdata );
- void InputBurrowImmediate( inputdata_t &inputdata );
- void InputUnburrow( inputdata_t &inputdata );
-
- void InputStartHangingFromCeiling( inputdata_t &inputdata );
- void InputDropFromCeiling( inputdata_t &inputdata );
-
- int CalcDamageInfo( CTakeDamageInfo *pInfo );
- void CreateDust( bool placeDecal = true );
-
- // Eliminates roll + pitch potentially in the headcrab at canister jump time
- void EliminateRollAndPitch();
-
- float InnateRange1MinRange( void );
- float InnateRange1MaxRange( void );
-
-protected:
- int m_nGibCount;
- float m_flTimeDrown;
- Vector m_vecCommittedJumpPos; // The position of our enemy when we locked in our jump attack.
-
- float m_flNextNPCThink;
- float m_flIgnoreWorldCollisionTime;
-
- bool m_bCommittedToJump; // Whether we have 'locked in' to jump at our enemy.
- bool m_bCrawlFromCanister;
- bool m_bStartBurrowed;
- bool m_bBurrowed;
- bool m_bHidden;
- bool m_bMidJump;
- bool m_bAttackFailed; // whether we ran into a wall during a jump.
-
- float m_flBurrowTime;
- int m_nContext; // for FValidateHintType context
- int m_nJumpFromCanisterDir;
-
- bool m_bHangingFromCeiling;
- float m_flIlluminatedTime;
-};
-
-
-//=========================================================
-//=========================================================
-// The ever popular chubby classic headcrab
-//=========================================================
-//=========================================================
-class CHeadcrab : public CBaseHeadcrab
-{
- DECLARE_CLASS( CHeadcrab, CBaseHeadcrab );
-
-public:
- void Precache( void );
- void Spawn( void );
-
- float MaxYawSpeed( void );
- Activity NPC_TranslateActivity( Activity eNewActivity );
-
- void BiteSound( void );
- void PainSound( const CTakeDamageInfo &info );
- void DeathSound( const CTakeDamageInfo &info );
- void IdleSound( void );
- void AlertSound( void );
- void AttackSound( void );
- void TelegraphSound( void );
-};
-
-//=========================================================
-//=========================================================
-// The spindly, fast headcrab
-//=========================================================
-//=========================================================
-class CFastHeadcrab : public CBaseHeadcrab
-{
- DECLARE_DATADESC();
-public:
- DECLARE_CLASS( CFastHeadcrab, CBaseHeadcrab );
-
- void Precache( void );
- void Spawn( void );
- bool QuerySeeEntity(CBaseEntity *pSightEnt, bool bOnlyHateOrFearIfNPC = false);
-
- float MaxYawSpeed( void );
-
- void PrescheduleThink( void );
- void RunTask( const Task_t *pTask );
- void StartTask( const Task_t *pTask );
-
- int SelectSchedule( void );
- int TranslateSchedule( int scheduleType );
-
- int m_iRunMode;
- float m_flRealGroundSpeed;
- float m_flSlowRunTime;
- float m_flPauseTime;
- Vector m_vecJumpVel;
-
- void BiteSound( void );
- void PainSound( const CTakeDamageInfo &info );
- void DeathSound( const CTakeDamageInfo &info );
- void IdleSound( void );
- void AlertSound( void );
- void AttackSound( void );
-
- enum SquadSlot_t
- {
- SQUAD_SLOT_ENGAGE1 = LAST_SHARED_SQUADSLOT,
- SQUAD_SLOT_ENGAGE2,
- SQUAD_SLOT_ENGAGE3,
- SQUAD_SLOT_ENGAGE4,
- };
-
- DEFINE_CUSTOM_AI;
-};
-
-
-//=========================================================
-//=========================================================
-// Treacherous black headcrab
-//=========================================================
-//=========================================================
-class CBlackHeadcrab : public CBaseHeadcrab
-{
- DECLARE_CLASS( CBlackHeadcrab, CBaseHeadcrab );
-
-public:
- void Eject( const QAngle &vecAngles, float flVelocityScale, CBaseEntity *pEnemy );
- void EjectTouch( CBaseEntity *pOther );
-
- //
- // CBaseHeadcrab implementation.
- //
- void TouchDamage( CBaseEntity *pOther );
- void BiteSound( void );
- void AttackSound( void );
-
- //
- // CAI_BaseNPC implementation.
- //
- virtual void PrescheduleThink( void );
- virtual void BuildScheduleTestBits( void );
- virtual int SelectSchedule( void );
- virtual int TranslateSchedule( int scheduleType );
-
- virtual Activity NPC_TranslateActivity( Activity eNewActivity );
- virtual void HandleAnimEvent( animevent_t *pEvent );
- virtual float MaxYawSpeed( void );
-
- virtual int GetSoundInterests( void ) { return (BaseClass::GetSoundInterests() | SOUND_DANGER | SOUND_BULLET_IMPACT); }
-
- bool IsHeavyDamage( const CTakeDamageInfo &info );
-
- virtual void PainSound( const CTakeDamageInfo &info );
- virtual void DeathSound( const CTakeDamageInfo &info );
- virtual void IdleSound( void );
- virtual void AlertSound( void );
- virtual void ImpactSound( void );
- virtual void TelegraphSound( void );
-#if HL2_EPISODIC
- virtual bool FInViewCone( CBaseEntity *pEntity );
-#endif
-
- //
- // CBaseEntity implementation.
- //
- virtual void Precache( void );
- virtual void Spawn( void );
-
- DEFINE_CUSTOM_AI;
- DECLARE_DATADESC();
-
-private:
-
-
- void JumpFlinch( const Vector *pvecAwayFromPos );
- void Panic( float flDuration );
-
- bool m_bPanicState;
- float m_flPanicStopTime;
- float m_flNextHopTime; // Keeps us from hopping too often due to damage.
-};
-
-
-#endif // NPC_HEADCRAB_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Defines the headcrab, a tiny, jumpy alien parasite. +// +//=============================================================================// + +#ifndef NPC_HEADCRAB_H +#define NPC_HEADCRAB_H +#ifdef _WIN32 +#pragma once +#endif + +#include "ai_squadslot.h" +#include "ai_basenpc.h" +#include "soundent.h" + + + +abstract_class CBaseHeadcrab : public CAI_BaseNPC +{ + DECLARE_CLASS( CBaseHeadcrab, CAI_BaseNPC ); + +public: + void Spawn( void ); + void Precache( void ); + void RunTask( const Task_t *pTask ); + void StartTask( const Task_t *pTask ); + + void OnChangeActivity( Activity NewActivity ); + + bool IsFirmlyOnGround(); + void MoveOrigin( const Vector &vecDelta ); + void ThrowAt( const Vector &vecPos ); + void ThrowThink( void ); + virtual void JumpAttack( bool bRandomJump, const Vector &vecPos = vec3_origin, bool bThrown = false ); + void JumpToBurrowHint( CAI_Hint *pHint ); + + bool HasHeadroom(); + void LeapTouch ( CBaseEntity *pOther ); + virtual void TouchDamage( CBaseEntity *pOther ); + bool CorpseGib( const CTakeDamageInfo &info ); + void Touch( CBaseEntity *pOther ); + Vector BodyTarget( const Vector &posSrc, bool bNoisy = true ); + float GetAutoAimRadius(); + void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator ); + void Ignite( float flFlameLifetime, bool bNPCOnly = true, float flSize = 0.0f, bool bCalledByLevelDesigner = false ); + + float MaxYawSpeed( void ); + void GatherConditions( void ); + void PrescheduleThink( void ); + Class_T Classify( void ); + void HandleAnimEvent( animevent_t *pEvent ); + int RangeAttack1Conditions ( float flDot, float flDist ); + int OnTakeDamage_Alive( const CTakeDamageInfo &info ); + void ClampRagdollForce( const Vector &vecForceIn, Vector *vecForceOut ); + void Event_Killed( const CTakeDamageInfo &info ); + void BuildScheduleTestBits( void ); + bool FValidateHintType( CAI_Hint *pHint ); + + bool IsJumping( void ) { return m_bMidJump; } + + virtual void BiteSound( void ) = 0; + virtual void AttackSound( void ) {}; + virtual void ImpactSound( void ) {}; + virtual void TelegraphSound( void ) {}; + + virtual int SelectSchedule( void ); + virtual int SelectFailSchedule( int failedSchedule, int failedTask, AI_TaskFailureCode_t taskFailCode ); + virtual int TranslateSchedule( int scheduleType ); + + virtual float GetReactionDelay( CBaseEntity *pEnemy ) { return 0.0; } + + bool HandleInteraction(int interactionType, void *data, CBaseCombatCharacter* sourceEnt); + + void CrawlFromCanister(); + + virtual bool AllowedToIgnite( void ) { return true; } + + virtual bool CanBeAnEnemyOf( CBaseEntity *pEnemy ); + + bool IsHangingFromCeiling( void ) + { +#ifdef HL2_EPISODIC + return m_bHangingFromCeiling; +#else + return false; +#endif + } + + virtual void PlayerHasIlluminatedNPC( CBasePlayer *pPlayer, float flDot ); + + void DropFromCeiling( void ); + + DEFINE_CUSTOM_AI; + DECLARE_DATADESC(); + +protected: + void HeadcrabInit(); + + void Leap( const Vector &vecVel ); + + void GrabHintNode( CAI_Hint *pHint ); + bool FindBurrow( const Vector &origin, float distance, bool excludeNear ); + bool ValidBurrowPoint( const Vector &point ); + void ClearBurrowPoint( const Vector &origin ); + void Burrow( void ); + void Unburrow( void ); + void SetBurrowed( bool bBurrowed ); + void JumpFromCanister(); + + // Begins the climb from the canister + void BeginClimbFromCanister(); + + void InputBurrow( inputdata_t &inputdata ); + void InputBurrowImmediate( inputdata_t &inputdata ); + void InputUnburrow( inputdata_t &inputdata ); + + void InputStartHangingFromCeiling( inputdata_t &inputdata ); + void InputDropFromCeiling( inputdata_t &inputdata ); + + int CalcDamageInfo( CTakeDamageInfo *pInfo ); + void CreateDust( bool placeDecal = true ); + + // Eliminates roll + pitch potentially in the headcrab at canister jump time + void EliminateRollAndPitch(); + + float InnateRange1MinRange( void ); + float InnateRange1MaxRange( void ); + +protected: + int m_nGibCount; + float m_flTimeDrown; + Vector m_vecCommittedJumpPos; // The position of our enemy when we locked in our jump attack. + + float m_flNextNPCThink; + float m_flIgnoreWorldCollisionTime; + + bool m_bCommittedToJump; // Whether we have 'locked in' to jump at our enemy. + bool m_bCrawlFromCanister; + bool m_bStartBurrowed; + bool m_bBurrowed; + bool m_bHidden; + bool m_bMidJump; + bool m_bAttackFailed; // whether we ran into a wall during a jump. + + float m_flBurrowTime; + int m_nContext; // for FValidateHintType context + int m_nJumpFromCanisterDir; + + bool m_bHangingFromCeiling; + float m_flIlluminatedTime; +}; + + +//========================================================= +//========================================================= +// The ever popular chubby classic headcrab +//========================================================= +//========================================================= +class CHeadcrab : public CBaseHeadcrab +{ + DECLARE_CLASS( CHeadcrab, CBaseHeadcrab ); + +public: + void Precache( void ); + void Spawn( void ); + + float MaxYawSpeed( void ); + Activity NPC_TranslateActivity( Activity eNewActivity ); + + void BiteSound( void ); + void PainSound( const CTakeDamageInfo &info ); + void DeathSound( const CTakeDamageInfo &info ); + void IdleSound( void ); + void AlertSound( void ); + void AttackSound( void ); + void TelegraphSound( void ); +}; + +//========================================================= +//========================================================= +// The spindly, fast headcrab +//========================================================= +//========================================================= +class CFastHeadcrab : public CBaseHeadcrab +{ + DECLARE_DATADESC(); +public: + DECLARE_CLASS( CFastHeadcrab, CBaseHeadcrab ); + + void Precache( void ); + void Spawn( void ); + bool QuerySeeEntity(CBaseEntity *pSightEnt, bool bOnlyHateOrFearIfNPC = false); + + float MaxYawSpeed( void ); + + void PrescheduleThink( void ); + void RunTask( const Task_t *pTask ); + void StartTask( const Task_t *pTask ); + + int SelectSchedule( void ); + int TranslateSchedule( int scheduleType ); + + int m_iRunMode; + float m_flRealGroundSpeed; + float m_flSlowRunTime; + float m_flPauseTime; + Vector m_vecJumpVel; + + void BiteSound( void ); + void PainSound( const CTakeDamageInfo &info ); + void DeathSound( const CTakeDamageInfo &info ); + void IdleSound( void ); + void AlertSound( void ); + void AttackSound( void ); + + enum SquadSlot_t + { + SQUAD_SLOT_ENGAGE1 = LAST_SHARED_SQUADSLOT, + SQUAD_SLOT_ENGAGE2, + SQUAD_SLOT_ENGAGE3, + SQUAD_SLOT_ENGAGE4, + }; + + DEFINE_CUSTOM_AI; +}; + + +//========================================================= +//========================================================= +// Treacherous black headcrab +//========================================================= +//========================================================= +class CBlackHeadcrab : public CBaseHeadcrab +{ + DECLARE_CLASS( CBlackHeadcrab, CBaseHeadcrab ); + +public: + void Eject( const QAngle &vecAngles, float flVelocityScale, CBaseEntity *pEnemy ); + void EjectTouch( CBaseEntity *pOther ); + + // + // CBaseHeadcrab implementation. + // + void TouchDamage( CBaseEntity *pOther ); + void BiteSound( void ); + void AttackSound( void ); + + // + // CAI_BaseNPC implementation. + // + virtual void PrescheduleThink( void ); + virtual void BuildScheduleTestBits( void ); + virtual int SelectSchedule( void ); + virtual int TranslateSchedule( int scheduleType ); + + virtual Activity NPC_TranslateActivity( Activity eNewActivity ); + virtual void HandleAnimEvent( animevent_t *pEvent ); + virtual float MaxYawSpeed( void ); + + virtual int GetSoundInterests( void ) { return (BaseClass::GetSoundInterests() | SOUND_DANGER | SOUND_BULLET_IMPACT); } + + bool IsHeavyDamage( const CTakeDamageInfo &info ); + + virtual void PainSound( const CTakeDamageInfo &info ); + virtual void DeathSound( const CTakeDamageInfo &info ); + virtual void IdleSound( void ); + virtual void AlertSound( void ); + virtual void ImpactSound( void ); + virtual void TelegraphSound( void ); +#if HL2_EPISODIC + virtual bool FInViewCone( CBaseEntity *pEntity ); +#endif + + // + // CBaseEntity implementation. + // + virtual void Precache( void ); + virtual void Spawn( void ); + + DEFINE_CUSTOM_AI; + DECLARE_DATADESC(); + +private: + + + void JumpFlinch( const Vector *pvecAwayFromPos ); + void Panic( float flDuration ); + + bool m_bPanicState; + float m_flPanicStopTime; + float m_flNextHopTime; // Keeps us from hopping too often due to damage. +}; + + +#endif // NPC_HEADCRAB_H |