Updates some lewd stuff (#189)

This commit is contained in:
SandPoot
2021-11-03 13:59:02 -03:00
committed by GitHub
parent 49a920b8a6
commit f753617a0b
8 changed files with 183 additions and 77 deletions
@@ -74,7 +74,6 @@
*/
/obj/item/portallight
name = "fleshlight"
name = "portal fleshlight"
desc = "A silver love(TM) fleshlight, used to stimulate someones penis, with bluespace tech that allows lovers to hump at a distance."
icon = 'modular_sand/icons/obj/fleshlight.dmi'
@@ -105,13 +104,15 @@
var/message = ""
var/lust_amt = 0
var/arouse_only_target = FALSE
var/obj/item/organ/genital/penis/P
var/obj/item/organ/genital/vagina/V
if(ishuman(M) && (M?.client?.prefs?.toggles & VERB_CONSENT) && useable) // I promise all those checks are worth it!
switch(user.zone_selected)
if(BODY_ZONE_PRECISE_GROIN)
if(M.has_penis(REQUIRE_EXPOSED))
message = (user == M) ? pick("fucks into [src]") : pick("forces [M] to fuck into [src]")
lust_amt = NORMAL_LUST
arouse_only_target = TRUE
P = M.getorganslot(ORGAN_SLOT_PENIS)
if(BODY_ZONE_PRECISE_MOUTH)
if(M.has_mouth() && !M.is_mouth_covered())
message = (user == M) ? pick("licks into [src]") : pick("forces [M] to lick into [src]")
@@ -124,6 +125,7 @@
if(can_interact)
message = (user == M) ? pick("touches softly against [src]") : pick("forces [M]'s finger on [src]")
lust_amt = NORMAL_LUST
arouse_only_target = TRUE
if(BODY_ZONE_L_ARM)
if(M.has_hand(REQUIRE_ANY))
var/can_interact = FALSE
@@ -132,14 +134,19 @@
if(can_interact)
message = (user == M) ? pick("touches softly against [src]") : pick("forces [M]'s finger on [src]")
lust_amt = NORMAL_LUST
arouse_only_target = TRUE
if(!useable)
to_chat(user, "<span class='notice'>It seems the device has failed or your partner is not wearing their device.</span>")
if(message)
var/mob/living/carbon/human/portal_target = ishuman(portalunderwear.loc) && portalunderwear.current_equipped_slot == SLOT_W_UNDERWEAR ? portalunderwear.loc : null
if(portal_target && (portal_target?.client?.prefs.toggles & VERB_CONSENT))
if(portalunderwear.targetting == "vagina")
V = portal_target.getorganslot(ORGAN_SLOT_VAGINA)
if(portal_target && (portal_target?.client?.prefs.toggles & VERB_CONSENT || !portal_target.ckey))
user.visible_message("<span class='lewd'>[user] [message].</span>")
if(!arouse_only_target)
M.handle_post_sex(lust_amt, null, user)
if(M.handle_post_sex(lust_amt, null, null))
if(P)
to_chat(portal_target, "<span class='userlove'>You feel a [P.shape] penis of [P.length] inches go deep into your [portalunderwear.targetting] and cum!</span>")
switch(user.zone_selected)
if(BODY_ZONE_PRECISE_GROIN)
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang4.ogg',
@@ -156,8 +163,13 @@
if(M != user)
message = replacetext(message, "[M]", "someone")
message = replacetext(message, "[src]", "your [targeted]")
to_chat(portal_target, "<span class='lewd'>You feel something on your panties, it [message].</span>")
portal_target.handle_post_sex(lust_amt, null, M)
to_chat(portal_target, "<span class='lewd'>You feel something on your panties, it [message][P ? ", it is a [P.shape] penis of [P.length] inches" : ""].</span>")
if(portal_target.handle_post_sex(lust_amt, null, null))
switch(portalunderwear.targetting)
if("vagina")
to_chat(M, "<span class='userlove'>You feel the [V] squirt over your penis!</span>")
if("anus")
to_chat(M, "<span class='userlove'>You feel the anus constrict on your penis!</span>")
portal_target.do_jitter_animation() //make your partner shake too!
else
user.visible_message("<span class='warning'>\The [src] beeps and does not let [M] through.</span>")
@@ -208,6 +220,15 @@
else
useable = FALSE
/obj/item/portallight/Destroy()
if(portalunderwear)
portalunderwear.portallight = null
if(isliving(portalunderwear.loc))
portalunderwear.audible_message("[icon2html(portalunderwear, hearers(portalunderwear))] *beep* *beep* *beep*")
playsound(portalunderwear, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
to_chat(portalunderwear.loc, "<span class='notice'>The panties beep as the link to the [src] is lost.</span>")
. = ..()
/**
* # Hyperstation 13 portal underwear
* Wear it, cannot be worn if not pointing to the bits you have.
@@ -277,11 +298,31 @@
update_portal()
else
update_portal()
RegisterSignal(user, COMSIG_PARENT_QDELETING, .proc/drop_out)
/obj/item/clothing/underwear/briefs/panties/portalpanties/dropped(mob/user)
UnregisterSignal(user, COMSIG_PARENT_QDELETING)
. = ..()
update_portal()
/obj/item/clothing/underwear/briefs/panties/portalpanties/Destroy()
if(portallight)
var/obj/item/portallight/temp = portallight
moveToNullspace() // loc cannot be human so let's destroy ourselves out of anything
portallight.portalunderwear = null
temp.updatesleeve()
. = ..()
/obj/item/clothing/underwear/briefs/panties/portalpanties/proc/drop_out()
var/mob/living/carbon/human/deleted
if(ishuman(loc))
deleted = loc
forceMove(get_turf(loc))
dropped(deleted) // Act like we've been dropped
plane = initial(plane)
layer = initial(layer)
update_portal()
/obj/item/clothing/underwear/briefs/panties/portalpanties/proc/update_portal()
if(portallight)
var/obj/item/portallight/P = portallight