From 1277770019965f3da75ddbd4735899429536c021 Mon Sep 17 00:00:00 2001 From: mikomyazaki <47489928+mikomyazaki@users.noreply.github.com> Date: Sun, 23 Feb 2020 05:46:00 +0000 Subject: [PATCH] Health scanner will report rough target radiation level (#8314) --- code/__defines/mobs.dm | 7 +++++++ code/game/objects/items/devices/scanners.dm | 12 ++++++++++++ code/modules/mob/living/carbon/brain/life.dm | 18 +++++++++--------- html/changelogs/rad_scanner.yml | 6 ++++++ 4 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 html/changelogs/rad_scanner.yml diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 9447c9d965b..96e6457edb3 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -62,6 +62,13 @@ #define BLOOD_PRESSURE_IDEAL 2 #define BLOOD_PRESSURE_LOW 1 +// total_radiation levels (Note that total_radiation can be above RADS_MAX until handle_mutations_and_radiation() runs) +#define RADS_NONE 0 +#define RADS_LOW 1 +#define RADS_MED 50 +#define RADS_HIGH 75 +#define RADS_MAX 100 + //intent flags, why wasn't this done the first time? #define I_HELP "help" #define I_DISARM "disarm" diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index b1e0ee081fa..3cdd978caa5 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -190,6 +190,18 @@ BREATH ANALYZER if(H.getBruteLoss() > 50) dat += "[b]Severe anatomical damage detected.[endb]" + var/rad_result = "Radiation: " + switch(H.total_radiation) + if(RADS_NONE) + rad_result += span("scan_green", "No radiation detected.") + if(RADS_LOW to RADS_MED) + rad_result += span("scan_orange", "Low levels of radiation poisoning detected.") + if(RADS_MED to RADS_HIGH) + rad_result += span("scan_orange", "Severe levels of radiation poisoning detected!") + if(RADS_HIGH to INFINITY) + rad_result += span("scan_red", "[b]Extreme levels of radiation poisoning detected![endb]") + dat += rad_result + if(show_limb_damage) var/list/damaged = H.get_damaged_organs(1,1) if(damaged.len) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index d0edc029ed3..7d82b63965c 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -3,32 +3,32 @@ /mob/living/carbon/brain/handle_mutations_and_radiation() if (total_radiation) - if (total_radiation > 100) - total_radiation = 100 + if (total_radiation > RADS_MAX) + total_radiation = RADS_MAX if(!container)//If it's not in an MMI - to_chat(src, "You feel weak.") + to_chat(src, SPAN_WARNING("You feel weak.")) else//Fluff-wise, since the brain can't detect anything itself, the MMI handles thing like that - to_chat(src, "STATUS: CRITICAL AMOUNTS OF RADIATION DETECTED.") + to_chat(src, SPAN_WARNING("STATUS: CRITICAL AMOUNTS OF RADIATION DETECTED.")) switch(total_radiation) - if(1 to 49) + if(RADS_LOW to RADS_MED-1) apply_radiation(-1) if(prob(25)) adjustToxLoss(1) updatehealth() - if(50 to 74) + if(RADS_MED to RADS_HIGH-1) apply_radiation(-2) adjustToxLoss(1) if(prob(5)) apply_radiation(-5) if(!container) - to_chat(src, "You feel weak.") + to_chat(src, SPAN_WARNING("You feel weak.")) else - to_chat(src, "STATUS: DANGEROUS LEVELS OF RADIATION DETECTED.") + to_chat(src, SPAN_DANGER("STATUS: DANGEROUS LEVELS OF RADIATION DETECTED.")) updatehealth() - if(75 to 100) + if(RADS_HIGH to RADS_MAX) apply_radiation(-3) adjustToxLoss(3) updatehealth() diff --git a/html/changelogs/rad_scanner.yml b/html/changelogs/rad_scanner.yml new file mode 100644 index 00000000000..d4a1256c800 --- /dev/null +++ b/html/changelogs/rad_scanner.yml @@ -0,0 +1,6 @@ +author: mikomyazaki + +delete-after: True + +changes: + - rscadd: "Health analyzer will now report a rough radiation level for a scanned patient." \ No newline at end of file