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