From bbf36f111caa594e0d186893b92a676b608b6dd0 Mon Sep 17 00:00:00 2001 From: faaaay <69845288+faaaay@users.noreply.github.com> Date: Mon, 17 Jul 2023 05:26:43 +0100 Subject: [PATCH] Brings back Security Medic (#268) ## About The Pull Request Security Medic was removed in the latest upstream merge. This undoes that, [as requested by the person who PRed said merge](https://github.com/Bubberstation/Bubberstation/pull/236). I've tested that the role can spawn, and that all sprites function. ## Changelog :cl: fix: un-deleted the Security Medic /:cl: --------- Co-authored-by: Cyprex <35031555+Cyprex@users.noreply.github.com> Co-authored-by: nevimer <77420409+nevimer@users.noreply.github.com> --- code/__DEFINES/jobs.dm | 1 + code/game/machinery/computer/crew.dm | 5 +- config/dynamic.json | 1 + config/jobs.txt | 1 + modular_skyrat/modules/admin/code/sooc.dm | 7 +- .../automapper/code/area_spawn_entries.dm | 4 + .../donator/personal/donator_personal.dm | 4 +- .../loadout_items/loadout_datum_accessory.dm | 2 +- .../loadout_items/loadout_datum_glasses.dm | 10 +- .../loadout_items/loadout_datum_heads.dm | 22 +-- .../loadout_items/loadout_datum_neck.dm | 2 +- .../loadout_items/loadout_datum_suit.dm | 8 +- .../under/loadout_datum_under.dm | 18 +-- .../oneclickantag/code/oneclickantag.dm | 2 +- modular_zubbers/code/datums/id_trim/jobs.dm | 20 ++- .../code/alt_job_titles.dm | 8 ++ .../automapper/code/area_spawn_entries.dm | 3 + .../modules/clothing/under/security.dm | 13 ++ .../customization/modules/jobs/_job.dm | 2 + .../loadout_items/loadout_datum_under.dm | 5 + .../code/antag_restricted_jobs.dm | 2 + .../code/security_medic/secmed_clothes.dm | 128 ++++++++++++++++++ .../code/security_medic/security_medic.dm | 116 ++++++++++++++++ .../icons/mob/clothing/suits/armor.dmi | Bin 1538 -> 6818 bytes .../icons/mob/clothing/suits/labcoat.dmi | Bin 0 -> 550 bytes .../icons/mob/clothing/under/security.dmi | Bin 0 -> 2536 bytes .../mob/clothing/under/security_digi.dmi | Bin 0 -> 2680 bytes .../icons/obj/clothing/suits/armor.dmi | Bin 0 -> 1035 bytes .../icons/obj/clothing/suits/labcoat.dmi | Bin 0 -> 550 bytes .../icons/obj/clothing/under/security.dmi | Bin 0 -> 863 bytes tgstation.dme | 7 + 31 files changed, 353 insertions(+), 38 deletions(-) create mode 100644 modular_zubbers/code/modules/alternative_job_titles/code/alt_job_titles.dm create mode 100644 modular_zubbers/code/modules/automapper/code/area_spawn_entries.dm create mode 100644 modular_zubbers/code/modules/customization/modules/clothing/under/security.dm create mode 100644 modular_zubbers/code/modules/customization/modules/jobs/_job.dm create mode 100644 modular_zubbers/code/modules/protected_roles/code/antag_restricted_jobs.dm create mode 100644 modular_zubbers/code/modules/sec_haul/code/security_medic/secmed_clothes.dm create mode 100644 modular_zubbers/code/modules/sec_haul/code/security_medic/security_medic.dm create mode 100644 modular_zubbers/icons/mob/clothing/suits/labcoat.dmi create mode 100644 modular_zubbers/icons/mob/clothing/under/security.dmi create mode 100644 modular_zubbers/icons/mob/clothing/under/security_digi.dmi create mode 100644 modular_zubbers/icons/obj/clothing/suits/armor.dmi create mode 100644 modular_zubbers/icons/obj/clothing/suits/labcoat.dmi create mode 100644 modular_zubbers/icons/obj/clothing/under/security.dmi diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 17f1ed76097..91dd441ca69 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -55,6 +55,7 @@ #define JOB_SECURITY_OFFICER_SCIENCE "Security Officer (Science)" #define JOB_SECURITY_OFFICER_SUPPLY "Security Officer (Cargo)" #define JOB_CORRECTIONS_OFFICER "Corrections Officer" // SKYRAT EDIT ADDITION +#define JOB_SECURITY_MEDIC "Security Medic" //BUBBER EDIT ADDITION //Engineering #define JOB_STATION_ENGINEER "Station Engineer" #define JOB_ATMOSPHERIC_TECHNICIAN "Atmospheric Technician" diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 974028efa2c..d584f239697 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -109,8 +109,9 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) JOB_SECURITY_OFFICER_SCIENCE = 15, JOB_SECURITY_OFFICER_SUPPLY = 16, */ - JOB_CORRECTIONS_OFFICER = 13, // SKYRAT EDIT ADDITION - JOB_DETECTIVE = 14, + JOB_SECURITY_MEDIC = 13, // BUBBER EDIT ADDITION + JOB_CORRECTIONS_OFFICER = 14, // SKYRAT EDIT ADDITION + JOB_DETECTIVE = 15, // 20-29: Medbay JOB_CHIEF_MEDICAL_OFFICER = 20, JOB_CHEMIST = 21, diff --git a/config/dynamic.json b/config/dynamic.json index b968b228ce5..8bd2e8d4ff7 100644 --- a/config/dynamic.json +++ b/config/dynamic.json @@ -29,6 +29,7 @@ "Security Officer", "Warden", "Detective", + "Security Medic", "Head of Security", "Captain", "Nanotrasen Consultant", diff --git a/config/jobs.txt b/config/jobs.txt index c1ceb8e1808..5b65062cd2d 100644 --- a/config/jobs.txt +++ b/config/jobs.txt @@ -74,6 +74,7 @@ Science Guard=2,2 Warden=1,1 Detective=2,2 Security Officer=6,6 +Security Medic=1,1 Corrections Officer=2,1 diff --git a/modular_skyrat/modules/admin/code/sooc.dm b/modular_skyrat/modules/admin/code/sooc.dm index 9c60d2347db..518e8508f06 100644 --- a/modular_skyrat/modules/admin/code/sooc.dm +++ b/modular_skyrat/modules/admin/code/sooc.dm @@ -16,7 +16,12 @@ GLOBAL_LIST_EMPTY(ckey_to_sooc_name) if(!mob) return - var/static/list/job_lookup = list(JOB_CAPTAIN=TRUE, JOB_HEAD_OF_SECURITY=TRUE, JOB_WARDEN=TRUE, JOB_DETECTIVE=TRUE, JOB_SECURITY_OFFICER=TRUE, JOB_CORRECTIONS_OFFICER=TRUE) + var/static/list/job_lookup = list(JOB_CAPTAIN=TRUE, + JOB_HEAD_OF_SECURITY=TRUE, + JOB_WARDEN=TRUE, JOB_DETECTIVE=TRUE, + JOB_SECURITY_OFFICER=TRUE, + JOB_CORRECTIONS_OFFICER=TRUE, + JOB_SECURITY_MEDIC=TRUE) //BUBBER EDIT ADDITION if(!holder) var/job = mob?.mind.assigned_role.title if(!job || !job_lookup[job]) diff --git a/modular_skyrat/modules/automapper/code/area_spawn_entries.dm b/modular_skyrat/modules/automapper/code/area_spawn_entries.dm index ac668554a23..9b4aa8c7c1f 100644 --- a/modular_skyrat/modules/automapper/code/area_spawn_entries.dm +++ b/modular_skyrat/modules/automapper/code/area_spawn_entries.dm @@ -16,6 +16,10 @@ desired_atom = /mob/living/simple_animal/pet/poppy // Structures +/datum/area_spawn/secmed_locker + target_areas = list(/area/station/security/medical, /area/station/security/lockers) + desired_atom = /obj/structure/closet/secure_closet/security_medic + /datum/area_spawn/blueshield_locker target_areas = list(/area/station/command/heads_quarters/captain, /area/station/command/bridge, /area/station/command/corporate_dock, /area/station/command/meeting_room, /area/station/command/gateway) desired_atom = /obj/structure/closet/secure_closet/blueshield diff --git a/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm b/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm index 9d7add3ca09..3f9a75c108e 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm @@ -73,13 +73,13 @@ name = "Peacekeeper jacket" item_path = /obj/item/clothing/suit/armor/vest/warden/rax // ckeywhitelist = list("raxraus") - restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/under/jumpsuit/rax_banded_uniform name = "Banded Uniform" item_path = /obj/item/clothing/under/rank/security/rax // ckeywhitelist = list("raxraus") - restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/suit/rax_aerostatic_jacket name = "Navy Aerostatic Jacket" diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm index 9140fc6ee7e..0884f038b24 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_accessory.dm @@ -73,7 +73,7 @@ GLOBAL_LIST_INIT(loadout_accessory, generate_loadout_items(/datum/loadout_item/a /datum/loadout_item/accessory/armband_security name = "Security Armband" item_path = /obj/item/clothing/accessory/armband/deputy/lopland - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE) + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) //BUBBER EDIT /datum/loadout_item/accessory/armband_security_deputy name = "Security Deputy Armband" diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm index d848176ca50..cb5d71519ef 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_glasses.dm @@ -146,7 +146,7 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla /datum/loadout_item/glasses/medicpatch name = "Medical Eyepatch" item_path = /obj/item/clothing/glasses/hud/eyepatch/med - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_SECURITY_MEDIC, JOB_ORDERLY, JOB_CORONER) //BUBBER EDIT /datum/loadout_item/glasses/robopatch name = "Diagnostic Eyepatch" @@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla /datum/loadout_item/glasses/medhud_glasses name = "Prescription Medical HUD" item_path = /obj/item/clothing/glasses/hud/health/prescription - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_SECURITY_MEDIC, JOB_ORDERLY, JOB_CORONER) //BUBBER EDIT /datum/loadout_item/glasses/diaghud_glasses name = "Prescription Diagnostic HUD" @@ -201,7 +201,7 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla /datum/loadout_item/glasses/aviator_health name = "Medical HUD Aviators" item_path = /obj/item/clothing/glasses/hud/ar/aviator/health - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_SECURITY_MEDIC, JOB_ORDERLY, JOB_CORONER) //BUBBER EDIT /datum/loadout_item/glasses/aviator_meson name = "Meson HUD Aviators" @@ -227,7 +227,7 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla /datum/loadout_item/glasses/prescription_aviator_health name = "Prescription Medical HUD Aviators" item_path = /obj/item/clothing/glasses/hud/ar/aviator/health/prescription - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_SECURITY_MEDIC, JOB_ORDERLY, JOB_CORONER) //BUBBER EDIT /datum/loadout_item/glasses/prescription_aviator_meson name = "Prescription Meson HUD Aviators" @@ -252,7 +252,7 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla /datum/loadout_item/glasses/retinal_projector_health name = "Retinal Projector Health HUD" item_path = /obj/item/clothing/glasses/hud/ar/projector/health - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC, JOB_SECURITY_MEDIC, JOB_ORDERLY, JOB_CORONER) //BUBBER EDIT /datum/loadout_item/glasses/retinal_projector_meson name = "Retinal Projector Meson HUD" diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm index f48b9341ffa..b5e61a9f49e 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm @@ -429,17 +429,17 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea /datum/loadout_item/head/trekcapmedisci name = "MedSci Officer's Cap (Blue)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/medsci - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PSYCHOLOGIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_SECURITY_MEDIC, JOB_PARAMEDIC,JOB_CHEMIST, JOB_VIROLOGIST, JOB_PSYCHOLOGIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_ORDERLY, JOB_CORONER) /datum/loadout_item/head/trekcapeng name = "Eng Officer's Cap (Yellow)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/eng - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_ENGINEERING_GUARD, JOB_CUSTOMS_AGENT) + restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_SECURITY_MEDIC, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_ENGINEERING_GUARD, JOB_CUSTOMS_AGENT) //BUBBER EDIT /datum/loadout_item/head/trekcapsec name = "Officer's Cap (Red)" item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/sec - restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT) + restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_SECURITY_MEDIC, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT) //BUBBER EDIT /* * JOB-LOCKED @@ -469,22 +469,22 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea /datum/loadout_item/head/cowboyhat_sec name = "Cattleman Hat, Security" item_path = /obj/item/clothing/head/cowboy/skyrat/cattleman/sec - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/head/cowboyhat_secwide name = "Wide-Brimmed Cattleman Hat, Security" item_path = /obj/item/clothing/head/cowboy/skyrat/cattleman/wide/sec - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/head/ushanka/sec name = "Security Ushanka" item_path = /obj/item/clothing/head/costume/ushanka/sec - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/head/blasthelmet name = "General's Helmet" item_path = /obj/item/clothing/head/hats/imperial/helmet - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_CORRECTIONS_OFFICER, JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_SECURITY_OFFICER, JOB_CORRECTIONS_OFFICER, JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)//BUBBER EDIT /datum/loadout_item/head/navybluehoscap name = "Head of Security's Naval Cap" @@ -494,17 +494,17 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea /datum/loadout_item/head/navyblueofficerberet name = "Security Officer's Navy Blue beret" item_path = /obj/item/clothing/head/beret/sec/navyofficer - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_SECURITY_MEDIC, JOB_HEAD_OF_SECURITY, JOB_WARDEN) //BUBBER EDIT /datum/loadout_item/head/solofficercap name = "Security Officer's Sol Cap" item_path = /obj/item/clothing/head/hats/sec/peacekeeper/sol - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_SECURITY_MEDIC, JOB_HEAD_OF_SECURITY, JOB_WARDEN) //BUBBER EDIT /datum/loadout_item/head/soltrafficoff name = "Traffic Officer Cap" item_path = /obj/item/clothing/head/hats/sec/peacekeeper/sol/traffic - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_SECURITY_MEDIC, JOB_HEAD_OF_SECURITY, JOB_WARDEN) //BUBBER EDIT /datum/loadout_item/head/navybluewardenberet name = "Warden's Navy Blue beret" @@ -578,7 +578,7 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea /datum/loadout_item/head/beret_med name = "Medical Beret" item_path = /obj/item/clothing/head/beret/medical - restricted_roles = list(JOB_MEDICAL_DOCTOR,JOB_VIROLOGIST, JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(JOB_MEDICAL_DOCTOR,JOB_VIROLOGIST, JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_SECURITY_MEDIC, JOB_ORDERLY, JOB_CORONER) //BUBBER EDIT /datum/loadout_item/head/beret_paramedic name = "Paramedic Beret" diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm index 8b9b580ac9a..bff0df5dec9 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_neck.dm @@ -251,7 +251,7 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) /datum/loadout_item/neck/stethoscope name = "Stethoscope" item_path = /obj/item/clothing/neck/stethoscope - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_SECURITY_MEDIC) //BUBBER EDIT /datum/loadout_item/neck/maid name = "Maid Neck Cover" diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm index bc316e520d0..40a78854e5c 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm @@ -557,7 +557,7 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/navybluejacketofficer name = "Security Officer's Navy Blue Formal Jacket" item_path = /obj/item/clothing/suit/jacket/officer/blue - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) // I aint making a medic one, maybe i'll add some rank thing from cm or civ for it + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_SECURITY_MEDIC, JOB_WARDEN) //BUBBER EDIT /datum/loadout_item/suit/navybluejacketwarden name = "Warden's Navy Blue Formal Jacket" @@ -572,12 +572,12 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/security_jacket name = "Security Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/sec - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE) //Not giving this one to COs because it's actually better than the one they spawn with + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_SECURITY_MEDIC, JOB_WARDEN, JOB_DETECTIVE) //BUBBER EDIT /datum/loadout_item/suit/brit name = "High Vis Armored Vest" item_path = /obj/item/clothing/suit/armor/vest/peacekeeper/brit - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_SECURITY_MEDIC, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/suit/british_jacket name = "Peacekeeper Officer Coat" @@ -617,7 +617,7 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su /datum/loadout_item/suit/labcoat_highvis name = "High-Vis Labcoat" item_path = /obj/item/clothing/suit/toggle/labcoat/skyrat/highvis - restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC, JOB_ATMOSPHERIC_TECHNICIAN, JOB_DETECTIVE, JOB_CHEMIST, JOB_ORDERLY) // And now chemist and orderly get it too. + restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC, JOB_ATMOSPHERIC_TECHNICIAN, JOB_SECURITY_MEDIC, JOB_DETECTIVE, JOB_CHEMIST, JOB_ORDERLY) //BUBBER EDIT /* * FAMILIES diff --git a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm index 75a8d094faa..2c9431943c4 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm @@ -122,12 +122,12 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/security_trousers name = "Security Trousers" item_path = /obj/item/clothing/under/rank/security/peacekeeper/trousers - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY) + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_MEDIC) //BUBBER EDIT /datum/loadout_item/under/jumpsuit/solofficer name = "Sol Officer Uniform" item_path = /obj/item/clothing/under/rank/security/peacekeeper/sol - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY) + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY, JOB_SECURITY_MEDIC) //BUBBER EDIT /datum/loadout_item/under/jumpsuit/disco name = "Superstar Cop Uniform" @@ -186,7 +186,7 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/utility_med name = "Medical Utility Uniform" item_path = /obj/item/clothing/under/rank/medical/doctor/skyrat/utility - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_GENETICIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_PSYCHOLOGIST, JOB_ORDERLY) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHIEF_MEDICAL_OFFICER, JOB_PSYCHOLOGIST, JOB_ORDERLY) //BUBBER EDIT /datum/loadout_item/under/jumpsuit/utility_sci name = "Science Utility Uniform" @@ -201,7 +201,7 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/jumpsuit/utility_sec name = "Security Utility Uniform" item_path = /obj/item/clothing/under/rank/security/skyrat/utility - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_WARDEN, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) //i dunno about the blueshield, they're a weird combo of sec and command, thats why they arent in the loadout pr im making + restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_SECURITY_MEDIC, JOB_WARDEN, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) //BUBBER EDIT /datum/loadout_item/under/jumpsuit/utility_com name = "Command Utility Uniform" @@ -518,27 +518,27 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ /datum/loadout_item/under/miscellaneous/redscrubs name = "Red Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/red - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) //BUBBER EDIT /datum/loadout_item/under/miscellaneous/bluescrubs name = "Blue Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/blue - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) //BUBBER EDIT /datum/loadout_item/under/miscellaneous/greenscrubs name = "Green Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/green - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) //BUBBER EDIT /datum/loadout_item/under/miscellaneous/purplescrubs name = "Purple Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/purple - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) //BUBBER EDIT /datum/loadout_item/under/miscellaneous/whitescrubs name = "White Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/white - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) + restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_SECURITY_MEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC) //BUBBER EDIT /datum/loadout_item/under/miscellaneous/gear_harness name = "Gear Harness" diff --git a/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm b/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm index e971d291ace..5b191db7bf5 100644 --- a/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm +++ b/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm @@ -82,7 +82,7 @@ If anyone can figure out how to get Obsessed to work I would be very appreciativ /datum/admins/ var/MAKEANTAG_RESTRICTLIST = list() - var/MAKEANTAG_PL_DEFAULT_SECURITY = list(JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_CORRECTIONS_OFFICER, JOB_BLUESHIELD, JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD) + var/MAKEANTAG_PL_DEFAULT_SECURITY = list(JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_HEAD_OF_SECURITY, JOB_CAPTAIN, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC, JOB_BLUESHIELD, JOB_ORDERLY, JOB_BOUNCER, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_SCIENCE_GUARD) //BUBBER EDIT var/MAKEANTAG_PL_DEFAULT_HEADS = list(JOB_CAPTAIN,JOB_HEAD_OF_PERSONNEL,JOB_RESEARCH_DIRECTOR,JOB_CHIEF_ENGINEER,JOB_CHIEF_MEDICAL_OFFICER,JOB_HEAD_OF_SECURITY,JOB_QUARTERMASTER) var/MAKEANTAG_PL_DEFAULT_SILICON = list(JOB_AI, JOB_CYBORG) diff --git a/modular_zubbers/code/datums/id_trim/jobs.dm b/modular_zubbers/code/datums/id_trim/jobs.dm index 10bdd302b97..cd3f6ce9b74 100644 --- a/modular_zubbers/code/datums/id_trim/jobs.dm +++ b/modular_zubbers/code/datums/id_trim/jobs.dm @@ -23,6 +23,24 @@ ) job = /datum/job/blacksmith +/datum/id_trim/job/security_medic + assignment = "Security Medic" + trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi' + trim_state = "trim_securitymedic" + department_color = COLOR_ASSEMBLY_BLACK + subdepartment_color = COLOR_ASSEMBLY_BLACK + sechud_icon_state = SECHUD_SECURITY_MEDIC + extra_access = list(ACCESS_DETECTIVE) + minimal_access = list(ACCESS_SECURITY, ACCESS_BRIG_ENTRANCE, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS) + +/datum/id_trim/job/security_medic/New() + . = ..() + + // Config check for if sec has maint access. + if(CONFIG_GET(flag/security_has_maint_access)) + access |= list(ACCESS_MAINT_TUNNELS) + /datum/id_trim/job/blueshield minimal_wildcard_access = list() template_access = list(ACCESS_CAPTAIN) //Blueshield can no longer change to any other ID trim @@ -35,4 +53,4 @@ /datum/id_trim/job/nanotrasen_consultant minimal_wildcard_access = list() - template_access = list(ACCESS_CAPTAIN) //NTRep can no longer change to any other ID trim + template_access = list(ACCESS_CAPTAIN) //NTRep can no longer change to any other ID trim \ No newline at end of file diff --git a/modular_zubbers/code/modules/alternative_job_titles/code/alt_job_titles.dm b/modular_zubbers/code/modules/alternative_job_titles/code/alt_job_titles.dm new file mode 100644 index 00000000000..07bd3e52d45 --- /dev/null +++ b/modular_zubbers/code/modules/alternative_job_titles/code/alt_job_titles.dm @@ -0,0 +1,8 @@ +/datum/job/security_medic + alt_titles = list( + "Security Medic", + "Field Medic", + "Security Corpsman", + "Brig Physician", + "Combat Medic", + ) diff --git a/modular_zubbers/code/modules/automapper/code/area_spawn_entries.dm b/modular_zubbers/code/modules/automapper/code/area_spawn_entries.dm new file mode 100644 index 00000000000..73cf4979f0a --- /dev/null +++ b/modular_zubbers/code/modules/automapper/code/area_spawn_entries.dm @@ -0,0 +1,3 @@ +/datum/area_spawn/secmed_landmark + target_areas = list(/area/station/security/medical, /area/station/security/brig) + desired_atom = /obj/effect/landmark/start/security_medic diff --git a/modular_zubbers/code/modules/customization/modules/clothing/under/security.dm b/modular_zubbers/code/modules/customization/modules/clothing/under/security.dm new file mode 100644 index 00000000000..4af2ce763d3 --- /dev/null +++ b/modular_zubbers/code/modules/customization/modules/clothing/under/security.dm @@ -0,0 +1,13 @@ +///SECMED +/obj/item/clothing/under/rank/medical/scrubs/skyrat/red/sec + name = "security medic scrubs" + desc = "It's made of a special fiber that provides minor protection against biohazards and acid, along with some light padding. This one is in a deep red." + armor_type = /datum/armor/red_sec + +/datum/armor/red_sec + melee = 10 + bio = 10 + fire = 30 + acid = 30 + wound = 10 + diff --git a/modular_zubbers/code/modules/customization/modules/jobs/_job.dm b/modular_zubbers/code/modules/customization/modules/jobs/_job.dm new file mode 100644 index 00000000000..4ebb17433ff --- /dev/null +++ b/modular_zubbers/code/modules/customization/modules/jobs/_job.dm @@ -0,0 +1,2 @@ +/datum/job/security_medic + banned_quirks = list(SEC_RESTRICTED_QUIRKS) diff --git a/modular_zubbers/code/modules/loadouts/loadout_items/loadout_datum_under.dm b/modular_zubbers/code/modules/loadouts/loadout_items/loadout_datum_under.dm index 2bf30c15c48..8fd248882f6 100644 --- a/modular_zubbers/code/modules/loadouts/loadout_items/loadout_datum_under.dm +++ b/modular_zubbers/code/modules/loadouts/loadout_items/loadout_datum_under.dm @@ -18,3 +18,8 @@ name = "Lilac Dress" item_path = /obj/item/clothing/under/rank/lace ckeywhitelist = list("thedragmeme") + +/datum/loadout_item/under/miscellaneous/medrscrubs + name = "Security Medic's Scrubs" + item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/red/sec + restricted_roles = list(JOB_SECURITY_MEDIC) diff --git a/modular_zubbers/code/modules/protected_roles/code/antag_restricted_jobs.dm b/modular_zubbers/code/modules/protected_roles/code/antag_restricted_jobs.dm new file mode 100644 index 00000000000..ccf6a43f7a0 --- /dev/null +++ b/modular_zubbers/code/modules/protected_roles/code/antag_restricted_jobs.dm @@ -0,0 +1,2 @@ +/datum/job/security_medic + antagonist_restricted = TRUE diff --git a/modular_zubbers/code/modules/sec_haul/code/security_medic/secmed_clothes.dm b/modular_zubbers/code/modules/sec_haul/code/security_medic/secmed_clothes.dm new file mode 100644 index 00000000000..5064c6bf234 --- /dev/null +++ b/modular_zubbers/code/modules/sec_haul/code/security_medic/secmed_clothes.dm @@ -0,0 +1,128 @@ +/obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic + name = "security medic labcoat" + desc = "A lightweight vest worn by the Security Medic." + icon = 'modular_zubbers/icons/obj/clothing/suits/labcoat.dmi' + icon_state = "secmed_labcoat" //Icon located in modular_skyrat/master_files/icons/(obj or mob)/clothing/suits/labcoat.dmi + blood_overlay_type = "armor" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + armor_type = /datum/armor/skyrat_security_medic + +/datum/armor/skyrat_security_medic + melee = 35 + bullet = 30 + laser = 30 + energy = 40 + bomb = 25 + fire = 50 + acid = 50 + wound = 10 + +/obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic/Initialize(mapload) + . = ..() + allowed += list( + /obj/item/flashlight, + /obj/item/gun, + /obj/item/melee/baton/telescopic, + /obj/item/storage/medkit + ) + +/obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic/blue + icon_state = "secmed_labcoat_blue" + +/obj/item/clothing/suit/hazardvest/security_medic + name = "security medic vest" + desc = "A lightweight vest worn by the Security Medic." + icon = 'modular_zubbers/icons/obj/clothing/suits/armor.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/suits/armor.dmi' + icon_state = "secmed_vest" + worn_icon_state = "secmed_vest" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/baton/telescopic, /obj/item/soap, /obj/item/tank/internals/emergency_oxygen, /obj/item/gun, /obj/item/storage/medkit) + armor_type = /datum/armor/hazardvest_security_medic + +/datum/armor/hazardvest_security_medic + melee = 35 + bullet = 30 + laser = 30 + energy = 40 + bomb = 25 + fire = 50 + acid = 50 + wound = 10 + +/obj/item/clothing/suit/hazardvest/security_medic/blue + icon_state = "secmed_vest_blue" + worn_icon_state = "secmed_vest_blue" + +/obj/item/clothing/suit/armor/vest/peacekeeper/security_medic + name = "security medic armor vest" + desc = "A security medic's armor vest, with little pockets for little things." + icon = 'modular_zubbers/icons/obj/clothing/suits/armor.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/suits/armor.dmi' + icon_state = "secmed_armor" + worn_icon_state = "secmed_armor" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/baton/telescopic, /obj/item/soap, /obj/item/tank/internals/emergency_oxygen, /obj/item/gun, /obj/item/storage/medkit) + +/obj/item/clothing/under/rank/security/peacekeeper/security_medic/alternate + name = "security medic uniform" + desc = "A lightly armored uniform worn by Nanotrasen's Asset Protection Medical Corps." + icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/security_digi.dmi' + icon_state = "security_medic_jumpsuit" + +/obj/item/clothing/under/rank/security/peacekeeper/security_medic + name = "security medic turtleneck" + desc = "A comfy turtleneck with a white armband, denoting the wearer as a security medic." + icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + icon_state = "security_medic_turtleneck" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION + +/obj/item/clothing/under/rank/security/peacekeeper/security_medic/skirt + name = "security medic skirtleneck" + desc = "A comfy turtleneck with a white armband and brown skirt, denoting the wearer as a security medic." + icon_state = "security_medic_turtleneck_skirt" + body_parts_covered = CHEST|GROIN|ARMS + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/head/beret/sec/peacekeeper/security_medic + name = "security medic beret" + desc = "A robust beret with the medical insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection." + greyscale_colors = "#3F3C40#870E12" + icon_state = "beret_badge_med" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/head/helmet/sec/peacekeeper/security_medic + name = "security medic helmet" + desc = "A standard issue combat helmet for security medics. Has decent tensile strength and armor. Keep your head down." + icon = 'modular_skyrat/master_files/icons/obj/clothing/head/helmet.dmi' + worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/head/helmet.dmi' + icon_state = "secmed_helmet" + base_icon_state = "secmed_helmet" + can_toggle = FALSE + actions_types = null + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/storage/belt/security/medic + name = "security medic belt" + desc = "A fancy looking security belt emblazoned with markings of the security medic. Sadly only holds security gear." + icon = 'modular_skyrat/master_files/icons/obj/clothing/belts.dmi' + worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/belt.dmi' + worn_icon_state = "belt_medic" + icon_state = "belt_medic" + +/obj/item/storage/belt/security/medic/full/PopulateContents() + new /obj/item/reagent_containers/spray/pepper(src) + new /obj/item/restraints/handcuffs(src) + new /obj/item/grenade/flashbang(src) + new /obj/item/assembly/flash/handheld(src) + new /obj/item/melee/baton/security/loaded(src) + update_appearance() + +/obj/item/storage/belt/security/medic/alternate + name = "security medic belt" + worn_icon_state = "belt_medic_alt" + icon_state = "belt_medic_alt" diff --git a/modular_zubbers/code/modules/sec_haul/code/security_medic/security_medic.dm b/modular_zubbers/code/modules/sec_haul/code/security_medic/security_medic.dm new file mode 100644 index 00000000000..efca4b31eb8 --- /dev/null +++ b/modular_zubbers/code/modules/sec_haul/code/security_medic/security_medic.dm @@ -0,0 +1,116 @@ +/datum/job/security_medic + title = JOB_SECURITY_MEDIC + description = "Patch up officers and prisoners, realize you don't have the tools to Tend Wounds, barge into Medbay and tell them how to do their jobs" + auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list(JOB_HEAD_OF_SECURITY) + faction = FACTION_STATION + total_positions = 1 + spawn_positions = 1 + supervisors = SUPERVISOR_HOS + minimal_player_age = 7 + exp_requirements = 120 + exp_required_type = EXP_TYPE_CREW + exp_required_type_department = EXP_TYPE_SECURITY + exp_granted_type = EXP_TYPE_CREW + config_tag = "SECURITY_MEDIC" + + outfit = /datum/outfit/job/security_medic + plasmaman_outfit = /datum/outfit/plasmaman/security + + paycheck = PAYCHECK_CREW + paycheck_department = ACCOUNT_SEC + + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_SECURITY_MEDIC + bounty_types = CIV_JOB_SEC + departments_list = list( + /datum/job_department/security, + /datum/job_department/medical, + ) + + family_heirlooms = list(/obj/item/clothing/neck/stethoscope, /obj/item/book/manual/wiki/security_space_law) + + //This is the paramedic goodie list. Secmedics are paramedics more or less so they can use these instead of raiding medbay. + mail_goodies = list( + /obj/item/reagent_containers/hypospray/medipen = 20, + /obj/item/reagent_containers/hypospray/medipen/oxandrolone = 10, + /obj/item/reagent_containers/hypospray/medipen/salacid = 10, + /obj/item/reagent_containers/hypospray/medipen/salbutamol = 10, + /obj/item/reagent_containers/hypospray/medipen/penacid = 10, + /obj/item/reagent_containers/hypospray/medipen/survival/luxury = 5 + ) + rpg_title = "Battle Cleric" + job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + +/datum/outfit/job/security_medic + name = "Security Medic" + jobtype = /datum/job/security_medic + + belt = /obj/item/modular_computer/pda/security + ears = /obj/item/radio/headset/headset_medsec + uniform = /obj/item/clothing/under/rank/security/peacekeeper/security_medic + gloves = /obj/item/clothing/gloves/latex/nitrile + shoes = /obj/item/clothing/shoes/jackboots/sec + glasses = /obj/item/clothing/glasses/hud/health/sunglasses + suit = /obj/item/clothing/suit/armor/vest/peacekeeper/security_medic + l_hand = /obj/item/storage/medkit/brute + head = /obj/item/clothing/head/beret/sec/peacekeeper/security_medic + backpack_contents = list( + /obj/item/storage/box/gunset/firefly = 1, + ) + 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 + + implants = list(/obj/item/implant/mindshield) + + id_trim = /datum/id_trim/job/security_medic + +/obj/effect/landmark/start/security_officer/Initialize(mapload) + . = ..() + new /obj/effect/landmark/start/security_medic(get_turf(src)) + +/obj/effect/landmark/start/security_medic + name = "Security Medic" + icon_state = "Security Medic" + icon = 'modular_skyrat/master_files/icons/mob/landmarks.dmi' + +/obj/item/encryptionkey/headset_medsec + name = "medical-security encryption key" + icon_state = "sec_cypherkey" + channels = list(RADIO_CHANNEL_MEDICAL = 1, RADIO_CHANNEL_SECURITY = 1) + +/obj/item/radio/headset/headset_medsec + name = "medical-security radio headset" + desc = "Used to hear how many security officers need to be stiched back together." + icon_state = "sec_headset" + keyslot = new /obj/item/encryptionkey/headset_medsec + +/obj/structure/closet/secure_closet/security_medic + name = "security medics's locker" + req_access = list(ACCESS_SECURITY) + icon = 'modular_skyrat/modules/sec_haul/icons/lockers/closet.dmi' + icon_state = "secmed" + + + +/obj/structure/closet/secure_closet/security_medic/PopulateContents() + ..() + new /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic(src) + new /obj/item/clothing/suit/hazardvest/security_medic(src) + new /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic/blue(src) + new /obj/item/clothing/suit/hazardvest/security_medic/blue(src) + new /obj/item/clothing/head/helmet/sec/peacekeeper/security_medic(src) + new /obj/item/clothing/under/rank/security/peacekeeper/tactical(src) + new /obj/item/radio/headset/headset_medsec(src) + new /obj/item/storage/medkit/emergency(src) + new /obj/item/clothing/suit/jacket/straight_jacket(src) + new /obj/item/storage/belt/medical(src) + new /obj/item/storage/belt/security/medic/full(src) + new /obj/item/clothing/under/rank/medical/scrubs/skyrat/red/sec(src) + new /obj/item/clothing/under/rank/security/peacekeeper/security_medic/alternate(src) + new /obj/item/clothing/under/rank/security/peacekeeper/security_medic(src) + new /obj/item/clothing/under/rank/security/peacekeeper/security_medic/skirt(src) diff --git a/modular_zubbers/icons/mob/clothing/suits/armor.dmi b/modular_zubbers/icons/mob/clothing/suits/armor.dmi index 454e51bfd5352efdd2f89e44f6e5448ad5f685b8..0bc99bea2b52045e592fb1f4e9fb7bb8c388f9a1 100644 GIT binary patch literal 6818 zcmbVx2T)Vrw{GYl(vjX(Kq-Q>9}p5iK}1v#DN0EYDbjlr5}I^~h!iQ(RHTDIkQP9M zfHVPt(3_!1Gaw}pl6(BWx%1|}_n*0Q@668GlXLc7``df1^{sW*i8sD?i{+faIS>fM za@*kM1EBBt`(vaBt`BD27=W%OP-nz zLmA}Hj#msh%5HdS7pbdKjTsCnwwF(3)q* zd`{l!ifnTUephTFsX(kwL*TJ6uZVh#qU;;)9zANh_uQsGM3}g95pm1j3pbhKPwn!Y zeqN4IaHsw$uGSrf91HayHgsk)y=;z)Ngk99;YJXM zzw-7?orgiW+j-C3gvQ&j?Sj>9n_)rjyFHF8S+keGoa{x$4P_qHadMQgGJ}7TnQk*) zYW;TkYW0H+^ZG_^+I4g8^gHjre^!# zixVWSatWmCVgQQ%@e;&XDo(}z;0CqWyB@6>riVA~-$!}KYkDn)_s4&}_w@}EELv!d zGs7y}Cw=z`exD8<<{PY;*Grgj-H~hAF~k@7D72T^WcGi{gCnqePHznH0bR>Ci%rh6 zu<+wapFSS*mOrfX@A20tNl9Uy+dTNP28&z}nRTq7020QPxbk()%!IT;9^x>^J!+W3 z^0I`U9(~!5&s4q*Ux-nJKv=6M6C3A4`X7*^XJd{JwKFXuEC{9XXOO<88lURDlgZ^JfZFN?^N)mFE0RTihefO zrY{P6O+mNu0J!k8IdL?E=Z2YCbeG*q_qQwsOU#&^A=U5n+h%6UYHAnL`WEA*-gXqD zAPKvOqn69*?X#3YT7*`UH7n3+EzbiDlyu~1634D1pBaT+i2&M%XTO8MpoA|;HzfjM z%NZ9qf#tw&6Qp8Y)Tc)ZJz+k1wV|u9#7by+Xr{FfQ*(2(*V)0OJ#h~Y3fJy%%3;K` zt=ej_OHarJ90DK-L9;=%--c;x!utHjcsgHOM4;WKA}g&L1^SKfeNQ<78Sy4V`BXT{ z_H=`*hPq{fXks^evVP$+0sULIIFj|LxLY8hm+NIP>b%vH%#AZFcgFxtF76YPzO5?* z+pt2r>A1VgfkoK%h~S524gM|pY_NDxW9wd1x`FtMATTTFV`-_5m6aff&!LDhw(Fm; z6XjOhYhRXXOokqZqtU7tW7oPYitGh8Ti5v(4`)0lX(B+Q8_H;pxyPexbm6{hLw22! zqxw&=DZ;o<4$S{TTKM#*@e- z%3QOKaHgBr2<@h^HF7 z{yK#BS^xEmGvM+^VB9d?=dvPKd~_-*&VBU=3R?<)f@d&(z@aCC#C)Q->^#6w%4#Zhes1UUL-&}%moF$_!0CoeiMt0OwbBAFN(RC}cg++v zR2_*|arLwX&$0;+cE*AaALw7`QUPx0_Wc!VT;xxn<8WIG zX>MI&$@{T^LjM;2|#C;@ttsXi4>#)pR&*Q&x9Ct^!RbcTROv%v6Bor zt0afPya*{|VReK5rg@=-ok#oG;VW{3Is{~O?fJcQnii<{Bu&mz-)S^<)%W`>KWUXH z3`#hX;w$o5-`SbS$;k$RitX)tnAoM!Ad*v&$O}gLsE=9;)4%7$B;%|hsE1b_D8=mH zY)zWMJRSY}I(J=r*RK>CDO)vqs62VLbN)wt03`F$^^i|LW8O#yY)|72KiYQ-DGxe( zuon<{*NhIqQ6x&(EL z{lkOA8pCv(KZ{%-7nixTWleF6&p)+oK(Ne}%pAU$Im}yql8c1NWdQ1bJf$Qj!xg65 zj5}d&YF$a!LGyGN6&i;JkXMVxYWgdc+O}M7gL2e7d-gK=3zB)gs)E>P*SN)e&ATqR z%hVvwPWUe?UD%wgz9tA0ytbHtzL56TjFWC=wIn~3a~QIJ{<>2hl-X&>CFt;t)9*iN z_a%JIl@4PK9+YxNBB1&)v4swGJ-+uZc6BkHoaydT{W&~r2A<&((`#FC{l7r7KD_Im zyX`2~Dopdct?csZo`rej!mqNjC+L+Ndkx{t*lx95Hjcm30PpBYyItSdXb*lv8~zHf zTPU{mNUQ+2%zci|y5Y$SZ_xypql0-C8f0E=>uycnRGZtzXA*a(n5;aTz71JWn-GEp z1O@M)r?vxDP}mgp!yFt`MDxSGTK)+Gz2Vyw?#@sx@)&2wukrGO{%h?*G8R=gU0urw z-#P37u3~_ad6bQ+cvmd(9qN* z^c3D$*9tNYnw^hgI8b91)^&1{GOv7Wb{K>k426)#ngiC4P8I+8$5|HOQ6nRx*Rthh zE}^kn#h$!~cF|qTsmE>p=VU4Fb2^iWGvzJ<^I=CeGb=g#qM~YOVm0!t+(blBkV_!5 zn@>n6*AIL%0S*yG-U*CkdV|_v`Nb94uovyVBBIP^}@oQ}Hcy-wTlHcvh zs{Rmq+|hN?+pBQ6GovIWxop|)5j8(L`q;!n@hG|fnEx?-RfpG7`n$fH+EG*nS+)jHZGmLITZ<6lHfXVw%Vk0bmNk~ zeheVUyKliy=NVNE|x`$#CBRelO)F)%B^L! zx4==e+z)Xawvhg5A{|F@SJ;dMPO;)=^^A=aSoQw(H{mlj7UPeGQ*aU5G@~2uYUkwS zDj8`7qOq*B0!i|jGd8h)8u8i%g}=^>$Hk6cbi=OC*YUvdzA}o@g@%+TGOcRhV&m^7 zruInQdfZnY3bn!zW*`3Cl6?9K3 zSt+&;Lm_Od?1McZ*;tpWFqN9KVRV!AJ@b##Mz>73gTUR%ySuw;AF$rkh!5q)7pb|1@JTCb`3e{{x?7d?C8W44jildk=c z{M!7*qJ7(grce>l(BGX#7HXG~#C}+f*OG46rGv3y2$x8j6uWblAHAcE#7K>|cGK|a zGXiym-&&>(bpT+@u6{=YmTj6g>7b|k*fkTg@y{e|J~6kMbNR;#>sU8fo|8qBYD#4t zJxjNIM#!`d*?2dsce;|(pJ5$Rs(>WfU^-y?P?C$^zDT)5XYub$2$b9U)=b(SQ*EX}3U8!)8cQK6&dA>EyjIdiQxxs+DTdTt0Rz*`vayrS?+Kbc5hQ ziQt^`(VF+qjAV%~D|s!ulQU<*)|=&>OSRzXv*6JE_IZ6^sV@8Oy#S=hUj*;B^FPtS z5&K)2$EN-|q)y2&;%GqY@wi#WxMfP<4hBXUYQcInSBr9$Doze+X=&`o@C$8Wi}bb) zB)QT^gzW&=V*(0Ubc8&7W0%m~x)Ge{CG}VgO?d>)=%VC-~FK+x8y;FX|Gd zK*{@zwxnNI>rWG%enk)4PNtll!n`YOT1+VOOE)Yr^};2mC*I3wO$Ei&$OX}_N4AJQ zY089JyMrr!ZDp4frii#)77xY0T|Qf#nre6jC7<{U{;`^*C{;cG^C&my`1E+%ukJIW z)OEUg=z*+l7~X$t{`5{)V(f5oEn<$|<~0=J>JY>wJ^v|G6)rbaUfo&+JNj{-u-dh7 zYer7(BC$mnjh$|%T$t=LrO^Q8f>n(7_^lwpE**#8VDkT3ywX&!6pE-#I>P>BC{&yG zi`pEVq!cvHeHtx^)%`O|*>LeLlsI*;zyzxJR`2D+uKrp%4Z?Sk-*uw7I80GE?E z4OJx(CaY%(cK`Ck;TQl)Y)hge-iRu^#d3-s`l3jhPl&`V<D?g%B<`3 zrl}#fc=hM$?bEV=pgPgVN@B2$L44hkNuQ7Rv=C26#Q$QSL|NnO~tv@)Kq2TU^v9#QQ+_^}_%JF>@R+2SCr*XM3UTA-ejCWap(Dn+~a zP*w?5*>s=cXj)tD+p6khboT(&^myg^dfRjKx&Dn>m7@)Ov(6cp2jaXK0ueripoIgO ztoQZ&srdl&k=LQ#A&>P;6fC6=+sij1ALh`&{1f}fb)X4SvIJcAsUPUF)3lF6(Mnwo ztm8$_lku-oe+y)&8(jaYlKp>q+`nU=|B~qay8+1#7IE%^Xg=tf6Km(e!GVL;ir%MZ zV_MBc+<8pRvn={e(pD*E<>qILxLSLPnXo34f#9Y92>;Yo9x%ShPBlmp2pCtB z|3O#}npfm-oAyJI{fY%W-}>`s;6m@+`^+^!_wm!P&>fosGCO->^5UNj6wnnwAJ)GM z+OJ@~uhv`(EcqqbZXmtg`raq)bmXe#FY5PWrJSc54X$dxpr>czAieTtnS?Y;T<()A z42b6)adhxkqOHM)oSKgsT*ldO&oO&uS9$r{IqxNY$xT~74#3v^pw4QWM3NJEsTPaU zc;X_vpQVy-5*U3t?5d-m`4eoclZGsp1EMBgKDpYDn@nm&z^Ks6pM}=IZte(a8XU)OCOy}#uRC_?HWMq>NQxPYSu*PB~hX?-veqzgPSlbb1aH_pZ8SQ~f8F+)}}E^5O2$ z`pyUB7t8|q(tzN4RcyeoDI9*?GIK*m7jCH-Z$1t*gQwBGrF|LY^w|uWT`J4{KL|*U6esYB{WI zvLA(-FM$dQo+b?wKlLnzZxi?f=Y#X#-YZGMYl|_e1imSjP_RIFZePjroyO!1M3(f| zTZR8Mv{+Wr>$2=>a{&yJk`Dk{!4dcF=r>JOFUTJsr?d0tr8bes zanqd=S|5{p$Oos8Ev%*Pv#f)>_I_yhIk^#kmQvZJqfjuWRKg=x(w^He3W$^WtGBYm zGjf-X5kYstp!5vT?jpTA3PttIyGWXDNYLH3VLsY@U`yPulZww4SQ@p;X}ab4HmMT? zqW2UxyEyEhQyGk{@kU&}L2;9`CkYFkawinQy?&eK?nmE&@Y0n#yD31fKnq9umCWu* zz-vEA3o~;}l!oXtw?i5AOcswAQhj<+=z^zL&3(v8>&m3~PNvs4ztmdp3-|BSSbIMb zy!Te1!xTm7<)fwiu9fQirWd@wPly;rs0p%bZ~*Y7ufym&GiW=GpuEnzIwssead0Jf zE#%fo2Z=9y*QZ9QXkD@6uQd$X3qeYz_-L{k8?94rI>HAHY*1BT5>&W+8cw{Ea!PDu#Vrm+L9O zfcK*~|9b{BJy`j^{~{$NW$Io;mflA?v3LJ7zfnT)4Y^rJjS6_GE_3YX@Hc?Q2rk@% z*1ZwO%MxvhJX)-BYRdHgM{4qWz~`S`S(_HK`~hzGN{a3QDbv3c_(jd}-{buI!Q(%X cWm6akZr2@@KHowDADuwA_3quQ(uGI<2P*V2aR2}S literal 1538 zcmV+d2L1VoP)u*BN7r40|NsL3=Cpo zVp>{S4Gj%!Y-|@I6cim14;Bp+9S}M=I1v#M9UUEmfq^zQHY6k@Qc_YRBO^>qOmJ;& z92^{6TwD?pCjbBd2nYxe5D*jw$xaK zLJGYZXy5<6x+|MBGwez(WctgSpbVVVewO8!vlgO{KKl5(h%k6HJU^7@1^C!6Gx)qH zl979P=srlK1}-C3bW#*c8Os<(jxZc*4?#x*6~}`?tl~(My2R@EOX@-llSC(=(g>}i zc%ZJX-T)=irxj3--3g*~m!cC5M?nJ=7Eo{Wl^Q?+Me31Eui*rdI;NzfOvMa9jTD~0 zXpDn~ca)x{>2;b)N`D660vUi%Y9z1aNGU-AgiLV-Fc5l^lPTN+NdfXa7vstJ=H@Mo z?%kkfdmv$4%)k$w=m{WaRLDSSbt3DZH`Og#N3^tkyMHSz}ZpPO3Ks+ zkZ={yVv$4r5$wT8;TuX<3N{%=LT__;0GvSBq~Q1du@KqS*t$OY$1V z(4dy^qW@3fDrt4L0M6AVD+^tg@2Bs}k^_KVPRrX{P8VWYCP~SvLf@8CG35&+PUjB* z0oo6^b%2Beluq{oyenu5l_dSR-s zSisUc2pGWO%f}Kdeln!Qr8V<8%wOPv5_$!d>nzJ)v`Y>E-3wTJ()}-2)_j|1S-jq4 zc6CaqR_@rXTgQqa03cS`D5abY6flplg752%WdK>b0`dS_KpZiEYE@ad)n{>x1*($@ zsQ+2Pson(kM-m7$Ks*-^Bmj5Wt$@;-XuLUT{_#WDzV&(oBhx>?_BTIF{{ZgTd4JNI zqkV^|>&*s6#@-+6*NnXvIW(%$1F%~QR}qX1z-}KgNc|;%H2>HVKSV8pU1;Bs0AAtUz^WWA!Jv|9{S*8Gf z88m|j;Oj3g?;pem>=6tjzC!=-dG_$>zF+{a(La1~_MTbcYxEC&^wGz^2(6yi=N$ltLsgqc&k7K5xD2rHog&zS3jx(H>@QdV?7^?vP}EKVPs1He`;E{@Hs! z^Z`safY00p00!%O0Vd%8Lx6z04`*~C1OaE)Zydh=8!eO&2>0@?kEP)|z1Qf<8hC&7!+U6!AMA(WoD+O6-NUIfduQ*aJ517JGVW)W7EI?aocx9J!XM;TN@?l~ z-Msw7bl2o@ur<@4%g)Zu&dx`3eLom5c>a$#jQ!vjpM&Q=6`Em=X*ur)woih^vu{Px zPKXmb>F#J!Ai03+B;94W>dq(DV?S7y-}eL6-5d4;8q(u1?q`=4OuxP#&|EzJm-<3C om;JzWx8!kXEz_UN&d&eJH=cPAas1hOq5uE@07*qoM6N<$f^)I)XaE2J literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/mob/clothing/under/security.dmi b/modular_zubbers/icons/mob/clothing/under/security.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b47c68ee2beea5ab2198a8beb6683165e53976ed GIT binary patch literal 2536 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 yoEe(-C`5 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 BN}d1! literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/clothing/suits/armor.dmi b/modular_zubbers/icons/obj/clothing/suits/armor.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5642cf7f2fd488ec994125251677882a23f46a53 GIT binary patch literal 1035 zcmV+m1oZofP)s#gKLF#R0^G!0@$;G+6RJACs6`#-tS%q9%fv=-ze<4hSJ;&I1W=b^_%f1@L&k+U|Gh_<7(NP~B-TMbAU z?y)UWBO#1nR|5fMkE#LRJD&=_Tm8fSd`m9My7-Lq0%bgX?|?wHe*gdinMp)JRA_9%FbstWAxXpUN*ENVfc5(!*2qmooQINuz%l{2C!C@AP(O2iUp z84J=+l*U=Bg!IkH;%rZb2FMf%GEODw>kJ86Wt#MDjs$zkEt7#KNWVUlfhTCcK9hkb zSie4#K~%`tOBRe@YUQO%#;@$j%T|mJMR+-%&o4{~d=b!RO5lrtK34+FAWhTF46-cS z%plM6jSLFm_ecsBkoY~)2@5cOkF4PUg%ARY3?oe_lO%y6!$=bmxz)>m$K#tsfK=6ciK` z^hYFP7-G74|BZNPO=G+m-I5R-*a3Z!@O_b> zjv$rIa|ZyI=T!gvHQwe8eFL0vWQy~5z-!&M&UIbqT-(;KoALHS0DMOZouhw6RCn4B z-8dp(9J`^X;>8*-Dsv?O1@@*AdsCvn?z?VS0Rz01=Ikje*&Pt!@mjG)_{QLtq;E!ecylol?Vz73JMDPQ?kv3^VHD)|F>%O74v*x zPtD~r!!%#0-Wa5^4E-!qht{8$Yjd6F8OCKMeXTV3Fp~ZQ1e@DsT41E(_xybsYhVGx zJ|Wrjchy{)x9P26O5ls2z*h%L0D|40<_Si|husHXEBYbSV}J!q%>x!J^-;jnYjE4y zqU5Jrbi3Z*a}Fa1&!tHZl2+8LV6cqG-=^f;jD@(?95Xk@l002ovPDHLk FV1nEf&2j($ literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/clothing/suits/labcoat.dmi b/modular_zubbers/icons/obj/clothing/suits/labcoat.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e5f05ea2cc3a5c829a905c8cb5dc4994d04879b4 GIT binary patch literal 550 zcmV+>0@?kEP)|z1Qf<8hC&7!+U6!AMA(WoD+O6-NUIfduQ*aJ517JGVW)W7EI?aocx9J!XM;TN@?l~ z-Msw7bl2o@ur<@4%g)Zu&dx`3eLom5c>a$#jQ!vjpM&Q=6`Em=X*ur)woih^vu{Px zPKXmb>F#J!Ai03+B;94W>dq(DV?S7y-}eL6-5d4;8q(u1?q`=4OuxP#&|EzJm-<3C om;JzWx8!kXEz_UN&d&eJH=cPAas1hOq5uE@07*qoM6N<$f^)I)XaE2J literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/clothing/under/security.dmi b/modular_zubbers/icons/obj/clothing/under/security.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7d69e3ee9a63812aa27c9eff833c24acf9ecffa2 GIT binary patch literal 863 zcmV-l1EBngP)egA{ZGSLL?hF9T!zFA}T5>Zayi%z`!OoV;&?&EK!9&Zk`_?CM_*9 zIXORd7a1)80004WQchCV=-0C=2JR&a84_w-Y6 z@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sW>&cv?#Nr zGCnsoB{Mm`q_n6cCp9lMIa`T~GbOXA7^udOi!-e#F*g;$Cag2QI6JebgjD@mrMU&g zrI{q_L$Wt1r!qHvxUkEsDgyAVSwu z0OCuACy+qel2+$wkw@!HXPiZbKdGZaZqX(F<}5g{?#3FV4NQY9XJA;1JM(VGTZqe{T`fL!>5A`D};ouoyi* zqKb-&ii-aRA<`8?F)v{bbBJ{2LSEEg!n{y~C9fdy_vlBeFp@&<`(NT^eM(I4r#tuk zFY$L6gt+W2Sm^tI{$pN7h;IV%np+f!zXK$Ywq%KgyohjA$kiwDvO(IwG{{0;M4b06 znb{Tzyoe#}dmh;T2Ldl*9oAu>voiYYc0{Seuu<;1ZA|{U{W^lFK*qL`!Md^fhrwSs pe2VqGMPH+TdL0rwqKb+y!*BO^I=wb!6ZilC002ovPDHLkV1f&Abh-cl literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index d5ebce08bf9..67906ea468a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7160,7 +7160,9 @@ #include "modular_zubbers\code\game\objects\items\food\misc.dm" #include "modular_zubbers\code\game\objects\items\storage\boxes.dm" #include "modular_zubbers\code\modules\_defines.dm" +#include "modular_zubbers\code\modules\alternative_job_titles\code\alt_job_titles.dm" #include "modular_zubbers\code\modules\asset_cache\assets\arcade.dm" +#include "modular_zubbers\code\modules\automapper\code\area_spawn_entries.dm" #include "modular_zubbers\code\modules\borer_hud\borer.dm" #include "modular_zubbers\code\modules\bsrpd\code\bsrpd.dm" #include "modular_zubbers\code\modules\clothing\head\helmet.dm" @@ -7172,6 +7174,8 @@ #include "modular_zubbers\code\modules\clothing\outfits\prison_headset.dm" #include "modular_zubbers\code\modules\clothing\suits\armor.dm" #include "modular_zubbers\code\modules\clothing\suits\jacket.dm" +#include "modular_zubbers\code\modules\customization\modules\clothing\under\security.dm" +#include "modular_zubbers\code\modules\customization\modules\jobs\_job.dm" #include "modular_zubbers\code\modules\customization\sprite_accessories\ears.dm" #include "modular_zubbers\code\modules\customization\sprite_accessories\genitals.dm" #include "modular_zubbers\code\modules\customization\sprite_accessories\horns.dm" @@ -7219,9 +7223,12 @@ #include "modular_zubbers\code\modules\pai\ghost_pai.dm" #include "modular_zubbers\code\modules\paperwork\fax.dm" #include "modular_zubbers\code\modules\projectiles\guns\energy\pulse.dm" +#include "modular_zubbers\code\modules\protected_roles\code\antag_restricted_jobs.dm" #include "modular_zubbers\code\modules\research\designs\comp_board_designs.dm" #include "modular_zubbers\code\modules\research\designs\machine_board_designs.dm" #include "modular_zubbers\code\modules\research\designs\medical_designs.dm" +#include "modular_zubbers\code\modules\sec_haul\code\security_medic\secmed_clothes.dm" +#include "modular_zubbers\code\modules\sec_haul\code\security_medic\security_medic.dm" #include "modular_zubbers\code\modules\status_indicators\status_indicator.dm" #include "modular_zubbers\code\modules\status_indicators\status_indicator_pref.dm" #include "modular_zubbers\code\modules\surgery\bodyparts\species_parts\misc_bodyparts.dm"