============================================================================================
=                        Wolfenstein: Enemy-Territory Modification                         =
============================================================================================

Filenames:	 pak0.pk3; bloodsight_readme.txt; cg_draw.c
Author:		 nUllSkillZ
Created:	 2004-11-18
E-Mail:		 nUllSkillZ@hotmail.com

============================================================================================

Note:
	This is not an official file.
	Use this file at your own risk.

Note:
	Due to the lack of skillz in texture processing I've altered textures/shaders that have been created by Splashdamage.

Note:
	You have to compile the free available source code to see the effect of the textures.

Thanks to:
	Splash Damage, id Software

Features:
	If player has taken damage it's sight is limited by a "blood border".

Source-code changes (see also the attaced files cg_draw.c / cg_local.h / cg_main.c / search for BLOODSIGHT):
	src/cgame/cg_local.h (line 1261):
		...
		qhandle_t	binocShaderSimple;
		
		// ***** BLOODSIGHT START *****
		qhandle_t	binocblood010ShaderSimple;
		qhandle_t	binocblood020ShaderSimple;
		qhandle_t	binocblood030ShaderSimple;
		qhandle_t	binocblood040ShaderSimple;
		qhandle_t	binocblood050ShaderSimple;
		qhandle_t	binocblood060ShaderSimple;
		qhandle_t	binocblood070ShaderSimple;
		qhandle_t	binocblood080ShaderSimple;
		qhandle_t	binocblood090ShaderSimple;
		// ***** BLOODSIGHT END   *****
		...

	src/cgame/cg_main.c (line 1310):
		...
		cgs.media.binocShaderSimple		= trap_R_RegisterShader( "gfx/misc/binocsimple"	);
		
		// ***** BLOODSIGHT START *****
		cgs.media.binocblood010ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood010" );
		cgs.media.binocblood020ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood020" );
		cgs.media.binocblood030ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood030" );
		cgs.media.binocblood040ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood040" );
		cgs.media.binocblood050ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood050" );
		cgs.media.binocblood060ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood060" );
		cgs.media.binocblood070ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood070" );
		cgs.media.binocblood080ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood080" );
		cgs.media.binocblood090ShaderSimple		= trap_R_RegisterShader( "gfx/binocblood/binocblood090" );
		// ***** BLOODSIGHT END   *****
		...

	src/cgame/cg_draw.c (line 1568):
		...
		// ****** BLOODSIGHT START *****
		/*
		==============
		CG_DrawBinocReticleBlood
		==============
		*/
		// cg_draw.c/CG_DrawBinocReticle
		static void CG_DrawBinocReticleBlood(void)
		{
			float healthfraction; // Funktion: cg_draw.c/CG_DrawPlayerHealthBar
		
			// Funktion: cg_draw.c/CG_DrawPlayerHealthBar
			if( cgs.clientinfo[ cg.snap->ps.clientNum ].cls == PC_MEDIC )
			{
				healthfraction = cg.snap->ps.stats[STAT_HEALTH] / ( (float) cg.snap->ps.stats[STAT_MAX_HEALTH] * 1.12f );
			}
			else
			{
				healthfraction = cg.snap->ps.stats[STAT_HEALTH] / (float) cg.snap->ps.stats[STAT_MAX_HEALTH];
			}
		
			if(healthfraction < 0.1f)
			{
				if(cgs.media.binocblood010ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood010ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.1f && healthfraction < 0.2f)
			{
				if(cgs.media.binocblood020ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood020ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.2f && healthfraction < 0.3f)
			{
				if(cgs.media.binocblood030ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood030ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.3f && healthfraction < 0.4f)
			{
				if(cgs.media.binocblood040ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood040ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.4f && healthfraction < 0.5f)
			{
				if(cgs.media.binocblood050ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood050ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.5f && healthfraction < 0.6f)
			{
				if(cgs.media.binocblood060ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood060ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.6f && healthfraction < 0.7f)
			{
				if(cgs.media.binocblood070ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood070ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.7f && healthfraction < 0.8f)
			{
				if(cgs.media.binocblood080ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood080ShaderSimple );
				}
			}
		
			else if(healthfraction >= 0.8f && healthfraction < 0.9f)
			{
				if(cgs.media.binocblood090ShaderSimple)
				{
					CG_DrawPic( 0, 0, 640, 480, cgs.media.binocblood090ShaderSimple );
				}
			}
		}
		// ****** BLOODSIGHT END   *****
		...

	src/cgame/cg_draw.c (line 4323):
		...
		if( cg.snap->ps.stats[STAT_HEALTH] > 0 )
		{
			// ***** BLOODSIGHT START *****
			CG_DrawBinocReticleBlood();
			// ***** BLOODSIGHT END   *****

			CG_DrawPlayerStatusHead();
			CG_DrawPlayerStatus();
			CG_DrawPlayerStats();
		}
		...


Install Instructions:

	* Unzip bloodsight.zip
	* Place pak0.pk3 in the bloodsight-directory (same height as etmain)
	* Compile a new cgame_mp_x86.dll
	* Start the mod with +set fs_game bloodsight

============================================================================================