changed tattoos to markings. Closes #1131

This commit is contained in:
oy 2014-06-22 12:53:22 +02:00
parent 456a1963be
commit 5eee57f1e7
38 changed files with 52 additions and 52 deletions

View file

@ -6,7 +6,7 @@
"sat": 118,
"lgt": 184
},
"tattoo": {
"marking": {
"filename": "whisker",
"custom_colors": "true",
"hue": 130,

View file

@ -6,7 +6,7 @@
"sat": 116,
"lgt": 122
},
"tattoo": {
"marking": {
"filename": "stripes",
"custom_colors": "false"
},

View file

@ -6,7 +6,7 @@
"sat": 133,
"lgt": 121
},
"tattoo": {
"marking": {
"filename": "bear",
"custom_colors": "true",
"hue": 17,

View file

@ -6,7 +6,7 @@
"sat": 101,
"lgt": 70
},
"tattoo": {
"marking": {
"filename": "cammo2",
"custom_colors": "true",
"hue": 76,

View file

@ -6,7 +6,7 @@
"sat": 101,
"lgt": 70
},
"tattoo": {
"marking": {
"filename": "cammostripes",
"custom_colors": "true",
"hue": 29,

View file

@ -6,7 +6,7 @@
"sat": 0,
"lgt": 184
},
"tattoo": {
"marking": {
"filename": "bear",
"custom_colors": "true",
"hue": 21,

View file

@ -6,7 +6,7 @@
"sat": 98,
"lgt": 195
},
"tattoo": {
"marking": {
"filename": "whisker",
"custom_colors": "true",
"hue": 69,

View file

Before

Width:  |  Height:  |  Size: 725 B

After

Width:  |  Height:  |  Size: 725 B

View file

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 638 B

After

Width:  |  Height:  |  Size: 638 B

View file

Before

Width:  |  Height:  |  Size: 838 B

After

Width:  |  Height:  |  Size: 838 B

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

Before

Width:  |  Height:  |  Size: 867 B

After

Width:  |  Height:  |  Size: 867 B

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 664 B

After

Width:  |  Height:  |  Size: 664 B

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

Before

Width:  |  Height:  |  Size: 687 B

After

Width:  |  Height:  |  Size: 687 B

View file

@ -6,7 +6,7 @@
"sat": 201,
"lgt": 187
},
"tattoo": {
"marking": {
"filename": "whisker",
"custom_colors": "true",
"hue": 243,

View file

@ -6,7 +6,7 @@
"sat": 216,
"lgt": 108
},
"tattoo": {
"marking": {
"filename": "donny",
"custom_colors": "true",
"hue": 2,

View file

@ -6,7 +6,7 @@
"sat": 214,
"lgt": 123
},
"tattoo": {
"marking": {
"filename": "stripe",
"custom_colors": "false"
},

View file

@ -6,7 +6,7 @@
"sat": 109,
"lgt": 127
},
"tattoo": {
"marking": {
"filename": "saddo",
"custom_colors": "true",
"hue": 108,

View file

@ -6,7 +6,7 @@
"sat": 95,
"lgt": 163
},
"tattoo": {
"marking": {
"filename": "toptri",
"custom_colors": "false"
},

View file

@ -6,7 +6,7 @@
"sat": 158,
"lgt": 183
},
"tattoo": {
"marking": {
"filename": "duodonny",
"custom_colors": "true",
"hue": 231,

View file

@ -6,7 +6,7 @@
"sat": 156,
"lgt": 124
},
"tattoo": {
"marking": {
"filename": "twintri",
"custom_colors": "true",
"hue": 40,

View file

@ -6,7 +6,7 @@
"sat": 173,
"lgt": 87
},
"tattoo": {
"marking": {
"filename": "warpaint",
"custom_colors": "false"
},

View file

@ -6,7 +6,7 @@
"sat": 0,
"lgt": 0
},
"tattoo": {
"marking": {
"filename": "uppy",
"custom_colors": "true",
"hue": 0,

View file

@ -265,7 +265,7 @@ container.pickups.Add(Pickup("ninja", 90, 90))
set_particles = SpriteSet("particles", image_particles, 8, 8)
set_game = SpriteSet("game", image_game, 32, 16)
set_tee_body = SpriteSet("tee_body", image_null, 2, 2)
set_tee_tattoos = SpriteSet("tee_tattoos", image_null, 1, 1)
set_tee_markings = SpriteSet("tee_markings", image_null, 1, 1)
set_tee_decoration = SpriteSet("tee_decoration", image_null, 2, 1)
set_tee_hands = SpriteSet("tee_hands", image_null, 2, 1)
set_tee_feet = SpriteSet("tee_feet", image_null, 2, 1)
@ -283,7 +283,7 @@ set_infoicons = SpriteSet("infoicons", image_infoicons, 1, 2)
container.spritesets.Add(set_particles)
container.spritesets.Add(set_game)
container.spritesets.Add(set_tee_body)
container.spritesets.Add(set_tee_tattoos)
container.spritesets.Add(set_tee_markings)
container.spritesets.Add(set_tee_decoration)
container.spritesets.Add(set_tee_hands)
container.spritesets.Add(set_tee_feet)
@ -381,7 +381,7 @@ container.sprites.Add(Sprite("tee_body", set_tee_body, 1,0,1,1))
container.sprites.Add(Sprite("tee_body_shadow", set_tee_body, 0,1,1,1))
container.sprites.Add(Sprite("tee_body_upper_outline", set_tee_body, 1,1,1,1))
container.sprites.Add(Sprite("tee_tattoo", set_tee_tattoos, 0,0,1,1))
container.sprites.Add(Sprite("tee_marking", set_tee_markings, 0,0,1,1))
container.sprites.Add(Sprite("tee_decoration", set_tee_decoration, 0,0,1,1))
container.sprites.Add(Sprite("tee_decoration_outline", set_tee_decoration, 1,0,1,1))

View file

@ -111,7 +111,7 @@ void CMenus::SaveSkinfile()
str_format(aBuf, sizeof(aBuf), ",\n\t\t\"%s\": %d", CSkins::ms_apColorComponents[c], Val);
io_write(File, aBuf, str_length(aBuf));
}
if(PartIndex == CSkins::SKINPART_TATTOO)
if(PartIndex == CSkins::SKINPART_MARKING)
{
int Val = (*CSkins::ms_apColorVariables[PartIndex] >> 24) & 0xff;
str_format(aBuf, sizeof(aBuf), ",\n\t\t\"%s\": %d", CSkins::ms_apColorComponents[3], Val);
@ -164,7 +164,7 @@ void CMenus::RenderHSLPicker(CUIRect MainView)
MainView.HSplitTop(Spacing, 0, &MainView);
bool Modified = false;
bool UseAlpha = m_TeePartSelected == CSkins::SKINPART_TATTOO;
bool UseAlpha = m_TeePartSelected == CSkins::SKINPART_MARKING;
int Color = *CSkins::ms_apColorVariables[m_TeePartSelected];
int Hue, Sat, Lgt, Alp;
@ -389,7 +389,7 @@ void CMenus::RenderHSLPicker(CUIRect MainView)
*CSkins::ms_apColorVariables[p] = NewVal;
}
if(UseAlpha)
g_Config.m_PlayerColorTattoo = (Alp << 24) + NewVal;
g_Config.m_PlayerColorMarking = (Alp << 24) + NewVal;
}
}
@ -435,7 +435,7 @@ void CMenus::RenderSkinSelection(CUIRect MainView)
if(s->m_aUseCustomColors[p])
{
Info.m_aTextures[p] = s->m_apParts[p]->m_ColorTexture;
Info.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(s->m_aPartColors[p], p==CSkins::SKINPART_TATTOO);
Info.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(s->m_aPartColors[p], p==CSkins::SKINPART_MARKING);
}
else
{
@ -515,7 +515,7 @@ void CMenus::RenderSkinPartSelection(CUIRect MainView)
Info.m_aTextures[j] = s->m_ColorTexture;
else
Info.m_aTextures[j] = pSkinPart->m_ColorTexture;
Info.m_aColors[j] = m_pClient->m_pSkins->GetColorV4(*CSkins::ms_apColorVariables[j], j==CSkins::SKINPART_TATTOO);
Info.m_aColors[j] = m_pClient->m_pSkins->GetColorV4(*CSkins::ms_apColorVariables[j], j==CSkins::SKINPART_MARKING);
}
else
{
@ -1020,7 +1020,7 @@ void CMenus::RenderSettingsTee(CUIRect MainView)
if(*CSkins::ms_apUCCVariables[p])
{
OwnSkinInfo.m_aTextures[p] = pSkinPart->m_ColorTexture;
OwnSkinInfo.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(*CSkins::ms_apColorVariables[p], p==CSkins::SKINPART_TATTOO);
OwnSkinInfo.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(*CSkins::ms_apColorVariables[p], p==CSkins::SKINPART_MARKING);
}
else
{
@ -1046,7 +1046,7 @@ void CMenus::RenderSettingsTee(CUIRect MainView)
for(int p = 0; p < CSkins::NUM_SKINPARTS; p++)
{
int TeamColor = m_pClient->m_pSkins->GetTeamColor(*CSkins::ms_apUCCVariables[p], *CSkins::ms_apColorVariables[p], TEAM_RED, p);
OwnSkinInfo.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(TeamColor, p==CSkins::SKINPART_TATTOO);
OwnSkinInfo.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(TeamColor, p==CSkins::SKINPART_MARKING);
}
RenderTools()->RenderTee(CAnimState::GetIdle(), &OwnSkinInfo, 0, vec2(1, 0), vec2(Left.x+Left.w/2.0f, Left.y+Left.h/2.0f+2.0f));
@ -1055,7 +1055,7 @@ void CMenus::RenderSettingsTee(CUIRect MainView)
for(int p = 0; p < CSkins::NUM_SKINPARTS; p++)
{
int TeamColor = m_pClient->m_pSkins->GetTeamColor(*CSkins::ms_apUCCVariables[p], *CSkins::ms_apColorVariables[p], TEAM_BLUE, p);
OwnSkinInfo.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(TeamColor, p==CSkins::SKINPART_TATTOO);
OwnSkinInfo.m_aColors[p] = m_pClient->m_pSkins->GetColorV4(TeamColor, p==CSkins::SKINPART_MARKING);
}
RenderTools()->RenderTee(CAnimState::GetIdle(), &OwnSkinInfo, 0, vec2(1, 0), vec2(Right.x+Right.w/2.0f, Right.y+Right.h/2.0f+2.0f));
}

View file

@ -542,12 +542,12 @@ void CPlayers::OnRender()
{
m_aRenderInfo[i].m_aTextures[p] = pNinja->m_apParts[p]->m_ColorTexture;
int ColorVal = m_pClient->m_pSkins->GetTeamColor(true, pNinja->m_aPartColors[p], m_pClient->m_aClients[i].m_Team, p);
m_aRenderInfo[i].m_aColors[p] = m_pClient->m_pSkins->GetColorV4(ColorVal, p==CSkins::SKINPART_TATTOO);
m_aRenderInfo[i].m_aColors[p] = m_pClient->m_pSkins->GetColorV4(ColorVal, p==CSkins::SKINPART_MARKING);
}
else if(pNinja->m_aUseCustomColors[p])
{
m_aRenderInfo[i].m_aTextures[p] = pNinja->m_apParts[p]->m_ColorTexture;
m_aRenderInfo[i].m_aColors[p] = m_pClient->m_pSkins->GetColorV4(pNinja->m_aPartColors[p], p==CSkins::SKINPART_TATTOO);
m_aRenderInfo[i].m_aColors[p] = m_pClient->m_pSkins->GetColorV4(pNinja->m_aPartColors[p], p==CSkins::SKINPART_MARKING);
}
else
{

View file

@ -13,14 +13,14 @@
#include "skins.h"
const char * const CSkins::ms_apSkinPartNames[NUM_SKINPARTS] = {"body", "tattoo", "decoration", "hands", "feet", "eyes"}; /* Localize("body");Localize("tattoo");Localize("decoration");Localize("hands");Localize("feet");Localize("eyes"); */
const char * const CSkins::ms_apSkinPartNames[NUM_SKINPARTS] = {"body", "marking", "decoration", "hands", "feet", "eyes"}; /* Localize("body");Localize("marking");Localize("decoration");Localize("hands");Localize("feet");Localize("eyes"); */
const char * const CSkins::ms_apColorComponents[NUM_COLOR_COMPONENTS] = {"hue", "sat", "lgt", "alp"};
char *const CSkins::ms_apSkinVariables[NUM_SKINPARTS] = {g_Config.m_PlayerSkinBody, g_Config.m_PlayerSkinTattoo, g_Config.m_PlayerSkinDecoration,
char *const CSkins::ms_apSkinVariables[NUM_SKINPARTS] = {g_Config.m_PlayerSkinBody, g_Config.m_PlayerSkinMarking, g_Config.m_PlayerSkinDecoration,
g_Config.m_PlayerSkinHands, g_Config.m_PlayerSkinFeet, g_Config.m_PlayerSkinEyes};
int *const CSkins::ms_apUCCVariables[NUM_SKINPARTS] = {&g_Config.m_PlayerUseCustomColorBody, &g_Config.m_PlayerUseCustomColorTattoo, &g_Config.m_PlayerUseCustomColorDecoration,
int *const CSkins::ms_apUCCVariables[NUM_SKINPARTS] = {&g_Config.m_PlayerUseCustomColorBody, &g_Config.m_PlayerUseCustomColorMarking, &g_Config.m_PlayerUseCustomColorDecoration,
&g_Config.m_PlayerUseCustomColorHands, &g_Config.m_PlayerUseCustomColorFeet, &g_Config.m_PlayerUseCustomColorEyes};
int *const CSkins::ms_apColorVariables[NUM_SKINPARTS] = {&g_Config.m_PlayerColorBody, &g_Config.m_PlayerColorTattoo, &g_Config.m_PlayerColorDecoration,
int *const CSkins::ms_apColorVariables[NUM_SKINPARTS] = {&g_Config.m_PlayerColorBody, &g_Config.m_PlayerColorMarking, &g_Config.m_PlayerColorDecoration,
&g_Config.m_PlayerColorHands, &g_Config.m_PlayerColorFeet, &g_Config.m_PlayerColorEyes};
@ -173,7 +173,7 @@ int CSkins::SkinScan(const char *pName, int IsDir, int DirType, void *pUser)
for(int i = 0; i < NUM_COLOR_COMPONENTS; i++)
{
if(PartIndex != SKINPART_TATTOO && i == 3)
if(PartIndex != SKINPART_MARKING && i == 3)
continue;
const json_value &rComponent = rPart[(const char *)ms_apColorComponents[i]];
@ -218,7 +218,7 @@ void CSkins::OnInit()
m_aaSkinParts[p].clear();
// add none part
if(p == SKINPART_TATTOO || p == SKINPART_DECORATION)
if(p == SKINPART_MARKING || p == SKINPART_DECORATION)
{
CSkinPart NoneSkinPart;
NoneSkinPart.m_Flags = SKINFLAG_STANDARD;
@ -250,14 +250,14 @@ void CSkins::OnInit()
for(int p = 0; p < NUM_SKINPARTS; p++)
{
int Default;
if(p == SKINPART_TATTOO || p == SKINPART_DECORATION)
if(p == SKINPART_MARKING || p == SKINPART_DECORATION)
Default = FindSkinPart(p, "", false);
else
Default = FindSkinPart(p, "standard", false);
if(Default < 0)
Default = 0;
m_DummySkin.m_apParts[p] = GetSkinPart(p, Default);
m_DummySkin.m_aPartColors[p] = p==SKINPART_TATTOO ? (255<<24)+65408 : 65408;
m_DummySkin.m_aPartColors[p] = p==SKINPART_MARKING ? (255<<24)+65408 : 65408;
m_DummySkin.m_aUseCustomColors[p] = 0;
}
@ -351,12 +351,12 @@ int CSkins::GetTeamColor(int UseCustomColors, int PartColor, int Team, int Part)
if(!UseCustomColors)
{
int ColorVal = s_aTeamColors[Team+1];
if(Part == SKINPART_TATTOO)
if(Part == SKINPART_MARKING)
ColorVal |= 0xff000000;
return ColorVal;
}
/*blue128: 128/PI*ARCSIN(COS((PI*(x+10)/128)))+182 // (decoration, tattoo, hands)
/*blue128: 128/PI*ARCSIN(COS((PI*(x+10)/128)))+182 // (decoration, marking, hands)
blue64: 64/PI*ARCSIN(COS((PI*(x-76)/64)))+172 // (body, feet, eyes)
red128: Mod((128/PI*ARCSIN(COS((PI*(x-105)/128)))+297),256)
red64: Mod((64/PI*ARCSIN(COS((PI*(x-56)/64)))+280),256)*/
@ -374,7 +374,7 @@ int CSkins::GetTeamColor(int UseCustomColors, int PartColor, int Team, int Part)
int NewHue;
if(Team == TEAM_RED)
{
if(Part == SKINPART_TATTOO || Part == SKINPART_DECORATION || Part == SKINPART_HANDS)
if(Part == SKINPART_MARKING || Part == SKINPART_DECORATION || Part == SKINPART_HANDS)
NewHue = (int)(128.0f/pi*asinf(cosf(pi/128.0f*(Hue-105.0f))) + 297.0f) % 256;
else
NewHue = (int)(64.0f/pi*asinf(cosf(pi/64.0f*(Hue-56.0f))) + 280.0f) % 256;
@ -386,7 +386,7 @@ int CSkins::GetTeamColor(int UseCustomColors, int PartColor, int Team, int Part)
int NewLgt = clamp(Lgt, MinLgt, MaxLgt);
int ColorVal = (NewHue<<16) + (NewSat<<8) + NewLgt;
if(Part == SKINPART_TATTOO)
if(Part == SKINPART_MARKING)
ColorVal += PartColor&0xff000000;
return ColorVal;

View file

@ -16,7 +16,7 @@ public:
SKINFLAG_STANDARD=1<<1,
SKINPART_BODY=0,
SKINPART_TATTOO,
SKINPART_MARKING,
SKINPART_DECORATION,
SKINPART_HANDS,
SKINPART_FEET,

View file

@ -1326,7 +1326,7 @@ void CGameClient::CClientData::UpdateRenderInfo(CGameClient *pGameClient, bool U
int ID = pGameClient->m_pSkins->FindSkinPart(p, m_aaSkinPartNames[p], false);
if(ID < 0)
{
if(p == CSkins::SKINPART_TATTOO || p == CSkins::SKINPART_DECORATION)
if(p == CSkins::SKINPART_MARKING || p == CSkins::SKINPART_DECORATION)
ID = pGameClient->m_pSkins->FindSkinPart(p, "", false);
else
ID = pGameClient->m_pSkins->FindSkinPart(p, "standard", false);
@ -1343,7 +1343,7 @@ void CGameClient::CClientData::UpdateRenderInfo(CGameClient *pGameClient, bool U
if(m_aUseCustomColors[p])
{
m_SkinInfo.m_aTextures[p] = pSkinPart->m_ColorTexture;
m_SkinInfo.m_aColors[p] = pGameClient->m_pSkins->GetColorV4(m_aSkinPartColors[p], p==CSkins::SKINPART_TATTOO);
m_SkinInfo.m_aColors[p] = pGameClient->m_pSkins->GetColorV4(m_aSkinPartColors[p], p==CSkins::SKINPART_MARKING);
}
else
{
@ -1362,7 +1362,7 @@ void CGameClient::CClientData::UpdateRenderInfo(CGameClient *pGameClient, bool U
{
m_RenderInfo.m_aTextures[p] = pGameClient->m_pSkins->GetSkinPart(p, m_SkinPartIDs[p])->m_ColorTexture;
int ColorVal = pGameClient->m_pSkins->GetTeamColor(m_aUseCustomColors[p], m_aSkinPartColors[p], m_Team, p);
m_RenderInfo.m_aColors[p] = pGameClient->m_pSkins->GetColorV4(ColorVal, p==CSkins::SKINPART_TATTOO);
m_RenderInfo.m_aColors[p] = pGameClient->m_pSkins->GetColorV4(ColorVal, p==CSkins::SKINPART_MARKING);
}
}
}

View file

@ -366,7 +366,7 @@ void CRenderTools::RenderTee(CAnimState *pAnim, CTeeRenderInfo *pInfo, int Emote
Graphics()->QuadsEnd();
}
// draw body (behind tattoo)
// draw body (behind marking)
Graphics()->TextureSet(pInfo->m_aTextures[0]);
Graphics()->QuadsBegin();
Graphics()->QuadsSetRotation(pAnim->GetBody()->m_Angle*pi*2);
@ -384,20 +384,20 @@ void CRenderTools::RenderTee(CAnimState *pAnim, CTeeRenderInfo *pInfo, int Emote
Graphics()->QuadsDraw(&Item, 1);
Graphics()->QuadsEnd();
// draw tattoo
// draw marking
if(pInfo->m_aTextures[1].IsValid() && !OutLine)
{
Graphics()->TextureSet(pInfo->m_aTextures[1]);
Graphics()->QuadsBegin();
Graphics()->QuadsSetRotation(pAnim->GetBody()->m_Angle*pi*2);
Graphics()->SetColor(pInfo->m_aColors[1].r, pInfo->m_aColors[1].g, pInfo->m_aColors[1].b, pInfo->m_aColors[1].a);
SelectSprite(SPRITE_TEE_TATTOO, 0, 0, 0);
SelectSprite(SPRITE_TEE_MARKING, 0, 0, 0);
Item = BodyItem;
Graphics()->QuadsDraw(&Item, 1);
Graphics()->QuadsEnd();
}
// draw body (in front of tattoo)
// draw body (in front of marking)
if(!OutLine)
{
Graphics()->TextureSet(pInfo->m_aTextures[0]);

View file

@ -41,20 +41,20 @@ MACRO_CONFIG_STR(ClFontfile, cl_fontfile, 255, "DejaVuSans.ttf", CFGFLAG_CLIENT|
MACRO_CONFIG_STR(ClLanguagefile, cl_languagefile, 255, "", CFGFLAG_CLIENT|CFGFLAG_SAVE, "What language file to use")
MACRO_CONFIG_INT(PlayerColorBody, player_color_body, 0x1B6F74, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player body color")
MACRO_CONFIG_INT(PlayerColorTattoo, player_color_tattoo, 0xFF0000FF, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player tattoo color")
MACRO_CONFIG_INT(PlayerColorMarking, player_color_marking, 0xFF0000FF, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player marking color")
MACRO_CONFIG_INT(PlayerColorDecoration, player_color_decoration, 0x1B6F74, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player decoration color")
MACRO_CONFIG_INT(PlayerColorHands, player_color_hands, 0x1B759E, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player hands color")
MACRO_CONFIG_INT(PlayerColorFeet, player_color_feet, 0x1C873E, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player feet color")
MACRO_CONFIG_INT(PlayerColorEyes, player_color_eyes, 0x0000FF, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player eyes color")
MACRO_CONFIG_INT(PlayerUseCustomColorBody, player_use_custom_color_body, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for body")
MACRO_CONFIG_INT(PlayerUseCustomColorTattoo, player_use_custom_color_tattoo, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for tattoo")
MACRO_CONFIG_INT(PlayerUseCustomColorMarking, player_use_custom_color_marking, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for marking")
MACRO_CONFIG_INT(PlayerUseCustomColorDecoration, player_use_custom_color_decoration, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for decoration")
MACRO_CONFIG_INT(PlayerUseCustomColorHands, player_use_custom_color_hands, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for hands")
MACRO_CONFIG_INT(PlayerUseCustomColorFeet, player_use_custom_color_feet, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for feet")
MACRO_CONFIG_INT(PlayerUseCustomColorEyes, player_use_custom_color_eyes, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Toggles usage of custom colors for eyes")
MACRO_CONFIG_STR(PlayerSkin, player_skin, 24, "default", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin")
MACRO_CONFIG_STR(PlayerSkinBody, player_skin_body, 24, "standard", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin body")
MACRO_CONFIG_STR(PlayerSkinTattoo, player_skin_tattoo, 24, "", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin tattoo")
MACRO_CONFIG_STR(PlayerSkinMarking, player_skin_marking, 24, "", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin marking")
MACRO_CONFIG_STR(PlayerSkinDecoration, player_skin_decoration, 24, "", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin decoration")
MACRO_CONFIG_STR(PlayerSkinHands, player_skin_hands, 24, "standard", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin hands")
MACRO_CONFIG_STR(PlayerSkinFeet, player_skin_feet, 24, "standard", CFGFLAG_CLIENT|CFGFLAG_SAVE, "Player skin feet")