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()