diff --git a/code/modules/arousal/organs/penis.dm b/code/modules/arousal/organs/penis.dm
index 5191b586b3..46dc8bb19c 100644
--- a/code/modules/arousal/organs/penis.dm
+++ b/code/modules/arousal/organs/penis.dm
@@ -31,12 +31,6 @@
update()
..()
-/obj/item/organ/genital/penis/get_fluid()
- if(linked_organ)
- return (clamp(linked_organ.fluid_rate * ((world.time - last_orgasmed) / (10 SECONDS)) * linked_organ.fluid_mult, 0, linked_organ.fluid_max_volume) / linked_organ.fluid_max_volume)
- else
- return (clamp(fluid_rate * ((world.time - last_orgasmed) / (10 SECONDS)) * fluid_mult, 0, fluid_max_volume) / fluid_max_volume)
-
/obj/item/organ/genital/penis/update_size(modified = FALSE)
if(length <= 0)//I don't actually know what round() does to negative numbers, so to be safe!!
if(owner)
diff --git a/modular_splurt/code/datums/genitals/genitals_interface.dm b/modular_splurt/code/datums/genitals/genitals_interface.dm
index b521e6a31c..44fafca6bf 100644
--- a/modular_splurt/code/datums/genitals/genitals_interface.dm
+++ b/modular_splurt/code/datums/genitals/genitals_interface.dm
@@ -34,7 +34,6 @@
ui = new(user, src, "GenitalConfig", "Genitals")
ui.open()
-
/datum/genitals_menu/ui_data(mob/user)
. = ..()
var/mob/living/carbon/genital_holder = target || user
@@ -163,11 +162,17 @@
return FALSE
if(istype(genital, /obj/item/organ/genital/penis))
var/obj/item/organ/genital/penis/peepee = genital
- var/new_max_size = clamp(params["max_size"], peepee.length, INFINITY)
- peepee.max_length = new_max_size
+ if(params["max_size"])
+ var/new_max_size = clamp(params["max_size"], peepee.length, INFINITY)
+ peepee.max_length = new_max_size
+ else
+ genital.max_size = 0
else
- var/new_max_size = clamp(params["max_size"], genital.size, INFINITY)
- genital.max_size = new_max_size
+ if(params["max_size"])
+ var/new_max_size = clamp(params["max_size"], genital.size, INFINITY)
+ genital.max_size = new_max_size
+ else
+ genital.max_size = 0
genital.modify_size(0)
if("min_size" in params)
var/obj/item/organ/genital/genital = locate(params["genital"], self.internal_organs)
diff --git a/modular_splurt/code/game/objects/items.dm b/modular_splurt/code/game/objects/items.dm
index c320da9586..a39406bb68 100644
--- a/modular_splurt/code/game/objects/items.dm
+++ b/modular_splurt/code/game/objects/items.dm
@@ -55,10 +55,17 @@
return
if(locate(src.type) in target_organ.contents)
- to_chat(user, span_notice("\The [target]'s [target_organ] already has a rod inside!"))
+ if(user == target)
+ to_chat(user, span_notice("You already have a rod inside your [target_organ]!"))
+ else
+ to_chat(user, span_notice("\The [target]'s [target_organ] already has a rod inside!"))
return
- target.visible_message(span_warning("\The [user] is trying to insert a rod inside \the [target]!"),\
+ if(user == target)
+ target.visible_message(span_warning("\The [user] is trying to insert a rod inside themselves!"),\
+ span_warning("You try to insert a rod inside yourself!"))
+ else
+ target.visible_message(span_warning("\The [user] is trying to insert a rod inside \the [target]!"),\
span_warning("\The [user] is trying to insert a rod inside you!"))
if(!do_mob(user, target, 4 SECONDS))
@@ -81,15 +88,18 @@
return
if(locate(src.type) in target_organ.contents)
- to_chat(user, span_notice("\The [target]'s [target_organ] already has a vibrator inside!"))
+ if(user == target)
+ to_chat(user, span_notice("You already have a vibrator inside your [target_organ]!"))
+ else
+ to_chat(user, span_notice("\The [target]'s [target_organ] already has a vibrator inside!"))
return
- if(style == "long")
- target.visible_message(span_warning("\The [user] is trying to insert a vibrator inside \the [target]!"),\
- span_warning("\The [user] is trying to insert a vibrator inside you!"))
+ if(user == target)
+ target.visible_message(span_warning("\The [user] is trying to [style == "long" ? "insert" : "attach"] a vibrator [style == "long" ? "inside" : "to"] themselves!"),\
+ span_warning("You try to [style == "long" ? "insert" : "attach"] a vibrator [style == "long" ? "inside" : "to"] yourself!"))
else
- target.visible_message(span_userlove("\The [user] is trying to attach a vibrator to \the [target]!"),\
- span_warning("\The [user] is trying to attach a vibrator to you!"))
+ target.visible_message(span_warning("\The [user] is trying to [style == "long" ? "insert" : "attach"] a vibrator [style == "long" ? "inside" : "to"] \the [target]!"),\
+ span_warning("\The [user] is trying to [style == "long" ? "insert" : "attach"] a vibrator [style == "long" ? "inside" : "to"] you!"))
if(!do_mob(user, target, 5 SECONDS))
return
@@ -115,7 +125,11 @@
to_chat(user, span_warning("This genital can't be stuffed!"))
return
- target.visible_message(span_warning("\The [user] is trying to insert an egg inside \the [target]!"),\
+ if(user == target)
+ target.visible_message(span_warning("\The [user] is trying to insert an egg inside themselves!"),\
+ span_warning("You try to insert an egg inside yourself!"))
+ else
+ target.visible_message(span_warning("\The [user] is trying to insert an egg inside \the [target]!"),\
span_warning("\The [user] is trying to insert an egg inside you!"))
if(!do_mob(user, target, 5 SECONDS))
diff --git a/modular_splurt/code/modules/arousal/organs/penis.dm b/modular_splurt/code/modules/arousal/organs/penis.dm
index 78e015ea0b..acf3b95c47 100644
--- a/modular_splurt/code/modules/arousal/organs/penis.dm
+++ b/modular_splurt/code/modules/arousal/organs/penis.dm
@@ -4,6 +4,12 @@
fluid_max_volume += ((length - initial(length))*2.5)*(owner ? get_size(owner) : 1)
fluid_rate += ((length - initial(length))/10)*(owner ? get_size(owner) : 1)
+/obj/item/organ/genital/penis/get_fluid()
+ if(linked_organ)
+ return (clamp(linked_organ.fluid_rate * ((world.time - last_orgasmed) / (10 SECONDS)) * linked_organ.fluid_mult, 0, linked_organ.fluid_max_volume) / linked_organ.fluid_max_volume)
+ else
+ return ..()
+
/obj/item/organ/genital/penis/climax_modify_size(mob/living/partner, obj/item/organ/genital/source_gen)
if(!(owner.client?.prefs.cit_toggles & PENIS_ENLARGEMENT))
return
diff --git a/modular_splurt/code/modules/arousal/organs/vagina.dm b/modular_splurt/code/modules/arousal/organs/vagina.dm
new file mode 100644
index 0000000000..ccb952ef09
--- /dev/null
+++ b/modular_splurt/code/modules/arousal/organs/vagina.dm
@@ -0,0 +1,5 @@
+/obj/item/organ/genital/vagina/get_fluid()
+ if(linked_organ)
+ return (clamp(linked_organ.fluid_rate * ((world.time - last_orgasmed) / (10 SECONDS)) * linked_organ.fluid_mult, 0, linked_organ.fluid_max_volume) / linked_organ.fluid_max_volume)
+ else
+ return ..()
diff --git a/tgstation.dme b/tgstation.dme
index 09d9af4b23..252affc799 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4534,6 +4534,7 @@
#include "modular_splurt\code\modules\arousal\organs\butt.dm"
#include "modular_splurt\code\modules\arousal\organs\penis.dm"
#include "modular_splurt\code\modules\arousal\organs\testicles.dm"
+#include "modular_splurt\code\modules\arousal\organs\vagina.dm"
#include "modular_splurt\code\modules\arousal\organs\womb.dm"
#include "modular_splurt\code\modules\arousal\toys\dildos.dm"
#include "modular_splurt\code\modules\atmospherics\auxgm\gas_types.dm"