From b35f675d99c6759eeac05c8cc4ee0bb77d6d57a1 Mon Sep 17 00:00:00 2001 From: haha26 Date: Tue, 3 Aug 2021 19:37:48 -0400 Subject: [PATCH 1/5] Descriptions for ass sizes. Makes it so examining someone reflects the size of the ass they have. Also fixes the shape of bellies from "Pair" to "round", though this is not currently used anywhere. --- .../code/modules/arousal/organs/anus.dm | 25 +++++++++++++++---- .../code/modules/arousal/organs/belly.dm | 2 +- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/modular_citadel/code/modules/arousal/organs/anus.dm b/modular_citadel/code/modules/arousal/organs/anus.dm index 8e0f5564..df3bb00b 100644 --- a/modular_citadel/code/modules/arousal/organs/anus.dm +++ b/modular_citadel/code/modules/arousal/organs/anus.dm @@ -1,29 +1,44 @@ /obj/item/organ/genital/anus name = "anus" - desc = "You see a butt." + desc = "You see a pair of asscheeks." icon_state = "butt" icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' zone = "anus" slot = "anus" w_class = 3 size = 0 + var/size_name = "nonexistant" var/statuscheck = FALSE shape = "Pair" + can_masturbate_with = FALSE masturbation_verb = "massage" can_climax = FALSE - - - /obj/item/organ/genital/anus/on_life() if(QDELETED(src)) return if(!owner) return - /obj/item/organ/genital/anus/update_appearance() var/string + var/lowershape = lowertext(shape) + + //Reflect the size of dat ass on examine. + switch(size) + if(1) + size_name = "average" + if(2) + size_name = "sizable" + if(3) + size_name = "hefty" + if(4) + size_name = "godly" + else + size_name = "nonexistant" + + desc = "You see a [lowershape] of [size_name] asscheeks." + if(owner) var/mob/living/carbon/human/H = owner color = "#[skintone2hex(H.skin_tone)]" diff --git a/modular_citadel/code/modules/arousal/organs/belly.dm b/modular_citadel/code/modules/arousal/organs/belly.dm index 09473547..abf371b9 100644 --- a/modular_citadel/code/modules/arousal/organs/belly.dm +++ b/modular_citadel/code/modules/arousal/organs/belly.dm @@ -8,7 +8,7 @@ w_class = 3 size = 0 var/statuscheck = FALSE - shape = "Pair" + shape = "round" masturbation_verb = "massage" can_climax = FALSE var/sent_full_message = TRUE //defaults to 1 since they're full to start From 0a5cca9d336a2c9ce3a839d7d64d1a4ebe4e7502 Mon Sep 17 00:00:00 2001 From: haha26 Date: Tue, 3 Aug 2021 20:22:32 -0400 Subject: [PATCH 2/5] Fix hiding butt Should allow players to properly hide and reveal the new anus organ by bringing it in line with belly code. --- code/__HELPERS/mobs.dm | 5 +++-- code/modules/client/preferences.dm | 22 ++++++++++++++++++- code/modules/client/preferences_savefile.dm | 3 ++- .../code/modules/arousal/arousalhud.dm | 6 ++++- .../code/modules/arousal/organs/belly.dm | 1 + .../code/modules/arousal/organs/genitals.dm | 5 ++--- 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index af7e92b1..ed0434f2 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -182,7 +182,7 @@ "has_cock" = FALSE, "cock_shape" = pick(GLOB.cock_shapes_list), "cock_length" = 6, - "belly_size" = 1, + "belly_size" = 1, "butt_size" = 1, "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, "cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), @@ -190,10 +190,11 @@ "sheath_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "has_belly" = FALSE, "hide_belly" = FALSE, - "inflatable_belly" = FALSE, + "inflatable_belly" = FALSE, "belly_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "has_balls" = FALSE, "has_anus" = FALSE, + "butt_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "balls_internal" = FALSE, "balls_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "balls_amount" = 2, diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index b1c2229c..b23d6fd6 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -148,6 +148,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "inflatable_belly" = FALSE, "belly_color" = "fff", "has_anus" = FALSE, + "butt_color" = "fff", "has_balls" = FALSE, "balls_internal" = FALSE, "balls_color" = "fff", @@ -932,6 +933,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["has_anus"] == TRUE ? "Yes" : "No"]" if(features["has_anus"]) dat += "Butt Size: [features["butt_size"]]" + if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) + dat += "Color:
" + dat += "   (Skin tone overriding)
" + else + dat += "Color:
" + dat += "    Change
" + dat += "" dat += "" @@ -2274,6 +2282,17 @@ GLOBAL_LIST_EMPTY(preferences_datums) else to_chat(user,"Invalid color. Your color is not bright enough.") + if("butt_color") + var/new_bellycolor = input(user, "Butt Color:", "Character Preference") as color|null + if(new_bellycolor) + var/temp_hsv = RGBtoHSV(new_bellycolor) + if(new_bellycolor == "#000000") + features["butt_color"] = pref_species.default_color + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + features["butt_color"] = sanitize_hexcolor(new_bellycolor) + else + to_chat(user,"Invalid color. Your color is not bright enough.") + if("balls_shape") var/new_shape new_shape = input(user, "Testicle Type:", "Character Preference") as null|anything in GLOB.balls_shapes_list @@ -2356,7 +2375,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("butt_size") var/new_buttsize = input(user, "Butt size :\n(0-4)", "Character Preference") as num|null - features["butt_size"] = clamp(new_buttsize, 0, 4) + if(new_buttsize) + features["butt_size"] = clamp(new_buttsize, 0, 4) if("vag_shape") var/new_shape diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f4c91da8..5f0f1e4f 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -434,13 +434,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //womb features S["feature_has_womb"] >> features["has_womb"] S["feature_can_get_preg"] >> features["can_get_preg"] //hyperstation 13 - //belly features + //belly features S["feature_has_belly"] >> features["has_belly"] S["feature_belly_color"] >> features["belly_color"] S["feature_hide_belly"] >> features["hide_belly"] S["feature_inflatable_belly"] >> features["inflatable_belly"] //anus features S["feature_has_anus"] >> features["has_anus"] + S["feature_butt_color"] >> features["butt_color"] //flavor text //Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts: diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index cf903eb7..55d58183 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -44,7 +44,6 @@ dat += "(Shrink your belly down a size)
" - if(user.pulling) dat += "Climax over [user.pulling]" //you can cum on objects if you really want... dat += "(Orgasm over a person or object.)
" @@ -127,6 +126,11 @@ var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") E.toggle_visibility(picked_visibility) + if(href_list["hideanus"]) + var/obj/item/organ/genital/anus/A = usr.getorganslot("anus") + var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") + A.toggle_visibility(picked_visibility) + if(href_list["hidetesticles"]) var/obj/item/organ/genital/testicles/T = usr.getorganslot("testicles") var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") diff --git a/modular_citadel/code/modules/arousal/organs/belly.dm b/modular_citadel/code/modules/arousal/organs/belly.dm index abf371b9..c8d7636c 100644 --- a/modular_citadel/code/modules/arousal/organs/belly.dm +++ b/modular_citadel/code/modules/arousal/organs/belly.dm @@ -10,6 +10,7 @@ var/statuscheck = FALSE shape = "round" masturbation_verb = "massage" + can_masturbate_with = FALSE can_climax = FALSE var/sent_full_message = TRUE //defaults to 1 since they're full to start var/inflatable = FALSE //For inflation connoisseurs diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index a33c68d8..d8ede410 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -258,8 +258,6 @@ A.color = "#[skintone2hex(skin_tone)]" A.update() - - /mob/living/carbon/human/proc/give_breasts() if(!dna) return FALSE @@ -504,7 +502,8 @@ genital_overlay.color = "#[H.dna.features["vag_color"]]" if("belly_color") genital_overlay.color = "#[H.dna.features["belly_color"]]" - + if("butt_color") + genital_overlay.color = "#[H.dna.features["butt_color"]]" standing += genital_overlay From f2a1ebff339b6d6712f5b92c7a194fc29edcb3ee Mon Sep 17 00:00:00 2001 From: haha26 Date: Tue, 3 Aug 2021 21:22:23 -0400 Subject: [PATCH 3/5] Unlock butt size 5 Allows selection of butt size 5 from hyperstation/icons/obj/genitals/butt.dmi and reworks descriptions for it. --- code/modules/client/preferences.dm | 4 ++-- modular_citadel/code/modules/arousal/organs/anus.dm | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index b23d6fd6..69612caa 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2374,9 +2374,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["belly_size"] = clamp(new_bellysize, 1, 3) if("butt_size") - var/new_buttsize = input(user, "Butt size :\n(0-4)", "Character Preference") as num|null + var/new_buttsize = input(user, "Butt size :\n(0-5)", "Character Preference") as num|null if(new_buttsize) - features["butt_size"] = clamp(new_buttsize, 0, 4) + features["butt_size"] = clamp(new_buttsize, 0, 5) if("vag_shape") var/new_shape diff --git a/modular_citadel/code/modules/arousal/organs/anus.dm b/modular_citadel/code/modules/arousal/organs/anus.dm index df3bb00b..5be324d2 100644 --- a/modular_citadel/code/modules/arousal/organs/anus.dm +++ b/modular_citadel/code/modules/arousal/organs/anus.dm @@ -31,8 +31,10 @@ if(2) size_name = "sizable" if(3) - size_name = "hefty" + size_name = "squeezable" if(4) + size_name = "hefty" + if(5) size_name = "godly" else size_name = "nonexistant" From c07263a2acd13060f3962dad69ce4e542cd0993b Mon Sep 17 00:00:00 2001 From: haha26 Date: Wed, 4 Aug 2021 00:12:17 -0400 Subject: [PATCH 4/5] Fix genital layering Ensures butts are layered in front of uniforms, but behind hands. Fixes belly changes from fix-hiding-butt. --- code/modules/client/preferences.dm | 10 +++++----- modular_citadel/code/modules/arousal/organs/belly.dm | 2 +- .../code/modules/arousal/organs/genitals.dm | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 69612caa..1ba1677b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2283,13 +2283,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) to_chat(user,"Invalid color. Your color is not bright enough.") if("butt_color") - var/new_bellycolor = input(user, "Butt Color:", "Character Preference") as color|null - if(new_bellycolor) - var/temp_hsv = RGBtoHSV(new_bellycolor) - if(new_bellycolor == "#000000") + var/new_buttcolor = input(user, "Butt Color:", "Character Preference") as color|null + if(new_buttcolor) + var/temp_hsv = RGBtoHSV(new_buttcolor) + if(new_buttcolor == "#000000") features["butt_color"] = pref_species.default_color else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) - features["butt_color"] = sanitize_hexcolor(new_bellycolor) + features["butt_color"] = sanitize_hexcolor(new_buttcolor) else to_chat(user,"Invalid color. Your color is not bright enough.") diff --git a/modular_citadel/code/modules/arousal/organs/belly.dm b/modular_citadel/code/modules/arousal/organs/belly.dm index c8d7636c..b4fb7d02 100644 --- a/modular_citadel/code/modules/arousal/organs/belly.dm +++ b/modular_citadel/code/modules/arousal/organs/belly.dm @@ -8,7 +8,7 @@ w_class = 3 size = 0 var/statuscheck = FALSE - shape = "round" + shape = "Pair" masturbation_verb = "massage" can_masturbate_with = FALSE can_climax = FALSE diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index d8ede410..d832c28a 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -472,7 +472,7 @@ if(G.slot == "anus") //we have a different size system genital_overlay.icon = 'hyperstation/icons/obj/genitals/butt.dmi' genital_overlay.icon_state = "butt_[size]" - genital_overlay.layer = -FRONT_MUTATIONS_LAYER + genital_overlay.layer = -ID_LAYER //in front of suit, behind bellies. colourcode = "butt_color" if(use_skintones) //butts are forced a colour, either skin tones, or main colour. how ever, mutants use a darker version, because of their body tone. genital_overlay.color = "#[skintone2hex(H.skin_tone)]" From 0054c5b276ee03dca82933b4bb7f462bfca0919c Mon Sep 17 00:00:00 2001 From: haha26 Date: Wed, 4 Aug 2021 04:03:25 -0400 Subject: [PATCH 5/5] Rework genital layering Creates a new mutable icon for the ass to allow it to overlap hands from one direction, and be occluded by them from another. Butts DMI changed to reflect two sets of sprites, with directions split between them. Side-profiles trimmed to prevent it from occluding wrists. TL;DR: Quote sprited the Whole Ass so I'm going to Use the Whole Ass. --- hyperstation/icons/obj/genitals/butt.dmi | Bin 2528 -> 2714 bytes .../code/modules/arousal/organs/genitals.dm | 39 ++++++++++++++++-- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/hyperstation/icons/obj/genitals/butt.dmi b/hyperstation/icons/obj/genitals/butt.dmi index 08e60ea537a81387adc836fd9f84b79de9058520..e4b8f5c6b08306d738b86d26236e91212bb1c2b0 100644 GIT binary patch literal 2714 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 TjNG~O0028%xJ}imD-Zt!17IZx delta 2494 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 diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index d832c28a..98a5232c 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -395,6 +395,7 @@ dna.features["cock_color"] = dna.features["breasts_color"] return +//called every time players sprite changes, ie, moves item in hands or equiped item. /datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness if(!H)//no args CRASH("H = null") @@ -450,6 +451,10 @@ continue var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer) + + //creates another icon with mutable appearance, allows different layering depending on direction + var/mutable_appearance/genital_overlay_directional = mutable_appearance(S.icon, layer = -layer) + //genitals bigger than 11 inches / g-cup will appear over clothing, if accepted //otherwise, appear under clothing if(G.slot == "penis" || G.slot == "testicles") @@ -469,17 +474,28 @@ genital_overlay.icon_state = "belly_[size]" colourcode = "belly_color" - if(G.slot == "anus") //we have a different size system + //sizecheck added to prevent rendering blank icons + if(G.slot == "anus" && G.size > 0) //we have a different size system + genital_overlay.icon = 'hyperstation/icons/obj/genitals/butt.dmi' - genital_overlay.icon_state = "butt_[size]" + genital_overlay.icon_state = "butt_[size]_OTHER" genital_overlay.layer = -ID_LAYER //in front of suit, behind bellies. + + //creates directional layering by rendering twice. North has higher layer priority to occlude hands. + genital_overlay_directional.icon = 'hyperstation/icons/obj/genitals/butt.dmi' + genital_overlay_directional.icon_state = "butt_[size]_NORTH" + genital_overlay_directional.layer = -NECK_LAYER + colourcode = "butt_color" if(use_skintones) //butts are forced a colour, either skin tones, or main colour. how ever, mutants use a darker version, because of their body tone. genital_overlay.color = "#[skintone2hex(H.skin_tone)]" - genital_overlay.icon_state = "butt_[size]" + genital_overlay.icon_state = "butt_[size]_OTHER" + genital_overlay_directional.icon_state = "butt_[size]_NORTH" else genital_overlay.color = "#[H.dna.features["mcolor"]]" - genital_overlay.icon_state = "butt_[size]_m" + genital_overlay.icon_state = "butt_[size]_OTHER_m" + genital_overlay_directional.icon_state = "butt_[size]_NORTH_m" + if(S.center) genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) @@ -507,6 +523,21 @@ standing += genital_overlay + //check whether or not there is a directional overlay + if(genital_overlay_directional) + if(S.center) + genital_overlay_directional = center_image(genital_overlay_directional, S.dimension_x, S.dimension_y) + + if(use_skintones && H.dna.features["genitals_use_skintone"]) + genital_overlay_directional.color = "#[skintone2hex(H.skin_tone)]" + if (colourtint) + genital_overlay_directional.color = "#[colourtint]" + else + genital_overlay_directional.color = "#[H.dna.features["butt_color"]]" + + standing += genital_overlay_directional + + if(LAZYLEN(standing)) H.overlays_standing[layer] = standing.Copy() standing = list()