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 8e0f55640..df3bb00b2 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 09473547b..abf371b91 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 af7e92b1e..ed0434f2f 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 b1c2229c3..b23d6fd6e 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 f4c91da80..5f0f1e4f8 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 cf903eb7a..55d58183e 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 abf371b91..c8d7636c9 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 a33c68d8f..d8ede4103 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 b23d6fd6e..69612caaa 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 df3bb00b2..5be324d23 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 69612caaa..1ba1677b0 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 c8d7636c9..b4fb7d02a 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 d8ede4103..d832c28ae 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 d832c28ae..98a5232c1 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()