From d1f8f37c327aab446db7e42a809560fac53bbee9 Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Mon, 25 Jan 2021 18:34:52 +0000
Subject: [PATCH] Bellies + Genitals hide fix
Can now how have bellies
---
code/__HELPERS/mobs.dm | 2 +
code/modules/client/preferences.dm | 26 ++++++++++
code/modules/client/preferences_savefile.dm | 3 ++
.../code/modules/arousal/arousalhud.dm | 9 ++++
hyperstation/icons/obj/genitals/belly.dmi | Bin 0 -> 1135 bytes
.../code/modules/arousal/organs/belly.dm | 47 ++++++++++++++++++
.../code/modules/arousal/organs/genitals.dm | 45 ++++++++++++++---
.../organs/genitals_sprite_accessories.dm | 9 ++++
.../modules/client/preferences_savefile.dm | 7 ++-
tgstation.dme | 1 +
10 files changed, 141 insertions(+), 8 deletions(-)
create mode 100644 hyperstation/icons/obj/genitals/belly.dmi
create mode 100644 modular_citadel/code/modules/arousal/organs/belly.dm
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 854fa01e..eb44679a 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -186,6 +186,8 @@
"cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"has_sheath" = FALSE,
"sheath_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
+ "has_belly" = FALSE,
+ "belly_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"has_balls" = FALSE,
"balls_internal" = FALSE,
"balls_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 1653fc96..a9a73b32 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -134,6 +134,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"cock_color" = "fff",
"has_sheath" = FALSE,
"sheath_color" = "fff",
+ "has_belly" = FALSE,
+ "belly_color" = "fff",
"has_balls" = FALSE,
"balls_internal" = FALSE,
"balls_color" = "fff",
@@ -891,6 +893,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Nothing?"
//This else is a safeguard for errors, and if it happened, they wouldn't be able to change this pref,
//DO NOT REMOVE IT UNLESS YOU HAVE A GOOD IDEA
+ dat += APPEARANCE_CATEGORY_COLUMN
+ dat += "
Belly
"
+ dat += "[features["has_belly"] == TRUE ? "Yes" : "No"]"
+ if(features["has_belly"])
+ if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
+ dat += "Color:
"
+ dat += " (Skin tone overriding)
"
+ else
+ dat += "Color:
"
+ dat += " Change
"
+
dat += ""
dat += ""
@@ -2170,6 +2183,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
else
to_chat(user,"Invalid color. Your color is not bright enough.")
+ if("belly_color")
+ var/new_bellycolor = input(user, "Belly Color:", "Character Preference") as color|null
+ if(new_bellycolor)
+ var/temp_hsv = RGBtoHSV(new_bellycolor)
+ if(new_bellycolor == "#000000")
+ features["belly_color"] = pref_species.default_color
+ else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
+ features["belly_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
@@ -2375,6 +2399,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["has_cock"] = !features["has_cock"]
if(features["has_cock"] == FALSE)
features["has_balls"] = FALSE
+ if("has_belly")
+ features["has_belly"] = !features["has_belly"]
if("has_balls")
features["has_balls"] = !features["has_balls"]
if("has_ovi")
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 1b33e6cb..bea01129 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -411,6 +411,9 @@ 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
+ //balls features
+ S["feature_has_belly"] >> features["has_belly"]
+ S["feature_belly_color"] >> features["belly_color"]
//flavor text
//Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts:
if((S["flavor_text"] != "") && (S["flavor_text"] != null) && S["flavor_text"]) //If old text isn't null and isn't "" but still exists.
diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm
index 15672682..da4acc80 100644
--- a/hyperstation/code/modules/arousal/arousalhud.dm
+++ b/hyperstation/code/modules/arousal/arousalhud.dm
@@ -26,6 +26,10 @@
if (B) //they have a boobiedoo
dat += "[B.mode == "hidden" ? "Breasts (Hidden)" : (B.mode == "clothes" ? "Breasts (Hidden by Clothes)" : (B.mode == "visable" ? "Breasts (Visable)" : "Breasts (Visable)"))]
"
+ var/obj/item/organ/genital/belly/E = user.getorganslot("belly")
+ if (E)
+ dat += "[E.mode == "hidden" ? "Belly (Hidden)" : (B.mode == "clothes" ? "Belly (Hidden by Clothes)" : (B.mode == "visable" ? "Belly (Visable)" : "Belly (Visable)"))]
"
+
dat += {"
Contexual Options
"}
//Options
dat += "Masturbate"
@@ -114,6 +118,11 @@
var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
B.toggle_visibility(picked_visibility)
+ if(href_list["hidebelly"])
+ var/obj/item/organ/genital/belly/E = usr.getorganslot("belly")
+ 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["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/hyperstation/icons/obj/genitals/belly.dmi b/hyperstation/icons/obj/genitals/belly.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..8402984ffe74e842a1a81e73f0b395101cf94278
GIT binary patch
literal 1135
zcmV-#1d#iQP)3~;(r!pE@BglQ
z1WsZbBuMQ2u`^buNyewu2S@^uVQkp2)od4g00zT{DRu*NC#6P2rnibd4l1FP=yW<+
z1ai);_3`mi^S@Nc0Z@3D=^g;T(#P3rLkN7nd|b{P6#s#|7%la2@n$}!^QZstpJ#0f
z%mMxbbIsA3P<>4P&-u@K3Fd?#w)Fq>Ft(q9@M-uL!gcL`=3#6+#1cd-LFBcIryj2E
zsx6T+?Ab>Np=60yCLuZMqFZO`SbnZN8m1gPNuCy&c;^c~4PmaAOJ5HL<-xf;%#r|I
z2=NO43w;^IVsm%`JVh5U!r&rRrXV_8dwE&t>-1F86${MS1OA`O4MB8{@roa0!CdbK
z@Bo0UaHN4N07jB}08nWQy>p4k^N{?f5Oc9cq6@%hfL8!|kO}{Hk8*^k5)h;egdiUj
zfRUyYZXr%-81cCP;2FmhWbo&DXQ9#U#t#7BZUq23djtr-ywH2M3LI55#UKuqbB!eQ
z$R7OiLVsbiduCDHFaTm&*ZB+EH8~Pfk2I1J!6>SLt^)@(jA`hAs{X=}xdG63=#y-d
zr0v$4{zBWrNbv#5t{ym5{e{NsT|jT^h)q&99PgAfQ_;JdUzCymf`czFrBv~+=-ur*
zC%eDZCSdD_bs9A;04=@g|2vfD`CNA{d~YDow<{X6m4Da<0-^nO;i3aBXpDSuT)qI{
z)P5EX@?;!RXUgvb*rzLmS|*(C7rNd-2;t{Pn}Enrb-BZEs+tZkfO>1)X`DK6J58Oj
zge{}o_Bj17T<(nCor9E7YD~00NTOYe4FK-Aa9{u+OZW3Gz~?m80Xa?I4l~Ba)*9s%
z;`j3?&%kMftXMOcdRG;|vb;e}r0ib;rR3@3{$NePwE)g&yr%Zv_&UbP47A;dQ;bP>
z&<5n)Of6MTqF%`KxWkzMqv?QT0qS2!tpSdHb^Vv@t%zD@_EtdC*!G_Zn*g}rHUNIp
zfg@Gg0&HBOe-6M!(hTy}7|5B)D&dzmotVSD$F~aYX#Nj7?6AWQo6NdD?BU> alt_titles_preferences
alt_titles_preferences = SANITIZE_LIST(alt_titles_preferences)
if(SSjob)
@@ -21,7 +21,7 @@
if(alt_titles_preferences[job.title])
if(!(alt_titles_preferences[job.title] in job.alt_titles))
alt_titles_preferences.Remove(job.title)
-
+
//gear loadout
var/text_to_load
S["loadout"] >> text_to_load
@@ -86,6 +86,9 @@
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
//custom job titles
WRITE_FILE(S["alt_titles_preferences"], alt_titles_preferences)
+ //belly
+ WRITE_FILE(S["feature_has_belly"], features["has_belly"])
+ WRITE_FILE(S["feature_belly_color"], features["belly_color"])
//gear loadout
if(islist(chosen_gear))
diff --git a/tgstation.dme b/tgstation.dme
index 5d5cd039..9ea813c0 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3160,6 +3160,7 @@
#include "modular_citadel\code\modules\admin\holder2.dm"
#include "modular_citadel\code\modules\admin\secrets.dm"
#include "modular_citadel\code\modules\arousal\arousal.dm"
+#include "modular_citadel\code\modules\arousal\organs\belly.dm"
#include "modular_citadel\code\modules\arousal\organs\breasts.dm"
#include "modular_citadel\code\modules\arousal\organs\eggsack.dm"
#include "modular_citadel\code\modules\arousal\organs\genitals.dm"