if(MUTATOR_CALLHOOK(ForcePlayercolors_Skip, this, islocalplayer))
goto skipforcecolors;
+ bool forceplayercolors_enabled = false;
+ #define fpc autocvar_cl_forceplayercolors
+ if (gametype.m_1v1)
+ {
+ if ((myteam != NUM_SPECTATOR) && (fpc == 1 || fpc == 2 || fpc == 3 || fpc == 5))
+ forceplayercolors_enabled = true;
+ }
+ else if (teamplay)
+ {
+ if ((team_count == 2) && (myteam != NUM_SPECTATOR) && (fpc == 2 || fpc == 4 || fpc == 5))
+ forceplayercolors_enabled = true;
+ }
+ else
+ {
+ if (fpc == 1 || fpc == 2)
+ forceplayercolors_enabled = true;
+ }
+
// forceplayercolors too
if(teamplay)
{
// own team's color is never forced
- int forcecolor_friend = 0;
- int forcecolor_enemy = 0;
+ int forcecolor_friend = 0, forcecolor_enemy = 0;
entity tm;
if(autocvar_cl_forcemyplayercolors)
forcecolor_friend = 1024 + autocvar_cl_forcemyplayercolors;
- if((autocvar_cl_forceplayercolors == 2 && team_count == 2)
- || (autocvar_cl_forceplayercolors == 3 && IS_GAMETYPE(DUEL)))
+
+ if(forceplayercolors_enabled)
forcecolor_enemy = 1024 + autocvar__cl_color;
if(forcecolor_enemy && !forcecolor_friend)
this.colormap = forcecolor_enemy;
}
}
- else
+ else // if(!teamplay)
{
if(autocvar_cl_forcemyplayercolors && islocalplayer)
this.colormap = 1024 + autocvar_cl_forcemyplayercolors;
- else if(autocvar_cl_forceplayercolors)
+ else if (autocvar_cl_forceuniqueplayercolors && !islocalplayer && !gametype.m_1v1)
+ {
+ // Assign each enemy unique colors
+ // pick colors from 0 to 14 since 15 is the rainbow color
+ // pl01 0 1, pl02 1 2, ..., pl14 13 14, pl15 14 0
+ // pl16 0 2, pl17 1 3, ..., pl29 13 0, pl30 14 1
+ int num = this.entnum - 1;
+ int c1 = num % 15;
+ int q = floor(num / 15);
+ int c2 = (c1 + 1 + q) % 15;
+ this.colormap = 1024 + (c1 << 4) + c2;
+ }
+ else if(forceplayercolors_enabled)
this.colormap = player_localnum + 1;
}
// GLOWMOD AND DEATH FADING
if(this.colormap > 0)
- this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true) * 2;
+ this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true);
else
this.glowmod = '1 1 1';
}
}
+ // don't let the engine increase player's glowmod
+ if (autocvar_r_hdr_glowintensity > 1)
+ this.glowmod /= autocvar_r_hdr_glowintensity;
+
//printf("CSQCPlayer_ModelAppearance_Apply(): state = %s, colormap = %f, glowmod = %s\n", (this.csqcmodel_isdead ? "DEAD" : "ALIVE"), this.colormap, vtos(this.glowmod));
}