From d432d690e3ded5cec64051ecd79d99b2732327a6 Mon Sep 17 00:00:00 2001 From: Penelope Haze Date: Sat, 9 May 2026 10:18:19 -0400 Subject: [PATCH 1/2] Fix nutriment being HAAAAARDEEEEEEER THAN STEEEEL --- code/modules/reagents/chems/chems_nutriment.dm | 1 + 1 file changed, 1 insertion(+) 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. From da51ea6028f7ce55b52bec4e3ed4d937903fb213 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 11 May 2026 18:10:46 +1000 Subject: [PATCH 2/2] Converting hnoll and kobaloi ears to use the ears/horns accessories. --- code/__defines/mobs.dm | 1 + code/modules/sprite_accessories/_accessory.dm | 33 ++++--- .../cosmetics/_accessory_cosmetics.dm | 1 + .../ears/_accessory_ears.dm | 11 +-- .../horns/_accessory_horns.dm | 1 + .../metadata/_accessory_metadata.dm | 1 + .../metadata/accessory_metadata_color.dm | 6 ++ .../tails/_accessory_tail.dm | 2 +- mods/content/fantasy/_fantasy.dme | 3 + mods/content/fantasy/datum/hnoll/bodytypes.dm | 8 +- mods/content/fantasy/datum/hnoll/ears.dm | 13 +++ mods/content/fantasy/datum/hnoll/markings.dm | 36 -------- .../fantasy/datum/kobaloi/bodytypes.dm | 5 +- mods/content/fantasy/datum/kobaloi/ears.dm | 26 ++++++ mods/content/fantasy/datum/kobaloi/horns.dm | 49 +++++++++++ .../content/fantasy/datum/kobaloi/markings.dm | 82 ------------------ mods/content/fantasy/datum/kobaloi/species.dm | 10 +++ mods/content/fantasy/icons/hnoll/ears.dmi | Bin 0 -> 576 bytes mods/content/fantasy/icons/hnoll/markings.dmi | Bin 6542 -> 5018 bytes mods/content/fantasy/icons/kobaloi/ears.dmi | Bin 0 -> 749 bytes .../fantasy/icons/kobaloi/markings.dmi | Bin 3691 -> 2126 bytes mods/species/drakes/species_bodytypes.dm | 15 ++-- 22 files changed, 151 insertions(+), 152 deletions(-) create mode 100644 mods/content/fantasy/datum/hnoll/ears.dm create mode 100644 mods/content/fantasy/datum/kobaloi/ears.dm create mode 100644 mods/content/fantasy/datum/kobaloi/horns.dm create mode 100644 mods/content/fantasy/icons/hnoll/ears.dmi create mode 100644 mods/content/fantasy/icons/kobaloi/ears.dmi 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/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 0000000000000000000000000000000000000000..f2a31ad3165999764cac707cacfc3e3934ad3c4e GIT binary patch literal 576 zcmV-G0>Ax09%Qx{G50003yNklwOz8&EVRaLSe&*zQV&l$=nYNWLeXO!nRS#T{bh)^7xS5eS4FTE`AwnP<7 z9g=>S{?h7Xt=(gU#VWS$%!aEWX5fKp){fUBF%^S1KB)J{o4CGqOCQ)iR znp3BfEEq>|-8#QaZuTDN7OK{rWlr8~aEMvbaQTCHT1gR=t% z&N7LJh=_>jL2;J3cb4h@_qvR`5c!48#;9@OajW-7+dV8LA|fIp`gfmQAsaP1FA=5y O0000|qq{5EB4tnv({(#s;kJtBSuR?$ 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 EFR7O;X#fBK diff --git a/mods/content/fantasy/icons/kobaloi/ears.dmi b/mods/content/fantasy/icons/kobaloi/ears.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d87b5abbf5fc435f5dcc2088c026ada833acb033 GIT binary patch literal 749 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 A)Bpeg literal 3691 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 B&6xlI 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,