From 4a6daa078584de71010ee99d7a777c14a17fafed Mon Sep 17 00:00:00 2001 From: trickyfox-inc <128976622+trickyfox-inc@users.noreply.github.com> Date: Fri, 21 Nov 2025 04:38:12 +0300 Subject: [PATCH] New CENT_OFFICER access and mapping helpers (#94019) ## About The Pull Request Have you ever wondered, why CentCom officers' IDs have the same access as those of ERT commanders? Tired of ERT members trying on stylish officer's apparel? Well, it's time to change that. This PR adds centcom officer's access (cent_officer), as well as mapping helpers for cent_officer and cent_specops access. Death Commando officers and ERT Commanders don't have this access. It also changes access of administrative office doors to cent_officer.
screenshots PR - Admiral PR - CentCom Commander PR - Special Ops officer PR - Death Commando PR- ERT Commander PR - Mapping helpers
## Why It's Good For The Game ERT commanders will have a hard time getting CentCom apparel from the vending machine in the office. It could also be useful for custom maps and shuttles (or even new CentCom map). ## Changelog :cl: add: Added centcom officer's access (cent_officer) add: Added mapping helpers for cent_officer and cent_specops access map: Changed access on the administrative office doors (cent_officer) /:cl: --------- Co-authored-by: AlexTheEng1neer <128976622+AlexTheEng1neer@users.noreply.github.com> --- _maps/map_files/generic/CentCom.dmm | 10 ++++----- code/__DEFINES/access.dm | 2 ++ .../subsystem/networks/id_access.dm | 19 ++++++++-------- code/datums/id_trim/centcom.dm | 8 +++---- code/modules/mapping/access_helpers.dm | 22 ++++++++++++++++++- 5 files changed, 42 insertions(+), 19 deletions(-) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 82afaf2f730..acfd0d7267b 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1027,7 +1027,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/airlock/access/all/admin/captain, +/obj/effect/mapping_helpers/airlock/access/all/admin/officer, /turf/open/floor/iron, /area/centcom/central_command_areas/admin) "eE" = ( @@ -1249,7 +1249,7 @@ name = "Bathroom" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/effect/mapping_helpers/airlock/access/all/admin/captain, +/obj/effect/mapping_helpers/airlock/access/all/admin/officer, /turf/open/floor/iron/white, /area/centcom/central_command_areas/admin) "fI" = ( @@ -7648,7 +7648,7 @@ dir = 8 }, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/admin/captain, +/obj/effect/mapping_helpers/airlock/access/all/admin/officer, /turf/open/floor/iron, /area/centcom/central_command_areas/admin) "Kg" = ( @@ -8469,8 +8469,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/admin/captain, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/mapping_helpers/airlock/access/all/admin/officer, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) "Od" = ( @@ -10407,7 +10407,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/effect/turf_decal/stripes/line, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/admin/captain, +/obj/effect/mapping_helpers/airlock/access/all/admin/officer, /turf/open/floor/iron, /area/centcom/central_command_areas/admin) "WX" = ( diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index 956f1d9c448..533725978c8 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -184,6 +184,7 @@ #define ACCESS_CENT_TELEPORTER "cent_teleporter" #define ACCESS_CENT_CAPTAIN "cent_captain" #define ACCESS_CENT_BAR "cent_bar" +#define ACCESS_CENT_OFFICER "cent_officer" /// Special Ops. Captain's display case, Marauder and Seraph mechs. #define ACCESS_CENT_SPECOPS "cent_specops" @@ -386,6 +387,7 @@ ACCESS_CENT_STORAGE, \ ACCESS_CENT_TELEPORTER, \ ACCESS_CENT_THUNDER, \ + ACCESS_CENT_OFFICER, \ ) /// Syndicate areas off station. Do not use direct, access via SSid_access.get_flag_access_list(ACCESS_FLAG_SYNDICATE) diff --git a/code/controllers/subsystem/networks/id_access.dm b/code/controllers/subsystem/networks/id_access.dm index 60c6988e569..fe400776232 100644 --- a/code/controllers/subsystem/networks/id_access.dm +++ b/code/controllers/subsystem/networks/id_access.dm @@ -320,15 +320,16 @@ SUBSYSTEM_DEF(id_access) desc_by_access["[ACCESS_MECH_ENGINE]"] = "Engineering Mech Access" desc_by_access["[ACCESS_AUX_BASE]"] = "Auxiliary Base" desc_by_access["[ACCESS_SERVICE]"] = "Service Hallway" - desc_by_access["[ACCESS_CENT_GENERAL]"] = "Code Grey" - desc_by_access["[ACCESS_CENT_THUNDER]"] = "Code Yellow" - desc_by_access["[ACCESS_CENT_STORAGE]"] = "Code Orange" - desc_by_access["[ACCESS_CENT_LIVING]"] = "Code Green" - desc_by_access["[ACCESS_CENT_MEDICAL]"] = "Code White" - desc_by_access["[ACCESS_CENT_TELEPORTER]"] = "Code Blue" - desc_by_access["[ACCESS_CENT_SPECOPS]"] = "Code Black" - desc_by_access["[ACCESS_CENT_CAPTAIN]"] = "Code Gold" - desc_by_access["[ACCESS_CENT_BAR]"] = "Code Scotch" + desc_by_access["[ACCESS_CENT_GENERAL]"] = "CentCom General Access" + desc_by_access["[ACCESS_CENT_THUNDER]"] = "CentCom Thunderdome" + desc_by_access["[ACCESS_CENT_STORAGE]"] = "CentCom Storage" + desc_by_access["[ACCESS_CENT_LIVING]"] = "CentCom Living Quarters" + desc_by_access["[ACCESS_CENT_MEDICAL]"] = "CentCom Medical" + desc_by_access["[ACCESS_CENT_TELEPORTER]"] = "CentCom Teleporter" + desc_by_access["[ACCESS_CENT_SPECOPS]"] = "CentCom SpecOps" + desc_by_access["[ACCESS_CENT_CAPTAIN]"] = "CentCom Captain" + desc_by_access["[ACCESS_CENT_BAR]"] = "CentCom Bar" + desc_by_access["[ACCESS_CENT_OFFICER]"] = "CentCom Officer" desc_by_access["[ACCESS_BIT_DEN]"] = "Bitrunner Den" /** diff --git a/code/datums/id_trim/centcom.dm b/code/datums/id_trim/centcom.dm index 7432540f07f..86d3ec5b9fc 100644 --- a/code/datums/id_trim/centcom.dm +++ b/code/datums/id_trim/centcom.dm @@ -110,7 +110,7 @@ access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION)) -/// Trim for Deathsquad officers. All Centcom and Station Access. +/// Trim for Deathsquad officers. All Centcom and Station Access. No centcom officer's access /datum/id_trim/centcom/deathsquad assignment = JOB_ERT_DEATHSQUAD trim_state = "trim_deathcommando" @@ -122,7 +122,7 @@ /datum/id_trim/centcom/deathsquad/New() . = ..() - access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION)) + access = (SSid_access.get_region_access_list(list(REGION_CENTCOM)) - ACCESS_CENT_OFFICER) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION))) /// Trim for generic ERT interns. No universal ID card changing access. /datum/id_trim/centcom/ert @@ -135,7 +135,7 @@ access = list(ACCESS_CENT_GENERAL) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION)) - ACCESS_CHANGE_IDS) -/// Trim for ERT Commanders. All station and centcom access. +/// Trim for ERT Commanders. All station and centcom access. No centcom officer's access /datum/id_trim/centcom/ert/commander assignment = JOB_ERT_COMMANDER trim_state = "trim_ert_commander" @@ -144,7 +144,7 @@ /datum/id_trim/centcom/ert/commander/New() . = ..() - access = SSid_access.get_region_access_list(list(REGION_CENTCOM, REGION_ALL_STATION)) + access = (SSid_access.get_region_access_list(list(REGION_CENTCOM)) - ACCESS_CENT_OFFICER) | (SSid_access.get_region_access_list(list(REGION_ALL_STATION))) /// Trim for generic ERT seccies. No universal ID card changing access. /datum/id_trim/centcom/ert/security diff --git a/code/modules/mapping/access_helpers.dm b/code/modules/mapping/access_helpers.dm index 96c377c461a..fafed05d1ce 100644 --- a/code/modules/mapping/access_helpers.dm +++ b/code/modules/mapping/access_helpers.dm @@ -515,7 +515,17 @@ /obj/effect/mapping_helpers/airlock/access/any/admin/bar/get_access() var/list/access_list = ..() - access_list += list(ACCESS_CENT_CAPTAIN) + access_list += list(ACCESS_CENT_BAR) + return access_list + +/obj/effect/mapping_helpers/airlock/access/any/admin/officer/get_access() + var/list/access_list = ..() + access_list += list(ACCESS_CENT_OFFICER) + return access_list + +/obj/effect/mapping_helpers/airlock/access/any/admin/specops/get_access() + var/list/access_list = ..() + access_list += list(ACCESS_CENT_SPECOPS) return access_list // -------------------- Req All (Requires ALL of the given accesses to open) @@ -982,3 +992,13 @@ var/list/access_list = ..() access_list += ACCESS_CENT_BAR return access_list + +/obj/effect/mapping_helpers/airlock/access/all/admin/officer/get_access() + var/list/access_list = ..() + access_list += ACCESS_CENT_OFFICER + return access_list + +/obj/effect/mapping_helpers/airlock/access/all/admin/specops/get_access() + var/list/access_list = ..() + access_list += ACCESS_CENT_SPECOPS + return access_list