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'