[code-snippet]bloodsight


(nUllSkillZ) #1

Hi,

some code that affects the sight of a player due to the percentage of damage the player has received.

Note:
Due to my lack of texture processing I’ve altered textures/shaders that have been created by Splashdamage.

Changes:

  1. [li]src/cgame/cg_local.h (line 1261)
    [/li]
    ... 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 ***** ...

    [li]src/cgame/cg_main.c (line 1310)
    [/li]
    ... 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 ***** ...

    [li]src/cgame/cg_draw.c (line 1568)
    [/li]
    ```


    // ****** BLOODSIGHT START *****
    /*
    ==============
    CG_DrawBinocReticleBlood
    ==============
  2. /
    // 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 *****


    [li]src/cgame/cg_draw.c (line 4323) [/li]


    if( cg.snap->ps.stats[STAT_HEALTH] > 0 )
    {
    // ***** BLOODSIGHT START *****
    CG_DrawBinocReticleBlood();
    // ***** BLOODSIGHT END *****
    CG_DrawPlayerStatusHead();
    CG_DrawPlayerStatus();
    CG_DrawPlayerStats();
    }


    ```

Download (only media and altered source code files):
http://www.nullskillz.de/et/mods/bloodsight/bloodsight.zip

Please report errors.
And feel free to make suggestions.

Screenshots:


(Jaquboss) #2

This should be more interesting only with health change , but it´s nice like this too…
Nice effect , thanks for posting good idea with source too…