diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm
index 23bd53b8b..7b4a1d1ac 100644
--- a/code/_onclick/hud/parallax.dm
+++ b/code/_onclick/hud/parallax.dm
@@ -170,12 +170,13 @@
L.transform = newtransform
- animate(L, transform = matrix(), time = T, loop = -1, flags = ANIMATION_END_NOW)
+ animate(L, transform = L.transform, time = 0, loop = -1, flags = ANIMATION_END_NOW)
+ animate(transform = matrix(), time = T)
/datum/hud/proc/update_parallax()
var/client/C = mymob.client
var/turf/posobj = get_turf(C.eye)
- if(!posobj)
+ if(!posobj)
return
var/area/areaobj = posobj.loc
@@ -341,7 +342,7 @@
//Layenia parallaxes
/obj/screen/parallax_layer/layenia
- icon_state = null
+ icon_state = null
blend_mode = BLEND_OVERLAY
absolute = TRUE
speed = 0.6
diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm
index c2a0aad98..80216c03a 100644
--- a/code/game/turfs/simulated/chasm.dm
+++ b/code/game/turfs/simulated/chasm.dm
@@ -121,7 +121,7 @@
gender = PLURAL
desc = "Clouds as far as the eye can see... Watch your step."
icon = 'icons/turf/space.dmi'
- icon_state = "clouds"
+ icon_state = "cloud"
plane = PLANE_SPACE
tiled_dirt = FALSE
baseturfs = /turf/open/chasm/cloud
@@ -132,10 +132,8 @@
/turf/open/chasm/cloud/Initialize()
. = ..()
- icon_state = SPACE_ICON_STATE
/turf/open/chasm/cloud/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
underlay_appearance.icon = 'icons/turf/space.dmi'
- underlay_appearance.icon_state = SPACE_ICON_STATE
underlay_appearance.plane = PLANE_SPACE
return TRUE
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index a25c1ee00..a79bb4629 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -130,11 +130,11 @@
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())
- if(!dicc.limited)
- if(!dicc.equipment)
- . += "[dicc.desc]"
- else
- . += "[dicc.desc] It's equipped with a [dicc.equipment.name]."
+
+ if(!dicc.equipment)
+ . += "[dicc.desc]"
+ else
+ . += "[dicc.desc] It's equipped with a [dicc.equipment.name]."
if(user.client?.prefs.cit_toggles & VORE_EXAMINE)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 1765e6873..859fce110 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -182,10 +182,24 @@
if(legcuffed)
dat += "
| Legcuffed |
"
+
+ var/mob/living/carbon/U = src //for carbon genitals
+ if(U)
+ for(var/obj/item/organ/genital/G in U.internal_organs)
+ if(G.is_exposed())
+ if(!G.equipment)
+ dat += "| [G.name]: | ["Empty"] |
"
+ else
+ dat += "| [G.name]: | [G.equipment.name] |
"
+ else
+ dat += "| [G.name]: | Obscured |
"
+
dat += {"
Close
"}
+
+
var/datum/browser/popup = new(user, "mob[REF(src)]", "[src]", 440, 510)
popup.set_content(dat.Join())
popup.open()
@@ -237,6 +251,23 @@
to_chat(usr, "You can't reach that! Something is covering it.")
return
+ if(href_list["gitem"])//remove gential item
+ var/obj/item/I = locate(href_list["gitem"])
+ var/obj/item/organ/genital/G = I.loc
+ if(G.is_exposed())
+ to_chat(usr, "You try to remove [src]'s [I].")
+ to_chat(src, "[usr] is trying to remove your [I].")
+ if(!do_mob(usr, src, 3 SECONDS))
+ return
+ SEND_SIGNAL(I, "detach_genital_equipment",usr)
+ usr.put_in_hands(I)
+ G.equipment = null
+ return
+ else
+ to_chat(usr, "You can't reach that! Something is covering it.")
+ return
+
+
if(href_list["pockets"])
var/pocket_side = href_list["pockets"]
var/pocket_id = (pocket_side == "right" ? SLOT_R_STORE : SLOT_L_STORE)
diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm
index 0c68c3cfe..184163722 100644
--- a/hyperstation/code/modules/arousal/arousalhud.dm
+++ b/hyperstation/code/modules/arousal/arousalhud.dm
@@ -225,40 +225,40 @@
if(href_list["removeequipmentpenis"])
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)
+ usr.put_in_hands(I)
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)
+ usr.put_in_hands(I)
O.equipment = null
if(href_list["removeequipmentvagina"])
var/obj/item/organ/genital/vagina/O = usr.getorganslot("vagina")
var/obj/item/I = O.equipment
+ SEND_SIGNAL(I, "detach_genital_equipment",usr)
usr.put_in_hands(I)
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)
+ usr.put_in_hands(I)
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)
+ usr.put_in_hands(I)
O.equipment = null
diff --git a/hyperstation/code/obj/cockrings.dm b/hyperstation/code/obj/cockrings.dm
index 2fc176e28..3386d9dd5 100644
--- a/hyperstation/code/obj/cockrings.dm
+++ b/hyperstation/code/obj/cockrings.dm
@@ -21,9 +21,9 @@
"[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
+ SEND_SIGNAL(src, "attach_genital_equipment",T)
P.equipment = src
to_chat(user, "You attach [src] to [T]'s [P.name].")
@@ -45,7 +45,8 @@
/obj/item/equipment/penis/ring/fancy
- name = "fancy cock ring"
+
+ name = "fancy ribboned cock ring"
desc = "A cock ring with a white bowtie, how cute."
icon_state = "cockring_fancy"
@@ -54,7 +55,7 @@
/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 shrink a penis to a more reasonable size."
+ desc = "An expensive technological cock ring cast in SynTech purples with shimmering Kinaris golds. It will limit the wearers penis size to a third."
icon_state = "cockring_limit"
price = 12
@@ -63,16 +64,18 @@
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)
+/obj/item/equipment/penis/ring/limiter/proc/attach(mob/living/carbon/human/U)
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()
+ var/obj/item/organ/genital/penis/P = loc
+ if(P)
+ P.limited = TRUE
+ P.update_appearance()
+ U.update_genitals()
-/obj/item/equipment/penis/ring/limiter/proc/detach(mob/living/user)
+/obj/item/equipment/penis/ring/limiter/proc/detach(mob/living/carbon/human/U)
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()
+ var/obj/item/organ/genital/penis/P = loc
+ if(P)
+ P.limited = FALSE
+ P.update_appearance()
+ U.update_genitals()
diff --git a/icons/turf/space.dmi b/icons/turf/space.dmi
index e7440c023..d6cc85e07 100644
Binary files a/icons/turf/space.dmi and b/icons/turf/space.dmi differ
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index 8db04d858..7865b976f 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -86,7 +86,10 @@
if(owner)
var/length_new = length*owner.size_multiplier
var/girth_new = girth*owner.size_multiplier
- desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length_new, 0.25)] inch[round(length_new, 0.25) != 1 ? "es" : ""] long and [round(girth_new, 0.25)] inch[round(girth_new, 0.25) != 1 ? "es" : ""] in girth."
+ if(!limited)
+ desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length_new, 0.25)] inch[round(length_new, 0.25) != 1 ? "es" : ""] long and [round(girth_new, 0.25)] inch[round(girth_new, 0.25) != 1 ? "es" : ""] in girth."
+ else
+ desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length_new/3, 0.25)] inch[round(length_new/3, 0.25) != 1 ? "es" : ""] long and [round(girth_new/3, 0.25)] inch[round(girth_new/3, 0.25) != 1 ? "es" : ""] in girth."
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow...
var/mob/living/carbon/human/H = owner // only human mobs have skin_tone, which we need.