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