diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm
index 8abf2b96bc1c..78a8e46b64aa 100644
--- a/code/game/machinery/autolathe_datums.dm
+++ b/code/game/machinery/autolathe_datums.dm
@@ -269,7 +269,7 @@
/datum/autolathe/recipe/handcuffs
name = "handcuffs"
- path = /obj/item/handcuffs
+ path = /obj/item/restraint/handcuffs
hidden = TRUE
category = AUTOLATHE_CATEGORY_GENERAL
diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm
index f410de912726..a2c9217f73f3 100644
--- a/code/game/machinery/vending/vending_types.dm
+++ b/code/game/machinery/vending/vending_types.dm
@@ -234,8 +234,9 @@
icon_deny = "sec-deny"
req_access = list(ACCESS_MARINE_BRIG)
products = list(
- /obj/item/handcuffs = 8,
- /obj/item/handcuffs/zip = 10,
+ /obj/item/restraint/handcuffs = 8,
+ /obj/item/restraint/handcuffs/zip = 10,
+ /obj/item/restraint/legcuffs = 3,
/obj/item/explosive/grenade/flashbang = 4,
/obj/item/weapon/gun/energy/taser = 4,
/obj/item/reagent_container/spray/pepper = 4,
@@ -263,7 +264,7 @@
hacking_safety = TRUE
wrenchable = FALSE
products = list(
- /obj/item/handcuffs/zip = 40,
+ /obj/item/restraint/handcuffs/zip = 40,
/obj/item/explosive/grenade/flashbang = 20,
/obj/item/explosive/grenade/custom/teargas = 40,
/obj/item/ammo_magazine/smg/m39/rubber = 40,
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index fb0103876301..1a632569eccb 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -668,13 +668,13 @@ cases. Override_icon_state should be a list.*/
if(WEAR_HANDCUFFS)
if(human.handcuffed)
return FALSE
- if(!istype(src, /obj/item/handcuffs))
+ if(!istype(src, /obj/item/restraint))
return FALSE
return TRUE
if(WEAR_LEGCUFFS)
if(human.legcuffed)
return FALSE
- if(!istype(src, /obj/item/legcuffs))
+ if(!istype(src, /obj/item/restraint))
return FALSE
return TRUE
if(WEAR_IN_ACCESSORY)
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 2137b41d86bf..af71b806ed42 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -1,124 +1,162 @@
-/obj/item/handcuffs
- name = "handcuffs"
- desc = "Use this to keep prisoners in line."
- gender = PLURAL
- icon = 'icons/obj/items/items.dmi'
- icon_state = "handcuff"
- flags_atom = FPRINT|CONDUCT
- flags_equip_slot = SLOT_WAIST
- throwforce = 5
- w_class = SIZE_SMALL
- throw_speed = SPEED_SLOW
- throw_range = 5
- matter = list("metal" = 500)
-
- var/dispenser = 0
+/obj/item/restraint
+ /// SLOT_HANDS or SLOT_LEGS, for handcuffs or legcuffs
+ var/target_zone = SLOT_HANDS
+ /// How long to break out
var/breakouttime = 1 MINUTES
/// determines if handcuffs will be deleted on removal
var/single_use = 0
var/cuff_sound = 'sound/weapons/handcuffs.ogg'
/// how many deciseconds it takes to cuff someone
var/cuff_delay = 4 SECONDS
+ /// If can be applied to people manually
+ var/manual = TRUE
-/obj/item/handcuffs/attack(mob/living/carbon/C, mob/user)
- if(!istype(C))
+/obj/item/restraint/attack(mob/living/carbon/attacked_carbon, mob/user)
+ if(!istype(attacked_carbon) || !manual)
return ..()
- if (!istype(user, /mob/living/carbon/human))
+ if (!ishuman(user))
to_chat(user, SPAN_DANGER("You don't have the dexterity to do this!"))
return
- if(!C.handcuffed)
- place_handcuffs(C, user)
-
-/obj/item/handcuffs/get_mob_overlay(mob/user_mob, slot)
- var/image/ret = ..()
-
- var/image/handcuffs = overlay_image('icons/mob/mob.dmi', "handcuff1", color, RESET_COLOR)
- ret.overlays += handcuffs
-
- return ret
-
-/obj/item/handcuffs/proc/place_handcuffs(mob/living/carbon/target, mob/user)
+ switch(target_zone)
+ if(SLOT_HANDS)
+ if(!attacked_carbon.handcuffed)
+ place_handcuffs(attacked_carbon, user)
+ if(SLOT_LEGS)
+ if(!attacked_carbon.legcuffed)
+ apply_legcuffs(attacked_carbon, user)
+
+/obj/item/restraint/proc/place_handcuffs(mob/living/carbon/target, mob/user)
playsound(src.loc, cuff_sound, 25, 1, 4)
if(user.action_busy)
return
- if (ishuman(target))
- var/mob/living/carbon/human/H = target
+ if(ishuman(target))
+ var/mob/living/carbon/human/human_mob = target
- if (!H.has_limb_for_slot(WEAR_HANDCUFFS))
- to_chat(user, SPAN_DANGER("\The [H] needs at least two wrists before you can cuff them together!"))
+ if(!human_mob.has_limb_for_slot(WEAR_HANDCUFFS))
+ to_chat(user, SPAN_DANGER("\The [human_mob] needs at least two wrists before you can cuff them together!"))
return
- H.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [key_name(user)]")
- user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [key_name(H)]")
- msg_admin_attack("[key_name(user)] attempted to handcuff [key_name(H)] in [get_area(src)] ([src.loc.x],[src.loc.y],[src.loc.z]).", src.loc.x, src.loc.y, src.loc.z)
+ human_mob.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [key_name(human_mob)]")
+ msg_admin_attack("[key_name(user)] attempted to handcuff [key_name(human_mob)] in [get_area(src)] ([loc.x],[loc.y],[loc.z]).", loc.x, loc.y, loc.z)
- user.visible_message(SPAN_NOTICE("[user] tries to put [src] on [H]."))
- if(do_after(user, cuff_delay, INTERRUPT_MOVED, BUSY_ICON_HOSTILE, H, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
- if(src == user.get_active_hand() && !H.handcuffed && Adjacent(user))
- if(iscarbon(H))
- if(istype(H.buckled, /obj/structure/bed/roller))
+ user.visible_message(SPAN_NOTICE("[user] tries to put [src] on [human_mob]."))
+ if(do_after(user, cuff_delay, INTERRUPT_MOVED, BUSY_ICON_HOSTILE, human_mob, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
+ if(src == user.get_active_hand() && !human_mob.handcuffed && Adjacent(user))
+ if(iscarbon(human_mob))
+ if(istype(human_mob.buckled, /obj/structure/bed/roller))
to_chat(user, SPAN_DANGER("You cannot handcuff someone who is buckled onto a roller bed."))
return
- if(H.has_limb_for_slot(WEAR_HANDCUFFS))
+ if(human_mob.has_limb_for_slot(WEAR_HANDCUFFS))
user.drop_inv_item_on_ground(src)
- H.equip_to_slot_if_possible(src, WEAR_HANDCUFFS, 1, 0, 1, 1)
+ human_mob.equip_to_slot_if_possible(src, WEAR_HANDCUFFS, 1, 0, 1, 1)
user.count_niche_stat(STATISTICS_NICHE_HANDCUFF)
- else if (ismonkey(target))
+ else if(ismonkey(target))
user.visible_message(SPAN_NOTICE("[user] tries to put [src] on [target]."))
if(do_after(user, 30, INTERRUPT_MOVED, BUSY_ICON_HOSTILE, target, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
if(src == user.get_active_hand() && !target.handcuffed && Adjacent(user))
user.drop_inv_item_on_ground(src)
target.equip_to_slot_if_possible(src, WEAR_HANDCUFFS, 1, 0, 1, 1)
+/obj/item/restraint/handcuffs
+ name = "handcuffs"
+ desc = "Use this to keep prisoners in line."
+ gender = PLURAL
+ icon = 'icons/obj/items/items.dmi'
+ icon_state = "handcuff"
+ flags_atom = FPRINT|CONDUCT
+ flags_equip_slot = SLOT_WAIST
+ throwforce = 5
+ w_class = SIZE_SMALL
+ throw_speed = SPEED_SLOW
+ throw_range = 5
+ matter = list("metal" = 500)
+
+/obj/item/restraint/handcuffs/get_mob_overlay(mob/user_mob, slot)
+ var/image/ret = ..()
+
+ var/image/handcuffs = overlay_image('icons/mob/mob.dmi', "handcuff1", color, RESET_COLOR)
+ ret.overlays += handcuffs
+
+ return ret
-/obj/item/handcuffs/zip
+/obj/item/restraint/handcuffs/zip
name = "zip cuffs"
desc = "Single-use plastic zip tie handcuffs."
w_class = SIZE_TINY
icon_state = "cuff_zip"
- breakouttime = 600 //Deciseconds = 60s
+ breakouttime = 60 SECONDS
cuff_sound = 'sound/weapons/cablecuff.ogg'
cuff_delay = 20
-/obj/item/handcuffs/zip/place_handcuffs(mob/living/carbon/target, mob/user)
+/obj/item/restraint/handcuffs/zip/place_handcuffs(mob/living/carbon/target, mob/user)
..()
flags_item |= DELONDROP
-/obj/item/handcuffs/cable
+/obj/item/restraint/adjustable/verb/adjust_restraints()
+ set category = "Object"
+ set name = "Adjust Restraints"
+ set desc = "Adjust the restraint size for wrists or ankles."
+ set src = usr.contents
+
+ if(!ishuman(usr))
+ return FALSE
+
+ if(usr.is_mob_incapacitated())
+ to_chat(usr, "Not right now.")
+ return FALSE
+
+ switch(target_zone)
+ if(SLOT_HANDS)
+ target_zone = SLOT_LEGS
+ to_chat(usr, SPAN_NOTICE("[src] has been adjusted to tie around a subject's ankles."))
+ if(SLOT_LEGS)
+ target_zone = SLOT_HANDS
+ to_chat(usr, SPAN_NOTICE("[src] has been adjusted to tie around a subject's wrists."))
+
+/obj/item/restraint/adjustable/get_examine_text(mob/user)
+ . = ..()
+ switch(target_zone)
+ if(SLOT_HANDS)
+ . += SPAN_RED("Sized for human hands.")
+ if(SLOT_LEGS)
+ . += SPAN_RED("Sized for human ankles.")
+
+/obj/item/restraint/adjustable/cable
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff_white"
- breakouttime = 300 //Deciseconds = 30s
+ breakouttime = 30 SECONDS
cuff_sound = 'sound/weapons/cablecuff.ogg'
-/obj/item/handcuffs/cable/red
+/obj/item/restraint/adjustable/cable/red
color = "#DD0000"
-/obj/item/handcuffs/cable/yellow
+/obj/item/restraint/adjustable/cable/yellow
color = "#DDDD00"
-/obj/item/handcuffs/cable/blue
+/obj/item/restraint/adjustable/cable/blue
color = "#0000DD"
-/obj/item/handcuffs/cable/green
+/obj/item/restraint/adjustable/cable/green
color = "#00DD00"
-/obj/item/handcuffs/cable/pink
+/obj/item/restraint/adjustable/cable/pink
color = "#DD00DD"
-/obj/item/handcuffs/cable/orange
+/obj/item/restraint/adjustable/cable/orange
color = "#DD8800"
-/obj/item/handcuffs/cable/cyan
+/obj/item/restraint/adjustable/cable/cyan
color = "#00DDDD"
-/obj/item/handcuffs/cable/white
+/obj/item/restraint/adjustable/cable/white
color = "#FFFFFF"
-/obj/item/handcuffs/cable/attackby(obj/item/I, mob/user as mob)
+/obj/item/restraint/adjustable/cable/attackby(obj/item/I, mob/user as mob)
..()
if(istype(I, /obj/item/stack/rods))
var/obj/item/stack/rods/R = I
@@ -130,34 +168,30 @@
qdel(src)
update_icon(user)
-
-/obj/item/handcuffs/cyborg
- dispenser = 1
-
-/obj/item/handcuffs/cyborg/attack(mob/living/carbon/C as mob, mob/user as mob)
- if(!C.handcuffed)
+/obj/item/restraint/handcuffs/cyborg/attack(mob/living/carbon/carbon_mob as mob, mob/user as mob)
+ if(!carbon_mob.handcuffed)
var/turf/p_loc = user.loc
- var/turf/p_loc_m = C.loc
- playsound(src.loc, cuff_sound, 25, 1, 4)
- user.visible_message(SPAN_DANGER("[user] is trying to put handcuffs on [C]!"))
-
- if (ishuman(C))
- var/mob/living/carbon/human/H = C
- if (!H.has_limb_for_slot(WEAR_HANDCUFFS))
- to_chat(user, SPAN_DANGER("\The [H] needs at least two wrists before you can cuff them together!"))
+ var/turf/p_loc_m = carbon_mob.loc
+ playsound(loc, cuff_sound, 25, 1, 4)
+ user.visible_message(SPAN_DANGER("[user] is trying to put handcuffs on [carbon_mob]!"))
+
+ if(ishuman(carbon_mob))
+ var/mob/living/carbon/human/human_mob = carbon_mob
+ if (!human_mob.has_limb_for_slot(WEAR_HANDCUFFS))
+ to_chat(user, SPAN_DANGER("\The [human_mob] needs at least two wrists before you can cuff them together!"))
return
spawn(30)
- if(!C) return
- if(p_loc == user.loc && p_loc_m == C.loc)
- C.handcuffed = new /obj/item/handcuffs(C)
- C.handcuff_update()
+ if(!carbon_mob) return
+ if(p_loc == user.loc && p_loc_m == carbon_mob.loc)
+ carbon_mob.handcuffed = new /obj/item/restraint/handcuffs(carbon_mob)
+ carbon_mob.handcuff_update()
-/obj/item/restraints
+/obj/item/xeno_restraints
name = "xeno restraints"
desc = "Use this to hold xenomorphic creatures safely."
gender = PLURAL
@@ -171,10 +205,9 @@
throw_range = 5
matter = list("metal" = 500)
- var/dispenser = 0
var/breakouttime = 2 MINUTES
-/obj/item/restraints/attack(mob/living/carbon/C as mob, mob/user as mob)
+/obj/item/xeno_restraints/attack(mob/living/carbon/C as mob, mob/user as mob)
if(!istype(C, /mob/living/carbon/xenomorph))
to_chat(user, SPAN_DANGER("The cuffs do not fit!"))
return
@@ -187,7 +220,7 @@
spawn(30)
if(!C) return
if(p_loc == user.loc && p_loc_m == C.loc)
- C.handcuffed = new /obj/item/restraints(C)
+ C.handcuffed = new /obj/item/xeno_restraints(C)
C.handcuff_update()
C.visible_message(SPAN_DANGER("[C] has been successfully restrained by [user]!"))
qdel(src)
diff --git a/code/game/objects/items/legcuffs.dm b/code/game/objects/items/legcuffs.dm
index c0dfe44728f0..1d216e6556e2 100644
--- a/code/game/objects/items/legcuffs.dm
+++ b/code/game/objects/items/legcuffs.dm
@@ -1,4 +1,4 @@
-/obj/item/legcuffs
+/obj/item/restraint/legcuffs
name = "legcuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
@@ -8,24 +8,66 @@
throwforce = 0
w_class = SIZE_MEDIUM
- var/breakouttime = 15 SECONDS
+ target_zone = SLOT_LEGS
-/obj/item/legcuffs/beartrap
+/obj/item/restraint/proc/apply_legcuffs(mob/living/carbon/target, mob/user)
+ playsound(loc, 'sound/weapons/handcuffs.ogg', 25, 1, 4)
+
+ if(user.action_busy)
+ return FALSE
+
+ if (ishuman(target))
+ var/mob/living/carbon/human/human_target = target
+
+ if (!human_target.has_limb_for_slot(WEAR_LEGCUFFS))
+ to_chat(user, SPAN_DANGER("\The [human_target] needs two ankles before you can cuff them together!"))
+ return FALSE
+
+ human_target.attack_log += text("\[[time_stamp()]\] Has been legcuffed (attempt) by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] Attempted to legcuff [key_name(human_target)]")
+ msg_admin_attack("[key_name(user)] attempted to legcuff [key_name(human_target)] in [get_area(src)] ([loc.x],[loc.y],[loc.z]).", loc.x, loc.y, loc.z)
+
+ user.visible_message(SPAN_NOTICE("[user] tries to put [src] on [human_target]."))
+ if(do_after(user, cuff_delay, INTERRUPT_MOVED, BUSY_ICON_HOSTILE, human_target, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
+ if(src == user.get_active_hand() && !human_target.legcuffed && Adjacent(user))
+ if(iscarbon(human_target))
+ if(istype(human_target.buckled, /obj/structure/bed/roller))
+ to_chat(user, SPAN_DANGER("You cannot legcuff someone who is buckled onto a roller bed."))
+ return FALSE
+ if(human_target.has_limb_for_slot(WEAR_LEGCUFFS))
+ user.drop_inv_item_on_ground(src)
+ human_target.equip_to_slot_if_possible(src, WEAR_LEGCUFFS, 1, 0, 1, 1)
+ user.count_niche_stat(STATISTICS_NICHE_HANDCUFF)
+
+ else if (ismonkey(target))
+ user.visible_message(SPAN_NOTICE("[user] tries to put [src] on [target]."))
+ if(do_after(user, 30, INTERRUPT_MOVED, BUSY_ICON_HOSTILE, target, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
+ if(src == user.get_active_hand() && !target.legcuffed && Adjacent(user))
+ user.drop_inv_item_on_ground(src)
+ target.equip_to_slot_if_possible(src, WEAR_LEGCUFFS, 1, 0, 1, 1)
+ return TRUE
+
+/obj/item/restraint/legcuffs/beartrap
name = "bear trap"
throw_speed = SPEED_FAST
throw_range = 1
icon_state = "beartrap0"
desc = "A trap used to catch bears and other legged creatures."
+ breakouttime = 20 SECONDS
var/armed = FALSE
+ manual = FALSE
+
+/obj/item/restraint/legcuffs/beartrap/apply_legcuffs(mob/living/carbon/target, mob/user)
+ return FALSE
-/obj/item/legcuffs/beartrap/attack_self(mob/user as mob)
+/obj/item/restraint/legcuffs/beartrap/attack_self(mob/user as mob)
..()
if(ishuman(user) && !user.stat && !user.is_mob_restrained())
armed = !armed
icon_state = "beartrap[armed]"
to_chat(user, SPAN_NOTICE("[src] is now [armed ? "armed" : "disarmed"]"))
-/obj/item/legcuffs/beartrap/Crossed(atom/movable/AM)
+/obj/item/restraint/legcuffs/beartrap/Crossed(atom/movable/AM)
if(armed)
if(ismob(AM))
var/mob/M = AM
diff --git a/code/game/objects/items/stacks/cable_coil.dm b/code/game/objects/items/stacks/cable_coil.dm
index 077cb801c90d..1dd95464ddd5 100644
--- a/code/game/objects/items/stacks/cable_coil.dm
+++ b/code/game/objects/items/stacks/cable_coil.dm
@@ -70,7 +70,7 @@
if(src.amount <= 14)
to_chat(usr, SPAN_WARNING("You need at least 15 lengths to make restraints!"))
return
- var/obj/item/handcuffs/cable/B = new /obj/item/handcuffs/cable(usr.loc)
+ var/obj/item/restraint/adjustable/cable/B = new /obj/item/restraint/adjustable/cable(usr.loc)
B.color = color
to_chat(usr, SPAN_NOTICE("You wind some cable together to make some restraints."))
src.use(15)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 1daffa2908f0..82a2623bec16 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -357,7 +357,7 @@
/obj/item/explosive/grenade/flashbang,
/obj/item/explosive/grenade/custom/teargas,
/obj/item/reagent_container/spray/pepper,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/flash,
/obj/item/clothing/glasses,
/obj/item/ammo_magazine/pistol,
@@ -402,7 +402,7 @@
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/device/flash(src)
new /obj/item/weapon/baton(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/device/clue_scanner(src)
@@ -422,7 +422,7 @@
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/device/flash(src)
new /obj/item/weapon/baton(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/ammo_magazine/revolver/upp/shrapnel(src)
@@ -439,8 +439,8 @@
new /obj/item/weapon/baton(src)
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/device/clue_scanner(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
new /obj/item/explosive/grenade/flashbang(src)
/obj/item/storage/belt/security/MP/CMB/synth/fill_preset_inventory()
@@ -449,8 +449,8 @@
new /obj/item/weapon/baton(src)
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/device/clue_scanner(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
new /obj/item/explosive/grenade/flashbang(src)
/obj/item/storage/belt/marine
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 4b7ecc4c5599..3f5e56f85517 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -345,14 +345,28 @@
icon_state = "handcuff"
/obj/item/storage/box/handcuffs/fill_preset_inventory()
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
+
+
+/obj/item/storage/box/legcuffs
+ name = "box of legcuffs"
+ desc = "A box full of legcuffs."
+ icon_state = "handcuff"
+/obj/item/storage/box/legcuffs/fill_preset_inventory()
+ new /obj/item/restraint/legcuffs(src)
+ new /obj/item/restraint/legcuffs(src)
+ new /obj/item/restraint/legcuffs(src)
+ new /obj/item/restraint/legcuffs(src)
+ new /obj/item/restraint/legcuffs(src)
+ new /obj/item/restraint/legcuffs(src)
+ new /obj/item/restraint/legcuffs(src)
/obj/item/storage/box/zipcuffs
name = "box of zip cuffs"
@@ -360,20 +374,20 @@
icon_state = "handcuff"
/obj/item/storage/box/zipcuffs/fill_preset_inventory()
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
/obj/item/storage/box/zipcuffs/small
name = "small box of zip cuffs"
@@ -381,13 +395,13 @@
w_class = SIZE_MEDIUM
/obj/item/storage/box/zipcuffs/fill_preset_inventory()
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
- new /obj/item/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
+ new /obj/item/restraint/handcuffs/zip(src)
/obj/item/storage/box/tapes
name = "box of regulation tapes"
diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm
index 574d08e6a15b..de85ad682731 100644
--- a/code/game/objects/items/tools/maintenance_tools.dm
+++ b/code/game/objects/items/tools/maintenance_tools.dm
@@ -141,7 +141,7 @@
icon_state = "tac_cutters"
/obj/item/tool/wirecutters/attack(mob/living/carbon/C, mob/user)
- if((C.handcuffed) && (istype(C.handcuffed, /obj/item/handcuffs/cable)))
+ if((C.handcuffed) && (istype(C.handcuffed, /obj/item/restraint/adjustable/cable)))
user.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
"You cut \the [C]'s restraints with \the [src]!",\
"You hear cable being cut.")
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm
index 6c711a7bcabe..baa9e9bd8cc9 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm
@@ -170,7 +170,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes)
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/weapon/baton(src)
new /obj/item/device/flash(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/storage/pouch/general/medium(src)
if(prob(50))
@@ -205,7 +205,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes)
new /obj/item/storage/backpack/satchel/sec(src)
new /obj/item/device/flash(src)
new /obj/item/reagent_container/spray/pepper(src)
- new /obj/item/handcuffs(src)
+ new /obj/item/restraint/handcuffs(src)
new /obj/item/storage/pouch/general/large(src)
/obj/structure/closet/secure_closet/military_officer_spare
diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm
index 4318e1a3b184..7d6c8ed3d5dc 100644
--- a/code/modules/clothing/shoes/colour.dm
+++ b/code/modules/clothing/shoes/colour.dm
@@ -68,32 +68,47 @@
/obj/item/clothing/shoes/orange
name = "orange shoes"
icon_state = "orange"
- var/obj/item/handcuffs/chained = null
+ var/obj/item/restraint/handcuffs/chained = null
-/obj/item/clothing/shoes/orange/proc/attach_cuffs(obj/item/handcuffs/cuffs, mob/user as mob)
- if (src.chained) return
+/obj/item/clothing/shoes/orange/proc/attach_cuffs(obj/item/restraint/cuffs, mob/user as mob)
+ if(chained)
+ return FALSE
user.drop_held_item()
cuffs.forceMove(src)
- src.chained = cuffs
- src.slowdown = 15
- src.icon_state = "orange1"
+ chained = cuffs
+ slowdown = 15
+ icon_state = "orange1"
+ time_to_equip = (cuffs.breakouttime / 4)
+ time_to_unequip = cuffs.breakouttime
+ return TRUE
/obj/item/clothing/shoes/orange/proc/remove_cuffs(mob/user as mob)
- if (!src.chained) return
+ if(!chained)
+ return FALSE
- user.put_in_hands(src.chained)
- src.chained.add_fingerprint(user)
+ user.put_in_hands(chained)
+ chained.add_fingerprint(user)
- src.slowdown = initial(slowdown)
- src.icon_state = "orange"
- src.chained = null
+ slowdown = initial(slowdown)
+ icon_state = "orange"
+ chained = null
+ time_to_equip = initial(time_to_equip)
+ time_to_unequip = initial(time_to_unequip)
+ return TRUE
/obj/item/clothing/shoes/orange/attack_self(mob/user as mob)
..()
remove_cuffs(user)
-/obj/item/clothing/shoes/orange/attackby(H as obj, mob/user as mob)
+/obj/item/clothing/shoes/orange/attackby(attacking_object as obj, mob/user as mob)
..()
- if (istype(H, /obj/item/handcuffs))
- attach_cuffs(H, user)
+ if(istype(attacking_object, /obj/item/restraint))
+ var/obj/item/restraint/cuffs = attacking_object
+ if(cuffs.target_zone == SLOT_LEGS)
+ attach_cuffs(cuffs, user)
+
+/obj/item/clothing/shoes/orange/get_examine_text(mob/user)
+ . = ..()
+ if(chained)
+ . += SPAN_RED("They are chained with [chained].")
diff --git a/code/modules/clothing/spacesuits/captain.dm b/code/modules/clothing/spacesuits/captain.dm
index 26bc03eed608..2643e43b2b6a 100644
--- a/code/modules/clothing/spacesuits/captain.dm
+++ b/code/modules/clothing/spacesuits/captain.dm
@@ -24,7 +24,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.02
flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS
- allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun, /obj/item/ammo_magazine, /obj/item/weapon/baton,/obj/item/handcuffs)
+ allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun, /obj/item/ammo_magazine, /obj/item/weapon/baton,/obj/item/restraint/handcuffs)
slowdown = 1.5
armor_melee = CLOTHING_ARMOR_MEDIUMHIGH
armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index dd540033b2a2..36dd5f4f04c8 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -43,7 +43,7 @@
icon_state = "pirate"
item_state = "pirate"
w_class = SIZE_MEDIUM
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/handcuffs,/obj/item/tank/emergency_oxygen)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/restraint/handcuffs,/obj/item/tank/emergency_oxygen)
slowdown = 0
armor_melee = CLOTHING_ARMOR_MEDIUM
armor_bullet = CLOTHING_ARMOR_MEDIUM
@@ -93,7 +93,7 @@
/obj/item/clothing/suit/space/compression/uscm
name = "\improper MK.50 compression suit"
desc = "A heavy, bulky civilian space suit, fitted with armored plates. This specific suit has found its way into the ragtag inventory of the USCM's patrol boat requisitions system."
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/handcuffs,/obj/item/tank)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/restraint/handcuffs,/obj/item/tank)
// Souto man
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 82d461c5ca55..7e9a41c6becc 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -47,7 +47,7 @@
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/storage/large_holster/machete,
/obj/item/storage/belt/gun/m4a3,
@@ -81,7 +81,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/explosive/grenade,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
@@ -250,7 +250,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/handcuffs,/obj/item/tank/emergency_oxygen)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/baton,/obj/item/restraint/handcuffs,/obj/item/tank/emergency_oxygen)
slowdown = 1
armor_melee = CLOTHING_ARMOR_HIGH
armor_bullet = CLOTHING_ARMOR_HIGH
@@ -355,7 +355,7 @@
item_state = "centcom"
w_class = SIZE_LARGE//bulky item
flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS|BODY_FLAG_HANDS
- allowed = list(/obj/item/weapon/gun,/obj/item/weapon/baton,/obj/item/handcuffs,/obj/item/tank/emergency_oxygen)
+ allowed = list(/obj/item/weapon/gun,/obj/item/weapon/baton,/obj/item/restraint/handcuffs,/obj/item/tank/emergency_oxygen)
flags_inventory = NO_FLAGS
flags_inv_hide = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS|BODY_FLAG_HANDS
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 59e0918550ed..eb99005328bc 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -51,7 +51,7 @@
item_state = "bio_suit"
allowed = list(
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 5b97051852a6..589fb3b97221 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -181,11 +181,11 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
/obj/item/storage/belt/gun/m4a3,
@@ -245,7 +245,7 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
/obj/item/storage/belt/gun/m4a3,
@@ -310,7 +310,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
/obj/item/storage/belt/gun/m4a3,
@@ -409,7 +409,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 1bdb4ca31176..d0f6d1cc868a 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -20,7 +20,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
@@ -185,7 +185,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
/obj/item/storage/belt/gun/m4a3,
diff --git a/code/modules/clothing/suits/marine_armor/_marine_armor.dm b/code/modules/clothing/suits/marine_armor/_marine_armor.dm
index e2facb987959..78ea29108e68 100644
--- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm
+++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm
@@ -270,7 +270,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/explosive/grenade,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
diff --git a/code/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm
index 106b09961103..90fb962ffa93 100644
--- a/code/modules/clothing/suits/marine_armor/ert.dm
+++ b/code/modules/clothing/suits/marine_armor/ert.dm
@@ -41,7 +41,7 @@
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/explosive/grenade,
@@ -515,7 +515,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
/obj/item/device/flashlight,
@@ -576,7 +576,7 @@
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/explosive/grenade,
@@ -611,7 +611,7 @@
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/explosive/grenade,
@@ -714,7 +714,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/explosive/grenade,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
@@ -778,7 +778,7 @@
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/explosive/grenade,
diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm
index 2dd93eb66aee..78c8154e1810 100644
--- a/code/modules/clothing/suits/marine_coat.dm
+++ b/code/modules/clothing/suits/marine_coat.dm
@@ -24,7 +24,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
/obj/item/storage/belt/gun/m4a3,
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 54148d4f7076..252b99e124bc 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -128,7 +128,7 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/device/taperecorder,
@@ -153,7 +153,7 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/device/taperecorder,
@@ -290,7 +290,7 @@
item_state = "webbing"
allowed = list(
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
@@ -318,7 +318,7 @@
item_state = "synth_utility_vest"
allowed = list(
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
@@ -455,7 +455,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/binoculars,
/obj/item/attachable/bayonet,
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 133265b34b7e..3b415cf0f9e8 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -112,7 +112,7 @@
allowed = list(
/obj/item/weapon/gun,
/obj/item/weapon/baton,
- /obj/item/handcuffs,
+ /obj/item/restraint/handcuffs,
/obj/item/device/flashlight,
/obj/item/device/healthanalyzer,
diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm
index d568e2838ae2..8be44f94a2e8 100644
--- a/code/modules/gear_presets/cmb.dm
+++ b/code/modules/gear_presets/cmb.dm
@@ -96,7 +96,7 @@
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, WEAR_J_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/flashbang, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_R_STORE)
@@ -112,7 +112,7 @@
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, WEAR_J_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge/rubber, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_R_STORE)
@@ -128,7 +128,7 @@
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/mp5, WEAR_J_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector, WEAR_L_HAND)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE)
@@ -278,8 +278,8 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full, WEAR_L_HAND)
//pouches
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_L_STORE)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/flashbang, WEAR_IN_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical, WEAR_R_STORE)
diff --git a/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm b/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm
index 8cd72c58ad80..44d029d44c87 100644
--- a/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm
+++ b/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm
@@ -159,7 +159,7 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/droppouch, WEAR_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/scalpel/manager, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/weylandyutani, WEAR_IN_ACCESSORY)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_ACCESSORY)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth, WEAR_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/nailgun, WEAR_IN_JACKET)
diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm
index 4eb674cf3796..26c0cd772de7 100644
--- a/code/modules/gear_presets/synths.dm
+++ b/code/modules/gear_presets/synths.dm
@@ -800,7 +800,7 @@
new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/tranquilizer(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset(new_human), WEAR_L_EAR)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE)
diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm
index cdb955bd9696..180892f4410f 100644
--- a/code/modules/gear_presets/upp.dm
+++ b/code/modules/gear_presets/upp.dm
@@ -3014,8 +3014,8 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 8)
@@ -3143,8 +3143,8 @@
new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_JACKET)
spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 5)
@@ -3304,8 +3304,8 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/handcuffs, WEAR_IN_BACK)
spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 7)
@@ -3445,8 +3445,8 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 8)
@@ -3485,8 +3485,8 @@
new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_JACKET)
spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 5)
@@ -3518,8 +3518,8 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_L_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/handcuffs, WEAR_IN_BACK)
//*****************************************************************************************************/
diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm
index 3ab1dbc99b4e..eb206c8259bf 100644
--- a/code/modules/gear_presets/uscm_event.dm
+++ b/code/modules/gear_presets/uscm_event.dm
@@ -98,7 +98,7 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/MP/general(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/cotablet(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/mateba_case/general(new_human.back), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human.back), WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human.back), WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/device/flash, WEAR_IN_JACKET)
@@ -174,7 +174,7 @@
//TODO: preload all of those items before equipping the backpack
//Otherwise, if you spawn the spy next to other people
//they will see messages for them putting guns and explosives into their backpack...
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human.back), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/np92/suppressed/tranq(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92/tranq(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92/tranq(new_human.back), WEAR_IN_BACK)
@@ -241,7 +241,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flash(new_human), WEAR_IN_JACKET)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human), WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human), WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat(new_human), WEAR_J_STORE)
/datum/equipment_preset/uscm_event/provost/tml
@@ -288,7 +288,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flash(new_human), WEAR_IN_JACKET)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human), WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human), WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat(new_human), WEAR_J_STORE)
/datum/equipment_preset/uscm_event/provost/inspector
@@ -329,7 +329,7 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/MP/provost/light/flexi(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flash(new_human), WEAR_IN_JACKET)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human), WEAR_IN_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human), WEAR_IN_JACKET)
/datum/equipment_preset/uscm_event/provost/inspector/advisor
name = "Provost Advisor"
diff --git a/code/modules/gear_presets/uscm_police.dm b/code/modules/gear_presets/uscm_police.dm
index 14e35d990348..76df4d6de2be 100644
--- a/code/modules/gear_presets/uscm_police.dm
+++ b/code/modules/gear_presets/uscm_police.dm
@@ -226,8 +226,8 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human.back), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human.back), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human.back), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human.back), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs(new_human.back), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/large/beanbag/riot(new_human), WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/large/beanbag/riot(new_human), WEAR_R_STORE)
if(new_human.disabilities & NEARSIGHTED)
diff --git a/code/modules/gear_presets/wy_goons.dm b/code/modules/gear_presets/wy_goons.dm
index 7867016491dc..3562c83492b3 100644
--- a/code/modules/gear_presets/wy_goons.dm
+++ b/code/modules/gear_presets/wy_goons.dm
@@ -74,9 +74,9 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST)
@@ -145,9 +145,9 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs/zip, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST)
diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm
index 6ff2a96b72f0..03a8abef22af 100644
--- a/code/modules/mob/living/carbon/carbon_defines.dm
+++ b/code/modules/mob/living/carbon/carbon_defines.dm
@@ -5,7 +5,7 @@
var/life_tick = 0 // The amount of life ticks that have processed on this mob.
- var/obj/item/handcuffs/handcuffed = null //Whether or not the mob is handcuffed
+ var/obj/item/restraint/handcuffs/handcuffed = null //Whether or not the mob is handcuffed
var/overeat_cooldown = 0
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 44286b5fabe0..4b3d2257eb9e 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -163,7 +163,7 @@
var/datum/skills/skills = null //the knowledge you have about certain abilities and actions (e.g. do you how to do surgery?)
//see skills.dm in #define folder and code/datums/skills.dm for more info
- var/obj/item/legcuffs/legcuffed = null //Same as handcuffs but for legs. Bear traps use this.
+ var/obj/item/restraint/legcuffs/legcuffed = null //Same as handcuffs but for legs. Bear traps use this.
var/list/viruses = list() //List of active diseases
diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm
index 82e04ca58330..984faadfbae5 100644
--- a/maps/map_files/BigRed/BigRed.dmm
+++ b/maps/map_files/BigRed/BigRed.dmm
@@ -2905,7 +2905,7 @@
/area/bigredv2/outside/marshal_office)
"aiG" = (
/obj/structure/surface/table,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/structure/transmitter/colony_net/rotary{
phone_category = "Solaris Ridge";
phone_color = "red";
@@ -2955,7 +2955,7 @@
/area/bigredv2/outside/marshal_office)
"aiM" = (
/obj/structure/surface/table,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/turf/open/floor,
/area/bigredv2/outside/marshal_office)
@@ -16219,7 +16219,7 @@
/area/bigredv2/outside/general_store)
"aVL" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/handcuffs/cable,
+/obj/item/restraint/adjustable/cable,
/turf/open/floor,
/area/bigredv2/outside/general_store)
"aVM" = (
@@ -16667,7 +16667,7 @@
/area/bigredv2/outside/general_store)
"aWY" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/handcuffs/cable/cyan,
+/obj/item/restraint/adjustable/cable/cyan,
/turf/open/floor,
/area/bigredv2/outside/general_store)
"aXb" = (
diff --git a/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm b/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm
index 633a79f6acb9..8f155a1eabef 100644
--- a/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm
+++ b/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm
@@ -250,7 +250,7 @@
pixel_x = -11;
pixel_y = 1
},
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = 1;
pixel_y = 5
},
@@ -432,7 +432,7 @@
/area/bigredv2/caves_sw)
"OV" = (
/obj/structure/surface/rack,
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = 1;
pixel_y = 5
},
@@ -509,7 +509,7 @@
"Ue" = (
/obj/structure/surface/table/reinforced/prison,
/obj/item/paper_bundle,
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_y = -3
},
/turf/open/floor/plating{
diff --git a/maps/map_files/BigRed/sprinkles/40.viro_open.dmm b/maps/map_files/BigRed/sprinkles/40.viro_open.dmm
index 05e058c4071a..f58cfc3b7977 100644
--- a/maps/map_files/BigRed/sprinkles/40.viro_open.dmm
+++ b/maps/map_files/BigRed/sprinkles/40.viro_open.dmm
@@ -493,7 +493,7 @@
/area/bigredv2/outside/virology)
"bH" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor{
dir = 6;
icon_state = "asteroidwarning"
diff --git a/maps/map_files/BigRed/sprinkles/70.se-checkpoint.dmm b/maps/map_files/BigRed/sprinkles/70.se-checkpoint.dmm
index 8907ab630fcb..7a3bdb9df798 100644
--- a/maps/map_files/BigRed/sprinkles/70.se-checkpoint.dmm
+++ b/maps/map_files/BigRed/sprinkles/70.se-checkpoint.dmm
@@ -44,7 +44,7 @@
/area/bigredv2/outside/filtration_cave_cas)
"el" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor,
/area/bigred/ground/security)
"ge" = (
diff --git a/maps/map_files/BigRed/standalone/crashlanding-eva.dmm b/maps/map_files/BigRed/standalone/crashlanding-eva.dmm
index 33eefe09518f..ad059bf053f2 100644
--- a/maps/map_files/BigRed/standalone/crashlanding-eva.dmm
+++ b/maps/map_files/BigRed/standalone/crashlanding-eva.dmm
@@ -448,7 +448,7 @@
/area/bigredv2/outside/general_offices)
"cb" = (
/obj/structure/surface/rack,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/turf/open/shuttle/dropship/can_surgery/dark_grey,
/area/bigredv2/outside/general_offices)
"cc" = (
diff --git a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm
index 48bac15b3127..0a52f3f9d17d 100644
--- a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm
+++ b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm
@@ -254,7 +254,7 @@
/area/bigredv2/outside/office_complex)
"aU" = (
/obj/structure/surface/rack,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/turf/open/shuttle/dropship/can_surgery/dark_grey,
/area/bigredv2/outside/office_complex)
"aV" = (
diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm
index 6c179dbc8b2c..28db8fa8831f 100644
--- a/maps/map_files/CORSAT/Corsat.dmm
+++ b/maps/map_files/CORSAT/Corsat.dmm
@@ -4894,7 +4894,7 @@
/area/corsat/gamma/airlock/north)
"aoq" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/corsat{
dir = 4;
icon_state = "red"
@@ -13705,7 +13705,7 @@
/area/corsat/omega/airlocknorth/id)
"aMA" = (
/obj/structure/surface/table/reinforced,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/turf/open/floor/corsat{
icon_state = "plate"
},
@@ -27154,7 +27154,7 @@
/area/corsat/gamma/medbay)
"byJ" = (
/obj/structure/surface/rack,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/turf/open/floor/corsat{
dir = 1;
icon_state = "purplewhite"
@@ -28908,7 +28908,7 @@
/area/corsat/sigma/south/security)
"bDu" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/corsat{
dir = 8;
icon_state = "red"
@@ -29586,8 +29586,8 @@
/area/corsat/gamma/security)
"bFF" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/corsat{
dir = 8;
icon_state = "red"
@@ -33064,8 +33064,8 @@
/area/corsat/omega/checkpoint)
"bRn" = (
/obj/structure/surface/rack,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/corsat{
dir = 4;
icon_state = "red"
@@ -33269,7 +33269,7 @@
"bSb" = (
/obj/structure/surface/table/almayer,
/obj/item/clipboard,
-/obj/item/handcuffs/zip,
+/obj/item/restraint/handcuffs/zip,
/turf/open/floor/corsat{
icon_state = "plate"
},
@@ -33308,8 +33308,8 @@
name = "riot cabinet";
req_access_txt = "100"
},
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/corsat{
icon_state = "red"
},
@@ -35399,7 +35399,7 @@
dir = 8
},
/obj/structure/surface/table/reinforced,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/turf/open/floor/corsat{
dir = 8;
icon_state = "red"
@@ -44668,8 +44668,8 @@
name = "riot cabinet";
req_access_txt = "100"
},
-/obj/item/restraints,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
+/obj/item/xeno_restraints,
/turf/open/floor/corsat{
dir = 6;
icon_state = "red"
@@ -63062,7 +63062,7 @@
/area/corsat/omega/hangar)
"wrd" = (
/obj/structure/surface/rack,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -63828,7 +63828,7 @@
/area/corsat/omega/complex)
"wUd" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/corsat{
dir = 8;
icon_state = "red"
diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm
index fff406145a3a..3c4125023686 100644
--- a/maps/map_files/DesertDam/Desert_Dam.dmm
+++ b/maps/map_files/DesertDam/Desert_Dam.dmm
@@ -18539,7 +18539,7 @@
},
/area/desert_dam/interior/dam_interior/north_tunnel)
"bfk" = (
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/weapon/baton,
/obj/structure/surface/table/woodentable/fancy,
/turf/open/floor/interior/wood/alt,
@@ -26207,7 +26207,7 @@
/area/desert_dam/exterior/valley/valley_mining)
"bFf" = (
/obj/structure/surface/table,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/prison{
dir = 10;
icon_state = "darkred2"
@@ -37633,7 +37633,7 @@
/area/desert_dam/building/warehouse/breakroom)
"cqj" = (
/obj/structure/surface/table,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/prison{
icon_state = "darkred2"
},
diff --git a/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm b/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm
index d0ebbc5039d5..6c7e859826db 100644
--- a/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm
+++ b/maps/map_files/DesertDam/sprinkles/10.damtemple_intact.dmm
@@ -139,7 +139,7 @@
/obj/structure/surface/table/reinforced/prison{
color = "#6b675e"
},
-/obj/item/legcuffs/beartrap{
+/obj/item/restraint/legcuffs/beartrap{
pixel_x = -1;
pixel_y = 8
},
diff --git a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm
index a03946d3c6cf..d1dd76922ee1 100644
--- a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm
+++ b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm
@@ -3451,10 +3451,10 @@
/area/prison/research/secret)
"aiZ" = (
/obj/structure/surface/rack,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/prison{
dir = 8;
icon_state = "darkpurple2"
@@ -13789,7 +13789,7 @@
/area/prison/command/secretary_office)
"aMK" = (
/obj/structure/closet,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/clothing/mask/muzzle,
/obj/item/weapon/chainofcommand,
/turf/open/floor/prison{
diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm
index f6e85338a637..fcbdcc4fdc33 100644
--- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm
+++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm
@@ -444,7 +444,7 @@
"anl" = (
/obj/item/pamphlet/engineer,
/obj/structure/closet,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/effect/landmark/objective_landmark/close,
/turf/open/floor/prison{
icon_state = "darkredfull2"
@@ -2947,7 +2947,7 @@
/area/fiorina/lz/near_lzI)
"bMG" = (
/obj/structure/surface/rack,
-/obj/item/handcuffs/zip,
+/obj/item/restraint/handcuffs/zip,
/turf/open/floor/prison{
icon_state = "darkredfull2"
},
@@ -18049,7 +18049,7 @@
/area/fiorina/tumor/civres)
"kWv" = (
/obj/structure/surface/table/reinforced/prison,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/prison,
/area/fiorina/station/security)
"kWx" = (
@@ -19576,7 +19576,7 @@
},
/area/fiorina/station/lowsec)
"lNv" = (
-/obj/item/handcuffs/cable/pink,
+/obj/item/restraint/adjustable/cable/pink,
/turf/open/floor/prison/chapel_carpet{
dir = 1;
icon_state = "doubleside"
@@ -31005,7 +31005,7 @@
/area/fiorina/tumor/ice_lab)
"sQC" = (
/obj/structure/surface/rack,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/prison{
icon_state = "darkredfull2"
},
@@ -38287,7 +38287,7 @@
/area/fiorina/station/chapel)
"xoK" = (
/obj/structure/closet,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/clothing/mask/muzzle,
/obj/item/weapon/chainofcommand,
/turf/open/floor/wood,
diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm
index 6662ebf081f0..ce60474959f1 100644
--- a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm
+++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm
@@ -36,7 +36,7 @@
"f" = (
/obj/effect/landmark/corpsespawner/ua_riot,
/obj/effect/decal/cleanable/blood,
-/obj/item/handcuffs/zip{
+/obj/item/restraint/handcuffs/zip{
pixel_y = -12
},
/turf/open/floor/wood,
diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/25.researchprestine.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/25.researchprestine.dmm
index 8df7c92de478..9ff0e6e4a246 100644
--- a/maps/map_files/FOP_v3_Sciannex/sprinkles/25.researchprestine.dmm
+++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/25.researchprestine.dmm
@@ -696,11 +696,11 @@
dir = 1;
pixel_y = 21
},
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = -3;
pixel_y = 10
},
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = 4
},
/turf/open/floor/prison{
diff --git a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm
index 74d5921e30de..5326d72de2a8 100644
--- a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm
+++ b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm
@@ -12163,7 +12163,7 @@
/area/ice_colony/surface/command/crisis)
"aIv" = (
/obj/structure/surface/table/woodentable,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/tool/stamp,
/turf/open/floor/wood,
/area/ice_colony/surface/command/crisis)
@@ -28871,7 +28871,7 @@
/area/ice_colony/underground/security/interrogation)
"bJH" = (
/obj/structure/surface/table/reinforced,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/structure/machinery/flasher_button{
id = "sec_checkpoint";
pixel_y = 24
@@ -30138,7 +30138,7 @@
"bMX" = (
/obj/item/book/manual/marine_law,
/obj/structure/surface/table/reinforced,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor{
dir = 1;
icon_state = "darkred2"
@@ -33966,7 +33966,7 @@
/area/ice_colony/underground/medical/storage)
"bXR" = (
/obj/structure/surface/table/woodentable,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/weapon/baton,
/turf/open/floor/wood,
/area/ice_colony/underground/security/marshal)
diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm
index 1514e8023b99..b1ce353976c2 100644
--- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm
+++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm
@@ -2249,7 +2249,7 @@
/area/shiva/interior/colony/medseceng)
"akT" = (
/obj/structure/surface/table/woodentable,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/weapon/baton,
/turf/open/floor/wood,
/area/shiva/interior/colony/medseceng)
@@ -20198,7 +20198,7 @@
"pCJ" = (
/obj/item/book/manual/marine_law,
/obj/structure/surface/table/reinforced/prison,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/shiva{
dir = 1;
icon_state = "red"
@@ -22216,7 +22216,7 @@
/area/shiva/interior/colony/medseceng)
"rMe" = (
/obj/structure/surface/table,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/tool/stamp,
/turf/open/floor/shiva{
icon_state = "bluefull"
@@ -26358,7 +26358,7 @@
/turf/open/shuttle/dropship/can_surgery/medium_grey_single_wide_left_to_right,
/area/shiva/interior/aerodrome)
"vWf" = (
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/shiva{
dir = 8;
icon_state = "redfull"
diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
index bdf58d54fb34..94c7420a6da4 100644
--- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
+++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
@@ -17205,8 +17205,8 @@
/area/lv522/atmos/cargo_intake)
"hlH" = (
/obj/structure/surface/table/reinforced/prison,
-/obj/item/handcuffs/cable/white,
-/obj/item/handcuffs/cable/white{
+/obj/item/restraint/adjustable/cable/white,
+/obj/item/restraint/adjustable/cable/white{
pixel_y = 4
},
/turf/open/floor/strata{
@@ -18239,13 +18239,13 @@
/area/lv522/indoors/c_block/casino)
"hIz" = (
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_y = 12
},
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_y = 6
},
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/weapon/classic_baton,
/turf/open/floor/prison{
icon_state = "darkredfull2"
diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm
index 46f5a179a50e..a9baa8a1efc7 100644
--- a/maps/map_files/LV624/LV624.dmm
+++ b/maps/map_files/LV624/LV624.dmm
@@ -9358,7 +9358,7 @@
/area/lv624/lazarus/security)
"aPv" = (
/obj/structure/surface/table/reinforced/prison,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/storage/firstaid/adv,
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/turf/open/floor{
@@ -24636,10 +24636,10 @@
/area/lv624/ground/caves/east_caves)
"xwQ" = (
/obj/structure/surface/table/reinforced/prison,
-/obj/item/handcuffs/cable/white{
+/obj/item/restraint/adjustable/cable/white{
pixel_y = 4
},
-/obj/item/handcuffs/cable/white,
+/obj/item/restraint/adjustable/cable/white,
/turf/open/floor{
icon_state = "whiteyellow"
},
diff --git a/maps/map_files/LV624/maintemple/1.intact.dmm b/maps/map_files/LV624/maintemple/1.intact.dmm
index 8f7c741d80c6..ea69a6c4c787 100644
--- a/maps/map_files/LV624/maintemple/1.intact.dmm
+++ b/maps/map_files/LV624/maintemple/1.intact.dmm
@@ -515,7 +515,7 @@
/obj/structure/surface/table/reinforced/prison{
color = "#6b675e"
},
-/obj/item/restraints,
+/obj/item/xeno_restraints,
/obj/effect/landmark/objective_landmark/close,
/turf/open/floor/strata{
color = "#5e5d5d";
diff --git a/maps/map_files/LV624/standalone/clfship.dmm b/maps/map_files/LV624/standalone/clfship.dmm
index 34032943b1c1..090ad40084f7 100644
--- a/maps/map_files/LV624/standalone/clfship.dmm
+++ b/maps/map_files/LV624/standalone/clfship.dmm
@@ -1328,11 +1328,11 @@
"IP" = (
/obj/structure/bed,
/obj/item/bedsheet/yellow,
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = 4;
pixel_y = 4
},
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/almayer{
dir = 6;
icon_state = "green"
diff --git a/maps/map_files/LV624/standalone/corporatedome.dmm b/maps/map_files/LV624/standalone/corporatedome.dmm
index 0778d0c61564..9c3eddbac441 100644
--- a/maps/map_files/LV624/standalone/corporatedome.dmm
+++ b/maps/map_files/LV624/standalone/corporatedome.dmm
@@ -1216,7 +1216,7 @@
"ZG" = (
/obj/effect/decal/cleanable/blood,
/obj/effect/landmark/corpsespawner/scientist,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor{
icon_state = "dark"
},
diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm
index 1450edbbd180..e0d689cf1c8c 100644
--- a/maps/map_files/New_Varadero/New_Varadero.dmm
+++ b/maps/map_files/New_Varadero/New_Varadero.dmm
@@ -2317,7 +2317,7 @@
pixel_x = -5;
pixel_y = 1
},
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = 2;
pixel_y = 16
},
@@ -2875,7 +2875,7 @@
},
/area/varadero/interior/chapel)
"bPL" = (
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = 2;
pixel_y = 16
},
@@ -21989,7 +21989,7 @@
/area/varadero/interior/hall_SE)
"ohi" = (
/obj/structure/surface/table/reinforced/prison,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/structure/machinery/flasher_button{
id = "sec_checkpoint";
pixel_y = 24
@@ -28062,7 +28062,7 @@
/area/varadero/interior/caves/east)
"rTu" = (
/obj/structure/surface/table/woodentable,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/weapon/baton,
/turf/open/floor/wood,
/area/varadero/interior/security)
@@ -33846,7 +33846,7 @@
"vEa" = (
/obj/structure/closet/crate/medical,
/obj/item/tool/wirecutters/clippers,
-/obj/item/handcuffs/zip,
+/obj/item/restraint/handcuffs/zip,
/obj/item/tool/surgery/surgicaldrill,
/obj/item/storage/firstaid/adv,
/turf/open/floor/shiva{
diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm
index 6b8b6b82e284..db1f07a8b3b1 100644
--- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm
+++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm
@@ -40149,7 +40149,7 @@
"ulv" = (
/obj/structure/surface/rack,
/obj/item/weapon/gun/pistol/t73,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/strata{
icon_state = "red1"
},
diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm
index ca06179fe04c..4d9d93a02912 100644
--- a/maps/map_files/USS_Almayer/USS_Almayer.dmm
+++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm
@@ -33975,9 +33975,9 @@
/area/almayer/hallways/lower/port_midship_hallway)
"hAG" = (
/obj/structure/closet/crate/internals,
-/obj/item/handcuffs/cable/blue,
-/obj/item/handcuffs/cable/blue,
-/obj/item/handcuffs/cable/cyan,
+/obj/item/restraint/adjustable/cable/blue,
+/obj/item/restraint/adjustable/cable/blue,
+/obj/item/restraint/adjustable/cable/cyan,
/obj/effect/spawner/random/toolbox,
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
@@ -54633,7 +54633,7 @@
"oFn" = (
/obj/structure/surface/table/almayer,
/obj/item/tool/wirecutters/clippers,
-/obj/item/handcuffs/zip,
+/obj/item/restraint/handcuffs/zip,
/turf/open/floor/almayer{
icon_state = "plate"
},
@@ -67491,7 +67491,7 @@
pixel_x = -5;
pixel_y = 5
},
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/storage/firstaid/regular,
/obj/structure/machinery/light{
dir = 8
@@ -77936,7 +77936,7 @@
pixel_y = 5
},
/obj/item/paper,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/clothing/mask/cigarette/cigar/classic,
/obj/item/coin/silver{
desc = "A small coin, bearing the falling falcons insignia.";
diff --git a/maps/map_files/generic/Admin_level.dmm b/maps/map_files/generic/Admin_level.dmm
index d085d7a99b0c..36538b22cb60 100644
--- a/maps/map_files/generic/Admin_level.dmm
+++ b/maps/map_files/generic/Admin_level.dmm
@@ -1264,7 +1264,7 @@
"Dw" = (
/obj/structure/closet/secure_closet/brig,
/obj/item/book/manual/marine_law,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/almayer{
dir = 4;
icon_state = "red"
diff --git a/maps/predship/huntership.dmm b/maps/predship/huntership.dmm
index 113f6448d3a8..433d9057dc70 100644
--- a/maps/predship/huntership.dmm
+++ b/maps/predship/huntership.dmm
@@ -2907,30 +2907,30 @@
/obj/structure/surface/table/reinforced/prison{
color = "#6b675e"
},
-/obj/item/legcuffs{
+/obj/item/restraint/legcuffs{
pixel_y = 5
},
-/obj/item/legcuffs{
+/obj/item/restraint/legcuffs{
pixel_y = 5
},
-/obj/item/legcuffs{
+/obj/item/restraint/legcuffs{
pixel_y = 5
},
-/obj/item/legcuffs{
+/obj/item/restraint/legcuffs{
pixel_y = 5
},
-/obj/item/legcuffs{
+/obj/item/restraint/legcuffs{
pixel_y = 5
},
-/obj/item/legcuffs{
+/obj/item/restraint/legcuffs{
pixel_y = 5
},
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/shuttle/predship,
/area/yautja)
"GM" = (
@@ -3447,12 +3447,12 @@
/obj/structure/surface/table/reinforced/prison{
color = "#6b675e"
},
-/obj/item/restraints,
-/obj/item/restraints,
-/obj/item/restraints,
-/obj/item/restraints,
-/obj/item/restraints,
-/obj/item/restraints,
+/obj/item/xeno_restraints,
+/obj/item/xeno_restraints,
+/obj/item/xeno_restraints,
+/obj/item/xeno_restraints,
+/obj/item/xeno_restraints,
+/obj/item/xeno_restraints,
/turf/open/shuttle/predship,
/area/yautja)
"VT" = (
diff --git a/maps/predship/regular.dmm b/maps/predship/regular.dmm
index 895e8ae84c91..984bd4e7c65a 100644
--- a/maps/predship/regular.dmm
+++ b/maps/predship/regular.dmm
@@ -1136,12 +1136,12 @@
/area/yautja)
"dk" = (
/obj/structure/surface/table/reinforced,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/holofloor{
dir = 2;
icon_state = "cult"
@@ -1149,12 +1149,12 @@
/area/yautja)
"dl" = (
/obj/structure/surface/table/reinforced,
-/obj/item/legcuffs,
-/obj/item/legcuffs,
-/obj/item/legcuffs,
-/obj/item/legcuffs,
-/obj/item/legcuffs,
-/obj/item/legcuffs,
+/obj/item/restraint/legcuffs,
+/obj/item/restraint/legcuffs,
+/obj/item/restraint/legcuffs,
+/obj/item/restraint/legcuffs,
+/obj/item/restraint/legcuffs,
+/obj/item/restraint/legcuffs,
/turf/open/floor/holofloor{
dir = 2;
icon_state = "cult"
diff --git a/maps/shuttles/ert_shuttle_big.dmm b/maps/shuttles/ert_shuttle_big.dmm
index f3983899e249..a07c57e00a20 100644
--- a/maps/shuttles/ert_shuttle_big.dmm
+++ b/maps/shuttles/ert_shuttle_big.dmm
@@ -84,9 +84,9 @@
pixel_x = -2;
pixel_y = 3
},
-/obj/item/handcuffs,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/almayer{
icon_state = "plate"
},
diff --git a/maps/templates/lazy_templates/clf_ert_station.dmm b/maps/templates/lazy_templates/clf_ert_station.dmm
index 908f8de06dcb..3aa8c800327f 100644
--- a/maps/templates/lazy_templates/clf_ert_station.dmm
+++ b/maps/templates/lazy_templates/clf_ert_station.dmm
@@ -804,7 +804,7 @@
"sx" = (
/obj/structure/surface/table/woodentable/poor,
/obj/item/clothing/glasses/sunglasses/blindfold,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/wood,
/area/adminlevel/ert_station/clf_station)
"sC" = (
@@ -1817,8 +1817,8 @@
"Ro" = (
/obj/structure/surface/table/woodentable/poor,
/obj/item/clothing/glasses/sunglasses/blindfold,
-/obj/item/handcuffs,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/wood,
/area/adminlevel/ert_station/clf_station)
"Rr" = (
diff --git a/maps/templates/lazy_templates/freelancer_ert_station.dmm b/maps/templates/lazy_templates/freelancer_ert_station.dmm
index bf9709e2150d..74c368e4f0b6 100644
--- a/maps/templates/lazy_templates/freelancer_ert_station.dmm
+++ b/maps/templates/lazy_templates/freelancer_ert_station.dmm
@@ -811,7 +811,7 @@
"Hg" = (
/obj/structure/closet/secure_closet/brig,
/obj/item/book/manual/marine_law,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/almayer{
dir = 4;
icon_state = "red"
diff --git a/maps/templates/lazy_templates/twe_ert_station.dmm b/maps/templates/lazy_templates/twe_ert_station.dmm
index 2c9c696d7842..10e175eae24c 100644
--- a/maps/templates/lazy_templates/twe_ert_station.dmm
+++ b/maps/templates/lazy_templates/twe_ert_station.dmm
@@ -1465,11 +1465,11 @@
},
/area/adminlevel/ert_station/royal_marines_station)
"Cm" = (
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_y = 12
},
/obj/structure/surface/table/almayer,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/item/weapon/baton{
pixel_x = -12
},
@@ -2658,11 +2658,11 @@
"VL" = (
/obj/structure/surface/table/almayer,
/obj/item/clothing/suit/straight_jacket,
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = -4;
pixel_y = 1
},
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/almayer{
icon_state = "redfull"
diff --git a/maps/templates/lazy_templates/upp_ert_station.dmm b/maps/templates/lazy_templates/upp_ert_station.dmm
index ae2a8ad40c47..fd1e6186bf73 100644
--- a/maps/templates/lazy_templates/upp_ert_station.dmm
+++ b/maps/templates/lazy_templates/upp_ert_station.dmm
@@ -828,11 +828,11 @@
"me" = (
/obj/structure/surface/table/reinforced/prison,
/obj/item/clothing/suit/straight_jacket,
-/obj/item/handcuffs{
+/obj/item/restraint/handcuffs{
pixel_x = -4;
pixel_y = 1
},
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor/strata{
icon_state = "red1"
},