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.
76 lines
2.3 KiB
76 lines
2.3 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// TF Energy Ball Projectile |
|
// |
|
//============================================================================= |
|
#ifndef TF_PROJECTILE_ENERGY_BALL_H |
|
#define TF_PROJECTILE_ENERGY_BALL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "tf_player.h" |
|
#include "tf_weaponbase_rocket.h" |
|
#include "iscorer.h" |
|
|
|
class CTFProjectile_EnergyBall : public CTFBaseRocket//, public IScorer |
|
{ |
|
public: |
|
|
|
DECLARE_CLASS( CTFProjectile_EnergyBall, CTFBaseRocket ); |
|
DECLARE_NETWORKCLASS(); |
|
DECLARE_DATADESC(); |
|
|
|
CTFProjectile_EnergyBall(); |
|
~CTFProjectile_EnergyBall(); |
|
|
|
// Creation. |
|
static CTFProjectile_EnergyBall *Create( const Vector &vecOrigin, const QAngle &vecAngles, const float fSpeed, const float fGravity, CBaseEntity *pOwner = NULL, CBaseEntity *pScorer = NULL ); |
|
virtual void InitEnergyBall( const Vector &vecOrigin, const QAngle &vecAngles, const float fSpeed, const float fGravity, CBaseEntity *pOwner = NULL, CBaseEntity *pScorer = NULL ); |
|
virtual void Spawn(); |
|
virtual void Precache(); |
|
virtual int GetWeaponID( void ) const { return TF_WEAPON_PARTICLE_CANNON; } |
|
|
|
// IScorer interface |
|
virtual CBasePlayer *GetScorer( void ); |
|
virtual CBasePlayer *GetAssistant( void ) { return NULL; } |
|
|
|
void SetScorer( CBaseEntity *pScorer ); |
|
void SetCritical( bool bCritical ) { m_bCritical = bCritical; } |
|
|
|
virtual bool CanHeadshot() { return false; } |
|
|
|
void ImpactSound( const char *pszSoundName, bool bLoudForAttacker = false ); |
|
virtual void ImpactTeamPlayer( CTFPlayer *pOther ) {} |
|
|
|
void FadeOut( int iTime ); |
|
void RemoveThink(); |
|
|
|
virtual float GetDamage(); |
|
virtual int GetDamageCustom(); |
|
virtual int GetDamageType(); |
|
|
|
virtual bool IsDeflectable() { return true; } |
|
virtual void Deflected( CBaseEntity *pDeflectedBy, Vector &vecDir ); |
|
|
|
void SetChargedShot( bool bCharged ) { m_bChargedShot = bCharged; } |
|
|
|
virtual void Explode( trace_t *pTrace, CBaseEntity *pOther ); |
|
|
|
void SetColor( int idx, Vector vColor ) { if ( idx==1 ) m_vColor1=vColor; else m_vColor2=vColor; } |
|
const char *GetExplosionParticleName( void ); |
|
|
|
private: |
|
|
|
CBaseHandle m_Scorer; |
|
|
|
CNetworkVar( bool, m_bChargedShot ); |
|
|
|
CNetworkVector( m_vColor1 ); |
|
CNetworkVector( m_vColor2 ); |
|
|
|
protected: |
|
float m_flInitTime; |
|
}; |
|
|
|
#endif //TF_PROJECTILE_ENERGY_BALL_H
|