|
|
|
@@ -239,11 +239,14 @@
|
|
|
|
|
var/total_fluids = 0
|
|
|
|
|
var/datum/reagents/fluid_source = null
|
|
|
|
|
var/condomed = 0
|
|
|
|
|
var/sounded = 0
|
|
|
|
|
|
|
|
|
|
if(G.name == "penis")//if the select organ is a penis
|
|
|
|
|
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
|
|
|
|
|
if(P.condom) //if the penis is condomed
|
|
|
|
|
condomed = 1
|
|
|
|
|
if(P.sounding)
|
|
|
|
|
sounded = 1
|
|
|
|
|
if(G.producing) //Can it produce its own fluids, such as breasts?
|
|
|
|
|
fluid_source = G.reagents
|
|
|
|
|
else
|
|
|
|
@@ -258,10 +261,10 @@
|
|
|
|
|
"<span class='userlove'>You start to [G.masturbation_verb] your [G.name].</span>")
|
|
|
|
|
|
|
|
|
|
if(do_after(src, mb_time, target = src))
|
|
|
|
|
if(total_fluids > 5 &&!condomed)
|
|
|
|
|
if(total_fluids > 5 &&!condomed &&!sounded)
|
|
|
|
|
fluid_source.reaction(src.loc, TOUCH, 1, 0)
|
|
|
|
|
fluid_source.clear_reagents()
|
|
|
|
|
if(!condomed)
|
|
|
|
|
if(!condomed &&!sounded)
|
|
|
|
|
src.visible_message("<span class='love'>[src] orgasms, cumming[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!</span>", \
|
|
|
|
|
"<span class='userlove'>You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].</span>", \
|
|
|
|
|
"<span class='userlove'>You have relieved yourself.</span>")
|
|
|
|
@@ -269,7 +272,11 @@
|
|
|
|
|
src.visible_message("<span class='love'>[src] orgasms, climaxing into [p_their()] condom </span>", \
|
|
|
|
|
"<span class='userlove'>You cum into your condom.</span>", \
|
|
|
|
|
"<span class='userlove'>You have relieved yourself.</span>")
|
|
|
|
|
if(total_fluids > 0 &&condomed)
|
|
|
|
|
if(sounded) //sounded
|
|
|
|
|
src.visible_message("<span class='love'>[src] orgasms, but the rod blocks anything from leaking out!</span>", \
|
|
|
|
|
"<span class='userlove'>You cum with the rod inside.</span>", \
|
|
|
|
|
"<span class='userlove'>You don't quite feel totally relieved.</span>")
|
|
|
|
|
if(total_fluids > 0 &&condomed &&!sounded)
|
|
|
|
|
src.condomclimax()
|
|
|
|
|
|
|
|
|
|
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
|
|
|
@@ -391,6 +398,9 @@
|
|
|
|
|
if(P.condom) //if the penis is condomed
|
|
|
|
|
to_chat(src, "<span class='warning'>You cannot fill containers when there is a condom over your [G.name].</span>")
|
|
|
|
|
return
|
|
|
|
|
if(P.sounding) //if the penis is sounded
|
|
|
|
|
to_chat(src, "<span class='warning'>You cannot fill containers when there is a rod inside your [G.name].</span>")
|
|
|
|
|
return
|
|
|
|
|
if(G.producing) //Can it produce its own fluids, such as breasts?
|
|
|
|
|
fluid_source = G.reagents
|
|
|
|
|
else
|
|
|
|
@@ -540,9 +550,27 @@
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
//Ok, now we check what they want to do.
|
|
|
|
|
var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container", "Remove condom")
|
|
|
|
|
var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container", "Remove condom", "Remove sounding rod")
|
|
|
|
|
|
|
|
|
|
switch(choice)
|
|
|
|
|
if("Remove sounding rod")
|
|
|
|
|
if(restrained(TRUE)) //TRUE ignores grabs
|
|
|
|
|
to_chat(src, "<span class='warning'>You can't do that while restrained!</span>")
|
|
|
|
|
return
|
|
|
|
|
var/free_hands = get_num_arms()
|
|
|
|
|
if(!free_hands)
|
|
|
|
|
to_chat(src, "<span class='warning'>You need at least one free arm.</span>")
|
|
|
|
|
return
|
|
|
|
|
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
|
|
|
|
|
if(!P.sounding)
|
|
|
|
|
to_chat(src, "<span class='warning'>You don't have a rod inside!</span>")
|
|
|
|
|
return
|
|
|
|
|
if(P.sounding)
|
|
|
|
|
to_chat(src, "<span class='warning'>You pull the rod off from the tip of your penis!</span>")
|
|
|
|
|
src.removesounding()
|
|
|
|
|
return
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if("Remove condom")
|
|
|
|
|
if(restrained(TRUE)) //TRUE ignores grabs
|
|
|
|
|
to_chat(src, "<span class='warning'>You can't do that while restrained!</span>")
|
|
|
|
@@ -617,7 +645,7 @@
|
|
|
|
|
var/mob/living/partner = pick_partner() //Get someone
|
|
|
|
|
if(partner)
|
|
|
|
|
var/obj/item/organ/genital/penis/P = picked_organ
|
|
|
|
|
if(partner.breedable == 1 && picked_organ.name == "penis"&&!P.condom == 1)
|
|
|
|
|
if(partner.breedable == 1 && picked_organ.name == "penis"&&!P.condom == 1&&!P.sounding == 1)
|
|
|
|
|
var/impreg = input(src, "Would this action carry the risk of pregnancy?", "Choose a option", "Yes") as anything in list("Yes", "No")
|
|
|
|
|
if(impreg == "Yes") //If we are impregging
|
|
|
|
|
var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No")
|
|
|
|
|