From 893cca97a37be20ffc9b5476638c6bdbd3c14bfb Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:59:42 +0100 Subject: [PATCH 1/3] An old oversight with disease/var/viable_mobtypes. --- code/datums/diseases/_MobProcs.dm | 2 +- code/datums/diseases/_disease.dm | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 0b6d4e3404..e806e7f2f3 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -21,7 +21,7 @@ return FALSE - if(!(type in D.viable_mobtypes)) + if(!D.infectable_mobtypes[type]) return FALSE return TRUE diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 940b61c9fe..bbbb16e94b 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -18,7 +18,6 @@ var/stage_prob = 4 //Other - var/list/viable_mobtypes = list() //typepaths of viable mobs var/mob/living/carbon/affected_mob = null var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids var/infectivity = 65 @@ -30,10 +29,17 @@ var/list/required_organs = list() var/needs_all_cures = TRUE var/list/strain_data = list() //dna_spread special bullshit + var/list/viable_mobtypes //typecache of viable mobs passed down the below variable. + var/list/infectable_mobtypes = list() var/infectable_biotypes = MOB_ORGANIC //if the disease can spread on organics, synthetics, or undead var/process_dead = FALSE //if this ticks while the host is dead var/copy_type = null //if this is null, copies will use the type of the instance being copied +/datum/disease/New() + ..() + if(viable_mobtypes) + infectable_mobtypes = typecacheof(viable_mobtypes) + /datum/disease/Destroy() . = ..() if(affected_mob) From b0922dd70dd4536ba2c6a65be538a08f7d144bb9 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:02:58 +0100 Subject: [PATCH 2/3] Actually.. --- code/datums/diseases/_MobProcs.dm | 2 +- code/datums/diseases/_disease.dm | 9 ++++----- code/game/machinery/computer/medical.dm | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index e806e7f2f3..a7a61802d3 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -21,7 +21,7 @@ return FALSE - if(!D.infectable_mobtypes[type]) + if(!D.viable_mobtypes[type]) return FALSE return TRUE diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index bbbb16e94b..c4c38459e6 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -18,6 +18,7 @@ var/stage_prob = 4 //Other + var/list/viable_mobtypes = list() //typecache of viable mobs var/mob/living/carbon/affected_mob = null var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids var/infectivity = 65 @@ -29,16 +30,14 @@ var/list/required_organs = list() var/needs_all_cures = TRUE var/list/strain_data = list() //dna_spread special bullshit - var/list/viable_mobtypes //typecache of viable mobs passed down the below variable. - var/list/infectable_mobtypes = list() var/infectable_biotypes = MOB_ORGANIC //if the disease can spread on organics, synthetics, or undead var/process_dead = FALSE //if this ticks while the host is dead var/copy_type = null //if this is null, copies will use the type of the instance being copied -/datum/disease/New() +/datum/disease/New(make_typecache = TRUE) ..() - if(viable_mobtypes) - infectable_mobtypes = typecacheof(viable_mobtypes) + if(make_typecache && length(viable_mobtypes)) + viable_mobtypes = typecacheof(viable_mobtypes) /datum/disease/Destroy() . = ..() diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index f8dac1b100..77092e23be 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -248,7 +248,7 @@ else if(href_list["vir"]) var/type = href_list["vir"] - var/datum/disease/Dis = new type(0) + var/datum/disease/Dis = new type(FALSE) var/AfS = "" for(var/mob/M in Dis.viable_mobtypes) AfS += " [initial(M.name)];" From c0ff43f8276f4c700e048a86753f6e46c4d77264 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:34:43 +0100 Subject: [PATCH 3/3] ofc, New arguments. --- code/datums/diseases/_disease.dm | 1 - code/datums/diseases/advance/advance.dm | 3 ++- code/datums/diseases/advance/presets.dm | 10 +++++----- code/datums/diseases/retrovirus.dm | 2 +- code/game/machinery/computer/medical.dm | 2 +- code/modules/events/disease_outbreak.dm | 2 +- code/modules/mob/living/carbon/life.dm | 2 +- code/modules/surgery/organs/lungs.dm | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index c4c38459e6..9145a53642 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -35,7 +35,6 @@ var/copy_type = null //if this is null, copies will use the type of the instance being copied /datum/disease/New(make_typecache = TRUE) - ..() if(make_typecache && length(viable_mobtypes)) viable_mobtypes = typecacheof(viable_mobtypes) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 1c21fb9528..330a3494d9 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -80,7 +80,8 @@ */ -/datum/disease/advance/New() +/datum/disease/advance/New(make_typecache = TRUE) + ..() Refresh() /datum/disease/advance/Destroy() diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm index 68c3ceffea..b12b657101 100644 --- a/code/datums/diseases/advance/presets.dm +++ b/code/datums/diseases/advance/presets.dm @@ -2,7 +2,7 @@ /datum/disease/advance/cold copy_type = /datum/disease/advance -/datum/disease/advance/cold/New() +/datum/disease/advance/cold/New(make_typecache = TRUE) name = "Cold" symptoms = list(new/datum/symptom/sneeze) ..() @@ -11,7 +11,7 @@ /datum/disease/advance/flu copy_type = /datum/disease/advance -/datum/disease/advance/flu/New() +/datum/disease/advance/flu/New(make_typecache = TRUE) name = "Flu" symptoms = list(new/datum/symptom/cough) ..() @@ -21,7 +21,7 @@ name = "Experimental Disease" copy_type = /datum/disease/advance -/datum/disease/advance/random/New(max_symptoms, max_level = 8) +/datum/disease/advance/random/New(make_typecache = TRUE, max_symptoms, max_level = 8) if(!max_symptoms) max_symptoms = rand(1, VIRUS_SYMPTOM_LIMIT) var/list/datum/symptom/possible_symptoms = list() @@ -37,6 +37,6 @@ if(chosen_symptom) var/datum/symptom/S = new chosen_symptom symptoms += S - Refresh() - name = "Sample #[rand(1,10000)]" \ No newline at end of file + name = "Sample #[rand(1,10000)]" + ..() \ No newline at end of file diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm index 160a9f98ad..5a638fcf1b 100644 --- a/code/datums/diseases/retrovirus.dm +++ b/code/datums/diseases/retrovirus.dm @@ -13,7 +13,7 @@ stage_prob = 2 var/restcure = 0 -/datum/disease/dna_retrovirus/New() +/datum/disease/dna_retrovirus/New(make_typecache = TRUE) ..() agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]" if(prob(40)) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 77092e23be..d8a5f856f1 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -145,7 +145,7 @@ if(5) dat += "