bool CTeamplayRules::FPlayerCanTakeDamage( CBasePlayer *pPlayer, CBaseEntity *pAttacker, const CTakeDamageInfo &info )
{
    if ( pAttacker && PlayerRelationship( pPlayer, pAttacker ) == GR_TEAMMATE && !info.IsForceFriendlyFire() )
    {
        // my teammate hit me.
        if ( (friendlyfire.GetInt() == 0) && (pAttacker != pPlayer) )
        {
            // friendly fire is off, and this hit came from someone other than myself,  then don't get hurt
            return false;
        }
    }

    return BaseClass::FPlayerCanTakeDamage( pPlayer, pAttacker, info );
}