diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index bdbc34af6..f55555ce4 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -27,31 +27,32 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS -#define MUTATIONS_LAYER 32 //mutations. Tk headglows, cold resistance glow, etc -#define GENITALS_BEHIND_LAYER 31 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer -#define BODY_BEHIND_LAYER 30 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 29 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define MARKING_LAYER 28 //Matrixed body markings because clashing with snouts? -#define BODY_ADJ_LAYER 27 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define BODY_LAYER 26 //underwear, undershirts, socks, eyes, lips(makeup) -#define FRONT_MUTATIONS_LAYER 25 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define DAMAGE_LAYER 24 //damage indicators (cuts and burns) -#define UNIFORM_LAYER 23 -#define ID_LAYER 22 -#define HANDS_PART_LAYER 21 -#define SHOES_LAYER 20 -#define GLOVES_LAYER 19 -#define EARS_LAYER 18 -#define BODY_TAUR_LAYER 17 -#define GENITALS_UNDER_LAYER 16 -#define SUIT_LAYER 15 -#define GLASSES_LAYER 14 -#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt? -#define SUIT_STORE_LAYER 12 -#define NECK_LAYER 11 -#define BACK_LAYER 10 -#define GENITALS_FRONT_LAYER 9 -#define HAIR_LAYER 8 //TODO: make part of head layer? +#define MUTATIONS_LAYER 33 //mutations. Tk headglows, cold resistance glow, etc +#define GENITALS_BEHIND_LAYER 32 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer +#define BODY_BEHIND_LAYER 31 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 30 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define MARKING_LAYER 29 //Matrixed body markings because clashing with snouts? +#define BODY_ADJ_LAYER 28 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define BODY_LAYER 27 //underwear, undershirts, socks, eyes, lips(makeup) +#define FRONT_MUTATIONS_LAYER 26 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define DAMAGE_LAYER 25 //damage indicators (cuts and burns) +#define UNIFORM_LAYER 24 +#define ID_LAYER 23 +#define HANDS_PART_LAYER 22 +#define SHOES_LAYER 21 +#define GLOVES_LAYER 20 +#define EARS_LAYER 19 +#define BODY_TAUR_LAYER 18 +#define GENITALS_UNDER_LAYER 17 +#define SUIT_LAYER 16 +#define GLASSES_LAYER 15 +#define BELT_LAYER 14 //Possible make this an overlay of somethign required to wear a belt? +#define SUIT_STORE_LAYER 13 +#define NECK_LAYER 12 +#define BACK_LAYER 11 +#define GENITALS_FRONT_LAYER 10 +#define HAIR_LAYER 9 //TODO: make part of head layer? +#define GENITALS_FRONT_OVER_HAIR_LAYER 8 #define FACEMASK_LAYER 7 #define HEAD_LAYER 6 #define HANDCUFF_LAYER 5 @@ -59,7 +60,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define HANDS_LAYER 3 #define BODY_FRONT_LAYER 2 #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 32 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 33 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 5a0999a73..ac70ef39f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -192,7 +192,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", - "ooc_text" = "" + "ooc_text" = "", + "front_genitals_over_hair" = FALSE ) /// Security record note section @@ -435,6 +436,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Random Body
" dat += "Always Random Body:[be_random_body ? "Yes" : "No"]
" dat += "
Cycle background:[bgstate]
" + dat += "Render front genitals over hair:[features["front_genitals_over_hair"] ? "Yes" : "No"]
" var/use_skintones = pref_species.use_skintones if(use_skintones) @@ -1681,6 +1683,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) return TRUE switch(href_list["task"]) + if("front_genitals_over_hair") + features["front_genitals_over_hair"] = !features["front_genitals_over_hair"] if("random") switch(href_list["preference"]) if("name") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 8c065c3ac..174cc9750 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -353,6 +353,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_human_tail"] >> features["tail_human"] S["feature_human_ears"] >> features["ears"] S["feature_deco_wings"] >> features["deco_wings"] + S["feature_front_genitals_over_hair"] >> features["feature_front_genitals_over_hair"] S["hide_ckey"] >> hide_ckey //saved per-character @@ -620,6 +621,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_moth_fluff"] , features["moth_fluff"]) WRITE_FILE(S["feature_moth_markings"] , features["moth_markings"]) WRITE_FILE(S["feature_deco_wings"] , features["deco_wings"]) + WRITE_FILE(S["feature_front_genitals_over_hair"], features["front_genitals_over_hair"]) //Custom names for(var/custom_name_id in GLOB.preferences_custom_names) diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 9324c5677..dd5099cbd 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -419,6 +419,7 @@ for(var/L in relevant_layers) //Less hardcode H.remove_overlay(L) + H.remove_overlay(GENITALS_FRONT_OVER_HAIR_LAYER) //start scanning for genitals for(var/obj/item/organ/O in H.internal_organs) @@ -432,6 +433,8 @@ //start applying overlays for(var/layer in relevant_layers) var/layertext = genitals_layertext(layer) + if(layer == GENITALS_FRONT_LAYER && H.dna.features["front_genitals_over_hair"]) + layer = GENITALS_FRONT_OVER_HAIR_LAYER for(var/obj/item/organ/genital/G in genitals_to_add) var/datum/sprite_accessory/S size = G.size @@ -544,7 +547,5 @@ if(LAZYLEN(standing)) H.overlays_standing[layer] = standing.Copy() + H.apply_overlay(layer) standing = list() - - for(var/L in relevant_layers) - H.apply_overlay(L)