From 227a298150b4cd4ad7fef9a96bb0cf1ea3600e13 Mon Sep 17 00:00:00 2001
From: sarcoph <83266791+sarcoph@users.noreply.github.com>
Date: Wed, 4 May 2022 14:21:20 -0800
Subject: [PATCH] slightly more descriptive variables
for portal fleshlights
---
.../code/modules/arousal/arousalhud.dm | 3 +-
hyperstation/code/obj/fleshlight.dm | 91 +++++++------------
2 files changed, 33 insertions(+), 61 deletions(-)
diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm
index 2058307e9..802f43c90 100644
--- a/hyperstation/code/modules/arousal/arousalhud.dm
+++ b/hyperstation/code/modules/arousal/arousalhud.dm
@@ -380,12 +380,11 @@ obj/screen/arousal/proc/kiss()
/mob/living/carbon/human/proc/climaxover(mob/living/T)
- var/mob/living/carbon/human/L = T
+ var/mob/living/carbon/human/partner = T
var/obj/item/organ/genital/picked_organ
picked_organ = pick_climax_genitals()
if(picked_organ)
src << browse(null, "window=arousal") //alls fine, we can close the window now.
- var/mob/living/partner = L
if(partner)
var/obj/item/organ/genital/penis/P = picked_organ
if(P.condom == 1)
diff --git a/hyperstation/code/obj/fleshlight.dm b/hyperstation/code/obj/fleshlight.dm
index 7af123ce5..bc7e4d0df 100644
--- a/hyperstation/code/obj/fleshlight.dm
+++ b/hyperstation/code/obj/fleshlight.dm
@@ -77,7 +77,6 @@
//Hyperstation 13 portal fleshlight
//kinky!
-
/obj/item/portallight
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."
@@ -104,45 +103,39 @@
else
. += "The device is paired, and awaiting input. "
-/obj/item/portallight/attack(mob/living/carbon/C, mob/living/user) //use portallight! nearly the same as the fleshlight apart from you have a buddy!
- var/obj/item/organ/genital/penis/P = C.getorganslot("penis")
-
+/obj/item/portallight/attack(mob/living/carbon/holder, mob/living/user)
+//use portallight! nearly the same as the fleshlight apart from you have a buddy!
+ var/obj/item/organ/genital/penis/P = holder.getorganslot("penis")
if(inuse) //just to stop stacking and causing people to cum instantly
return
if(!useable)
to_chat(user, "It seems the device has failed or your partner is not wearing their device.")
-
- if(C == user)//if your using it on yourself, more options! otherwise, just fuck.
+ if(holder == user)//if your using it on yourself, more options! otherwise, just fuck.
option = input(usr, "Choose action", "Portal Fleshlight", "Fuck") in list("Fuck", "Lick", "Touch")
else
option = "Fuck"
-
- var/obj/item/organ/genital/G
+ var/obj/item/organ/genital/target_genital
if(istype(portalunderwear.loc, /obj/item/organ/genital)) //Sanity check. Without this it will runtime error.
- G = portalunderwear.loc
- if(!G)
+ target_genital = portalunderwear.loc
+ if(!target_genital)
return
- var/mob/living/carbon/human/M = G.owner
-
+ var/mob/living/carbon/human/target = target_genital.owner
if(option == "Fuck"&&!P.is_exposed()) //we are trying to fuck with no penis!
to_chat(user, "You don't see anywhere to use this on.")
return
else //other options dont need checks
inuse = 1
- if(!(C == user)) //if we are targeting someone else.
- C.visible_message("[user] is trying to use [src] on [C]'s penis.", "[user] is trying to use [src] on your penis.")
-
- if(!do_mob(user, C, 3 SECONDS)) //3 second delay
+ if(!(holder == user)) //if we are targeting someone else.
+ holder.visible_message("[user] is trying to use [src] on [holder]'s penis.", "[user] is trying to use [src] on your penis.")
+ if(!do_mob(user, holder, 3 SECONDS)) //3 second delay
inuse = 0
return
-
//checked if not used on yourself, if not, carry on.
if(option == "Fuck")
playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound for fuck.
-
inuse = 0
- if(!(C == user))
- C.visible_message("[user] pumps [src] on [C]'s penis.", "[user] pumps [src] up and down on your penis.")
+ if(!(holder == user))
+ holder.visible_message("[user] pumps [src] on [holder]'s penis.", "[user] pumps [src] up and down on your penis.")
else
if(option == "Fuck")
user.visible_message("[user] pumps [src] on their penis.", "You pump the fleshlight on your penis.")
@@ -150,82 +143,68 @@
user.visible_message("[user] licks into [src].", "You lick into [src].")
if(option == "Touch")
user.visible_message("[user] touches softly against [src].", "You touch softly on [src].")
-
-
if(prob(30)) //30% chance to make your partner moan.
- M.emote("moan")
-
+ target.emote("moan")
if(option == "Fuck")// normal fuck
- to_chat(M, "You feel a [P.length] inch, [P.shape] shaped penis pumping through the portal into your [G.name].")//message your partner, and kinky!
+ to_chat(target, "You feel a [P.length] inch, [P.shape] shaped penis pumping through the portal into your [target_genital.name].")//message your partner, and kinky!
if(prob(30)) //30% chance to make them moan.
- C.emote("moan")
+ holder.emote("moan")
if(prob(30)) //30% chance to make your partner moan.
- M.emote("moan")
- C.adjustArousalLoss(20)
- M.adjustArousalLoss(20)
- M.do_jitter_animation() //make your partner shake too!
-
+ target.emote("moan")
+ holder.adjustArousalLoss(20)
+ target.adjustArousalLoss(20)
+ target.do_jitter_animation() //make your partner shake too!
// Why not have a probability to cum when someone's getting nailed with max arousal?~
- if (M.can_climax() && prob(5))
+ if (target.can_climax() && prob(5))
// if vagina is not exposed, the climax will not cause a spill
- M.mob_climax_outside(G, G.is_exposed())
- if (C.can_climax())
- var/mob/living/carbon/human/O = C
- var/impreg_chance = G.name == "vagina" && !P.condom && !P.sounding
- O.mob_climax_partner(P, M, FALSE, impreg_chance, FALSE, TRUE)
-
+ target.mob_climax_outside(target_genital, target_genital.is_exposed())
+ if (holder.can_climax())
+ var/mob/living/carbon/human/O = holder
+ var/impreg_chance = target_genital.name == "vagina" && !P.condom && !P.sounding
+ O.mob_climax_partner(P, target, FALSE, impreg_chance, FALSE, TRUE)
if(option == "Lick")
- to_chat(M, "You feel a tongue lick you through the portal against your [G.name].")
- M.adjustArousalLoss(10)
+ to_chat(target, "You feel a tongue lick you through the portal against your [target_genital.name].")
+ target.adjustArousalLoss(10)
if(option == "Touch")
- to_chat(M, "You feel someone touching your [G.name] through the portal.")
- M.adjustArousalLoss(5)
-
+ to_chat(target, "You feel someone touching your [target_genital.name] through the portal.")
+ target.adjustArousalLoss(5)
return
..()
/obj/item/portallight/proc/updatesleeve()
//get their looks and vagina colour!
cut_overlays()//remove current overlays
-
var/obj/item/organ/genital/G
if(istype(portalunderwear.loc, /obj/item/organ/genital)) //Sanity check. Without this it will runtime.
G = portalunderwear.loc
if(!G)
useable = FALSE
return
-
var/mob/living/carbon/human/H = G.owner
-
if(H) //if the portal panties are on someone.
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_normal")
if(H.dna.species.name == "Lizardperson") // lizard nerd
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_lizard")
-
if(H.dna.species.name == "Slimeperson") // slime nerd
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_slime")
-
if(H.dna.species.name == "Avian") // bird nerd
sleeve = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_sleeve_avian")
-
sleeve.color = "#" + H.dna.features["mcolor"]
add_overlay(sleeve)
-
if(G.name == "vagina")
organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_vag")
organ.color = portalunderwear.loc.color
if(G.name == "anus")
organ = mutable_appearance('hyperstation/icons/obj/fleshlight.dmi', "portal_anus")
organ.color = "#" + H.dna.features["mcolor"]
-
useable = TRUE
add_overlay(organ)
else
useable = FALSE
+
//Hyperstation 13 portal underwear
//can be attached to vagina or anus, just like the vibrator, still requires pairing with the portallight
-
/obj/item/portalpanties
name = "portal panties"
desc = "A silver love(TM) pair of portal underwear, with bluespace tech allows lovers to hump at a distance. Needs to be paired with a portal fleshlight before use."
@@ -244,7 +223,6 @@
else
. += "The device is paired, and awaiting attachment. "
-
/obj/item/portalpanties/attackby(obj/item/I, mob/living/user) //pairing
if(istype(I, /obj/item/portallight))
var/obj/item/portallight/P = I
@@ -260,11 +238,9 @@
..() //just allows people to hit it with other objects, if they so wished.
/obj/item/portalpanties/attack(mob/living/carbon/C, mob/living/user)
-
if(!portallight) //we arent paired yet! noobie trap, let them know.
to_chat(user, "[src] can only be attached once paired with a portal fleshlight.")
return
-
var/obj/item/organ/genital/picked_organ
var/mob/living/carbon/human/S = user
var/mob/living/carbon/human/T = C
@@ -274,21 +250,17 @@
"[user] is trying to put [src] on you!")
if(!do_mob(user, C, 3 SECONDS))//warn them and have a delay of 5 seconds to apply.
return
-
if((picked_organ.name == "vagina")||(picked_organ.name == "anus")) //only fits on a vagina or anus
-
src.shapetype = picked_organ.name
if(!picked_organ.equipment)
to_chat(user, "You wrap [src] around [T]'s [picked_organ.name].")
else
to_chat(user, "They already have [picked_organ.equipment.name] there.")
return
-
if(!user.transferItemToLoc(src, picked_organ)) //check if you can put it in
return
src.attached = TRUE
picked_organ.equipment = src
-
var/obj/item/portallight/P = portallight
//now we need to send what they look like, but saddly if the person changes colour for what ever reason, it wont update. but dont tell people shh.
if(P) //just to make sure
@@ -304,6 +276,7 @@
var/obj/item/portallight/P = portallight
P.updatesleeve()
+
/obj/item/storage/box/portallight
name = "Portal Fleshlight and Underwear"
icon = 'hyperstation/icons/obj/fleshlight.dmi'