//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $Workfile: $ // $Date: $ // //----------------------------------------------------------------------------- // $Log: $ // // $NoKeywords: $ //=============================================================================// #ifndef NPC_HOUNDEYE_H #define NPC_HOUNDEYE_H #pragma once #include "ai_basenpc.h" #include "energy_wave.h" class CNPC_Houndeye : public CAI_BaseNPC { DECLARE_CLASS( CNPC_Houndeye, CAI_BaseNPC ); public: void Spawn( void ); void Precache( void ); Class_T Classify ( void ); void HandleAnimEvent( animevent_t *pEvent ); float MaxYawSpeed ( void ); void WarmUpSound ( void ); void AlertSound( void ); void DeathSound( const CTakeDamageInfo &info ); void WarnSound( void ); void PainSound( const CTakeDamageInfo &info ); void IdleSound( void ); void StartTask( const Task_t *pTask ); void RunTask( const Task_t *pTask ); int GetSoundInterests( void ); void SonicAttack( void ); void PrescheduleThink( void ); void WriteBeamColor ( void ); int RangeAttack1Conditions ( float flDot, float flDist ); bool FCanActiveIdle ( void ); virtual int TranslateSchedule( int scheduleType ); Activity NPC_TranslateActivity( Activity eNewActivity ); virtual int SelectSchedule( void ); bool HandleInteraction(int interactionType, void *data, CBaseCombatCharacter* sourceEnt); void NPCThink(void); int OnTakeDamage_Alive( const CTakeDamageInfo &info ); void Event_Killed( const CTakeDamageInfo &info ); bool IsAnyoneInSquadAttacking( void ); void SpeakSentence( int sentenceType ); float m_flNextSecondaryAttack; bool m_bLoopClockwise; CEnergyWave* m_pEnergyWave; float m_flEndEnergyWaveTime; bool m_fAsleep;// some houndeyes sleep in idle mode if this is set, the houndeye is lying down bool m_fDontBlink;// don't try to open/close eye if this bit is set! DEFINE_CUSTOM_AI; DECLARE_DATADESC(); }; #endif // NPC_HOUNDEYE_H