diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 1be10296d..2175906a7 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -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 @@
. += "[t_He] [t_is] currently in heat."
//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] Equipt with a [dicc.equipment.name]"
+
if(user.client?.prefs.cit_toggles & VORE_EXAMINE)
var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code
diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm
index 318edefd0..0c68c3cfe 100644
--- a/hyperstation/code/modules/arousal/arousalhud.dm
+++ b/hyperstation/code/modules/arousal/arousalhud.dm
@@ -53,7 +53,7 @@
if(Belly.inflatable)
dat += "Deflate belly"
dat += "(Shrink your belly down a size)
"
-
+
if(user.pulling && !isnoncarbon(user.pulling)) // do not fuck animals
dat += "Climax over [user.pulling]" //you can cum on objects if you really want...
dat += "(Orgasm over a person or object.)
"
@@ -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
diff --git a/hyperstation/code/obj/cockrings.dm b/hyperstation/code/obj/cockrings.dm
new file mode 100644
index 000000000..245da9a8b
--- /dev/null
+++ b/hyperstation/code/obj/cockrings.dm
@@ -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, "There is already a [P.equipment.name] attached.")
+ else
+ if(S!=T)//if your not targeting yourself
+ C.visible_message("[user] is trying to attach [src] to [T]!",\
+ "[user] is trying to put [src] on you!")
+ 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, "You attach [src] to [T]'s [P.name].")
+
+
+ else
+ to_chat(user, "You don't see anywhere to attach this.")
+ 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()
diff --git a/hyperstation/icons/obj/clothing/genitals.dmi b/hyperstation/icons/obj/clothing/genitals.dmi
new file mode 100644
index 000000000..e957aeab4
Binary files /dev/null and b/hyperstation/icons/obj/clothing/genitals.dmi differ
diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm
index 9f1157c99..3b95f2819 100644
--- a/modular_citadel/code/game/machinery/vending.dm
+++ b/modular_citadel/code/game/machinery/vending.dm
@@ -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,
diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm
index 9edea910a..06f20ad51 100644
--- a/modular_citadel/code/modules/arousal/organs/genitals.dm
+++ b/modular_citadel/code/modules/arousal/organs/genitals.dm
@@ -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)]"
diff --git a/tgstation.dme b/tgstation.dme
index bd40b91ac..be5e45a22 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -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"