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"