From 357749cd5f92b2737d90a6ca98acd72d8c0760c1 Mon Sep 17 00:00:00 2001 From: quotefox Date: Tue, 20 Jul 2021 11:59:33 +0100 Subject: [PATCH] Hyper butts players can now have larger asses. --- code/__HELPERS/mobs.dm | 1 + code/modules/client/preferences.dm | 11 ++++++++- code/modules/client/preferences_savefile.dm | 2 ++ hyperstation/icons/obj/genitals/butt.dmi | Bin 182 -> 2528 bytes .../code/modules/arousal/organs/anus.dm | 21 +++++++++++++----- .../code/modules/arousal/organs/genitals.dm | 18 +++++++++++++++ .../organs/genitals_sprite_accessories.dm | 11 ++++++++- .../modules/client/preferences_savefile.dm | 2 ++ 8 files changed, 59 insertions(+), 7 deletions(-) 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 cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f..08e60ea537a81387adc836fd9f84b79de9058520 100644 GIT binary patch literal 2528 zcmZ8gc{JOJ7XBrq6ve1+Xi-B;Rbxug4oOji)>3<|Lxjc>`!*U0)!ON3Q^rnsTh`^Ww6z2|=C+;i{!(rm4NIV2`01^~bz3v*LD z008ZWz`Ur?zMn2N_t^($+Zzto_EF$>ajLbM&*$@aJSvq+tEw0t9`^S3-rCw)Utedj zSPKga6B85rokK%I8yg!$BJsg= z?0o_#($3l*fHU6v?I)$bIk-fcA|nvtsL)7M2pRxli?XQCC6l1ieQODNk)aA;ARkk8a%&(Z@j#kA?~Uh8gJ9quK|5o3ePRC1>B&KKnz>M7aOUa2K2R4&;B z8`GL&ZsRjB7C>4&A z7R~)OVIl+bU<*qX;r??x( z*otks!qLYzseZrYNaeKFZ_k~csSiOyxNaE&kK~v5Ed18_A6|UGCc1g09BtEp#K3NP zOt_;1q*)DE=Sz+HvoNd_NNfwMtAdVZuND`1xOdEF6Or zyp$z-(2%m82a4ZN#B>x$XG2rK`UMHv@zs?Z%*DP}dd6Ct0)9l!Tt-t$&84}je%bNC zAGzLvU);R&4#4PNX6HSI6Klb#Oqm0i_pUqMXDPrEsz78_s>9q-1{;_Kgt?pbq|{d` zri|%6fF1m_dabwOp*v%T1*mryXmT3QZTei1u&#p4 z#(G0}3N~0|IZ7%uU@S2rdOWf$q=s!J;>%7vGE2W5FA_ z@SoVZK<8fTwvPwUCDIHyj5Y)4o46{aglyXw?ej{ZDCK*G!YB>8N^F3o@NF9Cv9SL1 z1SFq5%_LWcwg~Nf^sov3I{i2kq}1}%h&b1C<@m$T0V1s}d-9d-$Rqed%dTRZt8-dk zRUoaED&-SGk8l^V8rOeS8!FQJ<(o63L- ztO2V;9pFue>aM}tdQs@?jL{@1nmlyw%2&zltAzjQ`}*k16dM&&|httQD6NN z$k&F>FWfsPlKXu#$m`_YpF71loGGI~%CT<-+SrB$DW!*n$?d+~&vJo5-?#*FMycXP z#UHR~z2U?v^&yJhvTW1(9Z*^ho@4cluB&5#Lvj}2ja}~O6>JNZjZ-LEJi2S=Hk3cO z&glc+!!yNWeLfMl++Cfotdt+ z1-EzZ#j|c}clLcb_$RI6q^^#!2TY4YOo7=AOc-V0&RcP?{;#O8TD7GkpMKEfruGZ9Twwb@B0 zW{EbLi8M@h*ikq;NhL*b(kL&->DZAsA*(v36_1KPS!RUB#>IIsrLq6MGYI{>P^TgjOOMF3Etl=h%x)n>*w z#PZ~mNfPxHH-s+mQO0(v%z{y&lBDW{2F4BP7qefiGJ z`O(ExC$U}q>gp_-q9RE}od#76bC8yE8;!VLJr*R0wDa7adeaYc?_)R`M&_+oedWas z*gPv4UBZN7jP&dJV4UByMFAN|C9fl&k9hk%w86zysblCSv2<*}Gr zcAnVuvG>E=#TP(_cLV)%=O)V5FU`6bY_=AxU}iwf#VJx>C0qL$Bia-@t>tHqagnEP z`i*;YRgAVgzqCl^d1`oYf`bpmTWjRaZY4;AT zElftK&3P>Yysjut?C!Qiz7betFXjs$&w?CBNk}*eumumz$zb#CW#j|@)jMLQofdqQ zoIbE!2c`zw1bae?I*>YvF&6^es#OXaWK@!x|rhUGJ`Ghr&pq9A^8q z=9NlbobFY@ti_&dQR!R-uoknG~(UiVXCly^cx#@f&_j>;!KH~w2k ba~W7*Ej}-pi6l1vyI^t6+O)y=*QCDy)#%nh literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf 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"])