diff --git a/code/game/objects/items/devices/compressionkit.dm b/code/game/objects/items/devices/compressionkit.dm
index eb2f47d408..9d10d2663c 100644
--- a/code/game/objects/items/devices/compressionkit.dm
+++ b/code/game/objects/items/devices/compressionkit.dm
@@ -9,6 +9,15 @@
w_class = WEIGHT_CLASS_NORMAL
var/charges = 5
+/obj/item/compressionkit/examine(mob/user)
+ ..()
+ to_chat(user, "It has [charges] charges left.")
+
+/obj/item/compressionkit/proc/sparks()
+ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ s.set_up(5, 1, get_turf(src))
+ s.start()
+
/obj/item/compressionkit/suicide_act(mob/living/carbon/M)
M.visible_message("[M] is sticking their head in [src] and turning it on! [M.p_theyre(TRUE)] going to compress their own skull!")
var/obj/item/bodypart/head = M.get_bodypart("head")
@@ -24,7 +33,7 @@
qdel(head)
new M.gib_type(T,1,M.get_static_viruses())
M.add_splatter_floor(T)
- playsound(M, 'sound/weapons/flash.ogg', 100, 1, -6)
+ playsound(M, 'sound/weapons/flash.ogg', 50, 1)
playsound(M, 'sound/effects/splat.ogg', 50, 1)
return OXYLOSS
@@ -33,27 +42,59 @@
. = ..()
if(!proximity || !target)
return
- if(istype(target, /obj/item))
- var/obj/item/O = target
+ else
if(charges == 0)
- playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 100, 1, -6)
+ playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
to_chat(user, "The bluespace compression kit is out of charges! Recharge it with bluespace crystals.")
return
+ if(istype(target, /obj/item))
+ var/obj/item/O = target
if(O.w_class == 1)
- playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 100, 1, -6)
+ playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
to_chat(user, "[target] cannot be compressed smaller!.")
return
if(O.GetComponent(/datum/component/storage))
to_chat(user, "You feel like compressing an item that stores other items would be counterproductive.")
return
if(O.w_class > 1)
- O.w_class -= 1
- playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
- charges -= 1
- to_chat(user, "You successfully compress [target]!The compressor now has [charges] charges.")
+ playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
+ user.visible_message("[user] is compressing [O] with their bluespace compression kit!")
+ if(do_mob(user, O, 40) && charges > 0 && O.w_class > 1)
+ playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
+ sparks()
+ flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
+ O.w_class -= 1
+ charges -= 1
+ to_chat(user, "You successfully compress [target]! The compressor now has [charges] charges.")
else
to_chat(user, "Anomalous error. Summon a coder.")
+ if(istype(target, /mob/living))
+ var/mob/living/victim = target
+ if(istype(victim, /mob/living/carbon/human))
+ if(user.zone_selected == "groin") // pp smol. There's probably a smarter way to do this but im retarded. If you have a simpler method let me know.
+ var/list/organs = victim.getorganszone("groin")
+ for(var/internal_organ in organs)
+ if(istype(internal_organ, /obj/item/organ/genital/penis))
+ var/obj/item/organ/genital/penis/O = internal_organ
+ playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
+ victim.visible_message("[user] is preparing to shrink [victim]\'s [O.name] with their bluespace compression kit!")
+ if(do_mob(user, victim, 40) && charges > 0 && O.length > 0)
+ victim.visible_message("[user] has shrunk [victim]\'s [O.name]!")
+ playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
+ sparks()
+ flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
+ charges -= 1
+ O.length -= 5
+ if(O.length < 1)
+ victim.visible_message("[user]\'s [O.name] vanishes!")
+ qdel(O) // no pp for you
+ else
+ O.update_size()
+ O.update_appearance()
+
+
+
/obj/item/compressionkit/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/stack/ore/bluespace_crystal))