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 4d5ad488..7822c7c4 100644
Binary files a/hyperstation/icons/obj/genitals/belly.dmi and b/hyperstation/icons/obj/genitals/belly.dmi differ
diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm
index 70230c7c..78ea6b35 100644
--- a/modular_citadel/code/modules/arousal/arousal.dm
+++ b/modular_citadel/code/modules/arousal/arousal.dm
@@ -395,6 +395,17 @@
if(!remote && !in_range(src, L))
return
if(do_after(src, mb_time, target = src))
+
+ if(!spillage) //hyper inflation
+ var/obj/item/organ/genital/belly/B = L.getorganslot("belly")
+ if(B)
+ if(B.inflatable && total_fluids > 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))