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))