From 8e4e34127b0ed59cd804e46181d5d87fd6ca3e26 Mon Sep 17 00:00:00 2001
From: RaveRadbury <3204033+RaveRadbury@users.noreply.github.com>
Date: Fri, 1 May 2020 00:47:26 -0700
Subject: [PATCH] Sorts quirks into medical record categories (#50647)
* Sorts quirks into medical record categories
Removes Allergens from med record, still need to squash a bug.
* Makes Rohesie's requested changes
* typo
* Replaces magic numbers with defines
---
code/__DEFINES/traits.dm | 6 +++
code/datums/datacore.dm | 13 +++--
code/datums/traits/_quirk.dm | 54 +++++++++++++------
code/game/machinery/computer/medical.dm | 3 +-
code/game/objects/items/devices/scanners.dm | 2 +-
.../mob/living/carbon/human/human_defense.dm | 2 +-
6 files changed, 54 insertions(+), 26 deletions(-)
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 354c0912842..87bbf5a1bcc 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -223,6 +223,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_SNOB "snob"
#define TRAIT_BALD "bald"
+//Medical Categories for quirks
+#define CAT_QUIRK_ALL 0
+#define CAT_QUIRK_NOTES 1
+#define CAT_QUIRK_MINOR_DISABILITY 2
+#define CAT_QUIRK_MAJOR_DISABILITY 3
+
// common trait sources
#define TRAIT_GENERIC "generic"
#define GENERIC_ITEM_TRAIT "generic_item"
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index eea187b3769..4a92e628eab 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -260,15 +260,14 @@
M.fields["name"] = H.real_name
M.fields["blood_type"] = H.dna.blood_type
M.fields["b_dna"] = H.dna.unique_enzymes
- M.fields["mi_dis"] = "None"
- M.fields["mi_dis_d"] = "No minor disabilities have been declared."
- M.fields["ma_dis"] = "None"
- M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
- M.fields["alg"] = "None"
- M.fields["alg_d"] = "No allergies have been detected in this patient."
+ M.fields["mi_dis"] = H.get_trait_string(!medical, CAT_QUIRK_MINOR_DISABILITY)
+ M.fields["mi_dis_d"] = H.get_trait_string(medical, CAT_QUIRK_MINOR_DISABILITY)
+ M.fields["ma_dis"] = H.get_trait_string(!medical, CAT_QUIRK_MAJOR_DISABILITY)
+ M.fields["ma_dis_d"] = H.get_trait_string(medical, CAT_QUIRK_MAJOR_DISABILITY)
M.fields["cdi"] = "None"
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
- M.fields["notes"] = H.get_trait_string(medical)
+ M.fields["notes"] = H.get_trait_string(!medical, CAT_QUIRK_NOTES)
+ M.fields["notes_d"] = H.get_trait_string(medical, CAT_QUIRK_NOTES)
medical += M
//Security Record
diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm
index e27fd4d8009..0e37bc9e299 100644
--- a/code/datums/traits/_quirk.dm
+++ b/code/datums/traits/_quirk.dm
@@ -65,22 +65,46 @@
return
on_process()
-/mob/living/proc/get_trait_string(medical) //helper string. gets a string of all the traits the mob has
+/mob/living/proc/get_trait_string(medical, category) //helper string. gets a string of all the traits the mob has
var/list/dat = list()
- if(!medical)
- for(var/V in roundstart_quirks)
- var/datum/quirk/T = V
- dat += T.name
- if(!dat.len)
- return "None"
- return dat.Join(", ")
- else
- for(var/V in roundstart_quirks)
- var/datum/quirk/T = V
- dat += T.medical_record_text
- if(!dat.len)
- return "None"
- return dat.Join("
")
+ switch(category)
+ if(CAT_QUIRK_ALL)
+ for(var/V in roundstart_quirks)
+ var/datum/quirk/T = V
+ dat += medical ? T.medical_record_text : T.name
+ if(!dat.len)
+ return "None"
+ return medical ? dat.Join("
") : dat.Join(",")
+
+ //Major Disabilities
+ if(CAT_QUIRK_MAJOR_DISABILITY)
+ for(var/V in roundstart_quirks)
+ var/datum/quirk/T = V
+ if(T.value < -1)
+ dat += medical ? T.medical_record_text : T.name
+ if(!dat.len)
+ return medical ? "No major disabilities have been declared." : "None"
+ return medical ? dat.Join("
") : dat.Join(",")
+
+ //Minor Disabilities
+ if(CAT_QUIRK_MINOR_DISABILITY)
+ for(var/V in roundstart_quirks)
+ var/datum/quirk/T = V
+ if(T.value == -1)
+ dat += medical ? T.medical_record_text : T.name
+ if(!dat.len)
+ return medical ? "No minor disabilities have been declared." : "None"
+ return medical ? dat.Join("
") : dat.Join(",")
+
+ //Neutral and Positive quirks
+ if(CAT_QUIRK_NOTES)
+ for(var/V in roundstart_quirks)
+ var/datum/quirk/T = V
+ if(T.value > -1)
+ dat += medical ? T.medical_record_text : T.name
+ if(!dat.len)
+ return "None"
+ return medical ? dat.Join("
") : dat.Join(",")
/mob/living/proc/cleanse_trait_datums() //removes all trait datums
for(var/V in roundstart_quirks)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index e039bdb735f..584487a6398 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -122,11 +122,10 @@
dat += "