List of skin colors

From SRB2 Wiki
(Redirected from Skin color)
Jump to: navigation, search

Skin colors are translation maps that replace a specified range of palette colors used in sprites with other colors. They are most commonly used by players to change the colors of the character skin they are currently using, typically recoloring the character's main body color; in multiplayer gametypes players are usually able to freely change their skin color, while in Single Player all characters have a default skin color that cannot be changed. However, other types of Objects in SRB2 make use of skin colors too – e.g.: emblems in vanilla SRB2 use skin colors to help identify what type of emblem they are, and CTF Team Rings are rings recolored using skin colors to match the color of the team that can collect them.

By default, the range of colors that will be changed by skin colors is the green range (palette colors 160-175). For most types of Objects this is hardcoded, and cannot be altered by any means. For players however, the startcolor parameter in a character's S_SKIN allows for some flexibility; the range of colors to swap will always be 16 colors directly next to each other in the palette, but startcolor allows the starting color of this range to be modified. The rest of the colors will follow after the color set by startcolor, the final color of the range being 15 colors after it. Through startcolor this range can in fact also cross over multiple ranges of colors in the palette, though this is generally not desirable in practice. This trait works only if the player is currently using the SPR_PLAY sprite set - changing to any other sprite set will reset the changeable color range to the default green range. Note that this also applies to the icons for the Level End Sign and Extra Life Monitor.

The actions A_ChangeColorAbsolute and A_ChangeColorRelative can be used to change the skin color of an Object for SOCs; for Lua, mobj.color (or player.mo.color) is the current skin color value set for an Object. For players, player.skincolor is the player's selected "normal" skin color in multiplayer (or the default color, in Single Player); the player may change to other colors when they have turned super or have special power-ups such as the Fire Flower power-up or invincibility in Mario mode levels, but this value acts as the fallback skin color to use when they are no longer super or don't have the listed power-ups anymore.

Normal skin colors

The table below lists the available skin color choices available to players and other objects, listing both the named constants for use in SOC/Lua (listed in the "Internal name" column) and the name strings for use with the color console variable or prefcolor in a character's S_SKIN (listed in the "Name" column). The columns "#1" to "#16" denote the range of colors to replace each of the 16 colors from the palette to be swapped in-game. Note that many of the colors overlap several columns, to show that they are shared.

Value Internal name String name #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16
0 SKINCOLOR_NONE1 None None
1 SKINCOLOR_WHITE White 0 1 2 3 4 5 6 7
2 SKINCOLOR_SILVER Silver 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
3 SKINCOLOR_GREY Grey 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
4 SKINCOLOR_BLACK Black 24 25 26 27 28 29 30 31
5 SKINCOLOR_CYAN Cyan 208 209 210 211 212 213 214 215 216 217 218 219
6 SKINCOLOR_TEAL Teal 247 220 221 222 223
7 SKINCOLOR_STEELBLUE Steel_Blue 200 201 202 203 204 205 206 207
8 SKINCOLOR_BLUE Blue 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
9 SKINCOLOR_PEACH Peach 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
10 SKINCOLOR_TAN Tan 72 73 74 75 76 77 78 79 48 49 50 51 52 53 54 55
11 SKINCOLOR_PINK Pink 144 145 146 147 148 149 150 151
12 SKINCOLOR_LAVENDER Lavender 248 249 250 251 252 253 254 255
13 SKINCOLOR_PURPLE Purple 192 193 194 195 196 197 198 199
14 SKINCOLOR_ORANGE Orange 82 83 84 85 86 87 88 89 90 91 92 93 94 95 152 153
15 SKINCOLOR_ROSEWOOD Rosewood 92 93 94 95 152 153 154 155 156 157 158 159
16 SKINCOLOR_BEIGE Beige 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
17 SKINCOLOR_BROWN Brown 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
18 SKINCOLOR_RED Red 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
19 SKINCOLOR_DARKRED Dark_Red 133 134 135 136 137 138 139 140
20 SKINCOLOR_NEONGREEN Neon_Green 160 184 185 186 187 188 189
21 SKINCOLOR_GREEN Green 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
22 SKINCOLOR_ZIM Zim 176 177 178 179 180 181 182 183
23 SKINCOLOR_OLIVE Olive 105 106 107 108 109 110 111
24 SKINCOLOR_YELLOW Yellow 103 104 105 106 107 108 109 110
25 SKINCOLOR_GOLD Gold 112 113 114 115 116 117 118 119
26 MAXSKINCOLORS 2

1 SKINCOLOR_NONE/"None" was a former skin color choice for players in older versions of SRB2, but is now not available for multiplayer, and is not recommended for usage with prefcolor in a character's S_SKIN. For all other objects, it is the default skin color set when an object is first spawned on the map, as most objects do not use skin colors.

