diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 2289135b0f..649e0a029b 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -132,7 +132,7 @@ #define FEMALE_UNIFORM_FULL 1 #define FEMALE_UNIFORM_TOP 2 -//flags for outfits that have mutantrace variants: These are hard sprited too. +//flags for outfits that have mutant race variants: Most of these require additional sprites to work. #define STYLE_DIGITIGRADE (1<<0) //jumpsuits, suits and shoes #define STYLE_MUZZLE (1<<1) //hats or masks #define STYLE_SNEK_TAURIC (1<<2) //taur-friendly suits @@ -141,8 +141,8 @@ #define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC) #define STYLE_NO_ANTHRO_ICON (1<<5) //When digis fit the default sprite fine and need no copypasted states. This is the case of skirts and winter coats, for example. #define USE_SNEK_CLIP_MASK (1<<6) -#define USE_HOOF_CLIP_MASK (1<<7) -#define USE_TAUR_CLIP_MASK (USE_SNEK_CLIP_MASK|USE_HOOF_CLIP_MASK) +#define USE_QUADRUPED_CLIP_MASK (1<<7) +#define USE_TAUR_CLIP_MASK (USE_SNEK_CLIP_MASK|USE_QUADRUPED_CLIP_MASK) //digitigrade legs settings. #define NOT_DIGITIGRADE 0 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index c1ca671044..bf6c0ac294 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -265,5 +265,14 @@ GLOBAL_LIST_INIT(bitfields, list( "STORAGE_LIMIT_MAX_W_CLASS" = STORAGE_LIMIT_MAX_W_CLASS, "STORAGE_LIMIT_COMBINED_W_CLASS" = STORAGE_LIMIT_COMBINED_W_CLASS, "STORAGE_LIMIT_VOLUME" = STORAGE_LIMIT_VOLUME - ) + ), + "mutantrace_variation" = list( + "STYLE_DIGITIGRADE" = STYLE_DIGITIGRADE, + "STYLE_MUZZLE" = STYLE_MUZZLE, + "STYLE_SNEK_TAURIC" = STYLE_SNEK_TAURIC, + "STYLE_PAW_TAURIC" = STYLE_PAW_TAURIC, + "STYLE_HOOF_TAURIC" = STYLE_HOOF_TAURIC, + "STYLE_NO_ANTHRO_ICON" = STYLE_NO_ANTHRO_ICON, + "USE_SNEK_CLIP_MASK" = USE_SNEK_CLIP_MASK, + "USE_QUADRUPED_CLIP_MASK" = USE_QUADRUPED_CLIP_MASK )) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index dfacff5c11..a28061db10 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -176,13 +176,13 @@ BLIND // can't see anything /proc/generate_alpha_masked_clothing(index,state,icon,female,alpha_masks) var/icon/I = icon(icon, state) if(female) - var/icon/female_s = icon('icons/mob/clothing/alpha_filters.dmi', "[(female == FEMALE_UNIFORM_FULL) ? "female_full" : "female_top"]") + var/icon/female_s = icon('icons/mob/clothing/alpha_masks.dmi', "[(female == FEMALE_UNIFORM_FULL) ? "female_full" : "female_top"]") I.Blend(female_s, ICON_MULTIPLY, -15, -15) //it's a 64x64 icon. if(alpha_masks) if(istext(alpha_masks)) alpha_masks = list(alpha_masks) for(var/alpha_state in alpha_masks) - var/icon/alpha = icon('icons/mob/clothing/alpha_filters.dmi', alpha_state) + var/icon/alpha = icon('icons/mob/clothing/alpha_masks.dmi', alpha_state) I.Blend(alpha, ICON_MULTIPLY, -15, -15) . = GLOB.alpha_masked_worn_icons[index] = fcopy_rsc(I) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index fe3aaf4bda..46520262d7 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -6,7 +6,7 @@ block_priority = BLOCK_PRIORITY_UNIFORM slot_flags = ITEM_SLOT_ICLOTHING armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - mutantrace_variation = STYLE_DIGITIGRADE + mutantrace_variation = STYLE_DIGITIGRADE|USE_TAUR_CLIP_MASK var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women var/has_sensor = HAS_SENSORS // For the crew computer var/random_sensor = TRUE @@ -262,10 +262,13 @@ fitted = NO_FEMALE_UNIFORM if(!alt_covers_chest) // for the special snowflake suits that expose the chest when adjusted body_parts_covered &= ~CHEST + mutantrace_variation &= ~USE_TAUR_CLIP_MASK //How are we supposed to see the uniform otherwise? else fitted = initial(fitted) if(!alt_covers_chest) body_parts_covered |= CHEST + if(initial(mutantrace_variation) & USE_TAUR_CLIP_MASK) + mutantrace_variation |= USE_TAUR_CLIP_MASK return adjusted diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index 7e37d83baa..3e7bc755cb 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -130,25 +130,27 @@ var/obj/item/clothing/accessory/maidapron/A = new (src) attach_accessory(A) +/obj/item/clothing/under/costume/singer + desc = "Just looking at this makes you want to sing." + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON + body_parts_covered = CHEST|GROIN|ARMS + alternate_worn_layer = ABOVE_SHOES_LAYER + can_adjust = FALSE + /obj/item/clothing/under/costume/singer/yellow name = "yellow performer's outfit" - desc = "Just looking at this makes you want to sing." icon_state = "ysing" item_state = "ysing" body_parts_covered = CHEST|GROIN|ARMS fitted = NO_FEMALE_UNIFORM - alternate_worn_layer = ABOVE_SHOES_LAYER can_adjust = FALSE /obj/item/clothing/under/costume/singer/blue name = "blue performer's outfit" - desc = "Just looking at this makes you want to sing." icon_state = "bsing" item_state = "bsing" - body_parts_covered = CHEST|GROIN|ARMS alternate_worn_layer = ABOVE_SHOES_LAYER fitted = FEMALE_UNIFORM_TOP - can_adjust = FALSE /obj/item/clothing/under/costume/geisha name = "geisha suit" @@ -205,7 +207,7 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/drfreeze name = "doctor freeze's jumpsuit" @@ -213,7 +215,7 @@ icon_state = "drfreeze" item_state = "drfreeze" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/lobster name = "foam lobster suit" @@ -222,7 +224,7 @@ item_state = "lobster" fitted = NO_FEMALE_UNIFORM can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/gondola name = "gondola hide suit" @@ -248,7 +250,7 @@ icon_state = "christmasmaler" item_state = "christmasmaler" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/christmas/green name = "green christmas suit" @@ -262,7 +264,7 @@ icon_state = "christmasfemaler" item_state = "christmasfemaler" body_parts_covered = CHEST|GROIN - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON|USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/christmas/croptop/green name = "green feminine christmas suit" @@ -287,7 +289,6 @@ item_state = "qipao_white" body_parts_covered = CHEST|GROIN can_adjust = FALSE - mutantrace_variation = NONE /obj/item/clothing/under/costume/qipao/red name = "Red Qipao" @@ -296,7 +297,6 @@ item_state = "qipao_red" body_parts_covered = CHEST|GROIN can_adjust = FALSE - mutantrace_variation = NONE /obj/item/clothing/under/costume/cheongsam name = "Black Cheongsam" @@ -305,7 +305,7 @@ item_state = "cheong" body_parts_covered = CHEST|GROIN can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/costume/cheongsam/white name = "White Cheongsam" @@ -323,7 +323,6 @@ item_state = "cheongr" body_parts_covered = CHEST|GROIN can_adjust = FALSE - mutantrace_variation = NONE /obj/item/clothing/under/costume/cloud name = "cloud" diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm index 5b3b84fd6e..470a3695fc 100644 --- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm +++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm @@ -30,6 +30,7 @@ item_state = "clown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE + mutantrace_variation = STYLE_DIGITIGRADE //The clown suit must look funny, no taur alpha masks where possible. /obj/item/clothing/under/rank/civilian/clown/blue name = "blue clown suit" @@ -90,6 +91,7 @@ desc = "A jolly dress, well suited to entertain your master, nuncle." icon_state = "jester" can_adjust = FALSE + mutantrace_variation = STYLE_DIGITIGRADE|USE_TAUR_CLIP_MASK /obj/item/clothing/under/rank/civilian/clown/jester/alt icon_state = "jester2" @@ -100,6 +102,7 @@ icon_state = "sexyclown" item_state = "sexyclown" can_adjust = FALSE + mutantrace_variation = STYLE_DIGITIGRADE|USE_TAUR_CLIP_MASK /obj/item/clothing/under/rank/civilian/clown/Initialize() . = ..() diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm index 0d6e6aea62..a614e2fcb3 100644 --- a/code/modules/clothing/under/jobs/command.dm +++ b/code/modules/clothing/under/jobs/command.dm @@ -46,4 +46,4 @@ icon_state = "lewdcap" item_state = "lewdcap" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK diff --git a/code/modules/clothing/under/jobs/medical.dm b/code/modules/clothing/under/jobs/medical.dm index 846aae4f18..f50e5161b6 100644 --- a/code/modules/clothing/under/jobs/medical.dm +++ b/code/modules/clothing/under/jobs/medical.dm @@ -22,7 +22,7 @@ icon_state = "cmoturtle" item_state = "w_suit" alt_covers_chest = TRUE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/rank/medical/geneticist desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 0acbafe183..997f10a379 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -102,7 +102,7 @@ mob_overlay_icon = 'goon/icons/mob/worn_js_rank.dmi' icon_state = "assistant" item_state = "gy_suit" - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/croptop name = "crop top" @@ -120,7 +120,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) slowdown = 1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK can_adjust = FALSE strip_delay = 80 var/next_extinguish = 0 @@ -195,7 +195,7 @@ icon_state = "squatteroutfit" item_state = "squatteroutfit" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/misc/blue_camo name = "russian blue camo" @@ -203,7 +203,7 @@ icon_state = "russobluecamo" item_state = "russobluecamo" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/misc/keyholesweater name = "keyhole sweater" @@ -237,7 +237,7 @@ icon_state = "tssuit" item_state = "r_suit" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/misc/poly_shirt name = "polychromic button-up shirt" diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index d0048326ff..8aa1ee429c 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -3,6 +3,7 @@ body_parts_covered = GROIN|LEGS fitted = NO_FEMALE_UNIFORM can_adjust = FALSE + mutantrace_variation = STYLE_DIGITIGRADE //how do they show up on taurs otherwise? /obj/item/clothing/under/pants/classicjeans name = "classic jeans" diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index b1194da479..426e0e28d9 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -5,6 +5,7 @@ body_parts_covered = GROIN fitted = NO_FEMALE_UNIFORM can_adjust = FALSE + mutantrace_variation = STYLE_DIGITIGRADE //how do they show up on taurs otherwise? /obj/item/clothing/under/shorts/red name = "red athletic shorts" diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm index a7e842282c..a71d306e27 100644 --- a/code/modules/clothing/under/skirt_dress.dm +++ b/code/modules/clothing/under/skirt_dress.dm @@ -182,7 +182,6 @@ icon_state = "bride_white" item_state = "bride_white" can_adjust = FALSE - mutantrace_variation = NONE /obj/item/clothing/under/dress/wedding/orange name = "orange wedding dress" @@ -213,7 +212,6 @@ desc = "A fancy skirt made with polychromic threads." icon_state = "polyskirt" item_state = "rainbow" - mutantrace_variation = NONE var/list/poly_colors = list("#FFFFFF", "#F08080", "#808080") /obj/item/clothing/under/dress/skirt/polychromic/ComponentInitialize() @@ -226,5 +224,4 @@ icon_state = "polypleat" item_state = "rainbow" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NONE poly_colors = list("#8CC6FF", "#808080", "#FF3535") diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 4fc62893b5..c0447a1cad 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -57,7 +57,6 @@ icon_state = "tactifool" item_state = "bl_suit" has_sensor = TRUE - mutantrace_variation = NONE armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/syndicate/sniper @@ -87,7 +86,7 @@ desc = "With a suit lined with this many pockets, you are ready to operate." icon_state = "syndicate_combat" can_adjust = FALSE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK /obj/item/clothing/under/syndicate/rus_army name = "advanced military tracksuit" @@ -106,5 +105,5 @@ has_sensor = NO_SENSORS armor = list("melee" = 15, "bullet" = 5, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) alt_covers_chest = TRUE - mutantrace_variation = NONE + mutantrace_variation = USE_TAUR_CLIP_MASK 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 c690e3c3f2..9d45963b77 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 @@ -19,7 +19,6 @@ ************** Taur Bodies **************** *******************************************/ -/datum/sprite_accessory/taur icon = 'modular_citadel/icons/mob/mam_taur.dmi' extra_icon = 'modular_citadel/icons/mob/mam_taur.dmi' extra2_icon = 'modular_citadel/icons/mob/mam_taur.dmi' @@ -30,9 +29,15 @@ relevant_layers = list(BODY_ADJ_UPPER_LAYER, BODY_FRONT_LAYER) 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_HOOF_CLIP_MASK - alpha_mask_state = "taur_mask_def" + var/hide_legs = USE_QUADRUPED_CLIP_MASK + alpha_mask_state = +/datum/sprite_accessory/taur/New() + switch(hide_legs) + if(USE_QUADRUPED_CLIP_MASK) + alpha_mask_state = "taur_mask_def" + if(USE_SNEK_CLIP_MASK) + alpha_mask_state = "taur_mask_naga" /datum/sprite_accessory/taur/none name = "None" @@ -93,7 +98,6 @@ icon_state = "naga" taur_mode = STYLE_SNEK_TAURIC hide_legs = USE_SNEK_CLIP_MASK - alpha_mask_state = "taur_mask_naga" /datum/sprite_accessory/taur/otie name = "Otie" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ce695f8fc8..e399ddf872 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -139,14 +139,8 @@ There are several things that need to be remembered: var/mutable_appearance/uniform_overlay - if(dna && dna.species.sexes) - if(dna.features["body_model"] == FEMALE && U.fitted != NO_FEMALE_UNIFORM) - uniform_overlay = U.build_worn_icon(UNIFORM_LAYER, alt_worn, FALSE, U.fitted, target_overlay, variant_flag, FALSE, mask) - - - if(!uniform_overlay) - uniform_overlay = U.build_worn_icon( UNIFORM_LAYER, alt_worn, FALSE, NO_FEMALE_UNIFORM, target_overlay, variant_flag, FALSE, mask) - + var/gendered = (dna?.species.sexes && dna.features["body_model"] == FEMALE) ? U.fitted : NO_FEMALE_UNIFORM + uniform_overlay = U.build_worn_icon( UNIFORM_LAYER, alt_worn, FALSE, gendered, target_overlay, variant_flag, FALSE, mask) if(OFFSET_UNIFORM in dna.species.offset_features) uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] diff --git a/icons/mob/clothing/alpha_filters.dmi b/icons/mob/clothing/alpha_filters.dmi deleted file mode 100644 index 2a88fe49ac..0000000000 Binary files a/icons/mob/clothing/alpha_filters.dmi and /dev/null differ diff --git a/icons/mob/clothing/alpha_masks.dmi b/icons/mob/clothing/alpha_masks.dmi new file mode 100644 index 0000000000..28f6069cea Binary files /dev/null and b/icons/mob/clothing/alpha_masks.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index f6b1bd7965..b717b33c61 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/modular_citadel/icons/mob/mam_taur.dmi b/modular_citadel/icons/mob/mam_taur.dmi index 513281d24d..3625c293c9 100644 Binary files a/modular_citadel/icons/mob/mam_taur.dmi and b/modular_citadel/icons/mob/mam_taur.dmi differ