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.

79 lines
2.5 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef NPC_BULLSEYE_H
  8. #define NPC_BULLSEYE_H
  9. #ifdef _WIN32
  10. #pragma once
  11. #endif
  12. #include "ai_basenpc.h"
  13. //=========================================================
  14. // >> CBullseye
  15. //=========================================================
  16. class CNPC_Bullseye : public CAI_BaseNPC
  17. {
  18. DECLARE_CLASS( CNPC_Bullseye, CAI_BaseNPC );
  19. public:
  20. CNPC_Bullseye(void);
  21. ~CNPC_Bullseye();
  22. virtual void Precache( void );
  23. virtual void Spawn( void );
  24. virtual void Activate( void );
  25. virtual void OnRestore( void );
  26. virtual float GetAutoAimRadius() { return m_fAutoaimRadius; }
  27. Class_T Classify( void );
  28. void Event_Killed( const CTakeDamageInfo &info );
  29. void DecalTrace( trace_t *pTrace, char const *decalName );
  30. void ImpactTrace( trace_t *pTrace, int iDamageType, const char *pCustomImpactName );
  31. bool IsLightDamage( const CTakeDamageInfo &info );
  32. void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator );
  33. int OnTakeDamage( const CTakeDamageInfo &info );
  34. bool UsePerfectAccuracy( void ) { return m_bPerfectAccuracy; }
  35. bool TestHitboxes( const Ray_t &ray, unsigned int fContentsMask, trace_t& tr ) { return false; } // force traces to test against hull
  36. void BullseyeThink( void );
  37. bool CanBecomeRagdoll( void );
  38. void SetPainPartner( CBaseEntity *pOther );
  39. void InputTargeted( inputdata_t &inputdata );
  40. void InputReleased( inputdata_t &inputdata );
  41. bool CanBecomeServerRagdoll( void ) { return false; }
  42. bool CanBeAnEnemyOf( CBaseEntity *pEnemy );
  43. protected:
  44. EHANDLE m_hPainPartner; //Entity that the bullseye will pass any damage it take to
  45. COutputEvent m_OnTargeted;
  46. COutputEvent m_OnReleased;
  47. bool m_bPerfectAccuracy; // Entities that shoot at me should be perfectly accurate
  48. float m_fAutoaimRadius; // How much to influence player's autoaim.
  49. float m_flMinDistValidEnemy;
  50. DECLARE_DATADESC();
  51. };
  52. int FindBullseyesInCone( CBaseEntity **pList, int listMax, const Vector &coneOrigin, const Vector &coneAxis, float coneAngleCos, float coneLength );
  53. #define SF_BULLSEYE_NONSOLID (1 << 16)
  54. #define SF_BULLSEYE_NODAMAGE (1 << 17)
  55. #define SF_BULLSEYE_ENEMYDAMAGEONLY (1 << 18)
  56. #define SF_BULLSEYE_BLEED (1 << 19)
  57. #define SF_BULLSEYE_PERFECTACC (1 << 20)
  58. #define SF_BULLSEYE_VPHYSICSSHADOW (1 << 21)
  59. #endif // NPC_BULLSEYE_H