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 += "Details: [active2.fields["mi_dis_d"]] " dat += "
Major Disabilities:
 [active2.fields["ma_dis"]] " dat += "Details: [active2.fields["ma_dis_d"]] " - dat += "
Allergies:
 [active2.fields["alg"]] " - dat += "Details: [active2.fields["alg_d"]] " dat += "
Current Diseases:
 [active2.fields["cdi"]] " //(per disease info placed in log/comment section) dat += "Details: [active2.fields["cdi_d"]] " dat += "
Important Notes:
 [active2.fields["notes"]] " + dat += "
Notes Cont'd:
 [active2.fields["notes_d"]] " dat += "
Comments/Log" var/counter = 1 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 1578b2b7072..810d1f735fe 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -191,7 +191,7 @@ GENE SCANNER trauma_text += trauma_desc render_list += "Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].\n" if(C.roundstart_quirks.len) - render_list += "Subject has the following physiological traits: [C.get_trait_string()].\n" + render_list += "Subject has the following physiological traits: [C.get_trait_string(FALSE, CAT_QUIRK_ALL)].\n" if(advanced) render_list += "Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%.\n" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index d6af9ebaff1..f843f8909b9 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -829,7 +829,7 @@ to_chat(src, "Your [damaged_message] [damaged_plural ? "are" : "is"] hurt.") if(roundstart_quirks.len) - to_chat(src, "You have these quirks: [get_trait_string()].") + to_chat(src, "You have these quirks: [get_trait_string(FALSE, CAT_QUIRK_ALL)].") /mob/living/carbon/human/damage_clothes(damage_amount, damage_type = BRUTE, damage_flag = 0, def_zone) if(damage_type != BRUTE && damage_type != BURN)