diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 77b1dae70dd5..3838c2a29f2d 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -381,6 +381,7 @@ var/global/list/dexterity_levels = list( // Sprite accessory metadata types for shorter reference. #define SAM_COLOR /decl/sprite_accessory_metadata/color #define SAM_COLOR_INNER /decl/sprite_accessory_metadata/color/alt +#define SAM_COLOR_EXTRA /decl/sprite_accessory_metadata/color/extra #define SAM_GRADIENT /decl/sprite_accessory_metadata/gradient // Helpers for setting mob appearance. They are extremely ugly, hence the helpers. diff --git a/code/modules/reagents/chems/chems_nutriment.dm b/code/modules/reagents/chems/chems_nutriment.dm index e1b478c93fab..929c4307d091 100644 --- a/code/modules/reagents/chems/chems_nutriment.dm +++ b/code/modules/reagents/chems/chems_nutriment.dm @@ -15,6 +15,7 @@ affect_blood_on_ingest = 0 affect_blood_on_inhale = 0 opacity = 1.0 // liquids are half transparent by default; meat and etc should not be transparent + hardness = MAT_VALUE_SOFT // same softness as meat // Technically a room-temperature solid, but saves // repathing it to /solid all over the codebase. diff --git a/code/modules/sprite_accessories/_accessory.dm b/code/modules/sprite_accessories/_accessory.dm index 7993cfbb561f..9484749376f3 100644 --- a/code/modules/sprite_accessories/_accessory.dm +++ b/code/modules/sprite_accessories/_accessory.dm @@ -77,6 +77,11 @@ var/is_whitelisted /// A set of trait levels to check for. var/list/required_traits + /// A list of metadata types to attempt to apply after initial overlay gen. + var/list/additional_states = list( + (SAM_COLOR_INNER), + (SAM_COLOR_EXTRA) + ) /decl/sprite_accessory/Initialize() . = ..() @@ -205,9 +210,6 @@ accessory_icon = icon(use_icon, use_state) - // Inner overlay and color. - var/inner_color = LAZYACCESS(metadata, SAM_COLOR_INNER) - // Base icon and color. if(!isnull(color_blend)) var/decl/sprite_accessory_metadata/gradient/gradient_metadata = GET_DECL(SAM_GRADIENT) @@ -218,21 +220,28 @@ gradient_icon = null if(gradient_icon) gradient_icon.Blend(accessory_icon, ICON_AND) - if(!isnull(inner_color)) - gradient_icon.Blend(inner_color, color_blend) + var/gradient_color = LAZYACCESS(metadata, SAM_COLOR_INNER) + if(!isnull(gradient_color)) + gradient_icon.Blend(gradient_color, color_blend) var/color = LAZYACCESS(metadata, SAM_COLOR) if(!isnull(color)) accessory_icon.Blend(color, color_blend) if(gradient_icon) accessory_icon.Blend(gradient_icon, ICON_OVERLAY) - if(!isnull(inner_color)) - var/inner_state = "[use_state]_inner" - if(check_state_in_icon(inner_state, use_icon)) - var/icon/inner_icon = icon(use_icon, inner_state) - if(!isnull(color_blend)) - inner_icon.Blend(inner_color, color_blend) - accessory_icon.Blend(inner_icon, ICON_OVERLAY) + // Additional overlays based on metadata (inner and extra) + for(var/extra_metadata_type in additional_states) + var/decl/sprite_accessory_metadata/extra_metadata = RESOLVE_TO_DECL(extra_metadata_type) + if(!istype(extra_metadata) || !extra_metadata.additional_icon_state) + continue + var/extra_color = LAZYACCESS(metadata, SAM_COLOR_EXTRA) + if(!isnull(extra_color)) + var/extra_state = "[use_state][extra_metadata.additional_icon_state]" + if(check_state_in_icon(extra_state, use_icon)) + var/icon/extra_icon = icon(use_icon, extra_state) + if(!isnull(color_blend)) + extra_icon.Blend(extra_color, color_blend) + accessory_icon.Blend(extra_icon, ICON_OVERLAY) // Clip the icon if needed. if(mask_to_bodypart) diff --git a/code/modules/sprite_accessories/cosmetics/_accessory_cosmetics.dm b/code/modules/sprite_accessories/cosmetics/_accessory_cosmetics.dm index 91df82be7f3d..64a414b685cd 100644 --- a/code/modules/sprite_accessories/cosmetics/_accessory_cosmetics.dm +++ b/code/modules/sprite_accessories/cosmetics/_accessory_cosmetics.dm @@ -1,5 +1,6 @@ /decl/sprite_accessory_category/cosmetics name = "Cosmetics" + single_selection = FALSE default_accessory = /decl/sprite_accessory/cosmetics/none base_accessory_type = /decl/sprite_accessory/cosmetics uid = "acc_cat_cosmetics" diff --git a/code/modules/sprite_accessories/ears/_accessory_ears.dm b/code/modules/sprite_accessories/ears/_accessory_ears.dm index bc64873f19a0..c7827c1a8f6d 100644 --- a/code/modules/sprite_accessories/ears/_accessory_ears.dm +++ b/code/modules/sprite_accessories/ears/_accessory_ears.dm @@ -16,7 +16,7 @@ color_blend = ICON_MULTIPLY /decl/sprite_accessory/ears/none - name = "Default Ears" + name = "No Custom Ears" icon_state = "none" uid = "acc_ears_none" bodytypes_allowed = null @@ -28,12 +28,3 @@ body_flags_denied = null grooming_flags = null draw_accessory = FALSE - -/* -// Leaving this in for reference. -/decl/sprite_accessory/ears/debug - name = "Debug Two-Tone Ears" - uid = "acc_ears_debug" - icon_state = "debug" - accessory_metadata_types = list(SAM_COLOR, SAM_COLOR_INNER) -*/ \ No newline at end of file diff --git a/code/modules/sprite_accessories/horns/_accessory_horns.dm b/code/modules/sprite_accessories/horns/_accessory_horns.dm index 4526113a70f8..35386d8c336e 100644 --- a/code/modules/sprite_accessories/horns/_accessory_horns.dm +++ b/code/modules/sprite_accessories/horns/_accessory_horns.dm @@ -3,6 +3,7 @@ base_accessory_type = /decl/sprite_accessory/horns default_accessory = /decl/sprite_accessory/horns/none uid = "acc_cat_horns" + single_selection = FALSE /decl/sprite_accessory/horns hidden_by_gear_slot = slot_head_str diff --git a/code/modules/sprite_accessories/metadata/_accessory_metadata.dm b/code/modules/sprite_accessories/metadata/_accessory_metadata.dm index 94e0d0e3d4d9..98052400f4bc 100644 --- a/code/modules/sprite_accessories/metadata/_accessory_metadata.dm +++ b/code/modules/sprite_accessories/metadata/_accessory_metadata.dm @@ -3,6 +3,7 @@ decl_flags = DECL_FLAG_MANDATORY_UID var/name var/default_value + var/additional_icon_state /decl/sprite_accessory_metadata/proc/get_new_value_for(mob/user, decl/sprite_accessory/accessory_decl, current_value) return diff --git a/code/modules/sprite_accessories/metadata/accessory_metadata_color.dm b/code/modules/sprite_accessories/metadata/accessory_metadata_color.dm index e63739203cbb..b352584b40d2 100644 --- a/code/modules/sprite_accessories/metadata/accessory_metadata_color.dm +++ b/code/modules/sprite_accessories/metadata/accessory_metadata_color.dm @@ -16,3 +16,9 @@ /decl/sprite_accessory_metadata/color/alt name = "Secondary Color" uid = "sa_metadata_color_alt" + additional_icon_state = "_inner" + +/decl/sprite_accessory_metadata/color/extra + name = "Tertiary Color" + uid = "sa_metadata_color_extra" + additional_icon_state = "_extra" diff --git a/code/modules/sprite_accessories/tails/_accessory_tail.dm b/code/modules/sprite_accessories/tails/_accessory_tail.dm index 44d3c41facb1..a9f91eb34d29 100644 --- a/code/modules/sprite_accessories/tails/_accessory_tail.dm +++ b/code/modules/sprite_accessories/tails/_accessory_tail.dm @@ -37,7 +37,7 @@ var/icon_animation_states /decl/sprite_accessory/tail/none - name = "Default Tail" + name = "No Custom Tail" icon_state = "none" uid = "acc_tail_none" bodytypes_allowed = null diff --git a/mods/content/fantasy/_fantasy.dme b/mods/content/fantasy/_fantasy.dme index 39602d52bbc3..a02e6b80683f 100644 --- a/mods/content/fantasy/_fantasy.dme +++ b/mods/content/fantasy/_fantasy.dme @@ -15,6 +15,7 @@ #include "datum\species.dm" #include "datum\hnoll\bodytypes.dm" #include "datum\hnoll\culture.dm" +#include "datum\hnoll\ears.dm" #include "datum\hnoll\language.dm" #include "datum\hnoll\markings.dm" #include "datum\hnoll\organs.dm" @@ -22,6 +23,8 @@ #include "datum\kobaloi\bodytypes.dm" #include "datum\kobaloi\clothing.dm" #include "datum\kobaloi\culture.dm" +#include "datum\kobaloi\ears.dm" +#include "datum\kobaloi\horns.dm" #include "datum\kobaloi\language.dm" #include "datum\kobaloi\markings.dm" #include "datum\kobaloi\organs.dm" diff --git a/mods/content/fantasy/datum/hnoll/bodytypes.dm b/mods/content/fantasy/datum/hnoll/bodytypes.dm index 1edda9e8e998..04d6f5a80860 100644 --- a/mods/content/fantasy/datum/hnoll/bodytypes.dm +++ b/mods/content/fantasy/datum/hnoll/bodytypes.dm @@ -25,7 +25,13 @@ SAC_MARKINGS = list( /decl/sprite_accessory/marking/hnoll/belly = list(SAM_COLOR = "#b6b0a8"), /decl/sprite_accessory/marking/hnoll/spots/body = list(SAM_COLOR = "#46331d"), - /decl/sprite_accessory/marking/hnoll/ears = list(SAM_COLOR = "#46331d") + ), + SAC_EARS = list( + /decl/sprite_accessory/ears/hnoll = list( + SAM_COLOR = "#46331d", + SAM_COLOR_INNER = "#c0a88d", + SAM_COLOR_EXTRA = "#201406" + ) ) ) diff --git a/mods/content/fantasy/datum/hnoll/ears.dm b/mods/content/fantasy/datum/hnoll/ears.dm new file mode 100644 index 000000000000..e03cd248779c --- /dev/null +++ b/mods/content/fantasy/datum/hnoll/ears.dm @@ -0,0 +1,13 @@ +/decl/sprite_accessory/ears/hnoll + name = "Hnoll Wide Ears" + icon_state = "ears_plain" + mask_to_bodypart = FALSE + uid = "acc_marking_hnoll_wideears" + icon = 'mods/content/fantasy/icons/hnoll/ears.dmi' + species_allowed = list(/decl/species/hnoll::uid) + accessory_metadata_types = list(SAM_COLOR, SAM_COLOR_INNER, SAM_COLOR_EXTRA) + +/decl/sprite_accessory/ears/hnoll/narrow + name = "Hnoll Narrow Ears" + icon_state = "ears_narrow" + uid = "acc_marking_hnoll_narrowears" diff --git a/mods/content/fantasy/datum/hnoll/markings.dm b/mods/content/fantasy/datum/hnoll/markings.dm index e897347c5c81..01ca1409a8e6 100644 --- a/mods/content/fantasy/datum/hnoll/markings.dm +++ b/mods/content/fantasy/datum/hnoll/markings.dm @@ -174,42 +174,6 @@ color_blend = ICON_MULTIPLY uid = "acc_marking_hnoll_nose" -/decl/sprite_accessory/marking/hnoll/ears - name = "Hnoll Wide Ears" - icon_state = "ears_plain" - mask_to_bodypart = FALSE - uid = "acc_marking_hnoll_wideears" - -/decl/sprite_accessory/marking/hnoll/ears/wide_inner - name = "Hnoll Wide Ears Interior" - icon_state = "ears_plain_inner" - uid = "acc_marking_hnoll_wideears_inner" - -/decl/sprite_accessory/marking/hnoll/ears/wide_tuft - name = "Hnoll Wide Ears Tuft" - icon_state = "ears_plain_tuft" - uid = "acc_marking_hnoll_wideears_tuft" - -/decl/sprite_accessory/marking/hnoll/ears/narrow - name = "Hnoll Narrow Ears" - icon_state = "ears_narrow" - uid = "acc_marking_hnoll_narrowears" - -/decl/sprite_accessory/marking/hnoll/ears/narrow_inner - name = "Hnoll Narrow Ears Interior" - icon_state = "ears_narrow_inner" - uid = "acc_marking_hnoll_narrowears_inner" - -/decl/sprite_accessory/marking/hnoll/ears/narrow_tuft - name = "Hnoll Narrow Ears Tuft" - icon_state = "ears_narrow_tuft" - uid = "acc_marking_hnoll_narrowears_tuft" - -/decl/sprite_accessory/marking/hnoll/ears/earrings - name = "Hnoll Earrings" - icon_state = "earrings" - uid = "acc_marking_hnoll_earrings" - /decl/sprite_accessory/marking/hnoll/patches name = "Patches (Body)" icon_state = "patches" diff --git a/mods/content/fantasy/datum/kobaloi/bodytypes.dm b/mods/content/fantasy/datum/kobaloi/bodytypes.dm index 72740539a495..6e108582a5af 100644 --- a/mods/content/fantasy/datum/kobaloi/bodytypes.dm +++ b/mods/content/fantasy/datum/kobaloi/bodytypes.dm @@ -22,9 +22,8 @@ BP_TAIL = /obj/item/organ/external/tail/kobaloi ) default_sprite_accessories = list( - SAC_MARKINGS = list( - /decl/sprite_accessory/marking/kobaloi/left_ear = list(SAM_COLOR = "#8f974a"), - /decl/sprite_accessory/marking/kobaloi/right_ear = list(SAM_COLOR = "#8f974a") + SAC_EARS = list( + /decl/sprite_accessory/ears/kobaloi = list(SAM_COLOR = "#8f974a") ) ) eye_low_light_vision_effectiveness = 0.15 diff --git a/mods/content/fantasy/datum/kobaloi/ears.dm b/mods/content/fantasy/datum/kobaloi/ears.dm new file mode 100644 index 000000000000..1f82a13ca21e --- /dev/null +++ b/mods/content/fantasy/datum/kobaloi/ears.dm @@ -0,0 +1,26 @@ +/decl/sprite_accessory/ears/kobaloi + name = "Kobaloi Ears" + icon_state = "ears" + uid = "acc_kobaloi_ears" + icon = 'mods/content/fantasy/icons/kobaloi/ears.dmi' + species_allowed = list(/decl/species/kobaloi::uid) + +/decl/sprite_accessory/ears/kobaloi/floppy + name = "Floppy Kobaloi Ears" + icon_state = "floopy" + uid = "acc_kobaloi_ears_floppy" + +/decl/sprite_accessory/ears/kobaloi/stubs + name = "Kobaloi Ear Stubs" + icon_state = "stubs" + uid = "acc_kobaloi_ear_stubs" + +/decl/sprite_accessory/ears/kobaloi/left_stub + name = "Right Kobaloi Ear With Stub" + icon_state = "left_stub" + uid = "acc_kobaloi_ear_stub_left" + +/decl/sprite_accessory/ears/kobaloi/right_stub + name = "Left Kobaloi Ear With Stub" + icon_state = "right_stub" + uid = "acc_kobaloi_ear_stub_right" diff --git a/mods/content/fantasy/datum/kobaloi/horns.dm b/mods/content/fantasy/datum/kobaloi/horns.dm new file mode 100644 index 000000000000..d6bfc7e08914 --- /dev/null +++ b/mods/content/fantasy/datum/kobaloi/horns.dm @@ -0,0 +1,49 @@ +/decl/sprite_accessory/horns/kobaloi + abstract_type = /decl/sprite_accessory/horns/kobaloi + icon = 'mods/content/fantasy/icons/kobaloi/horns.dmi' + species_allowed = list(/decl/species/kobaloi::uid) + +/decl/sprite_accessory/horns/kobaloi/spikes + name = "Spikes" + icon_state = "spikes" + uid = "acc_kobaloi_spikes" + +/decl/sprite_accessory/horns/kobaloi/left_horn + name = "Left Horn" + icon_state = "left_horn" + uid = "acc_kobaloi_horn_left" + +/decl/sprite_accessory/horns/kobaloi/right_horn + name = "Right Horn" + icon_state = "right_horn" + uid = "acc_kobaloi_horn_right" + +/decl/sprite_accessory/horns/kobaloi/left_broken_horn + name = "Broken Left Horn" + icon_state = "left_broken_horn" + uid = "acc_kobaloi_horn_broken_left" + +/decl/sprite_accessory/horns/kobaloi/right_broken_horn + name = "Broken Right Horn" + icon_state = "right_broken_horn" + uid = "acc_kobaloi_horn_broken_right" + +/decl/sprite_accessory/horns/kobaloi/left_curved_horn + name = "Curved Left Horn" + icon_state = "left_curved_horn" + uid = "acc_kobaloi_horn_curved_left" + +/decl/sprite_accessory/horns/kobaloi/right_curved_horn + name = "Curved Right Horn" + icon_state = "right_curved_horn" + uid = "acc_kobaloi_horn_curved_right" + +/decl/sprite_accessory/horns/kobaloi/left_antler + name = "Left Antler" + icon_state = "left_antler" + uid = "acc_kobaloi_antler_left" + +/decl/sprite_accessory/horns/kobaloi/right_antler + name = "Right Antler" + icon_state = "right_antler" + uid = "acc_kobaloi_antler_right" diff --git a/mods/content/fantasy/datum/kobaloi/markings.dm b/mods/content/fantasy/datum/kobaloi/markings.dm index 23281846c75a..b81bcccbeef4 100644 --- a/mods/content/fantasy/datum/kobaloi/markings.dm +++ b/mods/content/fantasy/datum/kobaloi/markings.dm @@ -8,43 +8,11 @@ color_blend = ICON_MULTIPLY species_allowed = list(/decl/species/kobaloi::uid) body_parts = list(BP_HEAD) - mask_to_bodypart = FALSE - -/decl/sprite_accessory/marking/kobaloi/left_ear - name = "Left Ear" - icon_state = "left_ear" - uid = "acc_kobaloi_ear_left" - -/decl/sprite_accessory/marking/kobaloi/right_ear - name = "Right Ear" - icon_state = "right_ear" - uid = "acc_kobaloi_ear_right" - -/decl/sprite_accessory/marking/kobaloi/left_ear_floopy - name = "Floppy Left Ear" - icon_state = "left_ear_floopy" - uid = "acc_kobaloi_ear_left_floopy" - -/decl/sprite_accessory/marking/kobaloi/right_ear_floopy - name = "Floppy Right Ear" - icon_state = "right_ear_floopy" - uid = "acc_kobaloi_ear_right_floopy" - -/decl/sprite_accessory/marking/kobaloi/left_ear_stub - name = "Left Ear Stub" - icon_state = "left_ear_stub" - uid = "acc_kobaloi_ear_stub_left" - -/decl/sprite_accessory/marking/kobaloi/right_ear_stub - name = "Right Ear Stub" - icon_state = "right_ear_stub" - uid = "acc_kobaloi_ear_stub_right" /decl/sprite_accessory/marking/kobaloi/body name = "Mottling" icon_state = "mottling" uid = "acc_kobaloi_mottling" - mask_to_bodypart = TRUE body_parts = list(BP_CHEST, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG, BP_L_HAND, BP_R_HAND, BP_L_FOOT, BP_R_FOOT) /decl/sprite_accessory/marking/kobaloi/body/stripes @@ -62,59 +30,9 @@ name = "Muzzle" icon_state = "muzzle" uid = "acc_kobaloi_muzzle" - mask_to_bodypart = TRUE body_parts = list(BP_HEAD) /decl/sprite_accessory/marking/kobaloi/face/nose name = "Nose" icon_state = "nose" uid = "acc_kobaloi_nose" - -/decl/sprite_accessory/marking/kobaloi/horns - abstract_type = /decl/sprite_accessory/marking/kobaloi/horns - icon = 'mods/content/fantasy/icons/kobaloi/horns.dmi' - -/decl/sprite_accessory/marking/kobaloi/horns/spikes - name = "Spikes" - icon_state = "spikes" - uid = "acc_kobaloi_spikes" - -/decl/sprite_accessory/marking/kobaloi/horns/left_horn - name = "Left Horn" - icon_state = "left_horn" - uid = "acc_kobaloi_horn_left" - -/decl/sprite_accessory/marking/kobaloi/horns/right_horn - name = "Right Horn" - icon_state = "right_horn" - uid = "acc_kobaloi_horn_right" - -/decl/sprite_accessory/marking/kobaloi/horns/left_broken_horn - name = "Broken Left Horn" - icon_state = "left_broken_horn" - uid = "acc_kobaloi_horn_broken_left" - -/decl/sprite_accessory/marking/kobaloi/horns/right_broken_horn - name = "Broken Right Horn" - icon_state = "right_broken_horn" - uid = "acc_kobaloi_horn_broken_right" - -/decl/sprite_accessory/marking/kobaloi/horns/left_curved_horn - name = "Curved Left Horn" - icon_state = "left_curved_horn" - uid = "acc_kobaloi_horn_curved_left" - -/decl/sprite_accessory/marking/kobaloi/horns/right_curved_horn - name = "Curved Right Horn" - icon_state = "right_curved_horn" - uid = "acc_kobaloi_horn_curved_right" - -/decl/sprite_accessory/marking/kobaloi/horns/left_antler - name = "Left Antler" - icon_state = "left_antler" - uid = "acc_kobaloi_antler_left" - -/decl/sprite_accessory/marking/kobaloi/horns/right_antler - name = "Right Antler" - icon_state = "right_antler" - uid = "acc_kobaloi_antler_right" diff --git a/mods/content/fantasy/datum/kobaloi/species.dm b/mods/content/fantasy/datum/kobaloi/species.dm index c34156ee2a9a..b99b31683e52 100644 --- a/mods/content/fantasy/datum/kobaloi/species.dm +++ b/mods/content/fantasy/datum/kobaloi/species.dm @@ -16,6 +16,16 @@ preview_outfit = /decl/outfit/job/generic/fantasy base_external_prosthetics_model = null + available_accessory_categories = list( + SAC_HAIR, + SAC_FACIAL_HAIR, + SAC_HORNS, + SAC_EARS, + SAC_TAIL, + SAC_COSMETICS, + SAC_MARKINGS + ) + available_background_info = list( /decl/background_category/citizenship = list( /decl/background_detail/citizenship/other diff --git a/mods/content/fantasy/icons/hnoll/ears.dmi b/mods/content/fantasy/icons/hnoll/ears.dmi new file mode 100644 index 000000000000..f2a31ad31659 Binary files /dev/null and b/mods/content/fantasy/icons/hnoll/ears.dmi differ diff --git a/mods/content/fantasy/icons/hnoll/markings.dmi b/mods/content/fantasy/icons/hnoll/markings.dmi index 4b47735f58d9..641cb837823c 100644 Binary files a/mods/content/fantasy/icons/hnoll/markings.dmi and b/mods/content/fantasy/icons/hnoll/markings.dmi differ diff --git a/mods/content/fantasy/icons/kobaloi/ears.dmi b/mods/content/fantasy/icons/kobaloi/ears.dmi new file mode 100644 index 000000000000..d87b5abbf5fc Binary files /dev/null and b/mods/content/fantasy/icons/kobaloi/ears.dmi differ diff --git a/mods/content/fantasy/icons/kobaloi/markings.dmi b/mods/content/fantasy/icons/kobaloi/markings.dmi index 19d4319f583b..1b6289f8a360 100644 Binary files a/mods/content/fantasy/icons/kobaloi/markings.dmi and b/mods/content/fantasy/icons/kobaloi/markings.dmi differ diff --git a/mods/species/drakes/species_bodytypes.dm b/mods/species/drakes/species_bodytypes.dm index 9da2dbfd25e4..104eee0ce715 100644 --- a/mods/species/drakes/species_bodytypes.dm +++ b/mods/species/drakes/species_bodytypes.dm @@ -280,13 +280,14 @@ return ..() /decl/sprite_accessory/marking/grafadreka - name = "Drake Spines" - icon = 'mods/species/drakes/icons/markings.dmi' - icon_state = "spines" - uid = "acc_marking_drake_spines" - species_allowed = list(/decl/species/grafadreka::uid) - color_blend = ICON_MULTIPLY - body_parts = list( + name = "Drake Spines" + icon = 'mods/species/drakes/icons/markings.dmi' + icon_state = "spines" + uid = "acc_marking_drake_spines" + species_allowed = list(/decl/species/grafadreka::uid) + color_blend = ICON_MULTIPLY + mask_to_bodypart = FALSE + body_parts = list( BP_CHEST, BP_GROIN, BP_TAIL,