diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 5f6d0248..af7e92b1 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -183,6 +183,7 @@ "cock_shape" = pick(GLOB.cock_shapes_list), "cock_length" = 6, "belly_size" = 1, + "butt_size" = 1, "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, "cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "has_sheath" = FALSE, diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9bc42104..42ae307a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -134,6 +134,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "cock_shape" = "Human", "cock_length" = 6, "belly_size" = 1, + "butt_size" = 1, "cock_girth_ratio" = COCK_GIRTH_RATIO_DEF, "cock_color" = "fff", "has_sheath" = FALSE, @@ -923,8 +924,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" dat += APPEARANCE_CATEGORY_COLUMN - dat += "

Anus

" + dat += "

Butt

" dat += "[features["has_anus"] == TRUE ? "Yes" : "No"]" + if(features["has_anus"]) + dat += "Butt Size: [features["butt_size"]]" dat += "" dat += "" @@ -2347,6 +2350,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_bellysize) 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 + features["butt_size"] = clamp(new_buttsize, 0, 4) + if("vag_shape") var/new_shape new_shape = input(user, "Vagina Type", "Character Preference") as null|anything in GLOB.vagina_shapes_list @@ -2511,6 +2518,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["can_get_preg"] = FALSE if("has_anus") features["has_anus"] = !features["has_anus"] + if(features["has_anus"] == FALSE) + features["butt_size"] = 0 if("has_womb") features["has_womb"] = !features["has_womb"] if("can_get_preg") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 32c0f9e3..71379b48 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -402,6 +402,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_has_sheath"] >> features["sheath_color"] //belly size S["feature_belly_size"] >> features["belly_size"] + //belly size + S["feature_butt_size"] >> features["butt_size"] //balls features S["feature_has_balls"] >> features["has_balls"] S["feature_balls_color"] >> features["balls_color"] diff --git a/hyperstation/icons/obj/genitals/butt.dmi b/hyperstation/icons/obj/genitals/butt.dmi index cf74d737..08e60ea5 100644 Binary files a/hyperstation/icons/obj/genitals/butt.dmi and b/hyperstation/icons/obj/genitals/butt.dmi differ diff --git a/modular_citadel/code/modules/arousal/organs/anus.dm b/modular_citadel/code/modules/arousal/organs/anus.dm index 2652d361..5652aa84 100644 --- a/modular_citadel/code/modules/arousal/organs/anus.dm +++ b/modular_citadel/code/modules/arousal/organs/anus.dm @@ -1,18 +1,19 @@ /obj/item/organ/genital/anus name = "anus" - desc = "" + desc = "You see a butt." + icon_state = "butt" + icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' zone = "groin" slot = "anus" w_class = 3 size = 0 var/statuscheck = FALSE + shape = "Pair" masturbation_verb = "massage" - can_climax = FALSE //no poo poo 4 u - nochange = TRUE + can_climax = FALSE + -/obj/item/organ/genital/anus/Initialize() - . = ..() /obj/item/organ/genital/anus/on_life() if(QDELETED(src)) @@ -21,5 +22,15 @@ return +/obj/item/organ/genital/anus/update_appearance() + var/string + if(owner) + var/mob/living/carbon/human/H = owner + color = "#[skintone2hex(H.skin_tone)]" + if(ishuman(owner)) + icon_state = sanitize_text(string) + H.update_genitals() + + icon_state = sanitize_text(string) diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 9cba98e8..35564daa 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -251,6 +251,8 @@ return FALSE if(!getorganslot("anus")) var/obj/item/organ/genital/anus/A = new + if(dna.features["butt_size"]) + A.size = dna.features["butt_size"] A.Insert(src) if(A) A.color = "#[skintone2hex(skin_tone)]" @@ -443,6 +445,8 @@ S = GLOB.breasts_shapes_list[G.shape] if(/obj/item/organ/genital/belly) S = GLOB.breasts_shapes_list[G.shape] + if(/obj/item/organ/genital/anus) + S = GLOB.breasts_shapes_list[G.shape] if(!S || S.icon_state == "none") continue @@ -461,11 +465,24 @@ //Get the icon genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" colourcode = S.color_src + if(G.slot == "belly") //we have a different size system genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly.dmi' genital_overlay.icon_state = "belly_[size]" colourcode = "belly_color" + 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 + 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]" + else + genital_overlay.color = "#[H.dna.features["mcolor"]]" + genital_overlay.icon_state = "butt_[size]_m" + if(S.center) genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) @@ -488,6 +505,7 @@ if("belly_color") genital_overlay.color = "#[H.dna.features["belly_color"]]" + standing += genital_overlay if(LAZYLEN(standing)) diff --git a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm b/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm index ae86c097..8fe929e8 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm @@ -136,7 +136,7 @@ icon_state = "gaping" name = "Gaping" -//BREASTS BE HERE +//BELLY BE HERE /datum/sprite_accessory/belly icon = 'hyperstation/icons/obj/genitals/belly.dmi' icon_state = "belly" @@ -145,6 +145,15 @@ color_src = "belly_color" locked = 0 +//BUTT BE HERE +/datum/sprite_accessory/anus + icon = 'hyperstation/icons/obj/genitals/butt.dmi' + icon_state = "butt" + name = "butt" + gender_specific = 0 + color_src = "butt_color" + locked = 0 + //BREASTS BE HERE /datum/sprite_accessory/breasts icon = 'modular_citadel/icons/obj/genitals/breasts_onmob.dmi' diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index e2a7383d..1b1a2997 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -63,6 +63,8 @@ WRITE_FILE(S["feature_has_sheath"], features["sheath_color"]) //belly feature WRITE_FILE(S["feature_belly_size"], features["belly_size"]) + //butt feature + WRITE_FILE(S["feature_butt_size"], features["butt_size"]) //balls features WRITE_FILE(S["feature_has_balls"], features["has_balls"]) WRITE_FILE(S["feature_balls_color"], features["balls_color"])