mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-08-31 01:06:28 +01:00
Updates some lewd stuff (#189)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user