From f811d41ad9dcbf09f1e06da5ca78bb7a09fc9d8f Mon Sep 17 00:00:00 2001 From: Rhials <28870487+Rhials@users.noreply.github.com> Date: Thu, 5 Sep 2024 20:41:44 -0400 Subject: [PATCH] New ERT: Code Violet EMT Response Team (#85650) ## About The Pull Request This adds a new ERT type, the Code Violet EMT Response Team. This summons a batch of unarmed EMTs, led by a Chief EMT. The doctors get some above average equipment for healing/reviving a deluge of casualties, with the commander getting even better equipment and the means to defend the rest of their doctors and enforce their authority on the station (a pulse pistol and telebaton). This also autodocs the undoced vars on the ERT datum, for easier reading. You'll see why the mobtype has not been documented in a future PR. It's entirely unused right now (since it is always overridden) but this is addressed in #85651. ## Why It's Good For The Game I've seen plenty of situations where, despite the crew having vanquished all of their foes, the number of bodies is too high to get everything back into working order. This also goes for situations where all of the medical staff are dead, and the corpse-revival engine is unable to kickstart itself. It's not a situation where sending in an ERT full of armed goons can help. Sometimes a more delicate, caring hand is required to get the station rolling again. Also, autodocs are useful. ## Changelog :cl: Rhials add: Code-Violet Medical Support ERT teams have been rolled out for deployment to Space Station 13 and related Nanotrasen Installations. /:cl: --- code/datums/ert.dm | 23 ++++++- code/modules/antagonists/ert/ert.dm | 10 +++ code/modules/clothing/outfits/ert.dm | 69 +++++++++++++++++++++ code/modules/clothing/outfits/plasmaman.dm | 12 ++++ code/modules/mod/modules/modules_medical.dm | 19 ++++++ 5 files changed, 132 insertions(+), 1 deletion(-) diff --git a/code/datums/ert.dm b/code/datums/ert.dm index 58500bb3cc3..2000d591999 100644 --- a/code/datums/ert.dm +++ b/code/datums/ert.dm @@ -1,13 +1,23 @@ /datum/ert + ///Antag datum team for this type of ERT. var/team = /datum/team/ert + ///Do we open the doors to the "high-impact" weapon/explosive cabinets? Used for combat-focused ERTs. var/opendoors = TRUE + ///Alternate antag datum given to the leader of the squad. var/leader_role = /datum/antagonist/ert/commander + ///Do we humanize all spawned players or keep them the species in their current character prefs? var/enforce_human = TRUE - var/roles = list(/datum/antagonist/ert/security, /datum/antagonist/ert/medic, /datum/antagonist/ert/engineer) //List of possible roles to be assigned to ERT members. + ///A list of roles distributed to the selected candidates that are not the leader. + var/roles = list(/datum/antagonist/ert/security, /datum/antagonist/ert/medic, /datum/antagonist/ert/engineer) + ///The custom name assigned to this team, for their antag datum/roundend reporting. var/rename_team + ///Defines the color/alert code of the response team. Unused if a polldesc is defined. var/code + ///The mission given to this ERT type in their flavor text. var/mission = "Assist the station." + ///The number of players for consideration. var/teamsize = 5 + ///The "would you like to play as XXX" message used when polling for players. var/polldesc /// If TRUE, gives the team members "[role] [random last name]" style names var/random_names = TRUE @@ -127,3 +137,14 @@ mission = "Having heard the station's request for aid, assist the crew in defending themselves." polldesc = "an independent station defense militia" random_names = TRUE + +/datum/ert/medical + opendoors = FALSE + teamsize = 4 + leader_role = /datum/antagonist/ert/medical_commander + enforce_human = FALSE //All the best doctors I know are moths and cats + roles = list(/datum/antagonist/ert/medical_technician) + rename_team = "EMT Squad" + code = "Violet" + mission = "Provide emergency medical services to the crew." + polldesc = "an emergency medical response team" diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index f8257b1cbbe..4b94666abc3 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -289,3 +289,13 @@ name = "Frontier Militia General" outfit = /datum/outfit/centcom/militia/general role = "General" + +/datum/antagonist/ert/medical_commander + role = "Chief EMT" + outfit = /datum/outfit/centcom/ert/medical_commander + plasmaman_outfit = /datum/outfit/plasmaman/medical_commander + +/datum/antagonist/ert/medical_technician + role = "Emergency Medical Technician" + outfit = /datum/outfit/centcom/ert/medical_technician + plasmaman_outfit = /datum/outfit/plasmaman/medical_technician diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 101cedfef88..b14573a087c 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -573,3 +573,72 @@ head = /obj/item/clothing/head/beret/militia l_hand = /obj/item/megaphone suit_store = /obj/item/gun/energy/laser/musket/prime + +/datum/outfit/centcom/ert/medical_commander + name = "Chief EMT" + id = /obj/item/card/id/advanced/centcom/ert/medical + uniform = /obj/item/clothing/under/rank/medical/chief_medical_officer + l_pocket = /obj/item/healthanalyzer/advanced + shoes = /obj/item/clothing/shoes/sneakers/white + backpack_contents = list( + /obj/item/reagent_containers/hypospray/combat = 1, + /obj/item/storage/medkit/regular = 1, + /obj/item/storage/medkit/advanced = 1, + /obj/item/melee/baton/telescopic = 1, + /obj/item/gun/energy/pulse/pistol/loyalpin = 1, + /obj/item/stack/medical/poultice = 1, //These stacks contain 15 by default. Great for getting corpses to defib range without surgery. + ) + belt = /obj/item/storage/belt/medical/ert + glasses = /obj/item/clothing/glasses/hud/health/sunglasses + additional_radio = /obj/item/encryptionkey/heads/cmo + mask = /obj/item/clothing/mask/surgical + back = /obj/item/mod/control/pre_equipped/emergency_medical/corpsman + gloves = null + suit = null + head = null + suit_store = /obj/item/tank/internals/oxygen + +/datum/outfit/centcom/ert/medical_technician + name = "EMT Paramedic" + id = /obj/item/card/id/advanced/centcom/ert/medical + uniform = /obj/item/clothing/under/rank/medical/scrubs/blue + l_pocket = /obj/item/healthanalyzer + backpack_contents = list( + /obj/item/reagent_containers/hypospray/combat = 1, + /obj/item/storage/medkit/regular = 1, + /obj/item/reagent_containers/syringe = 1, + /obj/item/reagent_containers/cup/bottle/formaldehyde = 1, + /obj/item/reagent_containers/medigel/sterilizine = 1, + /obj/item/bodybag = 2, + ) + mask = /obj/item/clothing/mask/surgical + belt = /obj/item/storage/belt/medical/ert + glasses = /obj/item/clothing/glasses/hud/health + additional_radio = /obj/item/encryptionkey/heads/cmo + shoes = /obj/item/clothing/shoes/sneakers/blue + back = /obj/item/mod/control/pre_equipped/emergency_medical + gloves = null + suit = null + head = null + suit_store = /obj/item/tank/internals/oxygen + +/obj/item/mod/control/pre_equipped/emergency_medical + theme = /datum/mod_theme/medical + starting_frequency = MODLINK_FREQ_CENTCOM + applied_cell = /obj/item/stock_parts/power_store/cell/hyper + applied_modules = list( + /obj/item/mod/module/organizer, + /obj/item/mod/module/defibrillator, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/health_analyzer, + /obj/item/mod/module/injector, + /obj/item/mod/module/surgical_processor/emergency, + /obj/item/mod/module/storage/large_capacity, + ) + +/obj/item/mod/control/pre_equipped/emergency_medical/corpsman + theme = /datum/mod_theme/medical/corpsman + +///Identical to medical MODsuit, but uses the alternate skin by default. +/datum/mod_theme/medical/corpsman + default_skin = "corpsman" diff --git a/code/modules/clothing/outfits/plasmaman.dm b/code/modules/clothing/outfits/plasmaman.dm index 1b2e0ead148..a0e927c6319 100644 --- a/code/modules/clothing/outfits/plasmaman.dm +++ b/code/modules/clothing/outfits/plasmaman.dm @@ -302,3 +302,15 @@ uniform = /obj/item/clothing/under/plasmaman //same gloves = /obj/item/clothing/gloves/color/plasmaman/black head = /obj/item/clothing/head/helmet/space/plasmaman + +/datum/outfit/plasmaman/medical_commander + name = "Chief EMT Plasmaman" + uniform = /obj/item/clothing/under/plasmaman/chief_medical_officer + gloves = /obj/item/clothing/gloves/color/plasmaman/white + head = /obj/item/clothing/head/helmet/space/plasmaman/chief_medical_officer + +/datum/outfit/plasmaman/medical_technician + name = "EMT Paramedic Plasmaman" + uniform = /obj/item/clothing/under/plasmaman/medical + gloves = /obj/item/clothing/gloves/color/plasmaman/white + head = /obj/item/clothing/head/helmet/space/plasmaman/medical diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 8a1d31a92f6..0f445702017 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -428,3 +428,22 @@ /datum/surgery/advanced/bioware/cortex_folding, /datum/surgery/advanced/bioware/cortex_folding/mechanic, ) + +/obj/item/mod/module/surgical_processor/emergency + desc = "A module using an onboard surgical computer which can be connected to other computers to download and \ + perform advanced surgeries on the go. This one came pre-loaded with some emergency surgeries." + device = /obj/item/surgical_processor/mod/emergency + +/obj/item/surgical_processor/mod/emergency + loaded_surgeries = list( + /datum/surgery/healing/combo/upgraded/femto, + /datum/surgery/blood_filter, + /datum/surgery/brain_surgery, + /datum/surgery/coronary_bypass, + /datum/surgery/ear_surgery, + /datum/surgery/eye_surgery, + /datum/surgery/hepatectomy, + /datum/surgery/revival, + /datum/surgery/stomach_pump, + /datum/surgery/advanced/wing_reconstruction, + )