diff --git a/code/game/machinery/colormate.dm b/code/game/machinery/colormate.dm
index 603b34ee32..1f1c16248c 100644
--- a/code/game/machinery/colormate.dm
+++ b/code/game/machinery/colormate.dm
@@ -6,10 +6,12 @@
density = TRUE
anchored = TRUE
circuit = /obj/item/circuitboard/machine/colormate
- var/obj/item/inserted
+ var/atom/movable/inserted
var/activecolor = "#FFFFFF"
var/list/color_matrix_last
var/matrix_mode = FALSE
+ /// Allow holder'd mobs
+ var/allow_mobs = TRUE
/// Minimum lightness for normal mode
var/minimum_normal_lightness = 50
/// Minimum lightness for matrix mode, tested using 4 test colors of full red, green, blue, white.
@@ -57,6 +59,15 @@
return
if(user.a_intent == INTENT_HARM)
return ..()
+ if(allow_mobs && istype(I, /obj/item/clothing/head/mob_holder))
+ var/obj/item/clothing/head/mob_holder/H = I
+ var/mob/victim = H.held_mob
+ if(!user.transferItemToLoc(I, src))
+ to_chat(user, "[I] is stuck to your hand!")
+ return
+ if(!QDELETED(H))
+ H.release()
+ insert_mob(victim, user)
if(is_type_in_list(I, allowed_types) && is_operational())
if(!user.transferItemToLoc(I, src))
@@ -71,6 +82,14 @@
else
return ..()
+/obj/machinery/gear_painter/proc/insert_mob(mob/victim, mob/user)
+ if(inserted)
+ return
+ if(user)
+ visible_message("[user] stuffs [victim] into [src]!")
+ inserted = victim
+ inserted.forceMove(src)
+
/obj/machinery/gear_painter/AllowDrop()
return FALSE