You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.8 KiB
102 lines
2.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef NPC_BUG_WARRIOR_H |
|
#define NPC_BUG_WARRIOR_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "AI_BaseNPC.h" |
|
|
|
// Animation events |
|
#define BUG_WARRIOR_AE_MELEE_SOUND1 11 // Start attack sound |
|
#define BUG_WARRIOR_AE_MELEE_HIT1 15 // Melee hit, one arm |
|
|
|
// Attack range definitions |
|
#define BUG_WARRIOR_MELEE1_RANGE 128.0f |
|
#define BUG_WARRIOR_MELEE1_RANGE_MIN 128.0f |
|
|
|
#define BUG_WARRIOR_MODEL "models/npcs/bugs/bug_warrior.mdl" |
|
|
|
class CMaker_BugHole; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: WARRIOR BUG |
|
//----------------------------------------------------------------------------- |
|
class CNPC_Bug_Warrior : public CAI_BaseNPC |
|
{ |
|
DECLARE_CLASS( CNPC_Bug_Warrior, CAI_BaseNPC ); |
|
public: |
|
CNPC_Bug_Warrior( void ); |
|
|
|
virtual void Spawn( void ); |
|
virtual void Precache( void ); |
|
|
|
virtual int SelectSchedule( void ); |
|
virtual int TranslateSchedule( int scheduleType ); |
|
virtual void StartTask( const Task_t *pTask ); |
|
virtual void RunTask( const Task_t *pTask ); |
|
virtual bool FValidateHintType(CAI_Hint *pHint); |
|
|
|
virtual void HandleAnimEvent( animevent_t *pEvent ); |
|
virtual void IdleSound( void ); |
|
virtual void PainSound( const CTakeDamageInfo &info ); |
|
virtual void AlertSound( void ); |
|
virtual bool HandleInteraction( int interactionType, void *data, CBaseCombatCharacter *sender ); |
|
|
|
virtual bool ShouldPlayIdleSound( void ); |
|
|
|
virtual int MeleeAttack1Conditions( float flDot, float flDist ); |
|
virtual int OnTakeDamage_Alive( const CTakeDamageInfo &info ); |
|
|
|
virtual Class_T Classify( void ) { return CLASS_ANTLION; } |
|
|
|
virtual float MaxYawSpeed ( void ); |
|
virtual float CalcIdealYaw( const Vector &vecTarget ); |
|
|
|
DECLARE_DATADESC(); |
|
|
|
// Returns true if the bug should flee |
|
bool ShouldFlee( void ); |
|
|
|
// Squad handling |
|
bool IsAlone( void ); |
|
|
|
// BugHole handling |
|
void SetBugHole( CMaker_BugHole *pBugHole ); |
|
void ReturnToBugHole( void ); |
|
void Assist( CAI_BaseNPC *pBug ); |
|
|
|
// Patrolling |
|
bool StartPatrolling( string_t iszPatrolPathName ); |
|
bool IsPatrolling( void ); |
|
|
|
private: |
|
virtual Disposition_t IRelationType( CBaseEntity *pTarget ); |
|
virtual int IRelationPriority( CBaseEntity *pTarget ); |
|
|
|
void Event_Killed( const CTakeDamageInfo &info ); |
|
void MeleeAttack( float distance, float damage, QAngle& viewPunch, Vector& shove ); |
|
|
|
float m_flIdleDelay; |
|
|
|
// BugHole handling |
|
CHandle< CMaker_BugHole > m_hMyBugHole; |
|
CHandle< CAI_BaseNPC > m_hAssistTarget; |
|
|
|
// Patrolling |
|
string_t m_iszPatrolPathName; |
|
int m_iPatrolPoint; |
|
|
|
// Bug's decided he's not fleeing anymore |
|
bool m_bFightingToDeath; |
|
|
|
DEFINE_CUSTOM_AI; |
|
}; |
|
|
|
#endif // NPC_BUG_WARRIOR_H
|
|
|