diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index f22870a8cf8..270457451cb 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -176,44 +176,63 @@ datum/preferences
dat += "Species: Human
"
dat += "Blood Type: [blood_type]
"
- dat += "Skin Tone:
[skin_tone]
"
dat += "Underwear:
[underwear]
"
dat += "Undershirt:
[undershirt]
"
dat += "Socks:
[socks]
"
dat += "Backpack:
[backbaglist[backbag]]
"
+ if(pref_species.use_skintones)
- dat += "
"
+ dat += " | "
- dat += "Hair Style"
+ dat += "Skin Tone"
- dat += "[hair_style] "
- dat += "< > "
- dat += " Change "
+ dat += "[skin_tone] "
+
+ dat += " | "
+
+ if(HAIR in pref_species.specflags)
+
+ dat += ""
+
+ dat += "Hair Style"
+
+ dat += "[hair_style] "
+ dat += "< > "
+ dat += " Change "
- dat += " | "
+ dat += " | "
- dat += "Facial Hair Style"
+ dat += "Facial Hair Style"
- dat += "[facial_hair_style] "
- dat += "< > "
- dat += " Change "
+ dat += "[facial_hair_style] "
+ dat += "< > "
+ dat += " Change "
+ dat += " | "
- dat += ""
+ if(EYECOLOR in pref_species.specflags)
- dat += "Eye Color"
+ dat += " | "
- dat += " Change "
+ dat += "Eye Color"
- dat += " | "
+ dat += " Change "
- dat += "Alien Color" // even if choosing your mutantrace is off, this is here in case you gain one during a round
+ dat += " | "
- dat += " Change
"
+ if(MUTCOLORS in pref_species.specflags)
- dat += ""
+ dat += ""
+
+ dat += "Alien Color"
+
+ dat += " Change "
+
+ dat += " | "
+
+ dat += ""
if (1) // Game Preferences
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 08029e1a5f5..b18e0b21888 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -65,6 +65,20 @@
facial_s.Blend("#[facial_hair_color]", ICON_MULTIPLY)
eyes_s.Blend(facial_s, ICON_OVERLAY)
+ var/list/relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)
+ var/icon_state_string = "[pref_species.id]_"
+
+ if(pref_species.sexes)
+ icon_state_string += "[g]_s"
+ else
+ icon_state_string += "_s"
+
+ for(var/layer in relevent_layers)
+ for(var/bodypart in pref_species.mutant_bodyparts)
+ var/icon/part = new/icon("icon" = 'icons/mob/mutant_bodyparts.dmi', "icon_state" = "[icon_state_string]_[bodypart]_[layer]")
+ part.Blend("#[mutant_color]", ICON_MULTIPLY)
+ preview_icon.Blend(part, ICON_OVERLAY)
+
var/icon/clothes_s = null
if(job_civilian_low & ASSISTANT)//This gives the preview icon clothes depending on which job(if any) is set to 'high'
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")