mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-18 06:21:55 +00:00
1
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef NPC_STALKER_H
|
||||
#define NPC_STALKER_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "ai_basenpc.h"
|
||||
#include "entityoutput.h"
|
||||
#include "ai_behavior.h"
|
||||
#include "ai_behavior_actbusy.h"
|
||||
|
||||
class CBeam;
|
||||
class CSprite;
|
||||
class CScriptedTarget;
|
||||
|
||||
typedef CAI_BehaviorHost<CAI_BaseNPC> CAI_BaseStalker;
|
||||
|
||||
class CNPC_Stalker : public CAI_BaseStalker
|
||||
{
|
||||
DECLARE_CLASS( CNPC_Stalker, CAI_BaseStalker );
|
||||
|
||||
public:
|
||||
float m_flNextAttackSoundTime;
|
||||
float m_flNextBreatheSoundTime;
|
||||
float m_flNextScrambleSoundTime;
|
||||
float m_flNextNPCThink;
|
||||
|
||||
// ------------------------------
|
||||
// Laser Beam
|
||||
// ------------------------------
|
||||
int m_eBeamPower;
|
||||
Vector m_vLaserDir;
|
||||
Vector m_vLaserTargetPos;
|
||||
float m_fBeamEndTime;
|
||||
float m_fBeamRechargeTime;
|
||||
float m_fNextDamageTime;
|
||||
float m_nextSmokeTime;
|
||||
float m_bPlayingHitWall;
|
||||
float m_bPlayingHitFlesh;
|
||||
CBeam* m_pBeam;
|
||||
CSprite* m_pLightGlow;
|
||||
int m_iPlayerAggression;
|
||||
float m_flNextScreamTime;
|
||||
|
||||
void KillAttackBeam(void);
|
||||
void DrawAttackBeam(void);
|
||||
void CalcBeamPosition(void);
|
||||
Vector LaserStartPosition(Vector vStalkerPos);
|
||||
|
||||
Vector m_vLaserCurPos; // Last position successfully burned
|
||||
bool InnateWeaponLOSCondition( const Vector &ownerPos, const Vector &targetPos, bool bSetConditions );
|
||||
|
||||
// ------------------------------
|
||||
// Dormancy
|
||||
// ------------------------------
|
||||
CAI_Schedule* WakeUp(void);
|
||||
void GoDormant(void);
|
||||
|
||||
public:
|
||||
void Spawn( void );
|
||||
void Precache( void );
|
||||
bool CreateBehaviors();
|
||||
float MaxYawSpeed( void );
|
||||
Class_T Classify ( void );
|
||||
|
||||
void PrescheduleThink();
|
||||
|
||||
bool IsValidEnemy( CBaseEntity *pEnemy );
|
||||
|
||||
void StartTask( const Task_t *pTask );
|
||||
void RunTask( const Task_t *pTask );
|
||||
virtual int SelectSchedule ( void );
|
||||
virtual int TranslateSchedule( int scheduleType );
|
||||
int OnTakeDamage_Alive( const CTakeDamageInfo &info );
|
||||
void OnScheduleChange();
|
||||
|
||||
void StalkerThink(void);
|
||||
void NotifyDeadFriend( CBaseEntity *pFriend );
|
||||
|
||||
int MeleeAttack1Conditions ( float flDot, float flDist );
|
||||
int RangeAttack1Conditions ( float flDot, float flDist );
|
||||
void HandleAnimEvent( animevent_t *pEvent );
|
||||
|
||||
bool FValidateHintType(CAI_Hint *pHint);
|
||||
Activity GetHintActivity( short sHintType, Activity HintsActivity );
|
||||
float GetHintDelay( short sHintType );
|
||||
|
||||
void IdleSound( void );
|
||||
void DeathSound( const CTakeDamageInfo &info );
|
||||
void PainSound( const CTakeDamageInfo &info );
|
||||
|
||||
void Event_Killed( const CTakeDamageInfo &info );
|
||||
void DoSmokeEffect( const Vector &position );
|
||||
|
||||
void AddZigZagToPath(void);
|
||||
void StartAttackBeam();
|
||||
void UpdateAttackBeam();
|
||||
|
||||
CNPC_Stalker(void);
|
||||
|
||||
DECLARE_DATADESC();
|
||||
DEFINE_CUSTOM_AI;
|
||||
|
||||
private:
|
||||
CAI_ActBusyBehavior m_ActBusyBehavior;
|
||||
};
|
||||
|
||||
#endif // NPC_STALKER_H
|
||||
Reference in New Issue
Block a user