From 4cc2103d2b09ff48d4df5607d09c0f39a12f8252 Mon Sep 17 00:00:00 2001 From: quotefox Date: Wed, 13 Jul 2022 10:56:24 +0100 Subject: [PATCH] Cock rings + Limiter Includes base code to allow penis equipment --- .../mob/living/carbon/human/examine.dm | 11 ++- .../code/modules/arousal/arousalhud.dm | 7 +- hyperstation/code/obj/cockrings.dm | 78 ++++++++++++++++++ hyperstation/icons/obj/clothing/genitals.dmi | Bin 0 -> 557 bytes .../code/game/machinery/vending.dm | 4 + .../code/modules/arousal/organs/genitals.dm | 12 ++- tgstation.dme | 1 + 7 files changed, 108 insertions(+), 5 deletions(-) create mode 100644 hyperstation/code/obj/cockrings.dm create mode 100644 hyperstation/icons/obj/clothing/genitals.dmi 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 0000000000000000000000000000000000000000..e957aeab4aceeb621927e9743442dbba60b77b56 GIT binary patch literal 557 zcmV+|0@D47P)zMz;!^8Rc z`I?%V;o;$wBhiS6h`J9s!vFvP0d!JMQvg8b*k%9#0Ec>1Sad{Xb7OL8aCB*JZU6vy zoKseCa&`CgQ*iP1A~08H#pBPp;j`v3p|14%?dR9J=Wmdg%=APhxueAG9HGyealP5~FX zXqiD-nDh_>iSeGKfT>b~Ae<>2IrCqRe1?#p(SQQ15F;onM@a_M4FEJXV<>`!c->Zk zmU!PaUeI*3A(roF%7FQPW({0{_WZ-*%$|Q({Fkq)eqZ#20QLnW3fexDrlm>*p)?&+ zB39rG4tkTJ!%gP$RpcUc^Zc_L9G9uCvCLGXPVOlXjm)`a+Bvl8)Nj4nvciSuJ6@S v`Dpk!(({#C>}Hn>-^bZ-JX;_L!Xx 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"