2 MAXSKINCOLORS represents the total number of normal skin colors available, though this includes the "None" color choice.

Super skin colors

Following the normal skin colors above, these special skin colors are reserved for super forms – the default super yellow, Tails' super orange, and Knuckles' super pink/red. The flashing seen in-game for all three super colors is simluated by cycling continuously through a set of 5 different skincolors ranging from bright to dark. None of these colors are intended for use in-game by anything except super players, though if these colors are given to a player or other object otherwise the flashing does not occur automatically.

In the table below, the columns "#1" to "#16" have the same meaning as with the table for normal skin colors above. "Used by" refers to which vanilla SRB2 character's super form uses each group of skin colors; they are not string names to be used in-game for the color console variable nor prefcolor in the S_SKIN.

Value Internal name Used by #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16
26 SKINCOLOR_SUPER1 Super Sonic (Default) 120 96 97 98 99 100 101
27 SKINCOLOR_SUPER2 96 97 98 99 100 112 101 102 103 104 113 114
28 SKINCOLOR_SUPER3 98 99 100 112 101 102 103 104 113 114 115 116
29 SKINCOLOR_SUPER4 112 101 102 103 104 113 114 115 116 117 118 119
30 SKINCOLOR_SUPER5 101 102 103 104 113 114 115 116 117 118 119 155
31 SKINCOLOR_TSUPER1 Super Tails 120 80 81 82 83 84 85
32 SKINCOLOR_TSUPER2 120 80 81 82 83 84 85
33 SKINCOLOR_TSUPER4 120 80 81 82 83 84 85 86
34 SKINCOLOR_TSUPER5 120 80 81 82 83 84 85 86 87 115 116 117 118 119
35 SKINCOLOR_TSUPER5 80 81 82 83 84 85 86 87 115 116 117 118 119
36 SKINCOLOR_KSUPER1 Super Knuckles 120 121 122 123
37 SKINCOLOR_KSUPER2 120 121 122 123 124 125
38 SKINCOLOR_KSUPER3 120 121 122 123 124 125 126 127
39 SKINCOLOR_KSUPER4 121 122 123 124 125 126 127 128
40 SKINCOLOR_KSUPER5 122 123 124 125 126 127 128 129
41 MAXTRANSLATIONS 1

1 MAXTRANSLATIONS represents the total number of skin color translations available to use in SRB2, including both normal skin colors and super skin colors.

Skin color opposites

Certain skin colors of the normal range have a corresponding "opposite" skin color. These are used to modify the Level End Sign's background color in particular; depending on the player's current skin color, the End Sign's background will change its color to the corresponding "opposite" skin color if one exists. However, as the End Sign's background is a single shade rather than multiple, the End Sign also has to modify the sprite frame used for the background since a single shared shade does not work in practice across all skin colors – to get around this, it has 16 different frames (H-W) to choose from for the 16 different shades, one of which is determined for each opposite skin color. These frames for the End Sign actually run in increasing order of brightness; H is the darkest shade, and W is the lightest shade. Most skin colors currently do not have an "opposite" skin color set.

Handling of opposite skin colors and their appropriate shade for the End Sign is done by A_SignPlayer. Note that the frame number is actually increased by an amount rather than simply being modified. The table below lists the respective opposite skin colors for each skin color, along with the amount added to the frame number and the resulting frame character and color shade used by the End Sign itself (frame = H + frame increment; shade = #16 - frame increment; 0 = H = #16, 1 = I = #15, 2 = J = #14, etc):

Skin color Opposite color Frame increment End sign frame End sign shade
SKINCOLOR_WHITE SKINCOLOR_BLACK 10 R #6 (26)
SKINCOLOR_SILVER SKINCOLOR_GREY 4 L #12 (19)
SKINCOLOR_GREY SKINCOLOR_SILVER 12 T #4 (6)
SKINCOLOR_BLACK SKINCOLOR_WHITE 8 P #8 (3)
SKINCOLOR_BLUE SKINCOLOR_ORANGE 9 Q #7 (88)
SKINCOLOR_ORANGE SKINCOLOR_BLUE 12 T #4 (229)
SKINCOLOR_RED SKINCOLOR_GREEN 5 M #11 (170)
SKINCOLOR_GREEN SKINCOLOR_RED 11 S #5 (129)
SKINCOLOR_ZIM SKINCOLOR_PURPLE 3 K #13 (198)

Outside of A_SignPlayer, another way to access these opposite skin colors is through the special Lua function ColorOpposite. This function returns both the opposite skin color's number and the frame increment value for use with the End Sign.