diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 0fc8d0c57e9..18d2e7c5d6f 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -30,49 +30,52 @@
if ((usr.mutations & CLUMSY) && prob(50))
usr << "\red Uh ... how do those things work?!"
if (istype(M, /mob/living/carbon/human))
- var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
- O.source = user
- O.target = user
- O.item = user.equipped()
- O.s_loc = user.loc
- O.t_loc = user.loc
- O.place = "handcuff"
- M.requests += O
- spawn( 0 )
- O.process()
- return
+ if(!M.handcuffed)
+ var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
+ O.source = user
+ O.target = user
+ O.item = user.equipped()
+ O.s_loc = user.loc
+ O.t_loc = user.loc
+ O.place = "handcuff"
+ M.requests += O
+ spawn( 0 )
+ O.process()
+ return
return
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
usr << "\red You don't have the dexterity to do this!"
return
if (istype(M, /mob/living/carbon/human))
- M.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])")
- user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [M.name] ([M.ckey])")
- var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
- O.source = user
- O.target = M
- O.item = user.equipped()
- O.s_loc = user.loc
- O.t_loc = M.loc
- O.place = "handcuff"
- M.requests += O
- spawn( 0 )
- playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
- O.process()
- return
+ if(!M.handcuffed)
+ M.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])")
+ user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [M.name] ([M.ckey])")
+ var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
+ O.source = user
+ O.target = M
+ O.item = user.equipped()
+ O.s_loc = user.loc
+ O.t_loc = M.loc
+ O.place = "handcuff"
+ M.requests += O
+ spawn( 0 )
+ playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
+ O.process()
+ return
else
- var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( )
- O.source = user
- O.target = M
- O.item = user.equipped()
- O.s_loc = user.loc
- O.t_loc = M.loc
- O.place = "handcuff"
- M.requests += O
- spawn( 0 )
- playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
- O.process()
- return
+ if(!M.handcuffed)
+ var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( )
+ O.source = user
+ O.target = M
+ O.item = user.equipped()
+ O.s_loc = user.loc
+ O.t_loc = M.loc
+ O.place = "handcuff"
+ M.requests += O
+ spawn( 0 )
+ playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
+ O.process()
+ return
return
@@ -497,4 +500,4 @@
if(exposed_temperature >= 373.15)
for(var/mob/M in viewers(5, src))
M << "\red \the [src] burns up."
- del(src)
\ No newline at end of file
+ del(src)
diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm
index edf60ec1f95..14e423c2bbc 100644
--- a/code/modules/mob/screen.dm
+++ b/code/modules/mob/screen.dm
@@ -442,7 +442,7 @@
O.show_message(text("\red [] is trying to break the handcuffs!", usr), 1)
spawn(0)
if(do_after(usr, 50))
- if(!usr:handcuffed) return
+ if(!usr:handcuffed || usr.moved_recently || usr:buckled) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red [] manages to break the handcuffs!", usr), 1)
usr << "\green You successfully break your handcuffs."