diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index 923355b340..541b50e9bd 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -114,3 +114,17 @@
//special species definitions
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
+
+//defines for different matrix sections
+#define MATRIX_RED "red"
+#define MATRIX_GREEN "green"
+#define MATRIX_BLUE "blue"
+#define MATRIX_RED_GREEN "red_green"
+#define MATRIX_RED_BLUE "red_blue"
+#define MATRIX_GREEN_BLUE "green_blue"
+#define MATRIX_ALL "red_green_blue"
+#define MATRIX_NONE "none"
+
+//defines for the two colour schemes, advanced and old
+#define OLD_CHARACTER_COLORING "old_color_system"
+#define ADVANCED_CHARACTER_COLORING "advanced_color_system"
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 196c1ce0ed..0d01c4c343 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -101,73 +101,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/eye_type = DEFAULT_EYES_TYPE //Eye type
var/split_eye_colors = FALSE
var/datum/species/pref_species = new /datum/species/human() //Mutant race
- var/list/features = list("mcolor" = "FFFFFF",
- "mcolor2" = "FFFFFF",
- "mcolor3" = "FFFFFF",
- "tail_lizard" = "Smooth",
- "tail_human" = "None",
- "snout" = "Round",
- "horns" = "None",
- "horns_color" = "85615a",
- "ears" = "None",
- "wings" = "None",
- "wings_color" = "FFF",
- "frills" = "None",
- "deco_wings" = "None",
- "spines" = "None",
- "body_markings" = "None",
- "legs" = "Plantigrade",
- "insect_wings" = "Plain",
- "insect_fluff" = "None",
- "insect_markings" = "None",
- "arachnid_legs" = "Plain",
- "arachnid_spinneret" = "Plain",
- "arachnid_mandibles" = "Plain",
- "mam_body_markings" = "Plain",
- "mam_ears" = "None",
- "mam_snouts" = "None",
- "mam_tail" = "None",
- "mam_tail_animated" = "None",
- "xenodorsal" = "Standard",
- "xenohead" = "Standard",
- "xenotail" = "Xenomorph Tail",
- "taur" = "None",
- "genitals_use_skintone" = FALSE,
- "has_cock" = FALSE,
- "cock_shape" = DEF_COCK_SHAPE,
- "cock_length" = COCK_SIZE_DEF,
- "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
- "cock_color" = "ffffff",
- "cock_taur" = FALSE,
- "has_balls" = FALSE,
- "balls_color" = "ffffff",
- "balls_shape" = DEF_BALLS_SHAPE,
- "balls_size" = BALLS_SIZE_DEF,
- "balls_cum_rate" = CUM_RATE,
- "balls_cum_mult" = CUM_RATE_MULT,
- "balls_efficiency" = CUM_EFFICIENCY,
- "has_breasts" = FALSE,
- "breasts_color" = "ffffff",
- "breasts_size" = BREASTS_SIZE_DEF,
- "breasts_shape" = DEF_BREASTS_SHAPE,
- "breasts_producing" = FALSE,
- "has_vag" = FALSE,
- "vag_shape" = DEF_VAGINA_SHAPE,
- "vag_color" = "ffffff",
- "has_womb" = FALSE,
- "balls_visibility" = GEN_VISIBLE_NO_UNDIES,
- "breasts_visibility"= GEN_VISIBLE_NO_UNDIES,
- "cock_visibility" = GEN_VISIBLE_NO_UNDIES,
- "vag_visibility" = GEN_VISIBLE_NO_UNDIES,
- "ipc_screen" = "Sunburst",
- "ipc_antenna" = "None",
- "flavor_text" = "",
- "silicon_flavor_text" = "",
- "ooc_notes" = "",
- "meat_type" = "Mammalian",
- "body_model" = MALE,
- "body_size" = RESIZE_DEFAULT_SIZE
- )
+ var/list/features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
+
var/custom_speech_verb = "default" //if your say_mod is to be something other than your races
var/custom_tongue = "default" //if your tongue is to be something other than your races
var/modified_limbs = list() //prosthetic/amputated limbs
@@ -470,6 +405,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(!use_skintones)
dat += APPEARANCE_CATEGORY_COLUMN
+ dat += "
Advanced Coloring
"
+ dat += "[(features["color_scheme"] == ADVANCED_CHARACTER_COLORING) ? "Enabled" : "Disabled"]"
+
dat += "Body Colors
"
dat += "Primary Color:
"
@@ -551,6 +489,52 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/color_type = GLOB.colored_mutant_parts[mutant_part] //if it can be coloured, show the appropriate button
if(color_type)
dat += " Change
"
+ else
+ if(features["color_scheme"] == ADVANCED_CHARACTER_COLORING) //advanced individual part colouring system
+ //is it matrixed or does it have extra parts to be coloured?
+ var/find_part = features[mutant_part] || pref_species.mutant_bodyparts[mutant_part]
+ var/find_part_list = GLOB.mutant_reference_list[mutant_part]
+ if(find_part && find_part != "None" && find_part_list)
+ var/datum/sprite_accessory/accessory = find_part_list[find_part]
+ if(accessory)
+ if(accessory.color_src == MATRIXED || accessory.color_src == MUTCOLORS || accessory.color_src == MUTCOLORS2 || accessory.color_src == MUTCOLORS3) //mutcolors1-3 are deprecated now, please don't rely on these in the future
+ var/mutant_string = accessory.mutant_part_string
+ if(istype(accessory, /datum/sprite_accessory/mam_body_markings) || istype(accessory, /datum/sprite_accessory/body_markings))
+ continue
+ var/primary_feature = "[mutant_string]_primary"
+ var/secondary_feature = "[mutant_string]_secondary"
+ var/tertiary_feature = "[mutant_string]_tertiary"
+ if(!features[primary_feature])
+ features[primary_feature] = features["mcolor"]
+ if(!features[secondary_feature])
+ features[secondary_feature] = features["mcolor2"]
+ if(!features[tertiary_feature])
+ features[tertiary_feature] = features["mcolor3"]
+
+ var/matrixed_sections = accessory.matrixed_sections
+ if(accessory.color_src == MATRIXED && !matrixed_sections)
+ message_admins("Sprite Accessory Failure (customization): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
+ continue
+ else if(accessory.color_src == MATRIXED)
+ switch(matrixed_sections)
+ if(MATRIX_GREEN) //only composed of a green section
+ primary_feature = secondary_feature //swap primary for secondary, so it properly assigns the second colour, reserved for the green section
+ if(MATRIX_BLUE)
+ primary_feature = tertiary_feature //same as above, but the tertiary feature is for the blue section
+ if(MATRIX_RED_BLUE) //composed of a red and blue section
+ secondary_feature = tertiary_feature //swap secondary for tertiary, as blue should always be tertiary
+ if(MATRIX_GREEN_BLUE) //composed of a green and blue section
+ primary_feature = secondary_feature //swap primary for secondary, as first option is green, which is linked to the secondary
+ secondary_feature = tertiary_feature //swap secondary for tertiary, as second option is blue, which is linked to the tertiary
+ dat += "Primary Color
"
+ dat += " Change
"
+ if((accessory.color_src == MATRIXED && (matrixed_sections == MATRIX_RED_BLUE || matrixed_sections == MATRIX_GREEN_BLUE || matrixed_sections == MATRIX_RED_GREEN || matrixed_sections == MATRIX_ALL)) || (accessory.extra && (accessory.extra_color_src == MUTCOLORS || accessory.extra_color_src == MUTCOLORS2 || accessory.extra_color_src == MUTCOLORS3)))
+ dat += "Secondary Color
"
+ dat += " Change
"
+ if((accessory.color_src == MATRIXED && matrixed_sections == MATRIX_ALL) || (accessory.extra2 && (accessory.extra2_color_src == MUTCOLORS || accessory.extra2_color_src == MUTCOLORS2 || accessory.extra2_color_src == MUTCOLORS3)))
+ dat += "Tertiary Color
"
+ dat += " Change
"
+
mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
dat += ""
@@ -1551,10 +1535,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/prosthetic_type = input(user, "Choose the type of prosthetic", "Character Preference") as null|anything in (list("prosthetic") + GLOB.prosthetic_limb_types)
if(prosthetic_type)
var/number_of_prosthetics = 0
- for(var/modification in modified_limbs)
- if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC)
+ for(var/modified_limb in modified_limbs)
+ if(modified_limbs[modified_limb][1] == LOADOUT_LIMB_PROSTHETIC && modified_limb != limb_type)
number_of_prosthetics += 1
- if(number_of_prosthetics >= MAXIMUM_LOADOUT_PROSTHETICS && !(limb_type in modified_limbs && modified_limbs[limb_type][1] == LOADOUT_LIMB_PROSTHETIC))
+ if(number_of_prosthetics > MAXIMUM_LOADOUT_PROSTHETICS)
to_chat(user, "You can only have up to two prosthetic limbs!")
else
//save the actual prosthetic data
@@ -2033,6 +2017,30 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_dors)
features["xenodorsal"] = new_dors
+ //every single primary/secondary/tertiary colouring done at once
+ if("xenodorsal_primary","xenodorsal_secondary","xenodorsal_tertiary","xhead_primary","xhead_secondary","xhead_tertiary","tail_primary","tail_secondary","tail_tertiary","insect_markings_primary","insect_markings_secondary","insect_markings_tertiary","body_markings_primary","body_markings_secondary","body_markings_tertiary","insect_fluff_primary","insect_fluff_secondary","insect_fluff_tertiary","ears_primary","ears_secondary","ears_tertiary","frills_primary","frills_secondary","frills_tertiary","ipc_antenna_primary","ipc_antenna_secondary","ipc_antenna_tertiary","taur_primary","taur_secondary","taur_tertiary","snout_primary","snout_secondary","snout_tertiary","spines_primary","spines_secondary","spines_tertiary", "mam_body_markings_primary", "mam_body_markings_secondary", "mam_body_markings_tertiary")
+ var/the_feature = features[href_list["preference"]]
+ if(!the_feature)
+ features[href_list["preference"]] = "FFFFFF"
+ the_feature = "FFFFFF"
+ var/new_feature_color = input(user, "Choose your character's mutant part colour:", "Character Preference","#"+features[href_list["preference"]]) as color|null
+ if(new_feature_color)
+ var/temp_hsv = RGBtoHSV(new_feature_color)
+ if(new_feature_color == "#000000")
+ features[href_list["preference"]] = pref_species.default_color
+ else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
+ features[href_list["preference"]] = sanitize_hexcolor(new_feature_color, 6)
+ else
+ to_chat(user,"Invalid color. Your color is not bright enough.")
+
+
+ //advanced color mode toggle
+ if("color_scheme")
+ if(features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
+ features["color_scheme"] = OLD_CHARACTER_COLORING
+ else
+ features["color_scheme"] = ADVANCED_CHARACTER_COLORING
+
//Genital code
if("cock_color")
var/new_cockcolor = input(user, "Penis color:", "Character Preference","#"+features["cock_color"]) as color|null
@@ -2759,8 +2767,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
new_limb.replace_limb(character)
qdel(old_part)
- character.regenerate_icons()
-
SEND_SIGNAL(character, COMSIG_HUMAN_PREFS_COPIED_TO, src, icon_updates, roundstart_checks)
//let's be sure the character updates
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 64e49fea8d..b332c64a6f 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
-#define SAVEFILE_VERSION_MAX 38
+#define SAVEFILE_VERSION_MAX 43
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -226,6 +226,41 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
left_eye_color = "#BAB99E"
right_eye_color = "#BAB99E"
+ if(current_version < 43) //extreme changes to how things are coloured (the introduction of the advanced coloring system)
+ features["color_scheme"] = OLD_CHARACTER_COLORING //disable advanced coloring system by default
+ for(var/feature in features)
+ var/feature_value = features[feature]
+ if(feature_value)
+ var/ref_list = GLOB.mutant_reference_list[feature]
+ if(ref_list)
+ var/datum/sprite_accessory/accessory = ref_list[feature_value]
+ if(accessory)
+ var/mutant_string = accessory.mutant_part_string
+ if(!mutant_string)
+ if(istype(accessory, /datum/sprite_accessory/mam_body_markings))
+ mutant_string = "mam_body_markings"
+ var/primary_string = "[mutant_string]_primary"
+ var/secondary_string = "[mutant_string]_secondary"
+ var/tertiary_string = "[mutant_string]_tertiary"
+ if(accessory.color_src == MATRIXED && !accessory.matrixed_sections && feature_value != "None")
+ message_admins("Sprite Accessory Failure (migration from [current_version] to 39): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
+ continue
+ var/primary_exists = features[primary_string]
+ var/secondary_exists = features[secondary_string]
+ var/tertiary_exists = features[tertiary_string]
+ if(accessory.color_src == MATRIXED && !primary_exists && !secondary_exists && !tertiary_exists)
+ features[primary_string] = features["mcolor"]
+ features[secondary_string] = features["mcolor2"]
+ features[tertiary_string] = features["mcolor3"]
+ else if(accessory.color_src == MUTCOLORS && !primary_exists)
+ features[primary_string] = features["mcolor"]
+ else if(accessory.color_src == MUTCOLORS2 && !secondary_exists)
+ features[secondary_string] = features["mcolor2"]
+ else if(accessory.color_src == MUTCOLORS3 && !tertiary_exists)
+ features[tertiary_string] = features["mcolor3"]
+
+ features["color_scheme"] = OLD_CHARACTER_COLORING //advanced is off by default
+
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
if(!ckey)
return
@@ -489,6 +524,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
var/savefile/S = new /savefile(path)
if(!S)
return FALSE
+ features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
+
S.cd = "/"
if(!slot)
slot = default_slot
@@ -569,6 +606,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_arachnid_mandibles"] >> features["arachnid_mandibles"]
S["feature_horns_color"] >> features["horns_color"]
S["feature_wings_color"] >> features["wings_color"]
+ S["feature_color_scheme"] >> features["color_scheme"]
S["persistent_scars"] >> persistent_scars
S["scars1"] >> scars_list["1"]
S["scars2"] >> scars_list["2"]
@@ -594,6 +632,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//Jobs
S["joblessrole"] >> joblessrole
+
//Load prefs
S["job_preferences"] >> job_preferences
@@ -646,6 +685,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_vag_visibility"] >> features["vag_visibility"]
//womb features
S["feature_has_womb"] >> features["has_womb"]
+
//flavor text
//Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts:
if((S["flavor_text"] != "") && (S["flavor_text"] != null) && S["flavor_text"]) //If old text isn't null and isn't "" but still exists.
@@ -803,6 +843,32 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
features["silicon_flavor_text"] = copytext(features["silicon_flavor_text"], 1, MAX_FLAVOR_LEN)
features["ooc_notes"] = copytext(features["ooc_notes"], 1, MAX_FLAVOR_LEN)
+ //load every advanced coloring mode thing in one go
+ //THIS MUST BE DONE AFTER ALL FEATURE SAVES OR IT WILL NOT WORK
+ for(var/feature in features)
+ var/feature_value = features[feature]
+ if(feature_value)
+ var/ref_list = GLOB.mutant_reference_list[feature]
+ if(ref_list)
+ var/datum/sprite_accessory/accessory = ref_list[feature_value]
+ if(accessory)
+ var/mutant_string = accessory.mutant_part_string
+ if(!mutant_string)
+ if(istype(accessory, /datum/sprite_accessory/mam_body_markings))
+ mutant_string = "mam_body_markings"
+ var/primary_string = "[mutant_string]_primary"
+ var/secondary_string = "[mutant_string]_secondary"
+ var/tertiary_string = "[mutant_string]_tertiary"
+ if(accessory.color_src == MATRIXED && !accessory.matrixed_sections && feature_value != "None")
+ message_admins("Sprite Accessory Failure (loading data): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
+ continue
+ if(S["feature_[primary_string]"])
+ S["feature_[primary_string]"] >> features[primary_string]
+ if(S["feature_[secondary_string]"])
+ S["feature_[secondary_string]"] >> features[secondary_string]
+ if(S["feature_[tertiary_string]"])
+ S["feature_[tertiary_string]"] >> features[tertiary_string]
+
persistent_scars = sanitize_integer(persistent_scars)
scars_list["1"] = sanitize_text(scars_list["1"])
scars_list["2"] = sanitize_text(scars_list["2"])
@@ -927,6 +993,33 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["feature_ooc_notes"], features["ooc_notes"])
+ WRITE_FILE(S["feature_color_scheme"], features["color_scheme"])
+
+ //save every advanced coloring mode thing in one go
+ for(var/feature in features)
+ var/feature_value = features[feature]
+ if(feature_value)
+ var/ref_list = GLOB.mutant_reference_list[feature]
+ if(ref_list)
+ var/datum/sprite_accessory/accessory = ref_list[feature_value]
+ if(accessory)
+ var/mutant_string = accessory.mutant_part_string
+ if(!mutant_string)
+ if(istype(accessory, /datum/sprite_accessory/mam_body_markings))
+ mutant_string = "mam_body_markings"
+ var/primary_string = "[mutant_string]_primary"
+ var/secondary_string = "[mutant_string]_secondary"
+ var/tertiary_string = "[mutant_string]_tertiary"
+ if(accessory.color_src == MATRIXED && !accessory.matrixed_sections && feature_value != "None")
+ message_admins("Sprite Accessory Failure (saving data): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
+ continue
+ if(features[primary_string])
+ WRITE_FILE(S["feature_[primary_string]"], features[primary_string])
+ if(features[secondary_string])
+ WRITE_FILE(S["feature_[secondary_string]"], features[secondary_string])
+ if(features[tertiary_string])
+ WRITE_FILE(S["feature_[tertiary_string]"], features[tertiary_string])
+
//Custom names
for(var/custom_name_id in GLOB.preferences_custom_names)
var/savefile_slot_name = custom_name_id + "_name" //TODO remove this
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
index b411c9401c..1dc50bfe73 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
@@ -63,6 +63,7 @@
var/list/relevant_layers //list of layers that this accessory uses. As of now only used in species.handle_mutant_bodyparts(), but that's where most sprite accessories are anyway.
var/mutant_part_string //Also used in species.handle_mutant_bodyparts() to generate the overlay icon state.
var/alpha_mask_state
+ var/matrixed_sections = MATRIX_NONE //if color_src is MATRIXED, how many sections does it have? 1-3
//Special / holdover traits for Citadel specific sprites.
var/extra = FALSE
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm
index 5286acb33a..6c510807b4 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm
@@ -5,6 +5,7 @@
/datum/sprite_accessory/body_markings
icon = 'icons/mob/mutant_bodyparts.dmi'
relevant_layers = list(BODY_ADJ_LAYER)
+ mutant_part_string = "body_markings"
/datum/sprite_accessory/body_markings/none
name = "None"
@@ -21,6 +22,7 @@
icon_state = "guilmon"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/markings_notmammals.dmi'
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/body_markings/ltiger
name = "Light Tiger Body"
@@ -47,6 +49,7 @@
gender_specific = 0
icon = 'modular_citadel/icons/mob/mam_markings.dmi'
recommended_species = list("mammal", "xeno", "slimeperson", "podweak")
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/mam_body_markings/none
name = "None"
@@ -54,6 +57,7 @@
ckeys_allowed = list("yousshouldnteverbeseeingthisyoumeme")
icon = 'modular_citadel/icons/mob/markings_notmammals.dmi'
relevant_layers = null
+ matrixed_sections = 0
/datum/sprite_accessory/mam_body_markings/redpanda
name = "Redpanda"
@@ -229,6 +233,7 @@
icon = 'icons/mob/wings.dmi'
color_src = 0
relevant_layers = list(BODY_FRONT_LAYER)
+ mutant_part_string = "insect_fluff"
/datum/sprite_accessory/insect_fluff/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
return (!H.dna.features["insect_fluff"] || H.dna.features["insect_fluff"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm
index cae1b2e482..e09a0386ee 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm
@@ -26,18 +26,21 @@
icon_state = "bear"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/bigwolf
name = "Big Wolf"
icon_state = "bigwolf"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/human/bigwolfinner
name = "Big Wolf (ALT)"
icon_state = "bigwolfinner"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
extra = TRUE
extra_color_src = NONE
@@ -46,12 +49,14 @@
icon_state = "bigwolfdark"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/human/bigwolfinnerdark
name = "Dark Big Wolf (ALT)"
icon_state = "bigwolfinnerdark"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
extra = TRUE
extra_color_src = NONE
@@ -59,6 +64,7 @@
name = "Bunny"
icon_state = "bunny"
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/cat
@@ -73,6 +79,7 @@
icon_state = "cow"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/curled
name = "Curled Horn"
@@ -84,6 +91,7 @@
name = "Dog, Floppy"
icon_state = "lab"
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/eevee
@@ -91,12 +99,14 @@
icon_state = "eevee"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/elephant
name = "Elephant"
icon_state = "elephant"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/elf
name = "Elf"
@@ -109,17 +119,20 @@
icon_state = "fennec"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/fish
name = "Fish"
icon_state = "fish"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/fox
name = "Fox"
icon_state = "fox"
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/jellyfish
@@ -132,17 +145,20 @@
icon_state = "murid"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/human/otie
name = "Otusian"
icon_state = "otie"
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/rabbit
name = "Rabbit"
icon_state = "rabbit"
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/pede
@@ -150,30 +166,35 @@
icon_state = "pede"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/human/sergal
name = "Sergal"
icon_state = "sergal"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/human/skunk
name = "skunk"
icon_state = "skunk"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/squirrel
name = "Squirrel"
icon_state = "squirrel"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/wolf
name = "Wolf"
icon_state = "wolf"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
+ matrixed_sections = MATRIX_RED_BLUE
/******************************************
*************** Furry Ears ****************
@@ -182,7 +203,6 @@
/datum/sprite_accessory/ears/mam_ears
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
- mutant_part_string = "ears"
relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/ears/mam_ears/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
@@ -197,38 +217,46 @@
/datum/sprite_accessory/ears/mam_ears/axolotl
name = "Axolotl"
icon_state = "axolotl"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bat
name = "Bat"
icon_state = "bat"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/bear
name = "Bear"
icon_state = "bear"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bigwolf
name = "Big Wolf"
icon_state = "bigwolf"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/bigwolfinner
name = "Big Wolf (ALT)"
icon_state = "bigwolfinner"
extra = TRUE
extra_color_src = NONE
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bigwolfdark //alphabetical sort ignored here for ease-of-use
name = "Dark Big Wolf"
icon_state = "bigwolfdark"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/bigwolfinnerdark
name = "Dark Big Wolf (ALT)"
icon_state = "bigwolfinnerdark"
extra = TRUE
extra_color_src = NONE
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bunny
name = "Bunny"
icon_state = "bunny"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/cat
name = "Cat"
@@ -241,10 +269,12 @@
/datum/sprite_accessory/ears/mam_ears/catbig
name = "Cat, Big"
icon_state = "catbig"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/cow
name = "Cow"
icon_state = "cow"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/curled
name = "Curled Horn"
@@ -259,6 +289,7 @@
/datum/sprite_accessory/ears/mam_ears/eevee
name = "Eevee"
icon_state = "eevee"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/elf
name = "Elf"
@@ -268,22 +299,27 @@
/datum/sprite_accessory/ears/mam_ears/elephant
name = "Elephant"
icon_state = "elephant"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/fennec
name = "Fennec"
icon_state = "fennec"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/fish
name = "Fish"
icon_state = "fish"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/fox
name = "Fox"
icon_state = "fox"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/husky
name = "Husky"
icon_state = "wolf"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/jellyfish
name = "Jellyfish"
@@ -293,39 +329,49 @@
/datum/sprite_accessory/ears/mam_ears/kangaroo
name = "kangaroo"
icon_state = "kangaroo"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/lab
name = "Dog, Long"
icon_state = "lab"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/murid
name = "Murid"
icon_state = "murid"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/otie
name = "Otusian"
icon_state = "otie"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/rabbit
name = "Rabbit"
icon_state = "rabbit"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/pede
name = "Scolipede"
icon_state = "pede"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/sergal
name = "Sergal"
icon_state = "sergal"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/skunk
name = "skunk"
icon_state = "skunk"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/squirrel
name = "Squirrel"
icon_state = "squirrel"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/wolf
name = "Wolf"
icon_state = "wolf"
+ matrixed_sections = MATRIX_RED_BLUE
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/frills.dm b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm
index c7a59da028..1458694746 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/frills.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm
@@ -1,6 +1,7 @@
/datum/sprite_accessory/frills
icon = 'icons/mob/mutant_bodyparts.dmi'
relevant_layers = list(BODY_ADJ_LAYER)
+ mutant_part_string = "frills"
/datum/sprite_accessory/frills/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.dm b/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.dm
index 6019245b80..8bda196faa 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/ipc_synths.dm
@@ -132,6 +132,7 @@
color_src = MUTCOLORS2
relevant_layers = list(BODY_ADJ_LAYER)
recommended_species = list("ipc")
+ mutant_part_string = "ipc_antenna"
/datum/sprite_accessory/antenna/none
name = "None"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
index 6f7b955d8f..c525a13ef8 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm
@@ -29,6 +29,7 @@
var/taur_mode = NONE //Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2
var/alt_taur_mode = NONE //Same as above.
var/hide_legs = USE_QUADRUPED_CLIP_MASK
+ mutant_part_string = "taur"
/datum/sprite_accessory/taur/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
return (!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)))
@@ -67,6 +68,7 @@
name = "Cow (Spotted)"
icon_state = "cow_spotted"
color_src = MATRIXED
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/taur/deer
name = "Deer"
@@ -88,6 +90,7 @@
icon_state = "drake_old"
color_src = MATRIXED
extra = FALSE
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/drider
name = "Drider"
@@ -114,17 +117,20 @@
icon_state = "horse"
taur_mode = STYLE_HOOF_TAURIC
alt_taur_mode = STYLE_PAW_TAURIC
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/taur/naga
name = "Naga"
icon_state = "naga"
taur_mode = STYLE_SNEK_TAURIC
hide_legs = USE_SNEK_CLIP_MASK
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/otie
name = "Otie"
icon_state = "otie"
taur_mode = STYLE_PAW_TAURIC
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/taur/pede
name = "Scolipede"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm
index 69016d2890..75b62e8c0f 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm
@@ -7,11 +7,6 @@
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
return ((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.is_robotic_limb(FALSE))
-/datum/sprite_accessory/snout/guilmon
- name = "Guilmon"
- icon_state = "guilmon"
- color_src = MATRIXED
-
/datum/sprite_accessory/snouts/round
name = "Round"
icon_state = "round"
@@ -158,7 +153,6 @@
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
recommended_species = list("mammal", "slimeperson", "insect", "podweak", "lizard")
- mutant_part_string = "snout"
relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/snouts/mam_snouts/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
@@ -174,10 +168,12 @@
/datum/sprite_accessory/snouts/mam_snouts/bird
name = "Beak"
icon_state = "bird"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/bigbeak
name = "Big Beak"
icon_state = "bigbeak"
+ matrixed_sections = MATRIX_BLUE
/datum/sprite_accessory/snouts/mam_snouts/bug
name = "Bug"
@@ -191,52 +187,64 @@
icon_state = "elephant"
extra = TRUE
extra_color_src = MUTCOLORS3
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/husky
name = "Husky"
icon_state = "husky"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/rhino
name = "Horn"
icon_state = "rhino"
extra = TRUE
- extra = MUTCOLORS3
+ extra_color_src = MUTCOLORS3
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/rodent
name = "Rodent"
icon_state = "rodent"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/lcanid
name = "Mammal, Long"
icon_state = "lcanid"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/lcanidalt
name = "Mammal, Long ALT"
icon_state = "lcanidalt"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/scanid
name = "Mammal, Short"
icon_state = "scanid"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/scanidalt
name = "Mammal, Short ALT"
icon_state = "scanidalt"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/scanidalt2
name = "Mammal, Short ALT 2"
icon_state = "scanidalt2"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/wolf
name = "Mammal, Thick"
icon_state = "wolf"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/wolfalt
name = "Mammal, Thick ALT"
icon_state = "wolfalt"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/otie
name = "Otie"
icon_state = "otie"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/round
name = "Round"
@@ -251,18 +259,22 @@
/datum/sprite_accessory/snouts/mam_snouts/pede
name = "Scolipede"
icon_state = "pede"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/sergal
name = "Sergal"
icon_state = "sergal"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/shark
name = "Shark"
icon_state = "shark"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/hshark
name = "hShark"
icon_state = "hshark"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/sharp
name = "Sharp"
@@ -279,18 +291,22 @@
icon_state = "skulldog"
extra = TRUE
extra_color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/toucan
name = "Toucan"
icon_state = "toucan"
+ matrixed_sections = MATRIX_RED_BLUE //one single pixel of red. one.
/datum/sprite_accessory/snouts/mam_snouts/redpanda
name = "WahCoon"
icon_state = "wah"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/redpandaalt
name = "WahCoon ALT"
icon_state = "wahalt"
+ matrixed_sections = MATRIX_RED_GREEN
/******************************************
**************** Snouts *******************
@@ -299,10 +315,12 @@
/datum/sprite_accessory/snouts/mam_snouts/fbird
name = "Beak (Top)"
icon_state = "fbird"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/fbigbeak
name = "Big Beak (Top)"
icon_state = "fbigbeak"
+ matrixed_sections = MATRIX_BLUE
/datum/sprite_accessory/snouts/mam_snouts/fbug
name = "Bug (Top)"
@@ -316,52 +334,64 @@
icon_state = "felephant"
extra = TRUE
extra_color_src = MUTCOLORS3
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/frhino
name = "Horn (Top)"
icon_state = "frhino"
extra = TRUE
extra = MUTCOLORS3
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/fhusky
name = "Husky (Top)"
icon_state = "fhusky"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/flcanid
name = "Mammal, Long (Top)"
icon_state = "flcanid"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/flcanidalt
name = "Mammal, Long ALT (Top)"
icon_state = "flcanidalt"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fscanid
name = "Mammal, Short (Top)"
icon_state = "fscanid"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fscanidalt
name = "Mammal, Short ALT (Top)"
icon_state = "fscanidalt"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fscanidalt2
name = "Mammal, Short ALT 2 (Top)"
icon_state = "fscanidalt2"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/fwolf
name = "Mammal, Thick (Top)"
icon_state = "fwolf"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fwolfalt
name = "Mammal, Thick ALT (Top)"
icon_state = "fwolfalt"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fotie
name = "Otie (Top)"
icon_state = "fotie"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/frodent
name = "Rodent (Top)"
icon_state = "frodent"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/fround
name = "Round (Top)"
@@ -376,14 +406,17 @@
/datum/sprite_accessory/snouts/mam_snouts/fpede
name = "Scolipede (Top)"
icon_state = "fpede"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fsergal
name = "Sergal (Top)"
icon_state = "fsergal"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fshark
name = "Shark (Top)"
icon_state = "fshark"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/fsharp
name = "Sharp (Top)"
@@ -398,7 +431,14 @@
/datum/sprite_accessory/snouts/mam_snouts/ftoucan
name = "Toucan (Top)"
icon_state = "ftoucan"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/snouts/mam_snouts/fredpanda
name = "WahCoon (Top)"
icon_state = "fwah"
+ matrixed_sections = MATRIX_ALL
+
+/datum/sprite_accessory/snouts/mam_snouts/fredpanda/alt
+ name = "WahCoon ALT (Top)"
+ icon_state = "fwahalt"
+ matrixed_sections = MATRIX_RED_GREEN
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/spines.dm b/code/modules/mob/dead/new_player/sprite_accessories/spines.dm
index 5d7207c934..cf74963ce1 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/spines.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/spines.dm
@@ -1,6 +1,7 @@
/datum/sprite_accessory/spines
icon = 'icons/mob/mutant_bodyparts.dmi'
relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER)
+ mutant_part_string = "spines"
/datum/sprite_accessory/spines/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
return (!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm b/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
index 9addd15dca..bc4d4dd00d 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
@@ -11,35 +11,41 @@
color_src = MATRIXED
name = "Synthetic Lizard - Snout Under"
icon_state = "synthliz_under"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_tert
icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
color_src = MATRIXED
name = "Synthetic Lizard - Snout Tertiary"
icon_state = "synthliz_tert"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_tertunder
icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
color_src = MATRIXED
name = "Synthetic Lizard - Snout Tertiary Under"
icon_state = "synthliz_tertunder"
+ matrixed_sections = MATRIX_ALL
//Synth body markings
/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_pecs
icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
name = "Synthetic Lizard - Pecs"
icon_state = "synthlizpecs"
+ matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_pecslight
icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
name = "Synthetic Lizard - Pecs Light"
icon_state = "synthlizpecslight"
+ matrixed_sections = MATRIX_GREEN_BLUE
/datum/sprite_accessory/mam_body_markings/synthliz
recommended_species = list("synthliz")
icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
name = "Synthetic Lizard - Plates"
icon_state = "synthlizscutes"
+ matrixed_sections = MATRIX_GREEN
//Synth tails
/datum/sprite_accessory/tails/mam_tails/synthliz
@@ -81,6 +87,7 @@
color_src = MATRIXED
name = "Synthetic Lizard - Horns Light"
icon_state = "synth_hornslight"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/antenna/synthliz/synth_short
icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
@@ -99,6 +106,7 @@
color_src = MATRIXED
name = "Synthetic Lizard - Sharp Light"
icon_state = "synth_sharplight"
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/antenna/synthliz/synthliz_thick
icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
@@ -111,6 +119,7 @@
color_src = MATRIXED
name = "Synthetic Lizard - Thick Light"
icon_state = "synth_thicklight"
+ matrixed_sections = MATRIX_RED_BLUE
//Synth Taurs (Ported from Virgo)
/datum/sprite_accessory/taur/synthliz
@@ -118,6 +127,7 @@
icon_state = "synthlizard"
taur_mode = STYLE_PAW_TAURIC
recommended_species = list("synthliz")
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/synthliz/inv
name = "Virgo - Synthetic Lizard (Inverted)"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
index f7b73c3b30..6135d42569 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
@@ -8,7 +8,7 @@
/datum/sprite_accessory/tails_animated
icon = 'icons/mob/mutant_bodyparts.dmi'
- mutant_part_string = "tailwag"
+ mutant_part_string = "tailwag" //keep this the same, ALWAYS, this is incredibly important for colouring!
relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/******************************************
@@ -34,12 +34,14 @@
icon_state = "axolotl"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/lizard/axolotl
name = "Axolotl"
icon_state = "axolotl"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/lizard/dtiger
name = "Dark Tiger"
@@ -54,12 +56,14 @@
icon_state = "guilmon"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/lizard/guilmon
name = "Guilmon"
icon_state = "guilmon"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/lizard/ltiger
name = "Light Tiger"
@@ -107,44 +111,28 @@
icon_state = "axolotl"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/axolotl
name = "Axolotl"
icon_state = "axolotl"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
-
-/datum/sprite_accessory/tails/mam_tails/batl
- name = "Bat (Long)"
- icon = 'modular_citadel/icons/mob/mam_tails.dmi'
- icon_state = "batl"
-
-/datum/sprite_accessory/tails_animated/mam_tails_animated/batl
- name = "Bat (Long)"
- icon = 'modular_citadel/icons/mob/mam_tails.dmi'
- icon_state = "batl"
-
-/datum/sprite_accessory/tails/mam_tails/bats
- name = "Bat (Short)"
- icon = 'modular_citadel/icons/mob/mam_tails.dmi'
- icon_state = "bats"
-
-/datum/sprite_accessory/tails_animated/mam_tails_animated/bats
- name = "Bat (Short)"
- icon = 'modular_citadel/icons/mob/mam_tails.dmi'
- icon_state = "bats"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/bee
name = "Bee"
icon_state = "bee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/bee
name = "Bee"
icon_state = "bee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/cat
name = "Cat"
@@ -163,24 +151,28 @@
icon_state = "catbig"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/catbig
name = "Cat, Big"
icon_state = "catbig"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/twocat
name = "Cat, Double"
icon_state = "twocat"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/twocat
name = "Cat, Double"
icon_state = "twocat"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/corvid
name = "Corvid"
@@ -195,12 +187,14 @@
icon_state = "cow"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/cow
name = "Cow"
icon_state = "cow"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/dtiger
name = "Dark Tiger"
@@ -215,60 +209,70 @@
icon_state = "datashark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/tails_animated/human/datashark
name = "datashark"
icon_state = "datashark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/tails/human/eevee
name = "Eevee"
icon_state = "eevee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/eevee
name = "Eevee"
icon_state = "eevee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/fish
name = "Fish"
icon_state = "fish"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/fish
name = "Fish"
icon_state = "fish"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/fox
name = "Fox"
icon_state = "fox"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/fox
name = "Fox"
icon_state = "fox"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/horse
name = "Horse"
@@ -287,36 +291,42 @@
icon_state = "husky"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/husky
name = "Husky"
icon_state = "husky"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/insect
name = "Insect"
icon_state = "insect"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/insect
name = "Insect"
icon_state = "insect"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/kitsune
name = "Kitsune"
icon_state = "kitsune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/kitsune
name = "Kitsune"
icon_state = "kitsune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/ltiger
name = "Light Tiger"
@@ -331,108 +341,126 @@
icon_state = "murid"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails_animated/human/murid
name = "Murid"
icon_state = "murid"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails/orca
name = "Orca"
icon_state = "orca"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/orca
name = "Orca"
icon_state = "orca"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/otie
name = "Otusian"
icon_state = "otie"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/otie
name = "Otusian"
icon_state = "otie"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/rabbit
name = "Rabbit"
icon_state = "rabbit"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/rabbit
name = "Rabbit"
icon_state = "rabbit"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/ailurus
name = "Red Panda"
icon_state = "wah"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/ailurus
name = "Red Panda"
icon_state = "wah"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/pede
name = "Scolipede"
icon_state = "pede"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/pede
name = "Scolipede"
icon_state = "pede"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/sergal
name = "Sergal"
icon_state = "sergal"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/sergal
name = "Sergal"
icon_state = "sergal"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/shark
name = "Shark"
icon_state = "shark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/shark
name = "Shark"
icon_state = "shark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/skunk
name = "skunk"
icon_state = "skunk"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/human/skunk
name = "skunk"
icon_state = "skunk"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/human/smooth
name = "Smooth"
@@ -463,60 +491,70 @@
icon_state = "squirrel"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/squirrel
name = "Squirrel"
icon_state = "squirrel"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/tamamo_kitsune
name = "Tamamo Kitsune Tails" //Tamamo-no-Tiro, let it be known!
icon_state = "9sune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/tamamo_kitsune
name = "Tamamo Kitsune Tails"
icon_state = "9sune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/tentacle
name = "Tentacle"
icon_state = "tentacle"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/tentacle
name = "Tentacle"
icon_state = "tentacle"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/tiger
name = "Tiger"
icon_state = "tiger"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/human/tiger
name = "Tiger"
icon_state = "tiger"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/human/wolf
name = "Wolf"
icon_state = "wolf"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/wolf
name = "Wolf"
icon_state = "wolf"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED
/******************************************
************** Furry Tails ****************
@@ -526,7 +564,6 @@
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
recommended_species = list("mammal", "slimeperson", "podweak", "felinid", "insect")
- mutant_part_string = "tail"
relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/tails/mam_tails/none
@@ -538,7 +575,6 @@
/datum/sprite_accessory/tails_animated/mam_tails_animated
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
- mutant_part_string = "tailwag"
relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/tails_animated/mam_tails_animated/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
@@ -552,34 +588,42 @@
/datum/sprite_accessory/tails/mam_tails/axolotl
name = "Axolotl"
icon_state = "axolotl"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/axolotl
name = "Axolotl"
icon_state = "axolotl"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/batl
name = "Bat (Long)"
icon_state = "batl"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/batl
name = "Bat (Long)"
icon_state = "batl"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/bats
name = "Bat (Short)"
icon_state = "bats"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/bats
name = "Bat (Short)"
icon_state = "bats"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/bee
name = "Bee"
icon_state = "bee"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/bee
name = "Bee"
icon_state = "bee"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/cat
name = "Cat"
@@ -594,34 +638,42 @@
/datum/sprite_accessory/tails/mam_tails/catbig
name = "Cat, Big"
icon_state = "catbig"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/catbig
name = "Cat, Big"
icon_state = "catbig"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/twocat
name = "Cat, Double"
icon_state = "twocat"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/twocat
name = "Cat, Double"
icon_state = "twocat"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/corvid
name = "Corvid"
icon_state = "crow"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/corvid
name = "Corvid"
icon_state = "crow"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tail/cow
name = "Cow"
icon_state = "cow"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/cow
name = "Cow"
icon_state = "cow"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/dtiger
name = "Dark Tiger"
@@ -638,42 +690,52 @@
/datum/sprite_accessory/tails/mam_tails/eevee
name = "Eevee"
icon_state = "eevee"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/eevee
name = "Eevee"
icon_state = "eevee"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/fennec
name = "Fennec"
icon_state = "fennec"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/fennec
name = "Fennec"
icon_state = "fennec"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/fish
name = "Fish"
icon_state = "fish"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/fish
name = "Fish"
icon_state = "fish"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/fox
name = "Fox"
icon_state = "fox"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/fox
name = "Fox"
icon_state = "fox"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/hawk
name = "Hawk"
icon_state = "hawk"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/hawk
name = "Hawk"
icon_state = "hawk"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/horse
name = "Horse"
@@ -688,42 +750,52 @@
/datum/sprite_accessory/tails/mam_tails/husky
name = "Husky"
icon_state = "husky"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/husky
name = "Husky"
icon_state = "husky"
+ matrixed_sections = MATRIX_RED_GREEN
datum/sprite_accessory/tails/mam_tails/insect
name = "Insect"
icon_state = "insect"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/insect
name = "Insect"
icon_state = "insect"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/kangaroo
name = "kangaroo"
icon_state = "kangaroo"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/kangaroo
name = "kangaroo"
icon_state = "kangaroo"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/kitsune
name = "Kitsune"
icon_state = "kitsune"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/kitsune
name = "Kitsune"
icon_state = "kitsune"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/lab
name = "Lab"
icon_state = "lab"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/lab
name = "Lab"
icon_state = "lab"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/ltiger
name = "Light Tiger"
@@ -740,84 +812,104 @@ datum/sprite_accessory/tails/mam_tails/insect
/datum/sprite_accessory/tails/mam_tails/murid
name = "Murid"
icon_state = "murid"
+ matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/murid
name = "Murid"
icon_state = "murid"
+ matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails/mam_tails/orca
name = "Orca"
icon_state = "orca"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/orca
name = "Orca"
icon_state = "orca"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/otie
name = "Otusian"
icon_state = "otie"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/otie
name = "Otusian"
icon_state = "otie"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/rabbit
name = "Rabbit"
icon_state = "rabbit"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/rabbit
name = "Rabbit"
icon_state = "rabbit"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/ailurus
name = "Red Panda"
icon_state = "wah"
extra = TRUE
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/ailurus
name = "Red Panda"
icon_state = "wah"
extra = TRUE
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/pede
name = "Scolipede"
icon_state = "pede"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/pede
name = "Scolipede"
icon_state = "pede"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/sergal
name = "Sergal"
icon_state = "sergal"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/sergal
name = "Sergal"
icon_state = "sergal"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/shark
name = "Shark"
icon_state = "shark"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/shark
name = "Shark"
icon_state = "shark"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/shepherd
name = "Shepherd"
icon_state = "shepherd"
+ matrixed_sections = MATRIX_GREEN_BLUE
/datum/sprite_accessory/tails_animated/mam_tails_animated/shepherd
name = "Shepherd"
icon_state = "shepherd"
+ matrixed_sections = MATRIX_GREEN_BLUE
/datum/sprite_accessory/tails/mam_tails/skunk
name = "Skunk"
icon_state = "skunk"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/mam_tails_animated/skunk
name = "Skunk"
icon_state = "skunk"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/mam_tails/smooth
name = "Smooth"
@@ -846,47 +938,59 @@ datum/sprite_accessory/tails/mam_tails/insect
/datum/sprite_accessory/tails/mam_tails/straighttail
name = "Straight Tail"
icon_state = "straighttail"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/straighttail
name = "Straight Tail"
icon_state = "straighttail"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/squirrel
name = "Squirrel"
icon_state = "squirrel"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/squirrel
name = "Squirrel"
icon_state = "squirrel"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/tamamo_kitsune
name = "Tamamo Kitsune Tails"
icon_state = "9sune"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/tamamo_kitsune
name = "Tamamo Kitsune Tails"
icon_state = "9sune"
+ matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/tentacle
name = "Tentacle"
icon_state = "tentacle"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/tentacle
name = "Tentacle"
icon_state = "tentacle"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/tiger
name = "Tiger"
icon_state = "tiger"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/mam_tails_animated/tiger
name = "Tiger"
icon_state = "tiger"
+ matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/mam_tails/wolf
name = "Wolf"
icon_state = "wolf"
+ matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/wolf
name = "Wolf"
icon_state = "wolf"
+ matrixed_sections = MATRIX_RED
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 604babbf75..2eb68fe30d 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -175,6 +175,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
//Called when cloning, copies some vars that should be kept
/datum/species/proc/copy_properties_from(datum/species/old_species)
+ mutant_bodyparts["limbs_id"] = old_species.mutant_bodyparts["limbs_id"]
return
//Please override this locally if you want to define when what species qualifies for what rank if human authority is enforced.
@@ -746,14 +747,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
)
var/g = (H.dna.features["body_model"] == FEMALE) ? "f" : "m"
- var/list/colorlist = list()
var/husk = HAS_TRAIT(H, TRAIT_HUSK)
- colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor"]]00")
- colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor2"]]00")
- colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor3"]]00")
- colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
- for(var/index in 1 to colorlist.len)
- colorlist[index] /= 255
for(var/layer in relevant_layers)
var/list/standing = list()
@@ -775,6 +769,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(S.center)
accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y)
+ var/advanced_color_system = (H.dna.features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
+
+ var/mutant_string = S.mutant_part_string
+ if(mutant_string == "tailwag") //wagging tails should be coloured the same way as your tail
+ mutant_string = "tail"
+ var/primary_string = advanced_color_system ? "[mutant_string]_primary" : "mcolor"
+ var/secondary_string = advanced_color_system ? "[mutant_string]_secondary" : "mcolor2"
+ var/tertiary_string = advanced_color_system ? "[mutant_string]_tertiary" : "mcolor3"
+ //failsafe: if there's no value for any of these, set it to white
+ if(!H.dna.features[primary_string])
+ H.dna.features[primary_string] = advanced_color_system ? H.dna.features["mcolor"] : "FFFFFF"
+ if(!H.dna.features[secondary_string])
+ H.dna.features[secondary_string] = advanced_color_system ? H.dna.features["mcolor2"] : "FFFFFF"
+ if(!H.dna.features[tertiary_string])
+ H.dna.features[tertiary_string] = advanced_color_system ? H.dna.features["mcolor3"] : "FFFFFF"
+
if(!husk)
if(!forced_colour)
switch(S.color_src)
@@ -784,20 +794,36 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(fixed_mut_color)
accessory_overlay.color = "#[fixed_mut_color]"
else
- accessory_overlay.color = "#[H.dna.features["mcolor"]]"
+ accessory_overlay.color = "#[H.dna.features[primary_string]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
accessory_overlay.color = "#[fixed_mut_color2]"
else
- accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
+ accessory_overlay.color = "#[H.dna.features[primary_string]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
accessory_overlay.color = "#[fixed_mut_color3]"
else
- accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
+ accessory_overlay.color = "#[H.dna.features[primary_string]]"
if(MATRIXED)
- accessory_overlay.color = list(colorlist)
+ var/list/accessory_colorlist = list()
+ if(S.matrixed_sections == MATRIX_RED || S.matrixed_sections == MATRIX_RED_GREEN || S.matrixed_sections == MATRIX_RED_BLUE || S.matrixed_sections == MATRIX_ALL)
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[primary_string]]00")
+ else
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("00000000")
+ if(S.matrixed_sections == MATRIX_GREEN || S.matrixed_sections == MATRIX_RED_GREEN || S.matrixed_sections == MATRIX_GREEN_BLUE || S.matrixed_sections == MATRIX_ALL)
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[secondary_string]]00")
+ else
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("00000000")
+ if(S.matrixed_sections == MATRIX_BLUE || S.matrixed_sections == MATRIX_RED_BLUE || S.matrixed_sections == MATRIX_GREEN_BLUE || S.matrixed_sections == MATRIX_ALL)
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[tertiary_string]]00")
+ else
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("00000000")
+ accessory_colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
+ for(var/index in 1 to accessory_colorlist.len)
+ accessory_colorlist[index] /= 255
+ accessory_overlay.color = list(accessory_colorlist)
if(HAIR)
if(hair_color == "mutcolor")
@@ -820,7 +846,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(bodypart == "tail")
accessory_overlay.icon_state = "m_tail_husk_[layertext]"
if(S.color_src == MATRIXED)
- accessory_overlay.color = colorlist
+ var/list/accessory_colorlist = list()
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[primary_string]]00")
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[secondary_string]]00")
+ accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[tertiary_string]]00")
+ accessory_colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
+ for(var/index in 1 to accessory_colorlist.len)
+ accessory_colorlist[index] /= 255
+ accessory_overlay.color = list(accessory_colorlist)
if(OFFSET_MUTPARTS in H.dna.species.offset_features)
accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
@@ -837,23 +870,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(S.center)
extra_accessory_overlay = center_image(extra_accessory_overlay, S.dimension_x, S.dimension_y)
-
switch(S.extra_color_src) //change the color of the extra overlay
if(MUTCOLORS)
if(fixed_mut_color)
extra_accessory_overlay.color = "#[fixed_mut_color]"
else
- extra_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
+ extra_accessory_overlay.color = "#[H.dna.features[secondary_string]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
extra_accessory_overlay.color = "#[fixed_mut_color2]"
else
- extra_accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
+ extra_accessory_overlay.color = "#[H.dna.features[secondary_string]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
extra_accessory_overlay.color = "#[fixed_mut_color3]"
else
- extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
+ extra_accessory_overlay.color = "#[H.dna.features[secondary_string]]"
if(HAIR)
if(hair_color == "mutcolor")
extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
@@ -889,17 +921,17 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(fixed_mut_color)
extra2_accessory_overlay.color = "#[fixed_mut_color]"
else
- extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
+ extra2_accessory_overlay.color = "#[H.dna.features[tertiary_string]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
extra2_accessory_overlay.color = "#[fixed_mut_color2]"
else
- extra2_accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
+ extra2_accessory_overlay.color = "#[H.dna.features[tertiary_string]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
extra2_accessory_overlay.color = "#[fixed_mut_color3]"
else
- extra2_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
+ extra2_accessory_overlay.color = "#[H.dna.features[tertiary_string]]"
if(HAIR)
if(hair_color == "mutcolor3")
extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
@@ -916,7 +948,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
standing += extra2_accessory_overlay
-
H.overlays_standing[layernum] = standing
H.apply_overlay(BODY_BEHIND_LAYER)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 7d7d420128..f85efcf7f6 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -669,6 +669,7 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
//produces a key based on the human's limbs
/mob/living/carbon/human/generate_icon_render_key()
. = "[dna.species.mutant_bodyparts["limbs_id"]]"
+ . += "[dna.features["color_scheme"]]"
if(dna.check_mutation(HULK))
. += "-coloured-hulk"
@@ -708,6 +709,11 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
. += "-[BP.dmg_overlay_type]"
if(BP.body_markings)
. += "-[BP.body_markings]"
+ if(length(BP.markings_color) && length(BP.markings_color[1]))
+ for(var/color in BP.markings_color[1])
+ . += "-[color]"
+ if(BP.icon)
+ . += "-[BP.icon]"
else
. += "-no_marking"
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index beef8559a4..f706dd10d9 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -639,7 +639,11 @@
//body marking memes
var/list/colorlist = list()
+ //var/advanced_color_system = (H.dna.features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
colorlist.Cut()
+ //colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_primary"]]00") : ReadRGB("[H.dna.features["mcolor"]]00")
+ //colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_secondary"]]00") : ReadRGB("[H.dna.features["mcolor2"]]00")
+ //colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_tertiary"]]00") : ReadRGB("[H.dna.features["mcolor3"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor2"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor3"]]00")
diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi
index fb864385c7..3b97c3b38b 100644
Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ
diff --git a/icons/mob/mutant_bodyparts.dmi b/icons/mob/mutant_bodyparts.dmi
index 1334ce9e0e..8d34fb8dc3 100644
Binary files a/icons/mob/mutant_bodyparts.dmi and b/icons/mob/mutant_bodyparts.dmi differ