rendered paste bodyclass CTakeDamageInfo
{
public:
CTakeDamageInfo();
virtual ~CTakeDamageInfo();
CTakeDamageInfo( CBaseEntity *pInflictor, CBaseEntity *pAttacker, float flDamage, int bitsDamageType, int iKillType = 0 );
// Inflictor is the weapon or rocket (or player) that is dealing the damage.
CBaseEntity* GetInflictor() const;
void SetInflictor( CBaseEntity *pInflictor );
// Attacker is the character who originated the attack (like a player or an AI).
CBaseEntity* GetAttacker() const;
void SetAttacker( CBaseEntity *pAttacker );
float GetDamage() const;
void SetDamage( float flDamage );
float GetMaxDamage() const;
void SetMaxDamage( float flMaxDamage );
void ScaleDamage( float flScaleAmount );
void AddDamage( float flAddAmount );
void SubtractDamage( float flSubtractAmount );
float GetBaseDamage() const;
bool BaseDamageIsValid() const;
Vector GetDamageForce() const;
void SetDamageForce( const Vector &damageForce );
void ScaleDamageForce( float flScaleAmount );
Vector GetDamagePosition() const;
void SetDamagePosition( const Vector &damagePosition );
Vector GetReportedPosition() const;
void SetReportedPosition( const Vector &reportedPosition );
int GetDamageType() const;
void SetDamageType( int bitsDamageType );
void AddDamageType( int bitsDamageType );
int GetCustomKill() const;
void SetCustomKill( int iKillType );
int GetAmmoType() const;
void SetAmmoType( int iAmmoType );
void Set( CBaseEntity *pInflictor, CBaseEntity *pAttacker, float flDamage, int bitsDamageType, int iKillType = 0 );
void AdjustPlayerDamageInflictedForSkillLevel();
void AdjustPlayerDamageTakenForSkillLevel();
private:
void CopyDamageToBaseDamage();
protected:
void Init( CBaseEntity *pInflictor, CBaseEntity *pAttacker, const Vector &damageForce, const Vector &damagePosition, const Vector &reportedPosition, float flDamage, int bitsDamageType, int iKillType );
Vector m_vecDamageForce;
Vector m_vecDamagePosition;
Vector m_vecReportedPosition; // Position players are told damage is coming from
EHANDLE m_hInflictor;
EHANDLE m_hAttacker;
float m_flDamage;
float m_flMaxDamage;
float m_flBaseDamage; // The damage amount before skill leve adjustments are made. Used to get uniform damage forces.
int m_bitsDamageType;
int m_iCustomKillType;
int m_iAmmoType; // AmmoType of the weapon used to cause this damage, if any
};
void CTakeDamageInfo::Init( CBaseEntity *pInflictor, CBaseEntity *pAttacker, const Vector &damageForce, const Vector &damagePosition, const Vector &reportedPosition, float flDamage, int bitsDamageType, int iKillType )
{
m_hInflictor = pInflictor;
if ( pAttacker )
{
m_hAttacker = pAttacker;
}
else
{
m_hAttacker = pInflictor;
}
m_flDamage = flDamage;
m_flBaseDamage = FLT_MAX;
m_bitsDamageType = bitsDamageType;
m_iCustomKillType = iKillType;
m_flMaxDamage = flDamage;
m_vecDamageForce = damageForce;
m_vecDamagePosition = damagePosition;
m_vecReportedPosition = reportedPosition;
m_iAmmoType = -1;
}
CTakeDamageInfo::CTakeDamageInfo()
{
Init( NULL, NULL, vec3_origin, vec3_origin, vec3_origin, 0, 0, 0 );
}
CTakeDamageInfo::~CTakeDamageInfo(){}
CTakeDamageInfo::CTakeDamageInfo( CBaseEntity *pInflictor, CBaseEntity *pAttacker, float flDamage, int bitsDamageType, int iKillType )
{
Init( pInflictor, pAttacker, vec3_origin, vec3_origin, vec3_origin, flDamage, bitsDamageType, iKillType );
}