Merge pull request #564 from Kabramen/sounding

Sounding Rod
This commit is contained in:
Dahlular
2020-10-10 23:16:24 -06:00
committed by GitHub
9 changed files with 112 additions and 7 deletions
+2 -2
View File
@@ -97,7 +97,7 @@
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
if(P.condom)
new /obj/item/condom/filled(usr.loc)
to_chat(src, "The condom bubbled outwards and filled with your cum.")
to_chat(src, "The condom bubbles outwards and fills with your cum.")
P.condom = 0
P.colourtint = ""
src.update_genitals()
src.update_genitals()
+68
View File
@@ -0,0 +1,68 @@
/obj/item/sounding
name = "sounding rod"
desc = "Dont be silly, stuff your willy!"
icon = 'hyperstation/icons/obj/sounding.dmi'
throwforce = 0
icon_state = "sounding_wrapped"
var/unwrapped = 0
w_class = WEIGHT_CLASS_TINY
/obj/item/sounding/attack_self(mob/user)
if(!istype(user))
return
if(isliving(user))
if(unwrapped == 0)
icon_state = "sounding_rod"
unwrapped = 1
to_chat(user, "<span class='notice'>You unwrap the rod.</span>")
playsound(user, 'sound/items/poster_ripped.ogg', 50, 1, -1)
return
/obj/item/sounding/attack(mob/living/carbon/C, mob/living/user)
if(unwrapped == 0 )
to_chat(user, "<span class='notice'>You must remove the rod from the package first!</span>")
return
var/obj/item/organ/genital/penis/P = C.getorganslot("penis")
if(P&&P.is_exposed())
if(P.sounding)
to_chat(user, "<span class='notice'>They already have a rod inside!</span>")
return
if(isliving(C)&&isliving(user)&&unwrapped == 1)
C.visible_message("<span class='warning'>[user] is trying to insert a rod inside [C]!</span>",\
"<span class='warning'>[user] is trying to insert a rod inside you!</span>")
if(!do_mob(user, C, 4 SECONDS))
return
var/mob/living/carbon/human/L = C
playsound(C, 'sound/lewd/champ_fingering.ogg', 50, 1, -1)
P.sounding = 1
if(L)
L.update_genitals()
to_chat(C, "<span class='userlove'>Your penis feels stuffed and stretched!</span>")
qdel(src)
return
to_chat(user, "<span class='notice'>You can't find anywhere to put the rod inside.</span>")
/mob/living/carbon/human/proc/removesounding()
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
if(P.sounding)
new /obj/item/sounding/used_sounding(usr.loc)
to_chat(src, "The rod falls off from your penis.")
P.sounding = 0
src.update_genitals()
/obj/item/sounding/used_sounding
name = "sounding rod"
icon_state = "sounding_rod"
unwrapped = 2
w_class = WEIGHT_CLASS_TINY
/mob/living/carbon/human/proc/soundingclimax()
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
if(P.sounding)
new /obj/item/sounding/used_sounding(usr.loc)
P.sounding = 0
src.update_genitals()
Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

