Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= 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
|