// 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_ 0B90[16];
public:
CNPCPhysicsHull m_ currentNPCBasePhysicsHull;
bool m_ bCheckContacts;
bool m_ bForceDynamicHull;
private:
uint8 pad_ 0BDC[36];
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;
CAI_ Senses* m_ pSenses;
CAI_ ScheduleBits m_ Conditions;
CAI_ ScheduleBits m_ ExistingConditionsAsync;
CAI_ ScheduleBits m_ NonGatherConditions;
CAI_ ScheduleBits m_ CustomInterruptConditions;
bool m_ bForceConditionsGather;
bool m_ bConditionsGathered;
bool m_ bConditionsGatheredAsync;
GameTick_ t m_ nTickGatheredConditions;
private:
uint8 pad_ 0D10[4];
public:
GameTime_ t m_ flLastTimeIgnited;
GameTime_ t m_ flTimeIgnitionStarted;
// MNotSaved = !!UNKNOWN!!
bool m_ bDoPostRestoreRefindPath;
CAI_ BehaviorHost* m_ pBehaviorHost;
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_ 0D80[648];
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;
// MNotSaved = !!UNKNOWN!!
float32 m_ flJumpMaxRise;
// MNotSaved = !!UNKNOWN!!
float32 m_ flJumpMaxDrop;
// MNotSaved = !!UNKNOWN!!
float32 m_ flJumpMaxDist;
// MNotSaved = !!UNKNOWN!!
float32 m_ flJumpMinDist;
CAI_ FacingServices* m_ pFacingServices;
CAI_ AnimGraphServices* m_ pAnimGraphServices;
bool m_ bAnimGraphIsAnimatingDeath;
private:
uint8 pad_ 1069[1];
public:
// MNotSaved = !!UNKNOWN!!
bool m_ bDeferredNavigation;
CAI_ Scheduler m_ Scheduler;
CAI_ Navigator* m_ pNavigator;
CAI_ Pathfinder* m_ pPathfinder;
CAI_ Pathfinder* m_ pPathfinderNet;
private:
uint8 pad_ 1140[16];
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_ 11B8[8];
public:
int32 m_ nPrevHealthDuringModifyDamage;
private:
uint8 pad_ 11C4[4];
public:
// MNetworkEnable
bool m_ bFadeCorpse;
// MNetworkEnable
bool m_ bImportantRagdoll;
// MNotSaved = !!UNKNOWN!!
CTakeDamageResult m_ deathBlowResult;
bool m_ bDidDeathCleanup;
bool m_ bReceivedEnemyDeadNotification;
private:
uint8 pad_ 1204[4];
public:
GameTime_ t m_ flWaitFinished;
bool m_ fNoDamageDecal;
// MNotSaved = !!UNKNOWN!!
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_ 13CC[28];
public:
// MNotSaved = !!UNKNOWN!!
int32 m_ nDebugCurIndex;
};