diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/tf/player_vs_environment/tf_base_boss.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/server/tf/player_vs_environment/tf_base_boss.h')
| -rw-r--r-- | game/server/tf/player_vs_environment/tf_base_boss.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/game/server/tf/player_vs_environment/tf_base_boss.h b/game/server/tf/player_vs_environment/tf_base_boss.h new file mode 100644 index 0000000..06b2d57 --- /dev/null +++ b/game/server/tf/player_vs_environment/tf_base_boss.h @@ -0,0 +1,121 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +#ifndef TF_BASE_BOSS_H +#define TF_BASE_BOSS_H + +#include "NextBot/NextBot.h" +#include "NextBot/NextBotGroundLocomotion.h" +#include "pathtrack.h" + +class CTFPlayer; + +#define TF_BASE_BOSS_CURRENCY 125 + + +//---------------------------------------------------------------------------- +class CTFBaseBossLocomotion : public NextBotGroundLocomotion +{ +public: + CTFBaseBossLocomotion( INextBot *bot ) : NextBotGroundLocomotion( bot ) { } + virtual ~CTFBaseBossLocomotion() { } + + virtual float GetRunSpeed( void ) const; // get maximum running speed + virtual float GetStepHeight( void ) const { return 100.0f; } // if delta Z is greater than this, we have to jump to get up + virtual float GetMaxJumpHeight( void ) const { return 100.0f; } // return maximum height of a jump + + virtual void FaceTowards( const Vector &target ); // rotate body to face towards "target" +}; + + +//---------------------------------------------------------------------------- +class CTFBaseBoss : public NextBotCombatCharacter +{ +public: + DECLARE_CLASS( CTFBaseBoss, NextBotCombatCharacter ); + DECLARE_SERVERCLASS(); + DECLARE_DATADESC(); + + CTFBaseBoss(); + virtual ~CTFBaseBoss(); + + virtual void Precache( void ); + virtual void Spawn( void ); + int UpdateTransmitState( void ); + + virtual void UpdateCollisionBounds( void ) {} + + virtual int OnTakeDamage( const CTakeDamageInfo &info ); + virtual int OnTakeDamage_Alive( const CTakeDamageInfo &info ); + virtual void Event_Killed( const CTakeDamageInfo &info ); + virtual void UpdateOnRemove(); + + virtual bool IsRemovedOnReset( void ) const { return false; } // remove this bot when the NextBot manager calls Reset + + virtual CTFBaseBossLocomotion *GetLocomotionInterface( void ) const { return m_locomotor; } + + virtual void Touch( CBaseEntity *pOther ); + + virtual int GetCurrencyValue( void ){ return TF_BASE_BOSS_CURRENCY; } + + void BossThink( void ); + + void SetResolvePlayerCollisions( bool bResolve ) { m_bResolvePlayerCollisions = bResolve; } + + void SetMaxSpeed( float value ) { m_speed = value; } + float GetMaxSpeed( void ) const { return m_speed; } + void InputEnable( inputdata_t &inputdata ); + void InputDisable( inputdata_t &inputdata ); + void InputSetSpeed( inputdata_t &inputdata ); + void InputSetHealth( inputdata_t &inputdata ); + void InputSetMaxHealth( inputdata_t &inputdata ); + void InputAddHealth( inputdata_t &inputdata ); + void InputRemoveHealth( inputdata_t &inputdata ); + + void SetInitialHealth( int value ); + void SetCurrencyValue( int value ); // how much cash do we drop when we die? + + COutputEvent m_outputOnHealthBelow90Percent; + COutputEvent m_outputOnHealthBelow80Percent; + COutputEvent m_outputOnHealthBelow70Percent; + COutputEvent m_outputOnHealthBelow60Percent; + COutputEvent m_outputOnHealthBelow50Percent; + COutputEvent m_outputOnHealthBelow40Percent; + COutputEvent m_outputOnHealthBelow30Percent; + COutputEvent m_outputOnHealthBelow20Percent; + COutputEvent m_outputOnHealthBelow10Percent; + + COutputEvent m_outputOnKilled; + +protected: + virtual void ModifyDamage( CTakeDamageInfo *info ) const { } + int GetInitialHealth( ) const { return m_initialHealth; } + +private: + int m_initialHealth; + CNetworkVar( float, m_lastHealthPercentage ); + string_t m_modelString; + float m_speed; + int m_startDisabled; + bool m_isEnabled; + int m_damagePoseParameter; + int m_currencyValue; + + bool m_bResolvePlayerCollisions; + + CTFBaseBossLocomotion *m_locomotor; + + void ResolvePlayerCollision( CTFPlayer *player ); +}; + + +inline void CTFBaseBoss::SetInitialHealth( int value ) +{ + m_initialHealth = value; +} + +inline void CTFBaseBoss::SetCurrencyValue( int value ) +{ + m_currencyValue = value; +} + + +#endif // TF_BASE_BOSS_H |