diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 53809e85b8..cfc56d3117 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -188,6 +188,14 @@
viruses_to_return += D
return viruses_to_return
+/mob/proc/GetDormantDiseases()
+ LAZYINITLIST(viruses)
+ var/list/viruses_to_return = list()
+ for(var/datum/disease/D in viruses)
+ if(D.virus_modifiers & DORMANT)
+ viruses_to_return += D
+ return viruses_to_return
+
/mob/proc/GetResistances()
LAZYINITLIST(resistances)
return resistances
diff --git a/code/datums/diseases/advance/disease_preset.dm b/code/datums/diseases/advance/disease_preset.dm
index 3c03ef81af..6ee6b15ce3 100644
--- a/code/datums/diseases/advance/disease_preset.dm
+++ b/code/datums/diseases/advance/disease_preset.dm
@@ -39,7 +39,7 @@
. = FALSE
var/sickrisk = 1
- if(isSynthetic() || species.virus_immune || HAS_TRAIT(src, STRONG_IMMUNITY_TRAIT)) // Don't bother
+ if(isSynthetic() || HAS_TRAIT(src, STRONG_IMMUNITY_TRAIT)) // Don't bother
return
switch(get_species())
diff --git a/code/game/objects/items/devices/extrapolator.dm b/code/game/objects/items/devices/extrapolator.dm
index 59bc9f1b8c..7d73fac8e8 100644
--- a/code/game/objects/items/devices/extrapolator.dm
+++ b/code/game/objects/items/devices/extrapolator.dm
@@ -79,7 +79,7 @@
. += span_notice("The scanner is missing.")
else
. += span_notice("A class " + span_bold("[scanner.rating]") + " scanning module is installed. It is screwed in place.")
- . += span_notice("Can detect diseases below stealth " + span_bold("[maximum_stealth]") + ".")
+ // . += span_notice("Can detect diseases below stealth " + span_bold("[maximum_stealth]") + ".")
. += span_notice("Can extract diseases in " + span_bold("[DisplayTimeText(extract_time)]") + ".")
. += span_notice("Can isolate symptoms [maximum_level >= 9 ? "of any level" : "below level [maximum_level]"], in [DisplayTimeText(isolate_time)].")
@@ -89,7 +89,7 @@
var/effective_scanner_rating = scanner.rating +1
extract_time = (10 SECONDS) / effective_scanner_rating
isolate_time = (15 SECONDS) / effective_scanner_rating
- maximum_stealth = scanner.rating + 2
+ // maximum_stealth = scanner.rating + 2
maximum_level = scanner.rating + 5
/obj/item/extrapolator/attack(atom/AM, mob/living/user)
@@ -184,15 +184,17 @@
return TRUE
if(EXTRAPOLATOR_ACT_CHECK(result, EXTRAPOLATOR_ACT_PRIORITY_ISOLATE))
isolate = TRUE
- var/list/advance_diseases = list()
+ //var/list/advance_diseases = list()
+ /*
for(var/datum/disease/advance/candidate in diseases)
if(candidate.stealth >= maximum_stealth)
continue
advance_diseases += candidate
- if(!length(advance_diseases))
+ */
+ if(!length(diseases))
to_chat(user, span_warning("[icon2html(src, user)] There are no valid diseases to make a culture from."))
return
- var/datum/disease/advance/target_disease = length(advance_diseases) > 1 ? tgui_input_list(user, "Select disease to extract", "Viral Extraction", advance_diseases, default = advance_diseases[1]) : advance_diseases[1]
+ var/datum/disease/advance/target_disease = length(diseases) > 1 ? tgui_input_list(user, "Select disease to extract", "Viral Extraction", diseases, default = diseases[1]) : diseases[1]
if(!target_disease)
return
using = TRUE
diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm
index 60967c1fda..1afe1fc568 100644
--- a/code/modules/organs/blood.dm
+++ b/code/modules/organs/blood.dm
@@ -285,6 +285,9 @@ var/const/CE_STABLE_THRESHOLD = 0.5
for(var/datum/disease/D in GetSpreadableViruses())
B.data["viruses"] |= D.Copy()
+ for(var/datum/disease/D in GetDormantDiseases())
+ B.data["viruses"] |= D.Copy()
+
if(!B.data["resistances"])
B.data["resistances"] = list()