130 lines
4.1 KiB
C
130 lines
4.1 KiB
C
|
#ifndef _INCLUDED_ASW_SHIELDBUG_H
|
||
|
#define _INCLUDED_ASW_SHIELDBUG_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "asw_alien_shover.h"
|
||
|
|
||
|
DECLARE_AUTO_LIST( IShieldbugAutoList )
|
||
|
|
||
|
class CASW_Shieldbug : public CASW_Alien_Shover, public IShieldbugAutoList
|
||
|
{
|
||
|
DECLARE_CLASS( CASW_Shieldbug, CASW_Alien_Shover );
|
||
|
public:
|
||
|
DECLARE_SERVERCLASS();
|
||
|
DECLARE_DATADESC();
|
||
|
|
||
|
IMPLEMENT_AUTO_LIST_GET( );
|
||
|
|
||
|
CASW_Shieldbug();
|
||
|
virtual ~CASW_Shieldbug();
|
||
|
|
||
|
void Spawn();
|
||
|
void Precache();
|
||
|
virtual void NPCThink();
|
||
|
virtual int DrawDebugTextOverlays();
|
||
|
float GetIdealSpeed() const;
|
||
|
float GetIdealAccel( ) const;
|
||
|
float GetSequenceGroundSpeed( int iSequence );
|
||
|
int MeleeAttack1Conditions( float flDot, float flDist );
|
||
|
int MeleeAttack2Conditions ( float flDot, float flDist );
|
||
|
void MeleeAttack( float distance, float damage, QAngle &viewPunch, Vector &shove );
|
||
|
float MaxYawSpeed( void );
|
||
|
void HandleAnimEvent( animevent_t *pEvent );
|
||
|
Class_T Classify( void ) { return (Class_T) CLASS_ASW_SHIELDBUG; }
|
||
|
bool CorpseGib( const CTakeDamageInfo &info );
|
||
|
void BuildScheduleTestBits( void );
|
||
|
void GatherEnemyConditions( CBaseEntity *pEnemy );
|
||
|
void StartTask(const Task_t *pTask);
|
||
|
void RunTask( const Task_t *pTask );
|
||
|
int SelectSchedule();
|
||
|
int TranslateSchedule( int scheduleType );
|
||
|
bool OverrideMoveFacing( const AILocalMoveGoal_t &move, float flInterval );
|
||
|
void SetTurnActivity();
|
||
|
virtual void ASW_Ignite( float flFlameLifetime, float flSize, CBaseEntity *pAttacker, CBaseEntity *pDamagingWeapon = NULL );
|
||
|
virtual bool ShouldDefend();
|
||
|
float m_fNextHeadhitAttack;
|
||
|
float m_fLastHurtTime;
|
||
|
bool m_bLastShouldDefend;
|
||
|
int m_nExtraHeath;
|
||
|
|
||
|
virtual Activity NPC_TranslateActivity( Activity baseAct );
|
||
|
|
||
|
bool ShouldGib( const CTakeDamageInfo &info ) ;
|
||
|
|
||
|
virtual void PrescheduleThink();
|
||
|
virtual void PainSound( const CTakeDamageInfo &info );
|
||
|
virtual void AlertSound();
|
||
|
virtual void DeathSound( const CTakeDamageInfo &info );
|
||
|
virtual void AttackSound();
|
||
|
virtual void IdleSound();
|
||
|
virtual void Event_Killed( const CTakeDamageInfo &info );
|
||
|
virtual bool HasDeadBodyGroup() { return true; };
|
||
|
virtual void GatherConditions();
|
||
|
virtual bool CanBreak ( void ) { return true; };
|
||
|
virtual Activity GetDeathActivity( void );
|
||
|
|
||
|
bool m_bDefending;
|
||
|
float m_fNextFlinchTime;
|
||
|
virtual bool CanFlinch();
|
||
|
virtual int OnTakeDamage_Alive( const CTakeDamageInfo &info );
|
||
|
virtual bool BlockedDamage( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr );
|
||
|
virtual void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr );
|
||
|
virtual void Bleed( const CTakeDamageInfo &info, const Vector &vecPos, const Vector &vecDir, trace_t *ptr );
|
||
|
void CheckForShieldbugHint( const CTakeDamageInfo &info );
|
||
|
|
||
|
virtual float GetMaxShoverObjectMass() { return 200.0f; }
|
||
|
|
||
|
virtual void SetHealthByDifficultyLevel();
|
||
|
|
||
|
virtual int GetMoneyCount( const CTakeDamageInfo &info );
|
||
|
|
||
|
float m_fMarineBlockCounter;
|
||
|
float m_fLastMarineBlockTime;
|
||
|
float m_flDefendDuration;
|
||
|
|
||
|
static float s_fNextSpottedChatterTime;
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
COND_SHIELDBUG_CHANGE_DEFEND = BaseClass::NEXT_CONDITION,
|
||
|
NEXT_CONDITION,
|
||
|
};
|
||
|
|
||
|
bool m_bHasBeenHurt;
|
||
|
|
||
|
protected:
|
||
|
DEFINE_CUSTOM_AI;
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
SCHED_SHIELDBUG_FLINCH_LEFT = LAST_ASW_ALIEN_SHOVER_SHARED_SCHEDULE,
|
||
|
SCHED_SHIELDBUG_FLINCH_RIGHT = LAST_ASW_ALIEN_SHOVER_SHARED_SCHEDULE+1,
|
||
|
SCHED_ASW_SHIELDBUG_MELEE_ATTACK1 = LAST_ASW_ALIEN_SHOVER_SHARED_SCHEDULE+2,
|
||
|
SCHED_ASW_SHIELDBUG_MELEE_ATTACK2 = LAST_ASW_ALIEN_SHOVER_SHARED_SCHEDULE+3,
|
||
|
SCHED_SHIELDBUG_START_DEFENDING,
|
||
|
SCHED_SHIELDBUG_LEAVE_DEFENDING,
|
||
|
LAST_ASW_SHIELDBUG_SHARED_SCHEDULE,
|
||
|
};
|
||
|
|
||
|
extern int ACT_START_DEFENDING;
|
||
|
extern int ACT_LEAVE_DEFENDING;
|
||
|
extern int ACT_RUN_DEFEND;
|
||
|
extern int ACT_IDLE_DEFEND;
|
||
|
extern int ACT_FLINCH_LEFTARM_DEFEND;
|
||
|
extern int ACT_FLINCH_RIGHTARM_DEFEND;
|
||
|
extern int ACT_MELEE_ATTACK1_DEFEND;
|
||
|
extern int ACT_TURN_LEFT_DEFEND;
|
||
|
extern int ACT_TURN_RIGHT_DEFEND;
|
||
|
extern int ACT_ALIEN_SHOVER_ROAR_DEFEND;
|
||
|
|
||
|
//enum
|
||
|
//{
|
||
|
//TASK_SHIELDBUG_FLINCH = LAST_ASW_ALIEN_SHARED_TASK,
|
||
|
//LAST_ASW_SHIELDBUG_SHARED_TASK,
|
||
|
//};
|
||
|
|
||
|
#endif // _INCLUDED_ASW_SHIELDBUG_H
|