diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm
index 089acf56f9..d03348665a 100644
--- a/code/modules/client/preference_setup/general/03_body.dm
+++ b/code/modules/client/preference_setup/general/03_body.dm
@@ -29,6 +29,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
S["organ_data"] >> pref.organ_data
S["rlimb_data"] >> pref.rlimb_data
S["body_markings"] >> pref.body_markings
+ S["synth_color"] >> pref.synth_color
+ S["synth_red"] >> pref.r_synth
+ S["synth_green"] >> pref.g_synth
+ S["synth_blue"] >> pref.b_synth
pref.preview_icon = null
/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S)
@@ -53,6 +57,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
S["organ_data"] << pref.organ_data
S["rlimb_data"] << pref.rlimb_data
S["body_markings"] << pref.body_markings
+ S["synth_color"] << pref.synth_color
+ S["synth_red"] << pref.r_synth
+ S["synth_green"] << pref.g_synth
+ S["synth_blue"] << pref.b_synth
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
if(!pref.species || !(pref.species in playable_species))
@@ -101,6 +109,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
character.h_style = pref.h_style
character.f_style = pref.f_style
character.b_type = pref.b_type
+ character.synth_color = pref.synth_color
+ character.r_synth = pref.r_synth
+ character.g_synth = pref.g_synth
+ character.b_synth = pref.b_synth
// Destroy/cyborgize organs and limbs.
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
@@ -284,6 +296,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
. += ""
. += "
"
+ . += "
"
+ . += "Allow Synth color: [pref.synth_color ? "Yes" : "No"]
"
+ if(pref.synth_color)
+ . += "Change Color "
+
. = jointext(.,null)
/datum/category_item/player_setup_item/general/body/proc/has_flag(var/datum/species/mob_species, var/flag)
@@ -665,6 +682,18 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"])
return TOPIC_REFRESH_UPDATE_PREVIEW
+ else if(href_list["synth_color"])
+ pref.synth_color = !pref.synth_color
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
+ else if(href_list["synth2_color"])
+ var/new_color = input(user, "Choose your character's synth colour: ", "Character Preference", rgb(pref.r_synth, pref.g_synth, pref.b_synth)) as color|null
+ if(new_color && CanUseTopic(user))
+ pref.r_synth = hex2num(copytext(new_color, 2, 4))
+ pref.g_synth = hex2num(copytext(new_color, 4, 6))
+ pref.b_synth = hex2num(copytext(new_color, 6, 8))
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
return ..()
/datum/category_item/player_setup_item/general/body/proc/reset_limbs()
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index d364332018..4709fb3e81 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -51,6 +51,10 @@ datum/preferences
var/list/language_prefixes = list() //Kanguage prefix keys
var/list/gear //Custom/fluff item loadout.
var/list/traits //Traits which modifier characters for better or worse (mostly worse).
+ var/synth_color = 0 //Lets normally uncolorable synth parts be colorable.
+ var/r_synth //Used with synth_color to color synth parts that normaly can't be colored.
+ var/g_synth //Same as above
+ var/b_synth //Same as above
//Some faction information.
var/home_system = "Unset" //System of birth.
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index a4c5efb1fe..a09dad7dba 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -23,6 +23,12 @@
var/g_skin = 0
var/b_skin = 0
+ //Synth colors
+ var/synth_color = 0 //Lets normally uncolorable synth parts be colorable.
+ var/r_synth //Used with synth_color to color synth parts that normaly can't be colored.
+ var/g_synth //Same as above
+ var/b_synth //Same as above
+
var/size_multiplier = 1 //multiplier for the mob's icon size
var/damage_multiplier = 1 //multiplies melee combat damage
var/icon_update = 1 //whether icon updating shall take place
diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm
index 4e381d47ad..48759ae1cf 100644
--- a/code/modules/organs/organ_icon.dm
+++ b/code/modules/organs/organ_icon.dm
@@ -19,6 +19,8 @@ var/global/list/limb_icon_cache = list()
if(robotic >= ORGAN_ROBOT)
var/datum/robolimb/franchise = all_robolimbs[model]
if(!(franchise && franchise.lifelike))
+ if(human.synth_color)
+ s_col = list(human.r_synth, human.g_synth, human.b_synth)
return
if(species && human.species && species.name != human.species.name)
return
diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm
index 55fe50db39..d06ea3332f 100644
--- a/code/modules/organs/robolimbs.dm
+++ b/code/modules/organs/robolimbs.dm
@@ -245,6 +245,20 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
green=xion_green;\
rgb=xion_rgb"
+/datum/robolimb/xion_alt3
+ company = "Xion - Whiteout"
+ desc = "This limb has a minimalist black and white casing."
+ icon = 'icons/mob/human_races/cyberlimbs/xion/xion_alt3.dmi'
+ unavailable_to_build = 1
+
+/datum/robolimb/xion_alt4
+ company = "Xion - Breach - Whiteout"
+ desc = "This limb has a minimalist black and white casing. Looks a bit menacing."
+ icon = 'icons/mob/human_races/cyberlimbs/xion/xion_alt4.dmi'
+ unavailable_to_build = 1
+ parts = list(BP_HEAD)
+
+
/datum/robolimb/xion_monitor
company = "Xion Monitor"
desc = "Xion Mfg.'s unique spin on a popular prosthetic head model. It looks and minimalist and utilitarian."
diff --git a/icons/mob/human_races/cyberlimbs/xion/xion_alt3.dmi b/icons/mob/human_races/cyberlimbs/xion/xion_alt3.dmi
new file mode 100644
index 0000000000..a5aef28161
Binary files /dev/null and b/icons/mob/human_races/cyberlimbs/xion/xion_alt3.dmi differ
diff --git a/icons/mob/human_races/cyberlimbs/xion/xion_alt4.dmi b/icons/mob/human_races/cyberlimbs/xion/xion_alt4.dmi
new file mode 100644
index 0000000000..e5fa42135b
Binary files /dev/null and b/icons/mob/human_races/cyberlimbs/xion/xion_alt4.dmi differ