text: //========= Copyright Valve Corporation, All rights reserved. ============//
  //
  // Purpose: 
  //
  // $NoKeywords: $
  //=============================================================================//
  
  #ifndef NPC_BUG_BUILDER_H
  #define NPC_BUG_BUILDER_H
  #ifdef _WIN32
  #pragma once
  #endif
  
  #include "AI_BaseNPC.h"
  
  #define	BUG_BUILDER_MODEL		"models/npcs/bugs/bug_builder.mdl"
  
  class CMaker_BugHole;
  
  //-----------------------------------------------------------------------------
  // Purpose: BUILDER BUG
  //-----------------------------------------------------------------------------
  class CNPC_Bug_Builder : public CAI_BaseNPC
  {
  	DECLARE_CLASS( CNPC_Bug_Builder, CAI_BaseNPC );
  public:
  	CNPC_Bug_Builder( void );
  
  	virtual void Spawn( void );
  	virtual void Precache( void );
  
  	virtual int SelectSchedule( void );
  	virtual void StartTask( const Task_t *pTask );
  	virtual void RunTask( const Task_t *pTask );
  
  	virtual float MaxYawSpeed( void );
  	virtual void HandleAnimEvent( animevent_t *pEvent );
  	virtual void IdleSound( void );
  	virtual void PainSound( const CTakeDamageInfo &info );
  	virtual void AlertSound( void );
  	virtual bool FValidateHintType(CAI_Hint *pHint);
  
  	virtual bool ShouldPlayIdleSound( void );
  
  	virtual Class_T	Classify( void ) { return CLASS_ANTLION; }
  	virtual int	GetSoundInterests( void ) { return 0; }
  
  	DECLARE_DATADESC();
  
  	// BugHole handling
  	void	SetBugHole( CMaker_BugHole *pBugHole );
  	void	ReturnToBugHole( void );
  
  private:
  	virtual Disposition_t	IRelationType( CBaseEntity *pTarget );
  
  	void	Event_Killed( const CTakeDamageInfo &info );
  
  	float	m_flIdleDelay;
  
  	float	m_flNextDawdle;
  
  	// BugHole handling
  	CHandle< CMaker_BugHole >	m_hMyBugHole;
  
  	DEFINE_CUSTOM_AI;
  };
  
  #endif // NPC_BUG_BUILDER_H
  