Cock rings + Limiter

Includes base code to allow penis equipment
This commit is contained in:
quotefox
2022-07-13 10:56:24 +01:00
parent 879857ae3a
commit 4cc2103d2b
7 changed files with 108 additions and 5 deletions
@@ -25,7 +25,7 @@
var/list/obscured = check_obscured_slots()
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
if(skipface || get_visible_name() == "Unknown")
. += "You can't make out what species they are."
else
@@ -127,10 +127,15 @@
. += "<span class='love'>[t_He] [t_is] currently in heat.</span>"
//CIT CHANGES START HERE - adds genital details to examine text
if(LAZYLEN(internal_organs) && user.client?.prefs.cit_toggles & GENITAL_EXAMINE)
if(LAZYLEN(internal_organs) && user.client?.prefs.cit_toggles)
for(var/obj/item/organ/genital/dicc in internal_organs)
if(istype(dicc) && dicc.is_exposed())
. += "[dicc.desc]"
if(!dicc.limited)
if(!dicc.equipment)
. += "[dicc.desc]"
else
. += "[dicc.desc] <span class='love'>Equipt with a [dicc.equipment.name]</span>"
if(user.client?.prefs.cit_toggles & VORE_EXAMINE)
var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code
@@ -53,7 +53,7 @@
if(Belly.inflatable)
dat += "<a href='byond://?src=[REF(src)];shrink_belly=1'>Deflate belly</A>"
dat += "(Shrink your belly down a size)<BR>"
if(user.pulling && !isnoncarbon(user.pulling)) // do not fuck animals
dat += "<a href='byond://?src=[REF(src)];climaxover=1'>Climax over [user.pulling]</A>" //you can cum on objects if you really want...
dat += "(Orgasm over a person or object.)<BR>"
@@ -226,12 +226,14 @@
var/obj/item/organ/genital/penis/O = usr.getorganslot("penis")
var/obj/item/I = O.equipment
usr.put_in_hands(I)
SEND_SIGNAL(I, "detach_genital_equipment",usr)
O.equipment = null
if(href_list["removeequipmentbreasts"])
var/obj/item/organ/genital/breasts/O = usr.getorganslot("breasts")
var/obj/item/I = O.equipment
usr.put_in_hands(I)
SEND_SIGNAL(I, "detach_genital_equipment",usr)
O.equipment = null
@@ -242,18 +244,21 @@
if(istype(I, /obj/item/portalpanties))
var/obj/item/portalpanties/P = I
P.remove()
SEND_SIGNAL(I, "detach_genital_equipment",usr)
O.equipment = null
if(href_list["removeequipmentbelly"])
var/obj/item/organ/genital/belly/O = usr.getorganslot("belly")
var/obj/item/I = O.equipment
usr.put_in_hands(I)
SEND_SIGNAL(I, "detach_genital_equipment",usr)
O.equipment = null
if(href_list["removeequipmentanus"])
var/obj/item/organ/genital/anus/O = usr.getorganslot("anus")
var/obj/item/I = O.equipment
usr.put_in_hands(I)
SEND_SIGNAL(I, "detach_genital_equipment",usr)
O.equipment = null
+78
View File
@@ -0,0 +1,78 @@
//Made for HypeStation 13
//by QuoteFox
/obj/item/equipment/penis/
name = "penis equipment"
desc = "you shouldn't see this, contact coders immediately."
icon = 'hyperstation/icons/obj/clothing/genitals.dmi'
price = 3
/obj/item/equipment/penis/attack(mob/living/carbon/C, mob/living/user)
var/mob/living/carbon/human/S = user
var/mob/living/carbon/human/T = C
var/obj/item/organ/genital/penis/P = C.getorganslot("penis")
if(P&&P.is_exposed())
if(P.equipment)
to_chat(user, "<span class='notice'>There is already a [P.equipment.name] attached.</span>")
else
if(S!=T)//if your not targeting yourself
C.visible_message("<span class='warning'>[user] is trying to attach [src] to [T]!</span>",\
"<span class='warning'>[user] is trying to put [src] on you!</span>")
if(!do_mob(user, C, 4 SECONDS))//warn them and have a delay of 5 seconds to apply.
return
SEND_SIGNAL(src, "attach_genital_equipment",S)
if(!user.transferItemToLoc(src, P)) //check if you can put it on
return
P.equipment = src
to_chat(user, "<span class='love'>You attach [src] to [T]'s [P.name].</span>")
else
to_chat(user, "<span class='notice'>You don't see anywhere to attach this.</span>")
return
//Cockrings
/obj/item/equipment/penis/ring
name = "cock ring"
desc = "why dont you marry it already?"
icon_state = "cockring"
/obj/item/equipment/penis/ring/metal
name = "metal cock ring"
icon_state = "cockring_metal"
/obj/item/equipment/penis/ring/fancy
name = "fancy cock ring"
desc = "a cock ring with a white bowtie, how cute."
icon_state = "cockring_fancy"
//Cock ring limiter for fancy hide and grow
/obj/item/equipment/penis/ring/limiter
name = "normalizer cock ring"
desc = "An expensive technological cock ring cast in SynTech purples with shimmering Kinaris golds. It will peoples penis size to 5 inches."
icon_state = "cockring_limit"
price = 12
/obj/item/equipment/penis/ring/limiter/Initialize()
.=..()
RegisterSignal(src, "attach_genital_equipment", .proc/attach)
RegisterSignal(src, "detach_genital_equipment", .proc/detach)
/obj/item/equipment/penis/ring/limiter/proc/attach(mob/living/user)
playsound(usr, 'sound/effects/magic.ogg', 100, 1)
var/mob/living/carbon/human/H = usr
var/obj/item/organ/genital/penis/P = H.getorganslot("penis")
P.limited = TRUE
H.update_genitals()
/obj/item/equipment/penis/ring/limiter/proc/detach(mob/living/user)
playsound(usr, 'sound/effects/magic.ogg', 100, 1)
var/mob/living/carbon/human/H = usr
var/obj/item/organ/genital/penis/P = H.getorganslot("penis")
P.limited = FALSE
H.update_genitals()
Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

