mirror of
https://github.com/quotefox/Hyper-Station-13.git
synced 2026-08-23 20:56:19 +01:00
Merge pull request #1544 from Chemlight/Random-Assortments
Come yourself
This commit is contained in:
@@ -25,6 +25,9 @@
|
||||
dat += "<a href='byond://?src=[REF(src)];container=1'>Fill container</A>"
|
||||
dat += "(Use a container in your hand to collect your seminal fluid.)<BR>"
|
||||
|
||||
dat += "<a href='byond://?src=[REF(src)];climaxself=1'>Climax on self</A>"
|
||||
dat += "(Stimulate a sexual organ to climax onto yourself.)<BR>"
|
||||
|
||||
var/mob/living/carbon/human/C = usr
|
||||
if(C && C.w_uniform || C.wear_suit) //if they are wearing cloths
|
||||
dat += "<a href='byond://?src=[REF(src)];clothesplosion=1'>Explode out of clothes</A>"
|
||||
@@ -160,6 +163,14 @@
|
||||
to_chat(usr, "<span class='warning'>You aren't aroused enough for that! </span>")
|
||||
return
|
||||
|
||||
if(href_list["climaxself"])
|
||||
if (H.arousalloss >= (H.max_arousal / 100) * 33) //requires 33% arousal.
|
||||
H.climaxself()
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You aren't aroused enough for that! </span>")
|
||||
return
|
||||
|
||||
if(href_list["climax"])
|
||||
if (H.arousalloss >= (H.max_arousal / 100) * 33) //requires 33% arousal.
|
||||
H.climaxalone(FALSE)
|
||||
@@ -503,4 +514,29 @@ obj/screen/arousal/proc/kiss()
|
||||
cut_overlay(mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi', "cum_large"))
|
||||
if(cum_splatter_icon)
|
||||
cut_overlay(cum_splatter_icon)
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/climaxself()
|
||||
if(restrained(TRUE))
|
||||
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
|
||||
for(var/helditem in held_items)
|
||||
if(isobj(helditem))
|
||||
free_hands--
|
||||
if(free_hands <= 0)
|
||||
to_chat(src, "<span class='warning'>You're holding too many things.</span>")
|
||||
return
|
||||
//We got hands, let's pick an organ
|
||||
var/obj/item/organ/genital/picked_organ
|
||||
picked_organ = pick_masturbate_genitals()
|
||||
if(picked_organ)
|
||||
src << browse(null, "window=arousal") //closes the window
|
||||
mob_masturbate(picked_organ, cover = TRUE)
|
||||
return
|
||||
else //They either lack organs that can masturbate, or they didn't pick one.
|
||||
to_chat(src, "<span class='warning'>You cannot climax without choosing genitals.</span>")
|
||||
return
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
//These are various procs that we'll use later, split up for readability instead of having one, huge proc.
|
||||
//For all of these, we assume the arguments given are proper and have been checked beforehand.
|
||||
/mob/living/carbon/human/proc/mob_masturbate(obj/item/organ/genital/G, mb_time = 30) //Masturbation, keep it gender-neutral
|
||||
/mob/living/carbon/human/proc/mob_masturbate(obj/item/organ/genital/G, cover = FALSE, mb_time = 30) //Masturbation, keep it gender-neutral
|
||||
var/total_fluids = 0
|
||||
var/datum/reagents/fluid_source = null
|
||||
var/condomed = 0
|
||||
@@ -267,10 +267,36 @@
|
||||
if(total_fluids > 5 &&!condomed &&!sounded)
|
||||
fluid_source.reaction(src.loc, TOUCH, 1, 0)
|
||||
fluid_source.clear_reagents()
|
||||
if(!condomed &&!sounded)
|
||||
if(!condomed && !sounded && !cover)
|
||||
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>")
|
||||
"<span class='userlove'>You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].</span>", \
|
||||
"<span class='userlove'>You have relieved yourself.</span>")
|
||||
|
||||
if(!condomed &&!sounded && cover)//For when you want to make a mess of yourself.
|
||||
fluid_source.trans_to(src, total_fluids*G.fluid_transfer_factor)
|
||||
total_fluids -= total_fluids*G.fluid_transfer_factor
|
||||
if(total_fluids > 80) // now thats a big cum!
|
||||
if(isliving(src))
|
||||
var/mutable_appearance/cumoverlaylarge = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
|
||||
cumoverlaylarge.icon_state = "cum_large"
|
||||
src.add_overlay(cumoverlaylarge)
|
||||
|
||||
if(total_fluids > 5)
|
||||
fluid_source.reaction(src.loc, TOUCH, 1, 0)
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(H && G.name == "penis")
|
||||
H.cumdrip_rate += rand(5,10)
|
||||
fluid_source.clear_reagents()
|
||||
src.visible_message("<span class='love'>[src] climaxes over [p_their()] self, using [p_their()] [G.name]!</span>", \
|
||||
"<span class='userlove'>You orgasm over yourself, using your [G.name].</span>", \
|
||||
"<span class='userlove'>You have climaxed over something, using your [G.name].</span>")
|
||||
if(isliving(src))
|
||||
var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
|
||||
cumoverlay.icon_state = "cum_normal"
|
||||
src.add_overlay(cumoverlay)
|
||||
else
|
||||
src.add_cum_overlay()
|
||||
|
||||
if(condomed) //condomed
|
||||
src.visible_message("<span class='love'>[src] orgasms, climaxing into [p_their()] condom </span>", \
|
||||
"<span class='userlove'>You cum into your condom.</span>", \
|
||||
|
||||
Reference in New Issue
Block a user