From 46a31c975e348f5c490b80bcc0d9329a24f4f1b8 Mon Sep 17 00:00:00 2001 From: Doubleumc Date: Sat, 6 Jul 2024 03:24:48 -0400 Subject: [PATCH] SEA tracking options (#6595) # About the pull request Adds ability to track the CMP. Adds a SEA headset that can track the CO, XO, and CMP. Adds handheld crew monitor to SEATech vendor. ![image](https://github.com/cmss13-devs/cmss13/assets/14267245/3db56808-cbbe-4db1-83c1-a16c2f0e244e) ![image](https://github.com/cmss13-devs/cmss13/assets/14267245/b8dcd234-1bf2-408a-9f2e-346fc4f005e1) # Explain why it's good for the game Headset tracking is a convenience for SEAs to find command staff. Access to handheld crew monitor is a convenience for SEAs to find people who can't or don't know how to ask for help: namely, privates. # Testing Photographs and Procedure ![image](https://github.com/cmss13-devs/cmss13/assets/14267245/1eacd6a8-a37d-4c73-bb59-7f31ab6e2319) ![image](https://github.com/cmss13-devs/cmss13/assets/14267245/ae60cb55-774c-401c-a5a4-ea6331d4f894) # Changelog :cl: imageadd: adds CMP tracker sprites add: adds a SEA headset, can track CO, XO, CMP add: adds handheld crew monitor in SEATech vendor /:cl: --- code/__DEFINES/mob_hud.dm | 1 + .../jobs/job/command/police/chief_police.dm | 10 ++++++++++ code/game/machinery/vending/vending_types.dm | 1 + .../objects/items/devices/radio/headset.dm | 15 +++++++++++++++ code/modules/gear_presets/uscm_ship.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 5 +++++ icons/mob/hud/human_midnight.dmi | Bin 147911 -> 148804 bytes 7 files changed, 33 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/mob_hud.dm b/code/__DEFINES/mob_hud.dm index 7536b7576d8d..97cbe0281924 100644 --- a/code/__DEFINES/mob_hud.dm +++ b/code/__DEFINES/mob_hud.dm @@ -54,6 +54,7 @@ #define TRACKER_LZ "track_lz" #define TRACKER_CO "track_co" #define TRACKER_XO "track_xo" +#define TRACKER_CMP "track_cmp" #define TRACKER_CL "track_cl" #define TRACKER_ASL "_asl" // Alpha Squad Leader diff --git a/code/game/jobs/job/command/police/chief_police.dm b/code/game/jobs/job/command/police/chief_police.dm index 63e6d8023f17..ecc8af38526c 100644 --- a/code/game/jobs/job/command/police/chief_police.dm +++ b/code/game/jobs/job/command/police/chief_police.dm @@ -5,6 +5,16 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/cmp entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + var/mob/living/carbon/human/active_cmp + +/datum/job/command/warrant/generate_entry_conditions(mob/living/cmp, whitelist_status) + . = ..() + active_cmp = cmp + RegisterSignal(cmp, COMSIG_PARENT_QDELETING, PROC_REF(cleanup_active_cmp)) + +/datum/job/command/warrant/proc/cleanup_active_cmp(mob/cmp) + SIGNAL_HANDLER + active_cmp = null AddTimelock(/datum/job/command/warrant, list( JOB_POLICE_ROLES = 15 HOURS, diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index b69773dbf8bf..85d08641bfdf 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -296,6 +296,7 @@ /obj/item/storage/firstaid/fire = 2, /obj/item/storage/firstaid/rad = 1, /obj/item/device/radio/headset = 6, + /obj/item/tool/crew_monitor = 1, ) contraband = list(/obj/item/storage/fancy/cigar = 2,/obj/item/tool/lighter/zippo = 2) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index b9b7e94d9ae5..320e44f3f503 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -565,6 +565,21 @@ initial_keys = list(/obj/item/device/encryptionkey/cmpcom/cdrcom) volume = RADIO_VOLUME_CRITICAL +/obj/item/device/radio/headset/almayer/mcom/sea + name = "marine senior enlisted advisor headset" + desc = "Issued only to senior enlisted advisors. Channels are as follows: :v - marine command, :p - military police, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel" + icon_state = "mco_headset" + initial_keys = list(/obj/item/device/encryptionkey/cmpcom/cdrcom) + volume = RADIO_VOLUME_CRITICAL + misc_tracking = TRUE + locate_setting = TRACKER_CO + + inbuilt_tracking_options = list( + "Commanding Officer" = TRACKER_CO, + "Executive Officer" = TRACKER_XO, + "Chief MP" = TRACKER_CMP + ) + /obj/item/device/radio/headset/almayer/mcom/synth name = "marine synth headset" desc = "Issued only to USCM synthetics. Channels are as follows: :v - marine command, :p - military police, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel" diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index a53504fec0c9..9c00599ec9cd 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -609,7 +609,7 @@ back_item = /obj/item/storage/backpack/marine new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom/cdrcom(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom/sea(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m44/custom(new_human), WEAR_WAIST) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 62e2c7a01cd1..213d037afe6e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1259,6 +1259,11 @@ if(TRACKER_XO) H = GLOB.marine_leaders[JOB_XO] tracking_suffix = "_xo" + if(TRACKER_CMP) + var/datum/job/command/warrant/cmp_job = GLOB.RoleAuthority.roles_for_mode[JOB_CHIEF_POLICE] + if(cmp_job?.active_cmp) + H = cmp_job.active_cmp + tracking_suffix = "_cmp" if(TRACKER_CL) var/datum/job/civilian/liaison/liaison_job = GLOB.RoleAuthority.roles_for_mode[JOB_CORPORATE_LIAISON] if(liaison_job?.active_liaison) diff --git a/icons/mob/hud/human_midnight.dmi b/icons/mob/hud/human_midnight.dmi index c6fc989fec2d1cb77d191d3e8032912904036184..78a0b105610e1b34c3eee134aa75c35bda0766ca 100644 GIT binary patch delta 8826 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
Z- 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 MMi&iB^{+?%A4(k|t^fc4