@@ -56,6 +56,10 @@
/obj/item/clothing/shoes/highheels = 3,
/obj/item/clothing/neck/stole = 2,
/obj/item/clothing/neck/stole/black = 2,
/obj/item/equipment/penis/ring = 5,
/obj/item/equipment/penis/ring/metal = 3,
/obj/item/equipment/penis/ring/fancy = 2,
/obj/item/equipment/penis/ring/limiter = 3,
/obj/item/clothing/under/polychromic/stripper = 3,
/obj/item/clothing/under/polychromic/bikini = 3,
/obj/item/clothing/under/polychromic/onepeice = 3,
@@ -26,6 +26,7 @@
var/obj/item/equipment //for fun stuff that goes on the gentials/maybe rings down the line
var/dontlist = FALSE
var/nochange = FALSE //stops people changing visablity.
var/limited = FALSE
/obj/item/organ/genital/Initialize()
. = ..()
@@ -463,11 +464,20 @@
//creates another icon with mutable appearance, allows different layering depending on direction
var/mutable_appearance/genital_overlay_directional = mutable_appearance(S.icon, layer = -layer)
if(G.limited) //limiter
if(G.size > 3)
size = 3
if(G.size == 3)
size = 2
if(G.size == 2)
size = 1
//genitals bigger than 11 inches / g-cup will appear over clothing, if accepted
//otherwise, appear under clothing
if(G.slot == "penis" || G.slot == "testicles")
if(G.size < 3) //is actually "less than 11 inches"
genital_overlay.layer = -GENITALS_UNDER_LAYER
if(G.slot == "breasts")
var/obj/item/organ/genital/breasts/B = G
if(B.cached_size < 8) //anything smaller than a g-cup
@@ -500,7 +510,7 @@
genital_overlay_directional.layer = -NECK_LAYER
colourcode = "butt_color"
if(use_skintones && H.dna.features["genitals_use_skintone"])
if(use_skintones && H.dna.features["genitals_use_skintone"])
//butts are forced a colour, either skin tones, or main colour.
//how ever, mutants use a darker version, because of their body tone.
genital_overlay.color = "#[skintone2hex(H.skin_tone)]"
+1
View File
@@ -3216,6 +3216,7 @@
#include "hyperstation\code\modules\uplink\uplink_items.dm"
#include "hyperstation\code\obj\ashtray.dm"
#include "hyperstation\code\obj\bluespace sewing kit.dm"
#include "hyperstation\code\obj\cockrings.dm"
#include "hyperstation\code\obj\condom.dm"
#include "hyperstation\code\obj\decal.dm"
#include "hyperstation\code\obj\economy.dm"