@@ -43,6 +43,7 @@
vend_reply = "Have fun, you shameless pervert!"
products = list(
/obj/item/condom = 10,
/obj/item/sounding = 5,
/obj/item/clothing/head/maidband = 5,
/obj/item/clothing/under/maid = 5,
/obj/item/clothing/under/stripper_pink = 5,
@@ -239,11 +239,14 @@
var/total_fluids = 0
var/datum/reagents/fluid_source = null
var/condomed = 0
var/sounded = 0
if(G.name == "penis")//if the select organ is a penis
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
if(P.condom) //if the penis is condomed
condomed = 1
if(P.sounding)
sounded = 1
if(G.producing) //Can it produce its own fluids, such as breasts?
fluid_source = G.reagents
else
@@ -258,10 +261,10 @@
"<span class='userlove'>You start to [G.masturbation_verb] your [G.name].</span>")
if(do_after(src, mb_time, target = src))
if(total_fluids > 5 &&!condomed)
if(total_fluids > 5 &&!condomed &&!sounded)
fluid_source.reaction(src.loc, TOUCH, 1, 0)
fluid_source.clear_reagents()
if(!condomed)
if(!condomed &&!sounded)
src.visible_message("<span class='love'>[src] orgasms, cumming[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!</span>", \
"<span class='userlove'>You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].</span>", \
"<span class='userlove'>You have relieved yourself.</span>")
@@ -269,7 +272,11 @@
src.visible_message("<span class='love'>[src] orgasms, climaxing into [p_their()] condom </span>", \
"<span class='userlove'>You cum into your condom.</span>", \
"<span class='userlove'>You have relieved yourself.</span>")
if(total_fluids > 0 &&condomed)
if(sounded) //sounded
src.visible_message("<span class='love'>[src] orgasms, but the rod blocks anything from leaking out!</span>", \
"<span class='userlove'>You cum with the rod inside.</span>", \
"<span class='userlove'>You don't quite feel totally relieved.</span>")
if(total_fluids > 0 &&condomed &&!sounded)
src.condomclimax()
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
@@ -391,6 +398,9 @@
if(P.condom) //if the penis is condomed
to_chat(src, "<span class='warning'>You cannot fill containers when there is a condom over your [G.name].</span>")
return
if(P.sounding) //if the penis is sounded
to_chat(src, "<span class='warning'>You cannot fill containers when there is a rod inside your [G.name].</span>")
return
if(G.producing) //Can it produce its own fluids, such as breasts?
fluid_source = G.reagents
else
@@ -540,9 +550,27 @@
return
//Ok, now we check what they want to do.
var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container", "Remove condom")
var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container", "Remove condom", "Remove sounding rod")
switch(choice)
if("Remove sounding rod")
if(restrained(TRUE)) //TRUE ignores grabs
to_chat(src, "<span class='warning'>You can't do that while restrained!</span>")
return
var/free_hands = get_num_arms()
if(!free_hands)
to_chat(src, "<span class='warning'>You need at least one free arm.</span>")
return
var/obj/item/organ/genital/penis/P = src.getorganslot("penis")
if(!P.sounding)
to_chat(src, "<span class='warning'>You don't have a rod inside!</span>")
return
if(P.sounding)
to_chat(src, "<span class='warning'>You pull the rod off from the tip of your penis!</span>")
src.removesounding()
return
return
if("Remove condom")
if(restrained(TRUE)) //TRUE ignores grabs
to_chat(src, "<span class='warning'>You can't do that while restrained!</span>")
@@ -617,7 +645,7 @@
var/mob/living/partner = pick_partner() //Get someone
if(partner)
var/obj/item/organ/genital/penis/P = picked_organ
if(partner.breedable == 1 && picked_organ.name == "penis"&&!P.condom == 1)
if(partner.breedable == 1 && picked_organ.name == "penis"&&!P.condom == 1&&!P.sounding == 1)
var/impreg = input(src, "Would this action carry the risk of pregnancy?", "Choose a option", "Yes") as anything in list("Yes", "No")
if(impreg == "Yes") //If we are impregging
var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No")
@@ -11,6 +11,7 @@
fluid_transfer_factor = 0.5
size = 2 //arbitrary value derived from length and girth for sprites.
var/condom = 0 //No condom, its better this way...
var/sounding = 0
var/length = 6 //inches
var/cached_length //used to detect a change in length
var/girth = 3.38
@@ -155,3 +155,9 @@
category = SLOT_IN_BACKPACK
path = /obj/item/condom
cost = 1
/datum/gear/sounding
name = "Sounding rod"
category = SLOT_IN_BACKPACK
path = /obj/item/sounding
cost = 1
Binary file not shown.
+1
View File
@@ -2961,6 +2961,7 @@
#include "hyperstation\code\obj\pregnancytester.dm"
#include "hyperstation\code\obj\rewards.dm"
#include "hyperstation\code\obj\rope.dm"
#include "hyperstation\code\obj\sounding.dm"
#include "interface\interface.dm"
#include "interface\menu.dm"
#include "interface\stylesheet.dm"