From 12ee6c6f434f02d62b6ce6c3e0caface87b07a0e Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Mon, 10 May 2021 18:28:22 +0100
Subject: [PATCH] Cum inflation options and belly sizes.
fun
---
code/__HELPERS/mobs.dm | 2 ++
code/modules/client/preferences.dm | 16 +++++++++++++++-
code/modules/client/preferences_savefile.dm | 3 +++
.../code/modules/arousal/arousalhud.dm | 16 ++++++++++++++++
hyperstation/icons/obj/genitals/belly.dmi | Bin 1423 -> 3682 bytes
.../code/modules/arousal/arousal.dm | 13 +++++++++++++
.../code/modules/arousal/organs/belly.dm | 3 ++-
.../code/modules/arousal/organs/genitals.dm | 5 +++++
.../code/modules/client/loadout/hands.dm | 2 +-
.../modules/client/preferences_savefile.dm | 3 +++
10 files changed, 60 insertions(+), 3 deletions(-)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 0b61ad7d..8d6b706f 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -182,12 +182,14 @@
"has_cock" = FALSE,
"cock_shape" = pick(GLOB.cock_shapes_list),
"cock_length" = 6,
+ "belly_size" = 1,
"cock_girth_ratio" = COCK_GIRTH_RATIO_DEF,
"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,
"hide_belly" = FALSE,
+ "inflatable_belly" = FALSE,
"belly_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"has_balls" = FALSE,
"balls_internal" = FALSE,
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 6cbf07b5..ab40a77c 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -133,12 +133,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"has_cock" = FALSE,
"cock_shape" = "Human",
"cock_length" = 6,
+ "belly_size" = 1,
"cock_girth_ratio" = COCK_GIRTH_RATIO_DEF,
"cock_color" = "fff",
"has_sheath" = FALSE,
"sheath_color" = "fff",
"has_belly" = FALSE,
"hide_belly" = FALSE,
+ "inflatable_belly" = FALSE,
"belly_color" = "fff",
"has_balls" = FALSE,
"balls_internal" = FALSE,
@@ -907,6 +909,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "
Belly
"
dat += "[features["has_belly"] == TRUE ? "Yes" : "No"]"
if(features["has_belly"])
+ dat += "Belly Size: [features["belly_size"]]"
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
dat += "Color:
"
dat += " (Skin tone overriding)
"
@@ -914,6 +917,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Color:
"
dat += " Change
"
dat += "Hide on Round-Start:[features["hide_belly"] == 1 ? "Yes" : "No"]"
+ dat += "Inflation (Climax With):[features["inflatable_belly"] == 1 ? "Yes" : "No"]"
dat += ""
dat += ""
@@ -1500,7 +1504,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/font_color = "#AAAAFF"
if(initial(Q.value) != 0)
font_color = initial(Q.value) > 0 ? "#AAFFAA" : "#FFAAAA"
-
+
if(compressed_quirks) //Hyperstation Edit: smol text
if(quirk_conflict)
dat += "([quirk_cost]) [quirk_name])"
@@ -2331,6 +2335,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
else
to_chat(user,"Invalid color. Your color is not bright enough.")
+ if("belly_size")
+ var/new_bellysize = input(user, "Belly size :\n(1-3)", "Character Preference") as num|null
+ if(new_bellysize)
+ features["belly_size"] = clamp(new_bellysize, 1, 3)
+
if("vag_shape")
var/new_shape
new_shape = input(user, "Vagina Type", "Character Preference") as null|anything in GLOB.vagina_shapes_list
@@ -2465,6 +2474,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["has_belly"] = !features["has_belly"]
if(features["has_belly"] == FALSE)
features["hide_belly"] = FALSE
+ features["inflatable_belly"] = FALSE
+ features["belly_size"] = 1
+
+ if("inflatable_belly")
+ features["inflatable_belly"] = !features["inflatable_belly"]
if("hide_belly")
features["hide_belly"] = !features["hide_belly"]
if("has_balls")
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index c44e0493..20d7e445 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -400,6 +400,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_cock_length"] >> features["cock_length"]
S["feature_cock_girth"] >> features["cock_girth"]
S["feature_has_sheath"] >> features["sheath_color"]
+ //belly size
+ S["feature_belly_size"] >> features["belly_size"]
//balls features
S["feature_has_balls"] >> features["has_balls"]
S["feature_balls_color"] >> features["balls_color"]
@@ -425,6 +427,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
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"]
//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 bc137c2f..92850f06 100644
--- a/hyperstation/code/modules/arousal/arousalhud.dm
+++ b/hyperstation/code/modules/arousal/arousalhud.dm
@@ -36,6 +36,13 @@
dat += "Kiss"
dat += "(Requires a partner)
"
+ var/obj/item/organ/genital/belly/Belly = user.getorganslot("belly")
+ if(Belly)
+ if(Belly.inflatable)
+ dat += "Deflate belly"
+ dat += "(Shrink your belly down a size)
"
+
+
if(user.pulling)
dat += "Climax over [user.pulling]" //you can cum on objects if you really want...
@@ -187,6 +194,15 @@
to_chat(usr, "You cannot do this alone!")
return
+ if(href_list["shrink_belly"])
+ var/obj/item/organ/genital/belly/E = usr.getorganslot("belly")
+ if(E.size > 0)
+ to_chat(usr, "You feel your belly diminish.")
+ E.size -= 1
+ H.update_genitals()
+ else
+ to_chat(usr, "Your belly is already at the minimum size! ")
+
if(href_list["removecondom"])
H.menuremovecondom()
diff --git a/hyperstation/icons/obj/genitals/belly.dmi b/hyperstation/icons/obj/genitals/belly.dmi
index 4d5ad488f7e8ffa9137063deac1f4891538cba7b..7822c7c42e277dcd0c8836b5ef5828acf39a1a9c 100644
GIT binary patch
literal 3682
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
delta 1416
zcmV;31$X-59FGf-8Gi!+006uZmmdHC06$PnR7L-0Gyi5Y+O)F#{QUX(`M|)y($doG
z?CjL0qR!6FVPRqS_xJMh^5Wv+^z`)g_4U`+*WlpbwTWfR%gg^}GfF8Q<^TWy0d!JM
zQvg8b*k%9#0G@hOSad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ-5&r_2eo`Eh^5;&r`5f
zFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2wg|OiY
z3W`$8GE>Xr)AKX)(o6C)Qgd?h^HK{kD^hb3fod{yQxQg(U^gNOsHc)RRq+Nysxu@~
zoe?f|$_lQ2E`Q)40{{{PTZZ$Of_eY|1XM{xK~#90?VO8t+As`29pT!d4;tG4|JO-&
zx|P_HJP40&x;v!|h2;7fN05feAlw^W;SmIb;-Cg^#1v$SHUav)DvtCJFmn3HNWK7y>tLX637Wr6hMkoD+(JRwLfiu
zUBR_s_hra$`!}TtF)^ZFz+8$TZh)nHtN7GBkzXalSH+JF4~kzY!TY-9S$)XIsqnpy*jv*COozh1lwrcwaO
zuLRdq`ROQVPHuk$Gt7~C2>r~^sUnV(TIPpdynhJN97zI-Acd)=6v1Zs^7UUTJyruc
zKDHf+<2cU;`bVRv-_fWOlxap5tkX3QEJM3ib_aM6W@4kU&n09~-8QVB%?z4f#n|5V?CLaUfSe
z?tiE!^UUBh1L^o}6dzL~n2rhOGDv1jZG0(3j+S6ENexcaa6Az_HiE|^Vy4QaAH+6Z
zH;P(%Bfx7=iTw8$Hzl%*!-Nf}LeC@X(>1(+>t|*<4lw;%Wg)a2*|AER<8ptSm{n
ziy>$$Ru)A0TumWaaA3Iw%P5uvfTu{Bi+@zX2p?iNd_Z$5{;LHml+}!Q*+XYLpvh8M
z4V*7HwB)x0MgAYS~rYt8;K8{%0F)qSnHW<2a7vIL=Q%&QEdz>vkR@dWu(l>ym$zH&`+UXS)@Y
zEV-IMw=);vD}ALDVF0C?jKafmeD%Xd^ZLpq?bx1g$1EHy8nv_F|Es-oqx71UL)34t9q_x 80) //requires a big cumshot to expand.
+ if(B.size < 3)
+ B.size += 1
+ to_chat(src, "You feel your belly expand.")
+ else
+ to_chat(src, "You feel your belly strain.")
+
var/obj/item/organ/genital/penis/P = G
if (P.condom)//condomed.
src.condomclimax()
@@ -409,6 +420,7 @@
src.visible_message("[src] climaxes with someone, using [p_their()] [G.name]!", \
"You ejaculate with someone, using your [G.name].", \
"You have climaxed inside someone, using your [G.name].")
+ to_chat(L, "You feel someone ejeculate inside you.")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
@@ -423,6 +435,7 @@
L.mind.sexed = TRUE //sexed
to_chat(src, "You feel deep satisfaction with yourself.")
+ //Hyper - impreg
if(impreg)
//Role them odds, only people with the dicks can send the chance to the person with the settings enabled at the momment.
if(prob(L.impregchance))
diff --git a/modular_citadel/code/modules/arousal/organs/belly.dm b/modular_citadel/code/modules/arousal/organs/belly.dm
index c2afa6ad..09473547 100644
--- a/modular_citadel/code/modules/arousal/organs/belly.dm
+++ b/modular_citadel/code/modules/arousal/organs/belly.dm
@@ -6,12 +6,13 @@
zone = "chest"
slot = "belly"
w_class = 3
- size = 1
+ size = 0
var/statuscheck = FALSE
shape = "Pair"
masturbation_verb = "massage"
can_climax = FALSE
var/sent_full_message = TRUE //defaults to 1 since they're full to start
+ var/inflatable = FALSE //For inflation connoisseurs
/obj/item/organ/genital/belly/on_life()
diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm
index af313a3d..83bb73e8 100644
--- a/modular_citadel/code/modules/arousal/organs/genitals.dm
+++ b/modular_citadel/code/modules/arousal/organs/genitals.dm
@@ -223,6 +223,8 @@
return FALSE
if(!getorganslot("belly"))
var/obj/item/organ/genital/belly/B = new
+ if(dna.features["belly_size"])
+ B.size = dna.features["belly_size"]-1
B.Insert(src)
if(B)
if(dna.species.use_skintones && dna.features["genitals_use_skintone"])
@@ -234,6 +236,9 @@
if(dna.features["hide_belly"]) //autohide bellies if they have the option ticked.
B.toggle_visibility("Always hidden")
+ if(dna.features["inflatable_belly"]) //autohide bellies if they have the option ticked.
+ B.inflatable = TRUE
+
/mob/living/carbon/human/proc/give_breasts()
diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm
index d9f99700..cdd9b3af 100644
--- a/modular_citadel/code/modules/client/loadout/hands.dm
+++ b/modular_citadel/code/modules/client/loadout/hands.dm
@@ -72,7 +72,7 @@
path = /obj/item/shield/riot/roman/fake
cost = 2
-/datum/gear/romanshield
+/datum/gear/cheeseburger
name = "cheeseburger backpack"
category = SLOT_HANDS
path = /obj/item/storage/backpack/cheeseburgerbackpack
diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm
index 6083a746..7b09b997 100644
--- a/modular_citadel/code/modules/client/preferences_savefile.dm
+++ b/modular_citadel/code/modules/client/preferences_savefile.dm
@@ -61,6 +61,8 @@
WRITE_FILE(S["feature_cock_length"], features["cock_length"])
WRITE_FILE(S["feature_cock_girth"], features["cock_girth"])
WRITE_FILE(S["feature_has_sheath"], features["sheath_color"])
+ //belly feature
+ WRITE_FILE(S["feature_belly_size"], features["belly_size"])
//balls features
WRITE_FILE(S["feature_has_balls"], features["has_balls"])
WRITE_FILE(S["feature_balls_color"], features["balls_color"])
@@ -93,6 +95,7 @@
WRITE_FILE(S["feature_has_belly"], features["has_belly"])
WRITE_FILE(S["feature_belly_color"], features["belly_color"])
WRITE_FILE(S["feature_hide_belly"], features["hide_belly"])
+ WRITE_FILE(S["feature_inflatable_belly"], features["inflatable_belly"])
//gear loadout
if(islist(chosen_gear))