From 52e86bd0edd464f54ef9e6ac638c74bbc17f10c2 Mon Sep 17 00:00:00 2001 From: dearmochi <1496804+dearmochi@users.noreply.github.com> Date: Fri, 9 Jul 2021 12:39:37 +0200 Subject: [PATCH] Early stage viruses no longer show on medical HUD (#16307) --- code/datums/diseases/_disease.dm | 7 +++++++ code/game/data_huds.dm | 2 ++ 2 files changed, 9 insertions(+) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index d099da71bf9..94efb17f630 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -50,6 +50,10 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) var/stage = 1 var/max_stages = 0 var/stage_prob = 4 + /// The fraction of stages the virus must at least be at to show up on medical HUDs. Rounded up. + var/discovery_threshold = 0.5 + /// If TRUE, this virus will show up on medical HUDs. Automatically set when it reaches mid-stage. + var/discovered = FALSE //Other var/list/viable_mobtypes = list() //typepaths of viable mobs @@ -82,6 +86,9 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) if(!cure) if(prob(stage_prob)) stage = min(stage + 1,max_stages) + if(!discovered && stage >= CEILING(max_stages * discovery_threshold, 1)) // Once we reach a late enough stage, medical HUDs can pick us up even if we regress + discovered = TRUE + affected_mob.med_hud_set_status() else if(prob(cure_chance)) stage = max(stage - 1, 1) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 61097b2c796..10e704fb314 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -90,6 +90,8 @@ /mob/living/carbon/proc/has_virus() for(var/thing in viruses) var/datum/disease/D = thing + if(!D.discovered) // Early-stage viruses should not show up on med HUD (though health analywers can still pick them up) + continue if((!(D.visibility_flags & HIDDEN_SCANNER)) && (D.severity != NONTHREAT)) return TRUE return FALSE