Merge pull request #804 from quotefox/sexhud

New HTML arousal hud, with contextal options, plus new lewd features.
This commit is contained in:
QuoteFox
2021-01-02 14:34:31 +00:00
committed by GitHub
16 changed files with 477 additions and 36 deletions
+32 -24
View File
@@ -208,14 +208,11 @@
/obj/screen/arousal/Click()
if(!isliving(usr))
return FALSE
if(isobserver(usr))
return
var/mob/living/M = usr
if(M.canbearoused)
M.mob_climax()
return TRUE
else
to_chat(M, "<span class='warning'>Arousal is disabled. Feature is unavailable.</span>")
src.ui_interact(usr)
/mob/living/proc/mob_climax()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while.
set name = "Masturbate"
@@ -340,30 +337,36 @@
if(mb_time) //Skip warning if this is an instant climax.
src.visible_message("<span class='love'>[src] is about to climax with [L]!</span>", \
"<span class='userlove'>You're about to climax with [L]!</span>", \
"<span class='userlove'>You're preparing to climax with someone!</span>")
"<span class='userlove'>You're preparing to climax with something!</span>")
if(cover)//covering the partner in cum, this overrides other options.
if(do_after(src, mb_time, target = src) && in_range(src, L))
fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor)
total_fluids -= total_fluids*G.fluid_transfer_factor
if(total_fluids > 80) // now thats a big cum!
var/mutable_appearance/cumoverlaylarge = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlaylarge.icon_state = "cum_large"
L.add_overlay(cumoverlaylarge)
if(isliving(L))
var/mutable_appearance/cumoverlaylarge = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlaylarge.icon_state = "cum_large"
L.add_overlay(cumoverlaylarge)
if(total_fluids > 5)
fluid_source.reaction(L.loc, TOUCH, 1, 0)
fluid_source.clear_reagents()
src.visible_message("<span class='love'>[src] climaxes over [L][cover ? ", coating them":""], using [p_their()] [G.name]!</span>", \
"<span class='userlove'>You orgasm over [L][cover ? ", drenching them":""], using your [G.name].</span>", \
"<span class='userlove'>You have climaxed over someone[cover ? ", coating them":""], using your [G.name].</span>")
src.visible_message("<span class='love'>[src] climaxes over [L], using [p_their()] [G.name]!</span>", \
"<span class='userlove'>You orgasm over [L], using your [G.name].</span>", \
"<span class='userlove'>You have climaxed over something, using your [G.name].</span>")
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlay.icon_state = "cum_normal"
L.add_overlay(cumoverlay)
var/mob/living/carbon/human/H = L
H.creamed = 1
if(G.can_climax)
setArousalLoss(min_arousal)
if(isliving(L))
var/mutable_appearance/cumoverlay = mutable_appearance('hyperstation/icons/effects/cumoverlay.dmi')
cumoverlay.icon_state = "cum_normal"
L.add_overlay(cumoverlay)
else
L.add_cum_overlay()
setArousalLoss(min_arousal)
if(G.can_climax)
setArousalLoss(min_arousal)
if(spillage && !cover)
if(do_after(src, mb_time, target = src) && in_range(src, L))
@@ -384,7 +387,11 @@
else //knots and other non-spilling orgasms
if(!cover)
if(do_after(src, mb_time, target = src) && in_range(src, L))
fluid_source.trans_to(L, total_fluids)
var/obj/item/organ/genital/penis/P = G
if (P.condom)//condomed.
src.condomclimax()
else
fluid_source.trans_to(L, total_fluids)
total_fluids = 0
src.visible_message("<span class='love'>[src] climaxes with [L], [p_their()] [G.name] spilling nothing!</span>", \
"<span class='userlove'>You ejaculate with [L], your [G.name] spilling nothing.</span>", \
@@ -441,9 +448,9 @@
fluid_source = G.linked_organ.reagents
total_fluids = fluid_source.total_volume
//if(!container) //Something weird happened
// to_chat(src, "<span class='warning'>You need a container to do this!</span>")
// return
if(!container) //Something weird happened
to_chat(src, "<span class='warning'>You need a container to do this!</span>")
return
src.visible_message("<span class='love'>[src] starts to [G.masturbation_verb] their [G.name] over [container].</span>", \
"<span class='userlove'>You start to [G.masturbation_verb] your [G.name] over [container].</span>", \
@@ -763,3 +770,4 @@
return
else //Somehow another option was taken, maybe something interrupted the selection or it was cancelled
return //Just end it in that case.
@@ -22,6 +22,7 @@
var/internal = FALSE
var/hidden = FALSE
var/colourtint = ""
var/mode = "clothes"
/obj/item/organ/genital/Initialize()
. = ..()
@@ -70,16 +71,19 @@
if("Always visible")
through_clothes = TRUE
hidden = FALSE
mode = "visible"
if(!(src in owner.exposed_genitals))
owner.exposed_genitals += src
if("Hidden by clothes")
through_clothes = FALSE
hidden = TRUE
mode = "clothes"
if(src in owner.exposed_genitals)
owner.exposed_genitals -= src
if("Always hidden")
through_clothes = FALSE
hidden = TRUE
mode = "hidden"
if(src in owner.exposed_genitals)
owner.exposed_genitals -= src
@@ -270,6 +270,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
target.wash_cream()
target.wash_cum()
return
//Dogfood