diff --git a/code/__DEFINES/_math.dm b/code/__DEFINES/_math.dm
index d7c068237987..ec225515650b 100644
--- a/code/__DEFINES/_math.dm
+++ b/code/__DEFINES/_math.dm
@@ -17,7 +17,7 @@
#define ROUND_UP(x) ( -round(-(x)))
// round() acts like floor(x, 1) by default but can't handle other values
-#define FLOOR(x, y) ( round((x) / (y)) * (y) )
+#define FLOOR(x, y) ( floor((x) / (y)) * (y) )
// Real modulus that handles decimals
#define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) )
diff --git a/code/__HELPERS/#maths.dm b/code/__HELPERS/#maths.dm
index f8a9292d3806..a9b7a527d6cf 100644
--- a/code/__HELPERS/#maths.dm
+++ b/code/__HELPERS/#maths.dm
@@ -18,7 +18,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
#define Csc(x) (1 / sin(x))
#define Default(a, b) ((a) ? (a) : (b))
-#define Floor(x) (round(x))
// Greatest Common Divisor - Euclid's algorithm
#define Gcd(a, b) ((b) ? Gcd((b), (a) % (b)) : (a))
@@ -26,7 +25,7 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
#define Inverse(x) (1 / (x))
#define IsEven(x) ((x) % 2 == 0)
-#define IsInteger(x) (Floor(x) == (x))
+#define IsInteger(x) (floor(x) == (x))
#define IsOdd(x) (!IsEven(x))
#define IsMultiple(x, y) ((x) % (y) == 0)
diff --git a/code/__HELPERS/_time.dm b/code/__HELPERS/_time.dm
index 733ca659501b..0831ab50d6e0 100644
--- a/code/__HELPERS/_time.dm
+++ b/code/__HELPERS/_time.dm
@@ -91,21 +91,21 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
return "right now"
if(second < 60)
return "[second] second[(second != 1)? "s":""]"
- var/minute = Floor(second / 60)
+ var/minute = floor(second / 60)
second = FLOOR(MODULUS(second, 60), round_seconds_to)
var/secondT
if(second)
secondT = " and [second] second[(second != 1)? "s":""]"
if(minute < 60)
return "[minute] minute[(minute != 1)? "s":""][secondT]"
- var/hour = Floor(minute / 60)
+ var/hour = floor(minute / 60)
minute = MODULUS(minute, 60)
var/minuteT
if(minute)
minuteT = " and [minute] minute[(minute != 1)? "s":""]"
if(hour < 24)
return "[hour] hour[(hour != 1)? "s":""][minuteT][secondT]"
- var/day = Floor(hour / 24)
+ var/day = floor(hour / 24)
hour = MODULUS(hour, 24)
var/hourT
if(hour)
diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm
index 9a8528aabcc3..a1b38b48f754 100644
--- a/code/__HELPERS/lists.dm
+++ b/code/__HELPERS/lists.dm
@@ -597,7 +597,7 @@
if(L.len <= 1)
return L
- var/middle = Floor(L.len / 2)
+ var/middle = floor(L.len / 2)
var/list/left = custom_mergesort(L.Copy(1, middle + 1))
var/list/right = custom_mergesort(L.Copy(middle + 1))
var/list/result = list()
diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm
index ff250625043f..8c2cbc7c5ee7 100644
--- a/code/controllers/subsystem/minimap.dm
+++ b/code/controllers/subsystem/minimap.dm
@@ -88,8 +88,8 @@ SUBSYSTEM_DEF(minimaps)
else if(yval < smallest_y)
smallest_y = yval
- minimaps_by_z["[level]"].x_offset = Floor((SCREEN_PIXEL_SIZE-largest_x-smallest_x) / MINIMAP_SCALE)
- minimaps_by_z["[level]"].y_offset = Floor((SCREEN_PIXEL_SIZE-largest_y-smallest_y) / MINIMAP_SCALE)
+ minimaps_by_z["[level]"].x_offset = floor((SCREEN_PIXEL_SIZE-largest_x-smallest_x) / MINIMAP_SCALE)
+ minimaps_by_z["[level]"].y_offset = floor((SCREEN_PIXEL_SIZE-largest_y-smallest_y) / MINIMAP_SCALE)
icon_gen.Shift(EAST, minimaps_by_z["[level]"].x_offset)
icon_gen.Shift(NORTH, minimaps_by_z["[level]"].y_offset)
diff --git a/code/datums/entities/player_times.dm b/code/datums/entities/player_times.dm
index 2bbd4a3bc39e..4fc28ba2fa5e 100644
--- a/code/datums/entities/player_times.dm
+++ b/code/datums/entities/player_times.dm
@@ -61,7 +61,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player_time)
return list(
"job" = role_id,
"playtime" = round(total_minutes MINUTES_TO_HOURS, 0.1),
- "bgcolor" = "rgb(0, [Floor(128 * playtime_percentage)], [Floor(255 * playtime_percentage)])",
+ "bgcolor" = "rgb(0, [floor(128 * playtime_percentage)], [floor(255 * playtime_percentage)])",
"textcolor" = "#FFFFFF",
"icondisplay" = icon_display
)
diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm
index 400acdcb122a..af63b99e4e57 100644
--- a/code/game/gamemodes/cm_initialize.dm
+++ b/code/game/gamemodes/cm_initialize.dm
@@ -175,7 +175,7 @@ Additional game mode variables.
if(pred_candidate) pred_candidate.moveToNullspace() //Nullspace it for garbage collection later.
-#define calculate_pred_max (Floor(length(GLOB.player_list) / pred_per_players) + pred_additional_max + pred_start_count)
+#define calculate_pred_max (floor(length(GLOB.player_list) / pred_per_players) + pred_additional_max + pred_start_count)
/datum/game_mode/proc/check_predator_late_join(mob/pred_candidate, show_warning = 1)
diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm
index 01a40b3638f6..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
@@ -331,6 +331,11 @@
path = /obj/item/ammo_magazine/flamer_tank/custom/large
category = AUTOLATHE_CATEGORY_EXPLOSIVES
+/datum/autolathe/recipe/armylathe/smoke_tank
+ name = "Custom M240A1 Smoke Tank"
+ path = /obj/item/ammo_magazine/flamer_tank/smoke
+ category = AUTOLATHE_CATEGORY_EXPLOSIVES
+
//Medilathe recipes
/datum/autolathe/recipe/medilathe
category = AUTOLATHE_CATEGORY_MEDICAL
diff --git a/code/game/machinery/computer/research.dm b/code/game/machinery/computer/research.dm
index d5158cb76451..3a8292ec7d07 100644
--- a/code/game/machinery/computer/research.dm
+++ b/code/game/machinery/computer/research.dm
@@ -179,7 +179,7 @@
if("purchase_document")
if(!photocopier)
return
- var/purchase_tier = Floor(text2num(params["purchase_document"]))
+ var/purchase_tier = floor(text2num(params["purchase_document"]))
if(purchase_tier <= 0 || purchase_tier > 5)
return
if(purchase_tier > GLOB.chemical_data.clearance_level)
diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm
index 92ba81af4d94..b69773dbf8bf 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/fulton.dm b/code/game/objects/items/fulton.dm
index 664c7871ba7f..9cdc2b78b609 100644
--- a/code/game/objects/items/fulton.dm
+++ b/code/game/objects/items/fulton.dm
@@ -143,8 +143,8 @@ GLOBAL_LIST_EMPTY(deployed_fultons)
reservation = SSmapping.request_turf_block_reservation(3, 3, 1, turf_type_override = /turf/open/space)
var/turf/bottom_left_turf = reservation.bottom_left_turfs[1]
var/turf/top_right_turf = reservation.top_right_turfs[1]
- var/middle_x = bottom_left_turf.x + Floor((top_right_turf.x - bottom_left_turf.x) / 2)
- var/middle_y = bottom_left_turf.y + Floor((top_right_turf.y - bottom_left_turf.y) / 2)
+ var/middle_x = bottom_left_turf.x + floor((top_right_turf.x - bottom_left_turf.x) / 2)
+ var/middle_y = bottom_left_turf.y + floor((top_right_turf.y - bottom_left_turf.y) / 2)
var/turf/space_tile = locate(middle_x, middle_y, bottom_left_turf.z)
if(!space_tile)
visible_message(SPAN_WARNING("[src] begins beeping like crazy. Something is wrong!"))
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..385c22d3a713 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)
@@ -412,7 +412,7 @@
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/restraint/handcuffs(src)
/obj/item/storage/belt/security/MP/UPP
name = "\improper Type 43 military police rig"
@@ -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/items/toys/cards.dm b/code/game/objects/items/toys/cards.dm
index 39584b2bbb89..f63efd61a615 100644
--- a/code/game/objects/items/toys/cards.dm
+++ b/code/game/objects/items/toys/cards.dm
@@ -462,7 +462,7 @@
overlays += I
return
- var/offset = Floor(80/cards_length)
+ var/offset = floor(80/cards_length)
var/matrix/M = matrix()
if(direction)
@@ -482,13 +482,13 @@
var/image/I = new(src.icon, (concealed ? P.back_icon : P.card_icon))
switch(direction)
if(SOUTH)
- I.pixel_x = 8 - Floor(offset*i/4)
+ I.pixel_x = 8 - floor(offset*i/4)
if(WEST)
- I.pixel_y = -6 + Floor(offset*i/4)
+ I.pixel_y = -6 + floor(offset*i/4)
if(EAST)
- I.pixel_y = 8 - Floor(offset*i/4)
+ I.pixel_y = 8 - floor(offset*i/4)
else
- I.pixel_x = -7 + Floor(offset*i/4)
+ I.pixel_x = -7 + floor(offset*i/4)
I.transform = M
overlays += I
i++
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/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm
index 60a8682a4930..9476f6385ae3 100644
--- a/code/game/objects/structures/fence.dm
+++ b/code/game/objects/structures/fence.dm
@@ -3,6 +3,7 @@
desc = "A large metal mesh strewn between two poles. Intended as a cheap way to separate areas, while allowing one to see through it."
icon = 'icons/obj/structures/props/fence.dmi'
icon_state = "fence0"
+ throwpass = TRUE
density = TRUE
anchored = TRUE
layer = WINDOW_LAYER
diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm
index bc20a714027d..4b6d84a5ae40 100644
--- a/code/modules/buildmode/buildmode.dm
+++ b/code/modules/buildmode/buildmode.dm
@@ -80,7 +80,7 @@
var/pos_idx = 0
for(var/thing in elements)
var/x = pos_idx % switch_width
- var/y = Floor(pos_idx / switch_width)
+ var/y = floor(pos_idx / switch_width)
var/atom/movable/screen/buildmode/B = new buttontype(src, thing)
// extra .5 for a nice offset look
B.screen_loc = "NORTH-[(1 + 0.5 + y*1.5)],WEST+[0.5 + x*1.5]"
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..15340bc1aae2 100644
--- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm
+++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm
@@ -191,7 +191,7 @@
if(. != CHECKS_PASSED)
return
set_light_range(initial(light_range))
- set_light_power(Floor(initial(light_power) * 0.5))
+ set_light_power(floor(initial(light_power) * 0.5))
set_light_on(toggle_on)
flags_marine_armor ^= ARMOR_LAMP_ON
@@ -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/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm
index add9646c56ac..7f0124fa5033 100644
--- a/code/modules/cm_aliens/structures/special/pylon_core.dm
+++ b/code/modules/cm_aliens/structures/special/pylon_core.dm
@@ -66,7 +66,7 @@
for(var/mob/living/carbon/xenomorph/lesser_drone/lesser in linked_hive.totalXenos)
lesser_count++
- . += "Currently holding [SPAN_NOTICE("[Floor(lesser_drone_spawns)]")]/[SPAN_NOTICE("[lesser_drone_spawn_limit]")] lesser drones."
+ . += "Currently holding [SPAN_NOTICE("[floor(lesser_drone_spawns)]")]/[SPAN_NOTICE("[lesser_drone_spawn_limit]")] lesser drones."
. += "There are currently [SPAN_NOTICE("[lesser_count]")] lesser drones in the hive. The hive can support [SPAN_NOTICE("[linked_hive.lesser_drone_limit]")] lesser drones."
/obj/effect/alien/resin/special/pylon/attack_ghost(mob/dead/observer/user)
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/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm b/code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm
index 657439a13f50..3fdbe72c05be 100644
--- a/code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm
+++ b/code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm
@@ -50,7 +50,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, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_R_STORE)
@@ -63,7 +63,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, 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, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_R_STORE)
@@ -76,7 +76,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, 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, WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE)
@@ -120,8 +120,8 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord, WEAR_ACCESSORY)
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/device/defibrillator/upgraded, 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/handcuffs/zip, WEAR_IN_ACCESSORY)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_ACCESSORY)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/candy, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/storage/pill_bottle/imidazoline, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB, WEAR_JACKET)
@@ -163,8 +163,8 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot, WEAR_HEAD)
new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/riot_shield, WEAR_IN_HELMET)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec, WEAR_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, 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/explosive/grenade/custom/teargas, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_IN_BACK)
@@ -240,8 +240,8 @@
/datum/equipment_preset/synth/survivor/cmb/ua_synth/load_gear(mob/living/carbon/human/new_human)
//backpack
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec, WEAR_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, 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/explosive/grenade/custom/teargas, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/baton_slug, WEAR_IN_BACK)
@@ -256,9 +256,9 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot, WEAR_BODY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord, WEAR_ACCESSORY)
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/handcuffs/zip, 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/handcuffs/zip, WEAR_IN_ACCESSORY)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_ACCESSORY)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_ACCESSORY)
+ new_human.equip_to_slot_or_del(new /obj/item/restraint/handcuffs, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/flashbangs, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/ua_riot/synth, WEAR_JACKET)
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..9bfa2335e94a 100644
--- a/code/modules/gear_presets/synths.dm
+++ b/code/modules/gear_presets/synths.dm
@@ -461,8 +461,8 @@
WEAR_EYES = /obj/item/clothing/glasses/sunglasses/sechud,
WEAR_BODY = /obj/item/clothing/under/colonist/white_service,
WEAR_BACK = /obj/item/storage/backpack/satchel/sec,
- WEAR_IN_BACK = /obj/item/handcuffs/zip,
- WEAR_IN_BACK = /obj/item/handcuffs/zip,
+ WEAR_IN_BACK = /obj/item/restraint/handcuffs,
+ WEAR_IN_BACK = /obj/item/restraint/handcuffs,
WEAR_JACKET = /obj/item/clothing/suit/storage/webbing,
WEAR_WAIST = /obj/item/storage/belt/security/MP/full/synth,
WEAR_IN_JACKET = /obj/item/weapon/telebaton,
@@ -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..450662ba25c3 100644
--- a/code/modules/gear_presets/upp.dm
+++ b/code/modules/gear_presets/upp.dm
@@ -2671,8 +2671,8 @@
new_human.equip_to_slot_or_del(UPP, WEAR_BODY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support/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/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)
new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY)
@@ -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..9207b9d55a2d 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)
@@ -108,7 +108,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/ert, 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/restraint/handcuffs, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle, WEAR_IN_BACK)
@@ -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/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm
index 173de5338196..d6b104398f99 100644
--- a/code/modules/mob/dead/observer/orbit.dm
+++ b/code/modules/mob/dead/observer/orbit.dm
@@ -110,7 +110,7 @@
if(isliving(M))
var/mob/living/player = M
- serialized["health"] = Floor(player.health / player.maxHealth * 100)
+ serialized["health"] = floor(player.health / player.maxHealth * 100)
if(isxeno(player))
var/mob/living/carbon/xenomorph/xeno = player
@@ -126,7 +126,7 @@
var/obj/item/card/id/id_card = human.get_idcard()
var/datum/species/human_species = human.species
var/max_health = human_species.total_health != human.maxHealth ? human_species.total_health : human.maxHealth
- serialized["health"] = Floor(player.health / max_health * 100)
+ serialized["health"] = floor(player.health / max_health * 100)
serialized["job"] = id_card?.assignment ? id_card.assignment : human.job
serialized["nickname"] = human.real_name
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/living/carbon/human/human_abilities.dm b/code/modules/mob/living/carbon/human/human_abilities.dm
index 2d7f472952cc..76ebbed06de6 100644
--- a/code/modules/mob/living/carbon/human/human_abilities.dm
+++ b/code/modules/mob/living/carbon/human/human_abilities.dm
@@ -250,7 +250,7 @@ CULT
to_send_to = list(H)
message_admins("[key_name_admin(H)] called a tech droppod down at [get_area(assigned_droppod)].", T.x, T.y, T.z)
for(var/M in to_send_to)
- to_chat(M, SPAN_BLUE("SUPPLY DROP REQUEST: Droppod requested at LONGITUDE: [obfuscate_x(T.x)], LATITUDE: [obfuscate_y(T.y)]. ETA [Floor(land_time*0.1)] seconds."))
+ to_chat(M, SPAN_BLUE("SUPPLY DROP REQUEST: Droppod requested at LONGITUDE: [obfuscate_x(T.x)], LATITUDE: [obfuscate_y(T.y)]. ETA [floor(land_time*0.1)] seconds."))
RegisterSignal(assigned_droppod, COMSIG_PARENT_QDELETING, PROC_REF(handle_droppod_deleted))
*/
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm
index b1d3215c2d61..cb9d4c4f5e65 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm
@@ -819,7 +819,7 @@
return
var/list/alerts = list()
- for(var/i as anything in RANGE_TURFS(Floor(width/2), T))
+ for(var/i as anything in RANGE_TURFS(floor(width/2), T))
alerts += new /obj/effect/warning/alien(i)
if(!do_after(Q, time_taken, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY))
@@ -833,7 +833,7 @@
if(!check_and_use_plasma_owner())
return
- var/turf/new_turf = locate(max(T.x - Floor(width/2), 1), max(T.y - Floor(height/2), 1), T.z)
+ var/turf/new_turf = locate(max(T.x - floor(width/2), 1), max(T.y - floor(height/2), 1), T.z)
to_chat(Q, SPAN_XENONOTICE("You raise a blockade!"))
var/obj/effect/alien/resin/resin_pillar/RP = new pillar_type(new_turf)
RP.start_decay(brittle_time, decay_time)
diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status.dm b/code/modules/mob/living/carbon/xenomorph/hive_status.dm
index baa736382733..19416e7af0aa 100644
--- a/code/modules/mob/living/carbon/xenomorph/hive_status.dm
+++ b/code/modules/mob/living/carbon/xenomorph/hive_status.dm
@@ -832,7 +832,7 @@
if(cycled_xeno.counts_for_slots)
countable_xeno_iterator++
- playable_hugger_limit = max(Floor(countable_xeno_iterator / playable_hugger_max_divisor), playable_hugger_minimum)
+ playable_hugger_limit = max(floor(countable_xeno_iterator / playable_hugger_max_divisor), playable_hugger_minimum)
/datum/hive_status/proc/can_spawn_as_hugger(mob/dead/observer/user)
if(!GLOB.hive_datum || ! GLOB.hive_datum[hivenumber])
@@ -888,7 +888,7 @@
if(cycled_xeno.counts_for_slots)
countable_xeno_iterator++
- lesser_drone_limit = max(Floor(countable_xeno_iterator / playable_lesser_drones_max_divisor), lesser_drone_minimum)
+ lesser_drone_limit = max(floor(countable_xeno_iterator / playable_lesser_drones_max_divisor), lesser_drone_minimum)
/datum/hive_status/proc/can_spawn_as_lesser_drone(mob/dead/observer/user, obj/effect/alien/resin/special/pylon/spawning_pylon)
if(!GLOB.hive_datum || ! GLOB.hive_datum[hivenumber])
diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm
index bbd59a74d8b5..45d0d53a040a 100644
--- a/code/modules/mob/living/carbon/xenomorph/life.dm
+++ b/code/modules/mob/living/carbon/xenomorph/life.dm
@@ -291,7 +291,7 @@
if(hud_used.alien_armor_display)
var/armor_stacks = min((get_armor_integrity_percentage() * 0.01) * HUD_ARMOR_STATES_XENO, HUD_ARMOR_STATES_XENO)
- hud_used.alien_armor_display.icon_state = "armor_[Floor(armor_stacks)]0"
+ hud_used.alien_armor_display.icon_state = "armor_[floor(armor_stacks)]0"
return TRUE
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/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 0f128b5bcb46..db6f9c120591 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -331,7 +331,7 @@ GLOBAL_LIST_INIT(limb_types_by_name, list(
while(i < steps)
animate(pixel_x = old_X + rand(-(strength), strength), pixel_y = old_y + rand(-(strength), strength), easing = JUMP_EASING, time = time_per_step)
i++
- animate(pixel_x = old_X, pixel_y = old_y,time = clamp(Floor(strength/PIXELS_PER_STRENGTH_VAL),2,4))//ease it back
+ animate(pixel_x = old_X, pixel_y = old_y,time = clamp(floor(strength/PIXELS_PER_STRENGTH_VAL),2,4))//ease it back
#undef PIXELS_PER_STRENGTH_VAL
diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm
index 5e2fc8459377..711b53f0fc77 100644
--- a/code/modules/projectiles/gun_attachables.dm
+++ b/code/modules/projectiles/gun_attachables.dm
@@ -3223,6 +3223,10 @@ Defined in conflicts.dm of the #defines folder.
to_chat(user, SPAN_WARNING("This chemical will clog the nozzle!"))
return
+ if(istype(gun.current_mag, /obj/item/ammo_magazine/flamer_tank/smoke)) // you can't fire smoke like a projectile!
+ to_chat(user, SPAN_WARNING("[src] can't be used with this fuel tank!"))
+ return
+
gun.last_fired = world.time
gun.current_mag.reagents.remove_reagent(flamer_reagent.id, FLAME_REAGENT_USE_AMOUNT * fuel_per_projectile)
diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm
index 64499a71bb12..0388f5be7aef 100644
--- a/code/modules/projectiles/guns/flamer/flamer.dm
+++ b/code/modules/projectiles/guns/flamer/flamer.dm
@@ -136,10 +136,13 @@
click_empty(user)
else
user.track_shot(initial(name))
- if(current_mag.reagents.has_reagent("stablefoam"))
- unleash_foam(target, user)
+ if(istype(current_mag, /obj/item/ammo_magazine/flamer_tank/smoke))
+ unleash_smoke(target, user)
else
- unleash_flame(target, user)
+ if(current_mag.reagents.has_reagent("stablefoam"))
+ unleash_foam(target, user)
+ else
+ unleash_flame(target, user)
return AUTOFIRE_CONTINUE
return NONE
@@ -229,6 +232,66 @@
new /obj/flamer_fire(to_fire, create_cause_data(initial(name), user), R, max_range, current_mag.reagents, flameshape, target, CALLBACK(src, PROC_REF(show_percentage), user), fuel_pressure, fire_type)
+/obj/item/weapon/gun/flamer/proc/unleash_smoke(atom/target, mob/living/user)
+ last_fired = world.time
+ if(!current_mag || !current_mag.reagents || !current_mag.reagents.reagent_list.len)
+ return
+
+ var/source_turf = get_turf(user)
+ var/smoke_range = 5 // the max range the smoke will travel
+ var/distance = 0 // the distance traveled
+ var/use_multiplier = 3 // if you want to increase the ammount of units drained from the tank
+ var/units_in_smoke = 35 // the smoke overlaps a little so this much is probably already good
+
+ var/datum/reagent/chemical = current_mag.reagents.reagent_list[1]
+ var/datum/reagents/to_disperse = new() // this is the chemholder that will be used by the chemsmoke
+ to_disperse.add_reagent(chemical.id, units_in_smoke)
+ to_disperse.my_atom = src
+
+ var/turf/turfs[] = get_line(user, target, FALSE)
+ var/turf/first_turf = turfs[1]
+ var/turf/second_turf = turfs[2]
+ var/ammount_required = (min(turfs.len, smoke_range) * use_multiplier) // the ammount of units that this click requires
+ for(var/turf/turf in turfs)
+
+ if(chemical.volume < ammount_required)
+ smoke_range = round(chemical.volume / use_multiplier)
+
+ if(distance >= smoke_range)
+ break
+
+ if(turf.density)
+ break
+ else
+ var/obj/effect/particle_effect/smoke/chem/checker = new()
+ var/atom/blocked = LinkBlocked(checker, source_turf, turf)
+ if(blocked)
+ break
+
+ playsound(turf, 'sound/effects/smoke.ogg', 25, 1)
+ if(turf != first_turf && turf != second_turf) // we skip the first tile and make it small on the second so the smoke doesn't touch the user
+ var/datum/effect_system/smoke_spread/chem/smoke = new()
+ smoke.set_up(to_disperse, 5, loca = turf)
+ smoke.start()
+ if(turf == second_turf)
+ var/datum/effect_system/smoke_spread/chem/smoke = new()
+ smoke.set_up(to_disperse, 1, loca = turf)
+ smoke.start()
+ sleep(2)
+
+ distance++
+
+ var/ammount_used = distance * use_multiplier // the actual ammount of units that we used
+
+ chemical.volume = max(chemical.volume - ammount_used, 0)
+
+ current_mag.reagents.total_volume = chemical.volume // this is needed for show_percentage to work
+
+ if(chemical.volume < use_multiplier) // there aren't enough units left for a single tile of smoke, empty the tank
+ current_mag.reagents.clear_reagents()
+
+ show_percentage(user)
+
/obj/item/weapon/gun/flamer/proc/unleash_foam(atom/target, mob/living/user)
last_fired = world.time
if(!current_mag || !current_mag.reagents || !current_mag.reagents.reagent_list.len)
diff --git a/code/modules/projectiles/guns/flamer/flameshape.dm b/code/modules/projectiles/guns/flamer/flameshape.dm
index 3e5e398c91e8..0b7c01ed0b0b 100644
--- a/code/modules/projectiles/guns/flamer/flameshape.dm
+++ b/code/modules/projectiles/guns/flamer/flameshape.dm
@@ -67,7 +67,7 @@
return GLOB.alldirs
/datum/flameshape/star/handle_fire_spread(obj/flamer_fire/F, fire_spread_amount, burn_dam, fuel_pressure = 1)
- fire_spread_amount = Floor(fire_spread_amount * 1.5) // branch 'length'
+ fire_spread_amount = floor(fire_spread_amount * 1.5) // branch 'length'
var/turf/source_turf = get_turf(F.loc)
var/list/dirs = dirs_to_use()
diff --git a/code/modules/projectiles/magazines/flamer.dm b/code/modules/projectiles/magazines/flamer.dm
index dfd9eda20d8a..bf5663cad069 100644
--- a/code/modules/projectiles/magazines/flamer.dm
+++ b/code/modules/projectiles/magazines/flamer.dm
@@ -90,7 +90,7 @@
to_chat(user, SPAN_WARNING("You can't mix fuel mixtures!"))
return
- if(!to_add.intensityfire && to_add.id != "stablefoam")
+ if(!to_add.intensityfire && to_add.id != "stablefoam" && !istype(src, /obj/item/ammo_magazine/flamer_tank/smoke))
to_chat(user, SPAN_WARNING("This chemical is not potent enough to be used in a flamethrower!"))
return
@@ -236,3 +236,9 @@
max_intensity = 60
max_range = 8
max_duration = 50
+
+/obj/item/ammo_magazine/flamer_tank/smoke
+ name = "Custom incinerator smoke tank"
+ desc = "A tank holding powdered smoke that expands when exposed to an open flame and carries any chemicals along with it."
+ matter = list("metal" = 3750)
+ flamer_chem = null
diff --git a/code/modules/vehicles/hardpoints/primary/minigun.dm b/code/modules/vehicles/hardpoints/primary/minigun.dm
index 03d1e7be0077..81b383b3fbc2 100644
--- a/code/modules/vehicles/hardpoints/primary/minigun.dm
+++ b/code/modules/vehicles/hardpoints/primary/minigun.dm
@@ -77,8 +77,8 @@
return
spin_stage = clamp(spin_stage, 1, stage_rate_len)
- var/old_stage_rate = stage_rate[Floor(old_spin_stage)]
- var/new_stage_rate = stage_rate[Floor(spin_stage)]
+ var/old_stage_rate = stage_rate[floor(old_spin_stage)]
+ var/new_stage_rate = stage_rate[floor(spin_stage)]
if(old_stage_rate != new_stage_rate)
stage_delay_mult = 1 / new_stage_rate
diff --git a/code/modules/vehicles/interior/interactable/vendors.dm b/code/modules/vehicles/interior/interactable/vendors.dm
index d78764da4d73..c37eb6a5d9ef 100644
--- a/code/modules/vehicles/interior/interactable/vendors.dm
+++ b/code/modules/vehicles/interior/interactable/vendors.dm
@@ -330,7 +330,7 @@
to_chat(user, SPAN_WARNING("\The [S] are being stored in [SPAN_HELPFUL("stacks of 5")] for convenience. You need \the [S] stack of at least 5 to restock it."))
return FALSE
else
- stack_restock = Floor(S.amount / 5)
+ stack_restock = floor(S.amount / 5)
//for the ease of finding enough materials to stack, it will be stored in stacks of 10 sheets just like they come in engie vendor
else
if(S.amount < 10)
@@ -338,7 +338,7 @@
to_chat(user, SPAN_WARNING("\The [S] are being stored in [SPAN_HELPFUL("stacks of 10")] for convenience. You need \the [S] stack of at least 10 to restock it."))
return FALSE
else
- stack_restock = Floor(S.amount / 10)
+ stack_restock = floor(S.amount / 10)
//item we are restocking is a stack and we need to conveniently restock it
//instead of demanding user to split it into stacks of appropriate amount
diff --git a/code/modules/vehicles/interior/interior.dm b/code/modules/vehicles/interior/interior.dm
index b58d73444180..6aaeb6439176 100644
--- a/code/modules/vehicles/interior/interior.dm
+++ b/code/modules/vehicles/interior/interior.dm
@@ -309,12 +309,12 @@
/datum/interior/proc/get_middle_coords()
var/turf/min = reservation.bottom_left_turfs[1]
var/turf/max = reservation.top_right_turfs[1]
- return list(Floor(min.x + (max.x - min.x)/2), Floor(min.y + (max.y - min.y)/2), min.z)
+ return list(floor(min.x + (max.x - min.x)/2), floor(min.y + (max.y - min.y)/2), min.z)
/datum/interior/proc/get_middle_turf()
var/list/turf/bounds = get_bound_turfs()
- var/turf/middle = locate(Floor(bounds[1].x + (bounds[2].x - bounds[1].x)/2), Floor(bounds[1].y + (bounds[2].y - bounds[1].y)/2), bounds[1].z)
+ var/turf/middle = locate(floor(bounds[1].x + (bounds[2].x - bounds[1].x)/2), floor(bounds[1].y + (bounds[2].y - bounds[1].y)/2), bounds[1].z)
return middle
diff --git a/code/modules/vehicles/multitile/multitile_bump.dm b/code/modules/vehicles/multitile/multitile_bump.dm
index 79789af054fa..70416537ba99 100644
--- a/code/modules/vehicles/multitile/multitile_bump.dm
+++ b/code/modules/vehicles/multitile/multitile_bump.dm
@@ -744,7 +744,7 @@
return TRUE
else if (mob_moved)
if(momentum_penalty)
- V.move_momentum = Floor(V.move_momentum*0.8)
+ V.move_momentum = floor(V.move_momentum*0.8)
V.update_next_move()
playsound(loc, "punch", 25, 1)
return TRUE
@@ -769,7 +769,7 @@
visible_message(SPAN_DANGER("[src] digs it's claws into the ground, slowing [V]'s movement!"),
SPAN_DANGER("You dig your claws into the ground, slowing [V]'s movement!"))
var/mob_moved = step(src, V.last_move_dir)
- V.move_momentum = Floor(V.move_momentum/3)
+ V.move_momentum = floor(V.move_momentum/3)
V.update_next_move()
return mob_moved
diff --git a/code/modules/vehicles/multitile/multitile_movement.dm b/code/modules/vehicles/multitile/multitile_movement.dm
index d2374912a192..58df8dbb9538 100644
--- a/code/modules/vehicles/multitile/multitile_movement.dm
+++ b/code/modules/vehicles/multitile/multitile_movement.dm
@@ -162,7 +162,7 @@
// Crashed with something that stopped us
if(!can_move)
- move_momentum = Floor(move_momentum/2)
+ move_momentum = floor(move_momentum/2)
update_next_move()
interior_crash_effect()
diff --git a/html/changelogs/AutoChangeLog-pr-6146.yml b/html/changelogs/AutoChangeLog-pr-6146.yml
new file mode 100644
index 000000000000..7db05aea65d1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-6146.yml
@@ -0,0 +1,4 @@
+author: "iloveloopers"
+delete-after: True
+changes:
+ - rscadd: "Adds in a new incinerator smoke tank that turns any reagent inside it into chemsmoke when fired."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6178.yml b/html/changelogs/AutoChangeLog-pr-6178.yml
new file mode 100644
index 000000000000..cc86f3ce68a8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-6178.yml
@@ -0,0 +1,4 @@
+author: "cuberound"
+delete-after: True
+changes:
+ - balance: "projectiles can pass fences"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-05.yml b/html/changelogs/archive/2024-05.yml
index af586d5033c1..ae04a832ea51 100644
--- a/html/changelogs/archive/2024-05.yml
+++ b/html/changelogs/archive/2024-05.yml
@@ -90,3 +90,15 @@
2024-05-07:
Zonespace, d.1.n.a. (original sprites), esselnek (new sprites):
- rscadd: Added the M540-B Armored Recon Carrier as a t1 intel purchase.
+2024-05-10:
+ realforest2001:
+ - code_imp: Repaths handcuffs and legcuffs to have a shared parent.
+ - code_imp: Repaths xeno restraints to reduce confusion from the typepath.
+ - rscadd: Legcuffs work appropriately now, and can be found in small numbers within
+ security vendors.
+ - rscadd: Cable restraints can now be adjusted via right-click to fit on wrists
+ or ankles.
+ - rscadd: Prison shoe chains now require ankle restraints rather than handcuffs.
+ - rscadd: Prison shoes that have been chained now have an equp and unequip delay
+ to account for the chains, proportionate to the breakout time of the item used
+ in the chains.
diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm
index 82e04ca58330..422a143de94a 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" = (
@@ -26626,7 +26626,7 @@
/area/bigredv2/caves/mining)
"cry" = (
/obj/structure/surface/table/reinforced,
-/obj/item/handcuffs,
+/obj/item/restraint/handcuffs,
/turf/open/floor{
dir = 9;
icon_state = "redfull"
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 c87ab7b4c09a..40aab722447d 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
@@ -77926,7 +77926,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"
},