diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm
index 57978a409a0..787b7434d65 100644
--- a/code/modules/mob/screen.dm
+++ b/code/modules/mob/screen.dm
@@ -456,6 +456,36 @@
usr:handcuffed:loc = usr:loc
usr:handcuffed = null
+ if(istype(usr, /mob/living/carbon/human) && istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket) && usr:canmove && (usr.last_special <= world.time))
+ usr.next_move = world.time + 200
+ usr.last_special = world.time + 200
+ if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
+ usr << "\green You attempt to break out of your straight jacket. (This will take around 5 seconds and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] is trying to break out of \his straight jacket!", usr), 1)
+ spawn(0)
+ if(do_after(usr, 50))
+ if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to break out of the straight jacket!", usr), 1)
+ usr << "\green You successfully break out of your straight jacket."
+ var/obj/sj = usr:wear_suit
+ usr.u_equip(sj)
+ sj.loc = usr.loc
+ else
+ usr << "\red You attempt to get out of your straight jacket. (This will take around 4 minutes and you need to stand still)"
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] attempts to get out \his straight jacket!", usr), 1)
+ spawn(0)
+ if(do_after(usr, 1200))
+ if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
+ for(var/mob/O in viewers(usr))
+ O.show_message(text("\red [] manages to wriggle out of the straight jacket!", usr), 1)
+ usr << "\blue You successfully get out of your straight jacket."
+ var/obj/sj = usr:wear_suit
+ usr.u_equip(sj)
+ sj.loc = usr.loc
+
if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled)
usr.next_move = world.time + 100
usr.last_special = world.time + 100