diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 6cb81678060..07b506d4d50 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -14,64 +14,43 @@
origin_tech = "materials=1"
var/dispenser = 0
var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes
- var/cuff_sound = 'sound/weapons/handcuffs.ogg'
-
-/obj/item/weapon/handcuffs/attack(mob/living/carbon/C as mob, mob/user as mob)
- if (!istype(user, /mob/living/carbon/human))
- user << "\red You don't have the dexterity to do this!"
- return
- if ((M_CLUMSY in usr.mutations) && prob(50))
- user << "\red Uh ... how do those things work?!"
- place_handcuffs(user, user)
- return
- if(!C.handcuffed)
- if (C == user)
- place_handcuffs(user, user)
+/obj/item/weapon/handcuffs/attack(mob/living/carbon/C, mob/user)
+ if(M_CLUMSY in user.mutations && prob(50))
+ user << "Uh... how do those things work?!"
+ if(!C.handcuffed)
+ user.drop_item()
+ loc = C
+ C.handcuffed = src
+ C.update_inv_handcuffed()
return
-
- //check for an aggressive grab
- for (var/obj/item/weapon/grab/G in C.grabbed_by)
- if (G.loc == user && G.state >= GRAB_AGGRESSIVE)
- place_handcuffs(C, user)
+
+ var/cable = 0
+ if(istype(src, /obj/item/weapon/handcuffs/cable))
+ cable = 1
+
+ if(!C.handcuffed)
+ C.visible_message("[user] is trying to put handcuffs on [C]!", \
+ "[user] is trying to put handcuffs on [C]!")
+
+ if(cable)
+ playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
+ else
+ playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
+
+ if(do_mob(user, C, 30))
+ if(C.handcuffed)
return
- user << "\red You need to have a firm grip on [C] before you can put \the [src] on!"
+ user.drop_item()
+ loc = C
+ C.handcuffed = src
+ C.update_inv_handcuffed()
+ if(cable)
+ feedback_add_details("handcuffs","C")
+ else
+ feedback_add_details("handcuffs","H")
-/obj/item/weapon/handcuffs/proc/place_handcuffs(var/mob/living/carbon/target, var/mob/user)
- playsound(src.loc, cuff_sound, 30, 1, -2)
-
- if (ishuman(target))
- var/mob/living/carbon/human/H = target
- H.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])")
- user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [H.name] ([H.ckey])")
- msg_admin_attack("[key_name(user)] attempted to handcuff [key_name(H)]")
-
- var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
- O.source = user
- O.target = H
- O.item = user.get_active_hand()
- O.s_loc = user.loc
- O.t_loc = H.loc
- O.place = "handcuff"
- H.requests += O
- spawn( 0 )
- feedback_add_details("handcuffs","H")
- O.process()
- return
-
- if (ismonkey(target))
- var/mob/living/carbon/monkey/M = target
- var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( )
- O.source = user
- O.target = M
- O.item = user.get_active_hand()
- O.s_loc = user.loc
- O.t_loc = M.loc
- O.place = "handcuff"
- M.requests += O
- spawn( 0 )
- O.process()
- return
+ add_logs(user, C, "handcuffed")
var/last_chew = 0
/mob/living/carbon/human/RestrainedClickOn(var/atom/A)
@@ -105,7 +84,6 @@ var/last_chew = 0
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff_red"
breakouttime = 300 //Deciseconds = 30s
- cuff_sound = 'sound/weapons/cablecuff.ogg'
/obj/item/weapon/handcuffs/cable/red
icon_state = "cuff_red"
@@ -150,17 +128,3 @@ var/last_chew = 0
user << "You wrap the cable restraint around the top of the rod."
del(src)
-/obj/item/weapon/handcuffs/cyborg
- dispenser = 1
-
-/obj/item/weapon/handcuffs/cyborg/attack(mob/living/carbon/C as mob, mob/user as mob)
- if(!C.handcuffed)
- var/turf/p_loc = user.loc
- var/turf/p_loc_m = C.loc
- playsound(src.loc, cuff_sound, 30, 1, -2)
- user.visible_message("\red [user] is trying to put handcuffs on [C]!")
- spawn(30)
- if(!C) return
- if(p_loc == user.loc && p_loc_m == C.loc)
- C.handcuffed = new /obj/item/weapon/handcuffs(C)
- C.update_inv_handcuffed()
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index a02afbad524..fafed5a85cd 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -692,16 +692,6 @@ It can still be worn/put on as normal.
slot_to_process = slot_handcuffed
if (target.handcuffed)
strip_item = target.handcuffed
- else if (source != target && ishuman(source))
- //check that we are still grabbing them
- var/grabbing = 0
- for (var/obj/item/weapon/grab/G in target.grabbed_by)
- if (G.loc == source && G.state >= GRAB_AGGRESSIVE)
- grabbing = 1
- if (!grabbing)
- slot_to_process = null
- source << "\red Your grasp was broken before you could restrain [target]!"
-
if("legcuff")
slot_to_process = slot_legcuffed
if (target.legcuffed)