//----------------------------------------------------------------------------- // Purpose: My player has just died //----------------------------------------------------------------------------- void CPlayerClass::PlayerDied( CBaseEntity *pAttacker ) { if ( pAttacker ) { CBaseTFPlayer *pAttackerPlayer = dynamic_cast< CBaseTFPlayer* >( pAttacker ); if ( pAttackerPlayer ) { CPlayerClass *pAttackerClass = pAttackerPlayer->GetPlayerClass(); if ( pAttackerClass ) { int iStatGroup = GetStatGroupFor( pAttackerPlayer ); g_PlayerClassStats[ iStatGroup ].m_InterClassStats[GetTFClass()].m_nKills++; } } } }
//----------------------------------------------------------------------------- // Purpose: The player has taken damage. Return the damage done. //----------------------------------------------------------------------------- float CPlayerClass::OnTakeDamage( const CTakeDamageInfo &info ) { if ( info.GetAttacker() ) { CBaseTFPlayer *pPlayer = dynamic_cast< CBaseTFPlayer* >( info.GetAttacker() ); if ( pPlayer && pPlayer->GetPlayerClass() ) { int iStatGroup = GetStatGroupFor( pPlayer ); CInterClassStats *pInter = &g_PlayerClassStats[iStatGroup].m_InterClassStats[GetTFClass()]; pInter->m_flTotalDamageInflicted += info.GetDamage(); float flDistToAttacker = pPlayer->GetAbsOrigin().DistTo( GetPlayer()->GetAbsOrigin() ); pInter->m_flTotalEngagementDist += flDistToAttacker; pInter->m_nEngagements++; if ( gpGlobals->curtime >= m_flNormalizedEngagementNextTime ) { pInter->m_flTotalNormalizedEngagementDist += flDistToAttacker; pInter->m_nNormalizedEngagements++; m_flNormalizedEngagementNextTime = gpGlobals->curtime + 3; } // Store detailed stats for the shot? if ( tf_DetailedStats.GetInt() ) { CShotInfo shotInfo; shotInfo.m_flDistance = flDistToAttacker; shotInfo.m_nDamage = (int)info.GetDamage(); g_ClassShotInfos[iStatGroup].AddToTail( shotInfo ); } } } return info.GetDamage(); }