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. ============//
#ifndef NPC_TURRET_GROUND_H
#define NPC_TURRET_GROUND_H
#ifdef _WIN32
#pragma once
#endif
#include "ai_basenpc.h"
#include "smoke_trail.h"
//=========================================================
//=========================================================
class CNPC_GroundTurret : public CAI_BaseNPC { public: DECLARE_CLASS( CNPC_GroundTurret, CAI_BaseNPC ); DECLARE_DATADESC();
void Precache( void ); virtual void Spawn( void ); bool CreateVPhysics( void ); void PrescheduleThink(); Class_T Classify( void );
void PostNPCInit();
// Damage & Death
virtual int OnTakeDamage_Alive( const CTakeDamageInfo &info ); void Event_Killed( const CTakeDamageInfo &info ); void DeathEffects(); bool CanBecomeRagdoll( void ) { return false; } void DeathSound( const CTakeDamageInfo &info );
// Combat
void MakeTracer( const Vector &vecTracerSrc, const trace_t &tr, int iTracerType ); Vector GetAttackSpread( CBaseCombatWeapon *pWeapon, CBaseEntity *pTarget ) { return VECTOR_CONE_5DEGREES; }
// Sensing
void GatherConditions(); Vector EyePosition(); bool FVisible( CBaseEntity *pEntity, int traceMask, CBaseEntity **ppBlocker ); bool QuerySeeEntity( CBaseEntity *pEntity, bool bOnlyHateOrFearIfNPC = false );
bool IsOpeningOrClosing() { return (GetAbsVelocity().z != 0.0f); } bool IsEnabled(); bool IsOpen();
// Tasks & Schedules
void StartTask( const Task_t *pTask ); void RunTask( const Task_t *pTask ); virtual int SelectSchedule( void ); virtual int TranslateSchedule( int scheduleType );
// Activities & Animation
Activity NPC_TranslateActivity( Activity eNewActivity ); virtual void Shoot(); virtual void Scan(); void ProjectBeam( const Vector &vecStart, const Vector &vecDir, int width, int brightness, float duration );
// Local
void SetActive( bool bActive ) {}
// Inputs
void InputEnable( inputdata_t &inputdata ); void InputDisable( inputdata_t &inputdata );
// Outputs
COutputEvent m_OnAreaClear;
DEFINE_CUSTOM_AI;
protected: //-----------------------------------------------------
// Conditions, Schedules, Tasks
//-----------------------------------------------------
enum { SCHED_GROUND_TURRET_IDLE = BaseClass::NEXT_SCHEDULE, SCHED_GROUND_TURRET_ATTACK,
TASK_GROUNDTURRET_SCAN = BaseClass::NEXT_TASK, };
int m_iAmmoType; SmokeTrail *m_pSmoke;
bool m_bEnabled;
float m_flTimeNextShoot; float m_flTimeLastSawEnemy; Vector m_vecSpread; bool m_bHasExploded; int m_iDeathSparks; float m_flSensingDist; bool m_bSeeEnemy; float m_flTimeNextPing;
Vector m_vecClosedPos;
Vector m_vecLightOffset;
HSOUNDSCRIPTHANDLE m_ShotSounds; };
#endif //#ifndef NPC_TURRET_GROUND_H
|