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.