From c5d07af4ea581baeb55aefe533d31e94727ba023 Mon Sep 17 00:00:00 2001
From: Burzah <116982774+Burzah@users.noreply.github.com>
Date: Wed, 21 Jun 2023 14:42:12 -0700
Subject: [PATCH] Improved body scanner printouts (#21280)
* QoL Printout update - first pass
* Progress update on formatting
* internal and external organs divided to two tables
* missing carrot
* table formatting
* internal list and moved sight check
---
code/game/machinery/adv_med.dm | 221 ++++++++++++++++-----------------
1 file changed, 106 insertions(+), 115 deletions(-)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 5aaadab0078..4d1546bca0e 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -360,8 +360,8 @@
var/obj/item/paper/P = new /obj/item/paper(loc)
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, TRUE)
var/name = occupant ? occupant.name : "Unknown"
- P.info = "
Body Scan - [name]
"
- P.info += "Time of scan: [station_time_timestamp()]
"
+ P.info = "Patient: [name]"
+ P.info += "Time of scan: [station_time_timestamp()]
"
P.info += "[generate_printing_text()]"
P.info += "
Notes:
"
P.name = "Body Scan - [name]"
@@ -380,8 +380,39 @@
if(1)
t1 = "Unconscious"
else
- t1 = "*dead*"
- dat += "[occupant.health > 50 ? "" : ""]\tHealth %: [occupant.health], ([t1])
"
+ t1 = "*Dead*"
+ dat += "[occupant.health > 50 ? "" : ""]\tHealth: [occupant.health]% ([t1])
"
+
+ var/extra_font = null
+
+ var/blood_percent = round((occupant.blood_volume / BLOOD_VOLUME_NORMAL) * 100, 1)
+
+ extra_font = (occupant.blood_volume > 448 ? "" : "")
+ dat += "[extra_font]\tBlood Level: [blood_percent]% ([occupant.blood_volume] units)
"
+
+ extra_font = (occupant.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT && occupant.bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT ? "" : "")
+ dat += "[extra_font]\tBody Temperature: [occupant.bodytemperature-T0C]°C ([occupant.bodytemperature*1.8-459.67]°F)
"
+
+ extra_font = (occupant.getBruteLoss() < 60 ? "" : "")
+ dat += "[extra_font]\tBrute Damage: [occupant.getBruteLoss()]
"
+
+ extra_font = (occupant.getOxyLoss() < 60 ? "" : "")
+ dat += "[extra_font]\tRespiratory Damage: [occupant.getOxyLoss()]
"
+
+ extra_font = (occupant.getToxLoss() < 60 ? "" : "")
+ dat += "[extra_font]\tToxin Damage: [occupant.getToxLoss()]
"
+
+ extra_font = (occupant.getFireLoss() < 60 ? "" : "")
+ dat += "[extra_font]\tBurn Severity: [occupant.getFireLoss()]
"
+
+ extra_font = (occupant.radiation < 10 ? "" : "")
+ dat += "[extra_font]\tRadiation Level: [occupant.radiation] rads
"
+
+ extra_font = (occupant.getCloneLoss() < 1 ? "" : "")
+ dat += "[extra_font]\tCellular Tissue Damage: [occupant.getCloneLoss()]
"
+
+ extra_font = (occupant.getBrainLoss() < 1 ? "" : "")
+ dat += "[extra_font]\tApprox. Brain Damage: [occupant.getBrainLoss()]
"
var/found_disease = FALSE
for(var/thing in occupant.viruses)
@@ -391,151 +422,111 @@
found_disease = TRUE
break
if(found_disease)
- dat += "Disease detected in occupant.
"
+ dat += "Disease detected in occupant.
"
- var/extra_font = null
- extra_font = (occupant.getBruteLoss() < 60 ? "" : "")
- dat += "[extra_font]\t-Brute Damage %: [occupant.getBruteLoss()]
"
-
- extra_font = (occupant.getOxyLoss() < 60 ? "" : "")
- dat += "[extra_font]\t-Respiratory Damage %: [occupant.getOxyLoss()]
"
-
- extra_font = (occupant.getToxLoss() < 60 ? "" : "")
- dat += "[extra_font]\t-Toxin Content %: [occupant.getToxLoss()]
"
-
- extra_font = (occupant.getFireLoss() < 60 ? "" : "")
- dat += "[extra_font]\t-Burn Severity %: [occupant.getFireLoss()]
"
-
- extra_font = (occupant.radiation < 10 ?"" : "")
- dat += "[extra_font]\tRadiation Level %: [occupant.radiation]
"
-
- extra_font = (occupant.getCloneLoss() < 1 ?"" : "")
- dat += "[extra_font]\tGenetic Tissue Damage %: [occupant.getCloneLoss()]
"
-
- extra_font = (occupant.getBrainLoss() < 1 ?"" : "")
- dat += "[extra_font]\tApprox. Brain Damage %: [occupant.getBrainLoss()]
"
-
- dat += "Inebriation Severity: [round(occupant.get_drunkenness() / 10)] seconds
"
- dat += "Body Temperature: [occupant.bodytemperature-T0C]°C ([occupant.bodytemperature*1.8-459.67]°F)
"
+ if(HAS_TRAIT(occupant, TRAIT_BLIND))
+ dat += "Cataracts detected.
"
+ if(HAS_TRAIT(occupant, TRAIT_COLORBLIND))
+ dat += "Photoreceptor abnormalities detected.
"
+ if(HAS_TRAIT(occupant, TRAIT_NEARSIGHT))
+ dat += "Retinal misalignment detected.
"
dat += "
"
-
- var/blood_percent = round((occupant.blood_volume / BLOOD_VOLUME_NORMAL) * 100, 1)
-
- extra_font = (occupant.blood_volume > 448 ? "" : "")
- dat += "[extra_font]\tBlood Level %: [blood_percent] ([occupant.blood_volume] units)
"
-
- if(occupant.reagents)
- dat += "Epinephrine units: [occupant.reagents.get_reagent_amount("Epinephrine")] units
"
- dat += "Ether: [occupant.reagents.get_reagent_amount("ether")] units
"
-
- extra_font = (occupant.reagents.get_reagent_amount("silver_sulfadiazine") < 30 ? "" : "")
- dat += "[extra_font]\tSilver Sulfadiazine: [occupant.reagents.get_reagent_amount("silver_sulfadiazine")]
"
-
- extra_font = (occupant.reagents.get_reagent_amount("styptic_powder") < 30 ? "" : "")
- dat += "[extra_font]\tStyptic Powder: [occupant.reagents.get_reagent_amount("styptic_powder")] units
"
-
- extra_font = (occupant.reagents.get_reagent_amount("salbutamol") < 30 ? "" : "")
- dat += "[extra_font]\tSalbutamol: [occupant.reagents.get_reagent_amount("salbutamol")] units
"
-
- dat += "
"
+ dat += ""
dat += ""
- dat += "| Organ | "
- dat += "Burn Damage | "
- dat += "Brute Damage | "
- dat += "Other Wounds | "
+ dat += "Body Part | "
+ dat += "Burn Damage | "
+ dat += "Brute Damage | "
+ dat += "Injuries | "
dat += "
"
for(var/obj/item/organ/external/e in occupant.bodyparts)
dat += ""
- var/AN = ""
- var/open = ""
- var/infected = ""
- var/dead = ""
- var/robot = ""
- var/imp = ""
- var/bled = ""
- var/splint = ""
- var/internal_bleeding = ""
- var/burn_wound = ""
- var/ointment = ""
- var/lung_ruptured = ""
+ var/list/ailments = list()
+
if(e.status & ORGAN_INT_BLEEDING)
- internal_bleeding = "
Internal bleeding"
+ ailments |= "Internal Bleeding"
if(istype(e, /obj/item/organ/external/chest) && occupant.is_lung_ruptured())
- lung_ruptured = "Lung ruptured:"
+ ailments |= "Lung Ruptured"
if(e.status & ORGAN_SPLINTED)
- splint = "Splinted:"
+ ailments |= "Splinted"
if(e.status & ORGAN_BROKEN)
- AN = "[e.broken_description]:"
+ ailments |= "[e.broken_description]"
if(e.status & ORGAN_SALVED)
- ointment = "Salved:"
+ ailments |= "Salved"
if(e.status & ORGAN_BURNT)
- burn_wound = "Critical Burn:"
+ ailments |= "Critical Burn"
if(e.status & ORGAN_DEAD)
- dead = "DEAD:"
+ ailments |= "Dead"
if(e.is_robotic())
- robot = "Robotic:"
+ ailments |= "Robotic"
if(e.open)
- open = "Open:"
+ ailments |= "Open"
switch(e.germ_level)
if(INFECTION_LEVEL_ONE to INFECTION_LEVEL_ONE + 200)
- infected = "Mild Infection:"
+ ailments |= "Mild Infection"
if(INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300)
- infected = "Mild Infection+:"
+ ailments |= "Mild Infection+"
if(INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400)
- infected = "Mild Infection++:"
+ ailments |= "Mild Infection++"
if(INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200)
- infected = "Acute Infection:"
+ ailments |= "Acute Infection"
if(INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
- infected = "Acute Infection+:"
+ ailments |= "Acute Infection+"
if(INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 399)
- infected = "Acute Infection++:"
+ ailments |= "Acute Infection++"
if(INFECTION_LEVEL_TWO + 400 to INFINITY)
- infected = "Septic:"
+ ailments |= "Septic"
var/unknown_body = 0
for(var/I in e.embedded_objects)
unknown_body++
if(unknown_body || e.hidden)
- imp += "Unknown body present:"
- if(!AN && !open && !infected && !imp)
- AN = "None:"
- dat += "[e.name] | [e.burn_dam] | [e.brute_dam] | [robot][bled][AN][splint][burn_wound][ointment][open][infected][imp][internal_bleeding][lung_ruptured][dead] | "
- dat += "
"
- for(var/obj/item/organ/internal/i in occupant.internal_organs)
- var/mech = i.desc
- var/infection = "None"
- var/dead = ""
- if(i.status & ORGAN_DEAD)
- dead = "DEAD:"
- switch(i.germ_level)
- if(1 to INFECTION_LEVEL_ONE + 200)
- infection = "Mild Infection:"
- if(INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300)
- infection = "Mild Infection+:"
- if(INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400)
- infection = "Mild Infection++:"
- if(INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200)
- infection = "Acute Infection:"
- if(INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
- infection = "Acute Infection+:"
- if(INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 399)
- infection = "Acute Infection++:"
- if(INFECTION_LEVEL_TWO + 400 to INFINITY)
- infection = "Septic:"
+ ailments |= "Unknown body present"
- dat += ""
- dat += "| [i.name] | N/A | [i.damage] | [infection]:[mech][dead] | | "
+ dat += "[e.name] | "
+ dat += "[e.burn_dam] | "
+ dat += "[e.brute_dam] | "
+ dat += "[jointext(ailments, " ")] | "
dat += "
"
dat += "
"
- if(HAS_TRAIT(occupant, TRAIT_BLIND))
- dat += "Cataracts detected.
"
- if(HAS_TRAIT(occupant, TRAIT_COLORBLIND))
- dat += "Photoreceptor abnormalities detected.
"
- if(HAS_TRAIT(occupant, TRAIT_NEARSIGHT))
- dat += "Retinal misalignment detected.
"
+ dat += "
"
+
+ dat += ""
+ dat += ""
+ dat += "| Organ | "
+ dat += "Damage | "
+ dat += "Injuries | "
+ dat += "
"
+
+ for(var/obj/item/organ/internal/i in occupant.internal_organs)
+ var/list/ailments = list()
+
+ if(i.status & ORGAN_DEAD)
+ ailments |= "Dead"
+ switch(i.germ_level)
+ if(1 to INFECTION_LEVEL_ONE + 200)
+ ailments |= "Mild Infection"
+ if(INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300)
+ ailments |= "Mild Infection+"
+ if(INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400)
+ ailments |= "Mild Infection++"
+ if(INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200)
+ ailments |= "Acute Infection"
+ if(INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300)
+ ailments |= "Acute Infection+"
+ if(INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 399)
+ ailments |= "Acute Infection++"
+ if(INFECTION_LEVEL_TWO + 400 to INFINITY)
+ ailments |= "Septic"
+ dat += ""
+ dat += "| [i.name] | "
+ dat += "[i.damage] | "
+ dat += "[jointext(ailments, " ")] | "
+ dat += "
"
+ dat += "
"
+
else
dat += "[src] is empty."