mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-09-01 23:19:18 +00:00
upload "kind" alien swarm
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
#ifndef _DEFINED_ASW_DRONE_ADVANCED_H
|
||||
#define _DEFINED_ASW_DRONE_ADVANCED_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "asw_alien_jumper.h"
|
||||
#include "ai_blended_movement.h"
|
||||
#include "util_shared.h"
|
||||
|
||||
//typedef CAI_BlendingHost< CAI_BehaviorHost<CASW_BlendedAlien> > CAI_DroneBase;
|
||||
|
||||
class CASW_Door;
|
||||
class CASW_Drone_Movement;
|
||||
|
||||
class CASW_Drone_Advanced : public CASW_Alien_Jumper
|
||||
{
|
||||
public:
|
||||
|
||||
DECLARE_CLASS( CASW_Drone_Advanced, CASW_Alien_Jumper );
|
||||
DECLARE_SERVERCLASS();
|
||||
//DECLARE_PREDICTABLE();
|
||||
DECLARE_DATADESC();
|
||||
CASW_Drone_Advanced( void );
|
||||
virtual ~CASW_Drone_Advanced( void );
|
||||
|
||||
virtual void Spawn();
|
||||
virtual void Precache();
|
||||
CAI_Navigator* CreateNavigator();
|
||||
|
||||
virtual int MeleeAttack1Conditions( float flDot, float flDist );
|
||||
virtual int MeleeAttack2Conditions( float flDot, float flDist );
|
||||
void MeleeAttack( float distance, float damage, QAngle &viewPunch, Vector &shove );
|
||||
|
||||
virtual bool MovementCost( int moveType, const Vector &vecStart, const Vector &vecEnd, float *pCost );
|
||||
|
||||
virtual float GetIdealSpeed() const;
|
||||
virtual float GetIdealAccel() const;
|
||||
virtual float MaxYawSpeed();
|
||||
virtual float GetSequenceGroundSpeed( int iSequence );
|
||||
virtual bool ModifyAutoMovement( Vector &vecNewPos );
|
||||
virtual bool IsNavigationUrgent();
|
||||
virtual void NPCThink();
|
||||
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_DRONE; }
|
||||
virtual void HandleAnimEvent( animevent_t *pEvent );
|
||||
virtual bool CorpseGib( const CTakeDamageInfo &info );
|
||||
virtual bool IsHeavyDamage( const CTakeDamageInfo &info );
|
||||
virtual void BuildScheduleTestBits( void );
|
||||
virtual bool OverrideMoveFacing( const AILocalMoveGoal_t &move, float flInterval );
|
||||
virtual void GatherEnemyConditions( CBaseEntity *pEnemy );
|
||||
virtual Activity NPC_TranslateActivity( Activity eNewActivity );
|
||||
virtual void RunTaskOverlay();
|
||||
virtual void RunTask( const Task_t *pTask );
|
||||
virtual bool ShouldGib( const CTakeDamageInfo &info );
|
||||
virtual bool CanBreak() { return true; };
|
||||
virtual bool HasDeadBodyGroup() { return true; };
|
||||
virtual int OnTakeDamage_Dead( const CTakeDamageInfo &info );
|
||||
virtual void Event_Killed( const CTakeDamageInfo &info );
|
||||
virtual bool IsMeleeAttacking();
|
||||
virtual bool ShouldStopBeforeMeleeAttack() { return !m_bHasAttacked; }
|
||||
bool m_bHasAttacked;
|
||||
//void RunAttackTask( int task );
|
||||
//void ReachedEndOfSequence();
|
||||
|
||||
virtual bool ValidBlockingDoor();
|
||||
virtual void GatherConditions();
|
||||
virtual int SelectSchedule();
|
||||
virtual int SelectFailSchedule( int failedSchedule, int failedTask, AI_TaskFailureCode_t taskFailCode );
|
||||
virtual int SelectFlinchSchedule_ASW();
|
||||
virtual void CheckFlinches();
|
||||
virtual Activity GetFlinchActivity( bool bHeavyDamage, bool bGesture );
|
||||
virtual int TranslateSchedule( int scheduleType );
|
||||
virtual void StartTask( const Task_t *pTask );
|
||||
virtual bool IsCurTaskContinuousMove();
|
||||
virtual bool OnObstructionPreSteer( AILocalMoveGoal_t *pMoveGoal,
|
||||
float distClear,
|
||||
AIMoveResult_t *pResult );
|
||||
virtual bool OnObstructingASWDoor( AILocalMoveGoal_t *pMoveGoal,
|
||||
CASW_Door *pDoor,
|
||||
float distClear,
|
||||
AIMoveResult_t *pResult );
|
||||
Activity SelectDoorBash();
|
||||
void SetSmallDoorBashHull(bool bSmall);
|
||||
bool m_bUsingSmallDoorBashHull;
|
||||
float LinearDistanceToDoor();
|
||||
void MoveAwayFromDoor();
|
||||
bool IsBehindDoor(CBaseEntity *pOther);
|
||||
void SetDoorBashYaw();
|
||||
virtual bool ShouldClearOrdersOnMovementComplete();
|
||||
int m_iDoorPos; // which part of the door we're going to head towards (0=middle, 1 and 2 are the sides)
|
||||
|
||||
virtual void StartTouch( CBaseEntity *pOther );
|
||||
float m_fLastTouchHurtTime;
|
||||
float m_flNextSmallFlinchTime;
|
||||
|
||||
// sounds
|
||||
virtual void PainSound( const CTakeDamageInfo &info );
|
||||
virtual void AlertSound();
|
||||
virtual void DeathSound( const CTakeDamageInfo &info );
|
||||
|
||||
// overriden movement
|
||||
virtual bool OverrideMove( float flInterval );
|
||||
virtual bool MoveExecute_Alive(float flInterval);
|
||||
Vector m_vecSavedVelocity;
|
||||
float m_flSavedSpeed;
|
||||
virtual bool IsMoving();
|
||||
bool IsPerformingOverrideMove() const;
|
||||
bool m_bPerformingOverride;
|
||||
bool FailedOverrideMove() const; // did we get stuck last time we tried to do an override move?
|
||||
bool m_bFailedOverrideMove;
|
||||
float m_fFailedOverrideTime;
|
||||
virtual bool HasOverridePathTo(CBaseEntity *pEnt);
|
||||
bool CheckStuck();
|
||||
Vector m_vecLastGoodPosition;
|
||||
virtual bool CanBePushedAway();
|
||||
|
||||
// jumping
|
||||
virtual bool ShouldJump();
|
||||
|
||||
virtual int DrawDebugTextOverlays();
|
||||
|
||||
virtual void SetHealthByDifficultyLevel();
|
||||
|
||||
static float s_fNextTooCloseChatterTime;
|
||||
|
||||
CNetworkVar( EHANDLE, m_hAimTarget );
|
||||
|
||||
enum
|
||||
{
|
||||
COND_DRONE_BLOCKED_BY_DOOR = BaseClass::NEXT_CONDITION,
|
||||
COND_DRONE_DOOR_OPENED,
|
||||
COND_DRONE_LOS, // drone has soft line of sight to his enemy
|
||||
COND_DRONE_GAINED_LOS, // drone didn't have soft los last think, but does now
|
||||
COND_DRONE_LOST_LOS, // drone had soft line of sight last think, but has lost it this think
|
||||
NEXT_CONDITION,
|
||||
};
|
||||
|
||||
private:
|
||||
CHandle< CASW_Door > m_hBlockingDoor;
|
||||
float m_flDoorBashYaw;
|
||||
bool m_bJumper; // can this drone jump?
|
||||
|
||||
CSimTimer m_DurationDoorBash;
|
||||
bool m_bDoneAlienCloseChatter; // has this alien made a marine shout out in fear yet?
|
||||
|
||||
Activity m_FlinchActivity;
|
||||
|
||||
float m_fLastLostLOSTime;
|
||||
bool m_bLastSoftLOS;
|
||||
|
||||
Vector m_vecEnemyStandoffPosition;
|
||||
|
||||
DEFINE_CUSTOM_AI;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TASK_DRONE_YAW_TO_DOOR = LAST_ASW_ALIEN_JUMPER_SHARED_TASK,
|
||||
TASK_DRONE_ATTACK_DOOR,
|
||||
TASK_DRONE_WAIT_FOR_OVERRIDE_MOVE,
|
||||
TASK_DRONE_GET_PATH_TO_DOOR,
|
||||
TASK_DRONE_WAIT_FOR_DOOR_MOVEMENT,
|
||||
TASK_DRONE_DOOR_WAIT,
|
||||
TASK_DRONE_GET_CIRCLE_PATH,
|
||||
TASK_DRONE_WAIT_FACE_ENEMY,
|
||||
LAST_ASW_DRONE_SHARED_TASK,
|
||||
};
|
||||
|
||||
class CDroneTraceFilterLOS : public CTraceFilterSimple
|
||||
{
|
||||
public:
|
||||
CDroneTraceFilterLOS( IHandleEntity *pHandleEntity, int collisionGroup );
|
||||
bool ShouldHitEntity( IHandleEntity *pServerEntity, int contentsMask );
|
||||
};
|
||||
|
||||
|
||||
#endif // _DEFINED_ASW_DRONE_ADVANCED_H
|
||||
Reference in New Issue
Block a user