diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index a490ad4c5a1d..95e8c3e4f290 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -37,6 +37,7 @@ GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for e
GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
GLOBAL_LIST_EMPTY(bots_list)
GLOBAL_LIST_EMPTY(aiEyes)
+GLOBAL_LIST_EMPTY(suit_sensors_list) //all people with suit sensors on
GLOBAL_LIST_EMPTY(language_datum_instances)
GLOBAL_LIST_EMPTY(all_languages)
diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm
index b75f211f629d..e67473eb239d 100644
--- a/code/_globalvars/traits.dm
+++ b/code/_globalvars/traits.dm
@@ -16,6 +16,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_SACRIFICED" = TRAIT_SACRIFICED,
"TRAIT_NOCLONE" = TRAIT_NOCLONE,
"TRAIT_CLUMSY" = TRAIT_CLUMSY,
+ "TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION,
"TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS,
"TRAIT_DUMB" = TRAIT_DUMB,
"TRAIT_MONKEYLIKE" = TRAIT_MONKEYLIKE,
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 92a26f3f46ef..22318814c3e7 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -269,6 +269,7 @@
inv_box.icon = ui_style
inv_box.slot_id = ITEM_SLOT_ICLOTHING
inv_box.icon_state = "uniform"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_iclothing
toggleable_inventory += inv_box
@@ -277,6 +278,7 @@
inv_box.icon = ui_style
inv_box.slot_id = ITEM_SLOT_OCLOTHING
inv_box.icon_state = "suit"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_oclothing
toggleable_inventory += inv_box
@@ -300,6 +302,7 @@
inv_box.name = "id"
inv_box.icon = ui_style
inv_box.icon_state = "id"
+ inv_box.icon_full = "template_small"
inv_box.screen_loc = ui_id
inv_box.slot_id = ITEM_SLOT_ID
static_inventory += inv_box
@@ -308,6 +311,7 @@
inv_box.name = "mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_mask
inv_box.slot_id = ITEM_SLOT_MASK
toggleable_inventory += inv_box
@@ -316,6 +320,7 @@
inv_box.name = "neck"
inv_box.icon = ui_style
inv_box.icon_state = "neck"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_neck
inv_box.slot_id = ITEM_SLOT_NECK
toggleable_inventory += inv_box
@@ -324,6 +329,7 @@
inv_box.name = "back"
inv_box.icon = ui_style
inv_box.icon_state = "back"
+ inv_box.icon_full = "template_small"
inv_box.screen_loc = ui_back
inv_box.slot_id = ITEM_SLOT_BACK
static_inventory += inv_box
@@ -332,6 +338,7 @@
inv_box.name = "storage1"
inv_box.icon = ui_style
inv_box.icon_state = "pocket"
+ inv_box.icon_full = "template_small"
inv_box.screen_loc = ui_storage1
inv_box.slot_id = ITEM_SLOT_LPOCKET
static_inventory += inv_box
@@ -340,6 +347,7 @@
inv_box.name = "storage2"
inv_box.icon = ui_style
inv_box.icon_state = "pocket"
+ inv_box.icon_full = "template_small"
inv_box.screen_loc = ui_storage2
inv_box.slot_id = ITEM_SLOT_RPOCKET
static_inventory += inv_box
@@ -348,6 +356,7 @@
inv_box.name = "suit storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_sstore1
inv_box.slot_id = ITEM_SLOT_SUITSTORE
static_inventory += inv_box
@@ -381,6 +390,7 @@
inv_box.name = "gloves"
inv_box.icon = ui_style
inv_box.icon_state = "gloves"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_gloves
inv_box.slot_id = ITEM_SLOT_GLOVES
toggleable_inventory += inv_box
@@ -389,6 +399,7 @@
inv_box.name = "eyes"
inv_box.icon = ui_style
inv_box.icon_state = "glasses"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_glasses
inv_box.slot_id = ITEM_SLOT_EYES
toggleable_inventory += inv_box
@@ -397,6 +408,7 @@
inv_box.name = "left ear" // Sandstorm edit
inv_box.icon = ui_style
inv_box.icon_state = "ears"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_ears
inv_box.slot_id = ITEM_SLOT_EARS_LEFT // Sandstorm Edit
toggleable_inventory += inv_box
@@ -405,6 +417,7 @@
inv_box.name = "head"
inv_box.icon = ui_style
inv_box.icon_state = "head"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_head
inv_box.slot_id = ITEM_SLOT_HEAD
toggleable_inventory += inv_box
@@ -413,6 +426,7 @@
inv_box.name = "shoes"
inv_box.icon = ui_style
inv_box.icon_state = "shoes"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_shoes
inv_box.slot_id = ITEM_SLOT_FEET
toggleable_inventory += inv_box
@@ -428,6 +442,7 @@
inv_box.name = "underwear"
inv_box.icon = ui_style_modular(ui_style)
inv_box.icon_state = "underwear"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_boxers
inv_box.slot_id = ITEM_SLOT_UNDERWEAR // Sandstorm edit
extra_inventory += inv_box
@@ -436,6 +451,7 @@
inv_box.name = "socks"
inv_box.icon = ui_style_modular(ui_style)
inv_box.icon_state = "socks"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_socks
inv_box.slot_id = ITEM_SLOT_SOCKS // Sandstorm edit
extra_inventory += inv_box
@@ -444,6 +460,7 @@
inv_box.name = "shirt"
inv_box.icon = ui_style_modular(ui_style)
inv_box.icon_state = "shirt"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_shirt
inv_box.slot_id = ITEM_SLOT_SHIRT // Sandstorm edit
extra_inventory += inv_box
@@ -452,6 +469,7 @@
inv_box.name = "right ear"
inv_box.icon = ui_style_modular(ui_style)
inv_box.icon_state = "ears_extra"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_ears_extra
inv_box.slot_id = ITEM_SLOT_EARS_RIGHT // Sandstorm edit
extra_inventory += inv_box
@@ -460,16 +478,16 @@
inv_box.name = "wrists"
inv_box.icon = ui_style_modular(ui_style)
inv_box.icon_state = "wrists"
+ inv_box.icon_full = "template"
inv_box.screen_loc = ui_wrists
inv_box.slot_id = ITEM_SLOT_WRISTS
extra_inventory += inv_box
- //
inv_box = new /atom/movable/screen/inventory()
inv_box.name = "belt"
inv_box.icon = ui_style
inv_box.icon_state = "belt"
-// inv_box.icon_full = "template_small"
+ inv_box.icon_full = "template_small"
inv_box.screen_loc = ui_belt
inv_box.slot_id = ITEM_SLOT_BELT
static_inventory += inv_box
diff --git a/code/_rendering/atom_huds/data_huds.dm b/code/_rendering/atom_huds/data_huds.dm
index 490040637ac4..cd527f622d95 100644
--- a/code/_rendering/atom_huds/data_huds.dm
+++ b/code/_rendering/atom_huds/data_huds.dm
@@ -155,6 +155,17 @@
var/datum/atom_hud/data/human/medical/basic/B = GLOB.huds[DATA_HUD_MEDICAL_BASIC]
B.update_suit_sensors(src)
+/mob/living/carbon/human/update_suit_sensors()
+ . = ..()
+ update_sensor_list()
+
+/mob/living/carbon/human/proc/update_sensor_list()
+ var/obj/item/clothing/under/U = w_uniform
+ if(istype(U) && U.has_sensor > NO_SENSORS && U.sensor_mode)
+ GLOB.suit_sensors_list |= src
+ else
+ GLOB.suit_sensors_list -= src
+
//called when a living mob changes health
/mob/living/proc/med_hud_set_health()
var/image/holder = hud_list[HEALTH_HUD]
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 1e87f2bfaf49..389abf4f08fd 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -140,7 +140,8 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
var/pos_y
var/life_status
- for(var/mob/living/carbon/human/H in GLOB.carbon_list)
+ for(var/tracked_mob in GLOB.suit_sensors_list)
+ var/mob/living/carbon/human/H = tracked_mob
var/nanite_sensors = FALSE
if(H in SSnanites.nanite_monitored_mobs)
nanite_sensors = TRUE
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 2453d19fc426..0dbf860577fc 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -810,7 +810,7 @@ DEFINE_BITFIELD(turret_flags, list(
/obj/machinery/porta_turret/syndicate/pod
integrity_failure = 0.5
- max_integrity = 40
+ max_integrity = 240
stun_projectile = /obj/item/projectile/bullet/syndicate_turret
lethal_projectile = /obj/item/projectile/bullet/syndicate_turret
@@ -824,7 +824,13 @@ DEFINE_BITFIELD(turret_flags, list(
armor = list(MELEE = 50, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 80, BIO = 0, RAD = 0, FIRE = 90, ACID = 90)
/obj/machinery/porta_turret/syndicate/pod/toolbox
- max_integrity = 100
+ icon_state = "toolbox_off"
+ base_icon_state = "toolbox"
+ max_integrity = 220
+
+/obj/machinery/porta_turret/syndicate/pod/toolbox/Initialize(mapload)
+ . = ..()
+ underlays += image(icon = icon, icon_state = "[base_icon_state]_frame")
/obj/machinery/porta_turret/syndicate/shuttle/target(atom/movable/target)
if(target)
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 26c364d0b327..5f87c9ff075e 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -295,8 +295,8 @@ effective or pretty fucking useless.
/obj/item/storage/toolbox/emergency/turret/attackby(obj/item/I, mob/living/user, params)
if(I.tool_behaviour == TOOL_WRENCH && user.a_intent == INTENT_HARM)
- user.visible_message("[user] bashes [src] with [I]!", \
- "You bash [src] with [I]!", null, COMBAT_MESSAGE_RANGE)
+ user.visible_message("[user] бьёт [src] усилием [I]!", \
+ "Вы бьёте [src] усилием [I]!", null, COMBAT_MESSAGE_RANGE)
playsound(src, "sound/items/drill_use.ogg", 80, TRUE, -1)
var/obj/machinery/porta_turret/syndicate/pod/toolbox/turret = new(get_turf(loc))
turret.faction = list("[REF(user)]")
diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm
index 6beefc37bcfa..0b262025bfd2 100644
--- a/code/game/objects/items/pinpointer.dm
+++ b/code/game/objects/items/pinpointer.dm
@@ -156,7 +156,7 @@
user.visible_message("[user]'s pinpointer fails to detect a signal.", "Your pinpointer fails to detect a signal.")
return
- var/A = input(user, "Person to track", "Pinpoint") in names
+ var/A = tgui_input_list(user, "Сотрудники с включёнными в третий режим датчиками:", "Пинпоинтер", names)
if(!A || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated())
return
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 6e9e24b709db..2c342e7cbc50 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -24,7 +24,7 @@
*/
/obj/item/storage/box
- name = "box"
+ name = "Box"
desc = "It's just an ordinary box."
icon_state = "box"
item_state = "syringe_kit"
@@ -105,7 +105,7 @@
// Ordinary survival box
/obj/item/storage/box/survival
- name = "survival box"
+ name = "Survival Box"
desc = "A box with the bare essentials of ensuring the survival of you and others."
icon_state = "internals"
illustration = "emergencytank"
@@ -160,8 +160,9 @@
// Engineer survival box
/obj/item/storage/box/survival/engineer
- name = "extended-capacity survival box"
+ name = "Extended-Capacity Survival Box"
desc = "A box with the bare essentials of ensuring the survival of you and others. This one is labelled to contain an extended-capacity tank."
+ icon_state = "engibox"
illustration = "extendedtank"
internal_type = /obj/item/tank/internals/emergency_oxygen/engi
@@ -171,7 +172,7 @@
// Syndie survival box
/obj/item/storage/box/survival/syndie //why is this its own thing if it's just the engi box with a syndie mask and medipen?
- name = "extended-capacity survival box"
+ name = "Extended-Capacity Survival Box"
desc = "A box with the bare essentials of ensuring the survival of you and others. This one is labelled to contain an extended-capacity tank."
illustration = "extendedtank"
mask_type = /obj/item/clothing/mask/gas/syndicate
@@ -180,6 +181,8 @@
// Security survival box
/obj/item/storage/box/survival/security
+ name = "Extended-Capacity Survival Box"
+ icon_state = "secbox_xl"
mask_type = /obj/item/clothing/mask/gas/sechailer
internal_type = /obj/item/tank/internals/emergency_oxygen/engi/sec
@@ -192,6 +195,19 @@
new /obj/item/radio/off(src)
new /obj/item/flashlight/glowstick/red(src)
+//Command survival box
+/obj/item/storage/box/survival/command
+ name = "Extended-Capacity Survival Box"
+ icon_state = "ghostcostuming"
+ internal_type = /obj/item/tank/internals/emergency_oxygen/engi
+ medipen_type = /obj/item/reagent_containers/hypospray/medipen/atropine
+
+/obj/item/storage/box/survival/security/PopulateContents()
+ ..() // we want the regular stuff too
+ new /obj/item/crowbar/red/sec(src)
+ new /obj/item/reagent_containers/spray/pepper(src)
+ new /obj/item/melee/classic_baton/telescopic(src)
+
/obj/item/storage/box/seclooking
icon_state = "secbox"
illustration = null
diff --git a/code/modules/jobs/job_types/command/captain.dm b/code/modules/jobs/job_types/command/captain.dm
index abb6a2cfe4be..3734d81d7a62 100644
--- a/code/modules/jobs/job_types/command/captain.dm
+++ b/code/modules/jobs/job_types/command/captain.dm
@@ -58,7 +58,8 @@
suit = /obj/item/clothing/suit/armor/vest/capcarapace
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/caphat
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/station_charter=1)
+ backpack_contents = list( /obj/item/station_charter=1, /obj/item/modular_computer/tablet/preset/advanced=1)
+ box = /obj/item/storage/box/survival/command
backpack = /obj/item/storage/backpack/captain
satchel = /obj/item/storage/backpack/satchel/cap
diff --git a/code/modules/jobs/job_types/command/chief_engineer.dm b/code/modules/jobs/job_types/command/chief_engineer.dm
index 638f657af10e..37fe247a07c2 100644
--- a/code/modules/jobs/job_types/command/chief_engineer.dm
+++ b/code/modules/jobs/job_types/command/chief_engineer.dm
@@ -59,12 +59,12 @@
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hardhat/white
gloves = /obj/item/clothing/gloves/color/black
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1)
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/storage/backpack/industrial
satchel = /obj/item/storage/backpack/satchel/eng
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
- box = /obj/item/storage/box/survival/engineer
+ box = /obj/item/storage/box/survival/command
pda_slot = ITEM_SLOT_LPOCKET
chameleon_extras = /obj/item/stamp/ce
diff --git a/code/modules/jobs/job_types/command/chief_medical_officer.dm b/code/modules/jobs/job_types/command/chief_medical_officer.dm
index 85a7a3b534fd..190f2cca518f 100644
--- a/code/modules/jobs/job_types/command/chief_medical_officer.dm
+++ b/code/modules/jobs/job_types/command/chief_medical_officer.dm
@@ -58,7 +58,8 @@
suit = /obj/item/clothing/suit/toggle/labcoat/cmo
l_hand = /obj/item/storage/firstaid/regular
suit_store = /obj/item/flashlight/pen/paramedic
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1)
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1)
+ box = /obj/item/storage/box/survival/command
backpack = /obj/item/storage/backpack/medic
satchel = /obj/item/storage/backpack/satchel/med
diff --git a/code/modules/jobs/job_types/command/head_of_personnel.dm b/code/modules/jobs/job_types/command/head_of_personnel.dm
index e6197d1d526c..f0ae02315556 100644
--- a/code/modules/jobs/job_types/command/head_of_personnel.dm
+++ b/code/modules/jobs/job_types/command/head_of_personnel.dm
@@ -55,8 +55,8 @@
uniform = /obj/item/clothing/under/rank/civilian/head_of_personnel
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hopcap
- backpack_contents = list(/obj/item/storage/box/ids=1,\
- /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
+ backpack_contents = list(/obj/item/storage/box/ids=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
+ box = /obj/item/storage/box/survival/command
chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/hop)
diff --git a/code/modules/jobs/job_types/command/head_of_security.dm b/code/modules/jobs/job_types/command/head_of_security.dm
index 5e050fea7065..ef961e98dde3 100644
--- a/code/modules/jobs/job_types/command/head_of_security.dm
+++ b/code/modules/jobs/job_types/command/head_of_security.dm
@@ -59,9 +59,9 @@
//suit_store = /obj/item/gun/energy/e_gun
r_pocket = /obj/item/assembly/flash/handheld
l_pocket = /obj/item/restraints/handcuffs
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1)
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced = 1)
+ box = /obj/item/storage/box/survival/command
- backpack = /obj/item/storage/backpack/security
satchel = /obj/item/storage/backpack/satchel/sec
duffelbag = /obj/item/storage/backpack/duffelbag/sec
box = /obj/item/storage/box/survival/security
diff --git a/code/modules/jobs/job_types/command/quartermaster.dm b/code/modules/jobs/job_types/command/quartermaster.dm
index b300ec20e28a..40d479ffddf7 100644
--- a/code/modules/jobs/job_types/command/quartermaster.dm
+++ b/code/modules/jobs/job_types/command/quartermaster.dm
@@ -50,8 +50,8 @@
glasses = /obj/item/clothing/glasses/sunglasses
l_hand = /obj/item/clipboard
id = /obj/item/card/id/silver
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic = 1, /obj/item/modular_computer/tablet/preset/advanced = 1)
-
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced = 1)
+ box = /obj/item/storage/box/survival/command
chameleon_extras = /obj/item/stamp/qm
/datum/outfit/job/quartermaster/syndicate
diff --git a/code/modules/jobs/job_types/command/research_director.dm b/code/modules/jobs/job_types/command/research_director.dm
index 8c1fca399bdd..73a5c2c50251 100644
--- a/code/modules/jobs/job_types/command/research_director.dm
+++ b/code/modules/jobs/job_types/command/research_director.dm
@@ -55,9 +55,10 @@
suit = /obj/item/clothing/suit/toggle/labcoat
l_hand = /obj/item/clipboard
l_pocket = /obj/item/laser_pointer
- backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1)
+ backpack_contents = list( /obj/item/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/storage/backpack/science
+ box = /obj/item/storage/box/survival/command
satchel = /obj/item/storage/backpack/satchel/tox
chameleon_extras = /obj/item/stamp/rd
diff --git a/code/modules/jobs/job_types/juridical/bridgeofficer.dm b/code/modules/jobs/job_types/juridical/bridgeofficer.dm
index 6c8d8efc8831..fee0536698c4 100644
--- a/code/modules/jobs/job_types/juridical/bridgeofficer.dm
+++ b/code/modules/jobs/job_types/juridical/bridgeofficer.dm
@@ -40,6 +40,7 @@
shoes = /obj/item/clothing/shoes/sneakers/brown
l_pocket = /obj/item/pda
backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced = 1)
+ box = /obj/item/storage/box/survival/command
/datum/outfit/job/bridgeofficer/syndicate
name = "Syndicate Bridge Officer"
diff --git a/code/modules/jobs/job_types/juridical/lawyer.dm b/code/modules/jobs/job_types/juridical/lawyer.dm
index afb1f292103c..450460c73490 100644
--- a/code/modules/jobs/job_types/juridical/lawyer.dm
+++ b/code/modules/jobs/job_types/juridical/lawyer.dm
@@ -54,7 +54,7 @@
chameleon_extras = /obj/item/stamp/law
backpack_contents = list(/obj/item/stamp/law=1)
-
+ box = /obj/item/storage/box/survival/security
implants = list(/obj/item/implant/mindshield)
/datum/outfit/job/lawyer/syndicate
diff --git a/code/modules/jobs/job_types/juridical/magistrate.dm b/code/modules/jobs/job_types/juridical/magistrate.dm
index 31db15478e28..9a34e66517bf 100644
--- a/code/modules/jobs/job_types/juridical/magistrate.dm
+++ b/code/modules/jobs/job_types/juridical/magistrate.dm
@@ -105,7 +105,6 @@
suit = /obj/item/clothing/suit/armor/ntr
head = /obj/item/clothing/head/beret/sec/ntr
shoes = /obj/item/clothing/shoes/laceup/ntr
- l_pocket = /obj/item/melee/classic_baton/telescopic
r_pocket = /obj/item/clothing/accessory/lawyers_badge
backpack = /obj/item/storage/backpack/security
@@ -116,6 +115,8 @@
backpack_contents = list(/obj/item/gun/energy/e_gun=1, /obj/item/stamp/law=1)
+ box = /obj/item/storage/box/survival/command
+
implants = list(/obj/item/implant/mindshield)
accessory = /obj/item/clothing/accessory/permit/head
diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi
index 39e8eb4b4568..68ef6b9ecc26 100644
Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index f763b97ed22a..51f0513e5bda 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi
index 07b13db7618e..acac1fb832e5 100644
Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ
diff --git a/modular_bluemoon/SmiLeY/code/crew_console.dm b/modular_bluemoon/SmiLeY/code/crew_console.dm
new file mode 100644
index 000000000000..bc5633703150
--- /dev/null
+++ b/modular_bluemoon/SmiLeY/code/crew_console.dm
@@ -0,0 +1,48 @@
+#define SENSORS_UPDATE_PERIOD 10 SECONDS
+
+/obj/machinery/computer/crew
+ luminosity = 1
+ light_power = 3
+ var/canalarm = FALSE
+ var/obj/item/radio/radio
+
+/obj/machinery/computer/crew/Initialize(mapload, obj/item/circuitboard/C)
+ . = ..()
+ radio = new/obj/item/radio(src)
+ radio.listening = FALSE
+ radio.recalculateChannels()
+ alarm()
+
+/obj/machinery/computer/crew/proc/alarm()
+ canalarm = FALSE
+ var/injuredcount = 0
+
+ for(var/tracked_mob in GLOB.suit_sensors_list)
+ var/mob/living/carbon/human/mob = tracked_mob
+ if(mob.z != src.z)
+ continue
+ var/obj/item/clothing/under/uniform = mob.w_uniform
+ if(uniform.sensor_mode >= SENSOR_VITALS && mob.InCritical() || mob.stat == DEAD)
+ injuredcount++
+ canalarm = TRUE
+ else if(uniform.sensor_mode == SENSOR_LIVING && mob.stat == DEAD)
+ injuredcount++
+ canalarm = TRUE
+
+ if(canalarm)
+ playsound(src, 'sound/machines/twobeep.ogg', 100, TRUE)
+ set_light((initial(light_range) + 3), 3, CIRCUIT_COLOR_SECURITY, TRUE)
+ else
+ set_light((initial(light_range)), initial(light_power), initial(light_color), TRUE)
+
+ addtimer(CALLBACK(src, .proc/alarm), SENSORS_UPDATE_PERIOD)
+ if(prob(1))
+ alert_radio(canalarm, injuredcount)
+ return canalarm
+
+/obj/machinery/computer/crew/proc/alert_radio(canalarm, injuredcount)
+ if(canalarm)
+ radio.set_frequency(FREQ_MEDICAL)
+ radio.talk_into(src, "[injuredcount] нуждаются в оказании срочной медицинской помощи.", RADIO_CHANNEL_MEDICAL)
+
+#undef SENSORS_UPDATE_PERIOD
diff --git a/tgstation.dme b/tgstation.dme
index f1baefede955..407f331c7c12 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4371,6 +4371,7 @@
#include "modular_bluemoon\SmiLeY\blastwave_outfits\code\clothing\blastwave_mask.dm"
#include "modular_bluemoon\SmiLeY\blastwave_outfits\code\clothing\blastwave_suit.dm"
#include "modular_bluemoon\SmiLeY\blastwave_outfits\code\clothing\blastwave_uniform.dm"
+#include "modular_bluemoon\SmiLeY\code\crew_console.dm"
#include "modular_bluemoon\SmiLeY\code\hilbertshotel_ghost.dm"
#include "modular_bluemoon\SmiLeY\code\lavaland.dm"
#include "modular_bluemoon\SmiLeY\code\noose.dm"