+ if (skinframe->base || skinframe->pants || skinframe->shirt || skinframe->glow || skinframe->merged)
+ {
+ if (currentrenderentity->colormap >= 0 && (skinframe->base || skinframe->pants || skinframe->shirt))
+ {
+ int c;
+ qbyte *color;
+ if (skinframe->base)
+ R_DrawModelMesh(skinframe->base, aliasvertcolor, 0, 0, 0);
+ if (skinframe->pants)
+ {
+ c = (currentrenderentity->colormap & 0xF) << 4;c += (c >= 128 && c < 224) ? 4 : 12; // 128-224 are backwards ranges
+ color = (qbyte *) (&d_8to24table[c]);
+ if (c >= 224) // fullbright ranges
+ R_DrawModelMesh(skinframe->pants, NULL, color[0] * (1.0f / 255.0f), color[1] * (1.0f / 255.0f), color[2] * (1.0f / 255.0f));
+ else
+ {
+ R_TintModel(aliasvertcolor, aliasvertcolor2, model->numverts, color[0] * (1.0f / 255.0f), color[1] * (1.0f / 255.0f), color[2] * (1.0f / 255.0f));
+ R_DrawModelMesh(skinframe->pants, aliasvertcolor2, 0, 0, 0);
+ }
+ }
+ if (skinframe->shirt)
+ {
+ c = currentrenderentity->colormap & 0xF0 ;c += (c >= 128 && c < 224) ? 4 : 12; // 128-224 are backwards ranges
+ color = (qbyte *) (&d_8to24table[c]);
+ if (c >= 224) // fullbright ranges
+ R_DrawModelMesh(skinframe->shirt, NULL, color[0] * (1.0f / 255.0f), color[1] * (1.0f / 255.0f), color[2] * (1.0f / 255.0f));
+ else
+ {
+ R_TintModel(aliasvertcolor, aliasvertcolor2, model->numverts, color[0] * (1.0f / 255.0f), color[1] * (1.0f / 255.0f), color[2] * (1.0f / 255.0f));
+ R_DrawModelMesh(skinframe->shirt, aliasvertcolor2, 0, 0, 0);
+ }
+ }
+ }
+ else
+ {
+ if (skinframe->merged)
+ R_DrawModelMesh(skinframe->merged, aliasvertcolor, 0, 0, 0);
+ else
+ {
+ if (skinframe->base) R_DrawModelMesh(skinframe->base, aliasvertcolor, 0, 0, 0);
+ if (skinframe->pants) R_DrawModelMesh(skinframe->pants, aliasvertcolor, 0, 0, 0);
+ if (skinframe->shirt) R_DrawModelMesh(skinframe->shirt, aliasvertcolor, 0, 0, 0);
+ }
+ }
+ if (skinframe->glow) R_DrawModelMesh(skinframe->glow, NULL, 1 - fog, 1 - fog, 1 - fog);
+ }
+ else
+ R_DrawModelMesh(0, NULL, 1 - fog, 1 - fog, 1 - fog);