// MNetworkIncludeByName = m_lifeState
// MNetworkIncludeByName = m_spawnflags
// MNetworkVarNames = NPC_STATE m_NPCState
// MNetworkVarNames = bool m_bFadeCorpse
// MNetworkVarNames = bool m_bImportantRagdoll
class CAI_BaseNPC : public CBaseCombatCharacter
{
uint8 pad_0C10[16];
public:
CNPCPhysicsHull m_currentNPCBasePhysicsHull;
bool m_bCheckContacts;
bool m_bForceDynamicHull;
private:
uint8 pad_0C5C[28];
public:
CRelativeLocation m_lastNavLocation;
float32 m_flLastPositionTolerance;
CHandle<CAI_BaseNPC> m_hSynchronizedPrimaryNPC;
CUtlVector<CHandle<CAI_BaseNPC>> m_vecSynchronizedSecondaryNPCs;
// MNetworkEnable
NPC_STATE m_NPCState;
NPC_STATE m_nPreModifierNPCState;
NPC_STATE m_IdealNPCState;
GameTime_t m_flLastStateChangeTime;
private:
uint8 pad_0CE8[8];
public:
CAI_ScheduleBits m_Conditions;
CAI_ScheduleBits m_NonGatherConditions;
CAI_ScheduleBits m_CustomInterruptConditions;
bool m_bForceConditionsGather;
bool m_bConditionsGathered;
bool m_bDoPostRestoreRefindPath;
CAI_BehaviorHost* m_pBehaviorHost;
GameTime_t m_flBlinkTime;
CGlobalSymbol m_sDeathAnim;
CAI_EnemyServices* m_pEnemyServices;
CRandStopwatch m_GiveUpOnDeadEnemyTimer;
CSimpleSimTimer m_FailChooseEnemyTimer;
GameTime_t m_flAcceptableTimeSeenEnemy;
bool m_bSkippedChooseEnemy;
bool m_bIgnoreUnseenEnemies;
CHandle<CBaseFilter> m_hEnemyFilter;
CUtlSymbolLarge m_iszEnemyFilterName;
CHandle<CBaseEntity> m_hTargetEnt;
bool m_bClearTargetOnScheduleEnd;
GameTime_t m_flSoundWaitTime;
int32 m_nSoundPriority;
bool m_bSuppressFootsteps;
int32 m_afCapability;
private:
uint8 pad_0DC8[368];
public:
float32 m_flGroundSpeed;
GameTime_t m_lastTimeBashedObstacle;
GameTime_t m_nextMantleTime;
GameTime_t m_flMoveWaitFinished;
CHandle<CBaseEntity> m_hOpeningDoor;
CUnreachableTargetList m_UnreachableTargets;
CHandle<CBaseEntity> m_hPathObstructor;
float32 m_flJumpMaxRise;
float32 m_flJumpMaxDrop;
float32 m_flJumpMaxDist;
float32 m_flJumpMinDist;
CAI_FacingServices* m_pFacingServices;
CAI_AnimGraphServices* m_pAnimGraphServices;
bool m_bAnimGraphIsAnimatingDeath;
bool m_bDeferredNavigation;
CAI_Scheduler m_Scheduler;
CAI_Navigator* m_pNavigatorNavmesh;
private:
uint8 pad_1050[24];
public:
CAI_Motor* m_pMotor;
GameTime_t m_flTimeLastMovement;
GameTime_t m_flTimeLastFootstep;
AI_VolumetricEventHandle_t m_hFootstepEvent;
CSimpleSimTimer m_CheckOnGroundTimer;
CUtlSymbolLarge m_strNavRestrictionVolume;
int32 m_afMemory;
GameTime_t m_flLastAttackTime;
GameTime_t m_flLastTookDamageTime;
GameTime_t m_flLastTookDamageFromPlayerTime;
Vector m_vecLastTookDamageAttackVector;
CUtlSymbolLarge m_iszSquadName;
CUtlVector<SquadSlotNPCEntry_t> m_vecMySquadSlots;
private:
uint8 pad_10D0[8];
public:
int32 m_nPrevHealthDuringModifyDamage;
private:
uint8 pad_10DC[4];
public:
// MNetworkEnable
bool m_bFadeCorpse;
// MNetworkEnable
bool m_bImportantRagdoll;
CTakeDamageResult m_deathBlowResult;
bool m_bDidDeathCleanup;
bool m_bReceivedEnemyDeadNotification;
GameTime_t m_flWaitFinished;
bool m_fNoDamageDecal;
CUtlVector<CHandle<CBaseEntity>>* m_pVecAttachments;
CEntityIOOutput m_OnDamaged;
CEntityIOOutput m_OnStartDeath;
CEntityIOOutput m_OnDeath;
CEntityIOOutput m_OnQuarterHealth;
CEntityIOOutput m_OnHalfHealth;
CEntityIOOutput m_OnThreeQuarterHealth;
CEntityOutputTemplate<CHandle<CBaseEntity>> m_OnFoundEnemy;
CEntityIOOutput m_OnLostEnemy;
CEntityIOOutput m_OnLostPlayer;
CEntityIOOutput m_OnDamagedByPlayer;
CEntityIOOutput m_OnDamagedByPlayerSquad;
CEntityIOOutput m_OnPlayerUse;
CEntityIOOutput m_OnUse;
CEntityIOOutput m_OnStartTouchMaterial;
CEntityIOOutput m_OnEndTouchMaterial;
CEntityIOOutput m_OnLostEnemyLOS;
CEntityIOOutput m_OnLostPlayerLOS;
uint64 m_nAITraceMask;
bool m_bDynamicAILOD;
AILOD_t m_aiLOD;
float32 m_flThinkTime;
private:
uint8 pad_13DC[28];
public:
int32 m_nDebugCurIndex;
};