From 2c6e8fd87d98e1fbd1ed67f923fca20d529acc8d Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 16 Oct 2020 22:28:00 +0100 Subject: [PATCH] what if color was cool --- code/__DEFINES/citadel_defines.dm | 10 ++++ code/modules/client/preferences.dm | 36 +++++++++++++ code/modules/client/preferences_savefile.dm | 25 ++++++++- .../sprite_accessories/_sprite_accessories.dm | 1 + .../sprite_accessories/body_markings.dm | 5 ++ .../new_player/sprite_accessories/ears.dm | 47 ++++++++++++++++ .../new_player/sprite_accessories/frills.dm | 1 + .../sprite_accessories/ipc_synths.dm | 1 + .../sprite_accessories/legs_and_taurs.dm | 6 +++ .../new_player/sprite_accessories/snouts.dm | 53 ++++++++++++++++--- .../new_player/sprite_accessories/spines.dm | 1 + .../new_player/sprite_accessories/synthliz.dm | 10 ++++ .../new_player/sprite_accessories/tails.dm | 18 ++++++- .../mob/living/carbon/human/species.dm | 42 ++++++++++----- 14 files changed, 234 insertions(+), 22 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 923355b340..107e182f8d 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -114,3 +114,13 @@ //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_BLUE_GREEN "blue_green" +#define MATRIX_ALL "red_green_blue" +#define MATRIX_NONE "none" \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d817cc3a53..7832c79e18 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -552,6 +552,26 @@ 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 + //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_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/primary_feature = "[mutant_part]_primary" + dat += "Primary Color
" + dat += "    Change
" + if(accessory.color_src == MATRIXED || (accessory.extra && (accessory.extra_color_src == MUTCOLORS || accessory.extra_color_src == MUTCOLORS2 || accessory.extra_color_src == MUTCOLORS3))) + var/secondary_feature = "[mutant_part]_secondary" + dat += "Secondary Color
" + dat += "    Change
" + if(accessory.color_src == MATRIXED || (accessory.extra2 && (accessory.extra2_color_src == MUTCOLORS || accessory.extra2_color_src == MUTCOLORS2 || accessory.extra2_color_src == MUTCOLORS3))) + var/tertiary_feature = "[mutant_part]_tertiary" + dat += "Tertiary Color
" + dat += "    Change
" + mutant_category++ if(mutant_category >= MAX_MUTANT_ROWS) dat += "" @@ -2034,6 +2054,22 @@ 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","bodymarkings_primary","bodymarkings_secondary","bodymarkings_tertiary","ears_primary","ears_secondary","ears_tertiary","frills_primary"."frills_secondary","frills_tertiary","ipcantenna_primary","ipcantenna_secondary","ipcantenna_tertiary","taur_primary","taur_secondary","taur_tertiary","snout_primary","snout_secondary","snout_tertiaty","spines_primary","spines_secondary","spines_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.") + //Genital code if("cock_color") var/new_cockcolor = input(user, "Penis color:", "Character Preference","#"+features["cock_color"]) as color|null diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 3bad31a919..1f3762f8ad 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 39 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -226,6 +226,29 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car left_eye_color = "#BAB99E" right_eye_color = "#BAB99E" + if(current_version < 39) //extreme changes to how things are coloured + for(var/feature in features) + var/feature_type = features[feature] + var/ref_list = GLOB.mutant_reference_list[feature_type] + if(ref_list) + message_admins("ref list found") + var/datum/sprite_accessory/accessory = ref_list[feature] + if(accessory) + var/primary_string = "[feature_type]_primary" + var/secondary_string = "[feature_type]_secondary]" + var/tertiary_string = "[feature_type]_tertiary]" + if(accessory.color_src == MATRIXED) + features[primary_string] = features["mcolor"] + features[secondary_string] = features["mcolor2"] + features[tertiary_string] = features["mcolor3"] + else if(accessory.color_src == MUTCOLORS) + features[primary_string] = features["mcolor"] + else if(accessory.color_src == MUTCOLORS2) + features[secondary_string] = features["mcolor2"] + else if(accessory.color_src == MUTCOLORS3) + features[tertiary_string] = features["mcolor3"] + + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return 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 4cb8d080ff..86b0d5bb00 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..3fb73ce80e 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 = "bodymarkings" /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,8 @@ gender_specific = 0 icon = 'modular_citadel/icons/mob/mam_markings.dmi' recommended_species = list("mammal", "xeno", "slimeperson", "podweak") + mutant_part_string = "bodymarkings" + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/mam_body_markings/none name = "None" @@ -54,6 +58,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" 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..d5db676b73 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 **************** @@ -197,38 +218,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 +270,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 +290,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 +300,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 +330,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..1c434c9c2d 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 = "ipcantenna" /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..6c04e27783 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" @@ -174,10 +169,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 +188,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 +260,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 +292,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 +316,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 +335,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 +407,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 +432,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 d9e2de1525..554549c0c3 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 = "tail" //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,12 +111,14 @@ 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 + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/batl name = "Bat (Long)" @@ -139,12 +145,14 @@ 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 +171,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 +207,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" @@ -538,7 +552,7 @@ /datum/sprite_accessory/tails_animated/mam_tails_animated color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' - mutant_part_string = "tailwag" + mutant_part_string = "tail" //KEEP IT THE SAME 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) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 126d4401e0..2ec5b84cb9 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -775,6 +775,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(S.center) accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y) + var/primary_string = "[S.mutant_part_string]_primary" + var/secondary_string = "[S.mutant_part_string]_secondary" + var/tertiary_string = "[S.mutant_part_string]_tertiary" + if(!husk) if(!forced_colour) switch(S.color_src) @@ -784,20 +788,27 @@ 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() + 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(HAIR) if(hair_color == "mutcolor") @@ -820,7 +831,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 +855,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 +906,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 +933,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) standing += extra2_accessory_overlay - H.overlays_standing[layernum] = standing H.apply_overlay(BODY_BEHIND_LAYER)