diff --git a/code/citadel/cit_arousal.dm b/code/citadel/cit_arousal.dm
index d0268d0bec..a69411f32b 100644
--- a/code/citadel/cit_arousal.dm
+++ b/code/citadel/cit_arousal.dm
@@ -254,16 +254,34 @@
"You cum into [SC].", \
"You have relieved yourself.")
finished = 1
-
+
+ if(/obj/item/organ/genital/vagina)
+ var/obj/item/organ/genital/vagina/V = SG
+ if(!V.linked_womb)
+ src << "No womb!"
+ return
+ fluid_source = V.linked_womb.reagents
+ total_cum = fluid_source.total_volume
+ if(into_container)//into a glass or beaker or whatever
+ src.visible_message("[src] starts fingering their vagina over [SC].", \
+ "You start fingering over [SC.name].", \
+ "You start masturbating.")
+ if(do_after(src, mb_time, target = src) && in_range(src, SC))
+ fluid_source.trans_to(SC, total_cum)
+ src.visible_message("[src] orgasms, [pick("cumming into", "emptying themself into")] [SC]!", \
+ "You cum into [SC].", \
+ "You have relieved yourself.")
+ finished = 1
+
else//not into a container
- src.visible_message("[src] starts [pick("jerking off","stroking")] their [pick(GLOB.dick_nouns)].", \
- "You start jerking off your [pick(GLOB.dick_nouns)].", \
+ src.visible_message("[src] starts fingering their vagina.", \
+ "You start fingering your vagina.", \
"You start masturbating.")
if(do_after(src, mb_time, target = src))
if(total_cum > 5)
fluid_source.reaction(src.loc, TOUCH, 1, 0)
fluid_source.clear_reagents()
- src.visible_message("[src] orgasms, [pick("shooting cum", "draining their balls")][istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!", \
+ src.visible_message("[src] orgasms, cumming[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!", \
"You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].", \
"You have relieved yourself.")
finished = 1
diff --git a/code/citadel/cit_reagents.dm b/code/citadel/cit_reagents.dm
index 794a3ad553..8718ebb19f 100644
--- a/code/citadel/cit_reagents.dm
+++ b/code/citadel/cit_reagents.dm
@@ -80,7 +80,7 @@
var/obj/effect/decal/cleanable/femcum/S = locate() in T
if(!S)
S = new(T)
- S.reagents.add_reagent("semen", reac_volume)
+ S.reagents.add_reagent("femcum", reac_volume)
if(data["blood_DNA"])
S.blood_DNA[data["blood_DNA"]] = data["blood_type"]
@@ -219,4 +219,4 @@
results = list("anaphro+" = 1)
required_reagents = list("anaphro" = 5, "acetone" = 1)
required_temp = 300
- mix_message = "The mixture thickens and heats up slighty..."
\ No newline at end of file
+ mix_message = "The mixture thickens and heats up slighty..."
diff --git a/code/citadel/organs/womb.dm b/code/citadel/organs/womb.dm
index 948bc33385..e1ea02a230 100644
--- a/code/citadel/organs/womb.dm
+++ b/code/citadel/organs/womb.dm
@@ -6,8 +6,28 @@
zone = "groin"
slot = "womb"
w_class = 3
+ var/internal = FALSE
fluid_id = "femcum"
+ producing = TRUE
var/obj/item/organ/genital/vagina/linked_vag
+
+/obj/item/organ/genital/womb/Initialize()
+ . = ..()
+ reagents.add_reagent(fluid_id, fluid_max_volume)
+
+/obj/item/organ/genital/womb/on_life()
+ if(QDELETED(src))
+ return
+ if(reagents && producing)
+ generate_femcum()
+
+/obj/item/organ/genital/womb/proc/generate_femcum()
+ reagents.maximum_volume = fluid_max_volume
+ update_link()
+ if(!linked_vag)
+ return FALSE
+ reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally
+ reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum
/obj/item/organ/genital/womb/update_link()
if(owner)
@@ -25,4 +45,4 @@
linked_vag = null
/obj/item/organ/genital/womb/Destroy()
- return ..()
\ No newline at end of file
+ return ..()