From 1098d40e4aecc5f03b1f8910ad14f0fe74789df3 Mon Sep 17 00:00:00 2001 From: Casper3667 <8396443+Casper3667@users.noreply.github.com> Date: Sat, 1 Nov 2025 21:39:55 +0100 Subject: [PATCH] Puts blood type in the medical record and let the medhud see it (#21521) The blood type was already stored in the medical records, but was not visible to players. With this, anyone with medical record access can see the blood type and change it, and anyone with a medical hud can also see what it is in the person's medical record. --- .../mob/living/carbon/human/examine.dm | 3 ++ .../file_system/programs/generic/records.dm | 8 +++- html/changelogs/BloodTypeIsShown.yml | 7 ++++ tgui/packages/tgui/interfaces/Records.tsx | 38 ++++++++++++++++++- 4 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 html/changelogs/BloodTypeIsShown.yml diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 09e067afde2..673b5cb010b 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -374,6 +374,7 @@ if(hasHUD(user,MED_HUDTYPE)) var/perpname = "wot" var/medical = "None" + var/bloodtype = "Unknown" var/obj/item/card/id/ID = GetIdCard() if(ID) @@ -384,10 +385,12 @@ var/datum/record/general/R = SSrecords.find_record("name", perpname) if(istype(R)) medical = R.physical_status + bloodtype = R.medical.blood_type msg += "Physical Status: \[[medical]\]\n" msg += "Medical Records: \[View\] \[Add Comment\]\n" msg += "Triage Tag: \[[triage_tag]\]\n" + msg += "Blood type: [bloodtype]\n" if(print_flavor_text()) msg += "[print_flavor_text()]\n" diff --git a/code/modules/modular_computers/file_system/programs/generic/records.dm b/code/modules/modular_computers/file_system/programs/generic/records.dm index 32506850851..6c9a1b402e8 100644 --- a/code/modules/modular_computers/file_system/programs/generic/records.dm +++ b/code/modules/modular_computers/file_system/programs/generic/records.dm @@ -28,7 +28,7 @@ "physical_status" = list("Active", "*Deceased*", "*SSD*", "*Missing*", "Physically Unfit", "Disabled"), "criminal_status" = list("None", "*Arrest*", "Search", "Incarcerated", "Parolled", "Released"), "mental_status" = list("Stable", "*Insane*", "*Unstable*", "*Watch*"), - "medical" = list("A-", "B-", "AB-", "O-", "A+", "B+", "AB+", "O+", "SBS") + "blood_type" = list("A-", "B-", "AB-", "O-", "A+", "B+", "AB+", "O+", "SBS") ) /datum/computer_file/program/records/New() @@ -118,6 +118,7 @@ data["physical_status_options"] = typechoices["physical_status"] data["criminal_status_options"] = typechoices["criminal_status"] data["mental_status_options"] = typechoices["mental_status"] + data["blood_type_options"] = typechoices["blood_type"] data["medical_options"] = typechoices["medical"] data["allrecords"] = list() data["allrecords_locked"] = list() @@ -141,7 +142,7 @@ "religion" = R.religion, "employer" = R.employer, "notes" = html_decode(R.notes), - "blood" = R.medical ? R.medical.blood_type : null, + "blood_type" = R.medical ? R.medical.blood_type : null, "dna" = R.medical ? R.medical.blood_dna : null, "ccia_notes" = R.ccia_record, "ccia_actions" = R.ccia_actions, @@ -272,6 +273,9 @@ if("allergies") if(!(edit_type & RECORD_MEDICAL)) return FALSE + if("blood_type") + if(!(edit_type & RECORD_MEDICAL) || (edit_type & RECORD_SECURITY)) + return FALSE if("blood_dna") if(!(edit_type & RECORD_MEDICAL) || (edit_type & RECORD_SECURITY)) return FALSE diff --git a/html/changelogs/BloodTypeIsShown.yml b/html/changelogs/BloodTypeIsShown.yml new file mode 100644 index 00000000000..8d9250656f8 --- /dev/null +++ b/html/changelogs/BloodTypeIsShown.yml @@ -0,0 +1,7 @@ +author: TheGreyWolf + +delete-after: True + +changes: + - rscadd: "The medical records can now see and edit blood types." + - rscadd: "Medhuds now show blood types of people that are examined, based on their medical record." diff --git a/tgui/packages/tgui/interfaces/Records.tsx b/tgui/packages/tgui/interfaces/Records.tsx index 6b4db0369b8..8cff47a89ad 100644 --- a/tgui/packages/tgui/interfaces/Records.tsx +++ b/tgui/packages/tgui/interfaces/Records.tsx @@ -11,6 +11,7 @@ export type RecordsData = { physical_status_options: string[]; criminal_status_options: string[]; mental_status_options: string[]; + blood_type_options: string[]; medical_options: string[]; authenticated: BooleanLike; @@ -33,7 +34,7 @@ type Record = { age: string; fingerprint: string; has_notes: string; - blood: string; + blood_dna: string; dna: string; physical_status: string; mental_status: string; @@ -192,6 +193,11 @@ export const ListActive = (props, context) => { 'editingMentalStatus', false ); + const [editingBloodType, setEditingBloodType] = useLocalState( + context, + 'editingBloodType', + false + ); const [editingFingerprint, setEditingFingerprint] = useLocalState( context, 'editingFingerprint', @@ -476,6 +482,36 @@ export const ListActive = (props, context) => { {data.active.medical && recordTab === 'Medical' ? ( <> + + {data.editable & 1 || data.editable & 2 ? ( + + {editingBloodType ? ( + + act('editrecord', { + record_type: 'medical', + key: 'blood_type', + value: v, + }) + } + /> + ) : ( + + {data.active.medical.blood_type}  +