text: //========= Copyright Valve Corporation, All rights reserved. ============//
  //
  // Purpose: 
  //
  // $NoKeywords: $
  //
  //=============================================================================//
  #ifndef NPC_ICHTHYOSAUR_H
  #define NPC_ICHTHYOSAUR_H
  
  
  #include "hl1_ai_basenpc.h"
  
  #define SEARCH_RETRY	16
  
  #define ICHTHYOSAUR_SPEED 150
  
  #define EYE_MAD		0
  #define EYE_BASE	1
  #define EYE_CLOSED	2
  #define EYE_BACK	3
  #define EYE_LOOK	4
  
  
  //
  // CNPC_Ichthyosaur
  //
  
  class CNPC_Ichthyosaur : public CHL1BaseNPC
  {
  	DECLARE_CLASS( CNPC_Ichthyosaur, CHL1BaseNPC );
  public:
  
  	void	Precache( void );
  	void	Spawn( void );
  	Class_T Classify ( void );
  	void	NPCThink ( void );
  	void	Swim ( void );
  	void	StartTask(const Task_t *pTask);
  	void	RunTask( const Task_t *pTask );
  	int		RangeAttack1Conditions( float flDot, float flDist );
  	int		MeleeAttack1Conditions ( float flDot, float flDist );
  	void	BiteTouch( CBaseEntity *pOther );
  	void	HandleAnimEvent( animevent_t *pEvent );
  	int		TranslateSchedule( int scheduleType );
  	int		SelectSchedule();
  	virtual	bool FVisible ( CBaseEntity *pEntity, int traceMask = MASK_BLOCKLOS, CBaseEntity **ppBlocker = NULL );
  
  	Vector  DoProbe( const Vector &Probe );
  	bool    ProbeZ( const Vector &position, const Vector &probe, float *pFraction);
  
  	float	GetGroundSpeed ( void );
  
  	bool	OverrideMove( float flInterval );
  	void	MoveExecute_Alive(float flInterval);
  
  	void InputStartCombat( inputdata_t &input );
  	void InputEndCombat( inputdata_t &input );
  
  	virtual void	IdleSound( void );
  	virtual void	AlertSound( void );
  	virtual void	DeathSound( const CTakeDamageInfo &info );
  	virtual void	PainSound( const CTakeDamageInfo &info );
  
  	void	AttackSound( void );
  	void	BiteSound( void );
  
  	virtual void GatherEnemyConditions( CBaseEntity *pEnemy );
  
  	DEFINE_CUSTOM_AI;
  	DECLARE_DATADESC();
  
  private:
  	Vector m_SaveVelocity;
  	float m_idealDist;
  
  	float m_flBlink;
  
  	float m_flEnemyTouched;
  	bool  m_bOnAttack;
  
  	float m_flMaxSpeed;
  	float m_flMinSpeed;
  	float m_flMaxDist;
  
  	float m_flNextAlert;
  	float m_flLastAttackSound;
  
  	//Save the info from that run
  	Vector m_vecLastMoveTarget;
  	bool m_bHasMoveTarget;
  
  	float m_flFlyingSpeed;	
  };
  
  
  #endif //NPC_ICHTHYOSAUR_H
  