diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm index 327ba95196..48676bc51e 100644 --- a/code/controllers/subsystem/disease.dm +++ b/code/controllers/subsystem/disease.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(disease) name = "Disease" - flags = SS_NO_FIRE | SS_NO_INIT + flags = SS_NO_FIRE var/list/active_diseases = list() //List of Active disease in all mobs; purely for quick referencing. var/list/diseases @@ -12,6 +12,13 @@ SUBSYSTEM_DEF(disease) if(!diseases) diseases = subtypesof(/datum/disease) +/datum/controller/subsystem/disease/Initialize(timeofday) + var/list/all_common_diseases = diseases - typesof(/datum/disease/advance) + for(var/common_disease_type in all_common_diseases) + var/datum/disease/prototype = new common_disease_type() + archive_diseases[prototype.GetDiseaseID()] = prototype + ..() + /datum/controller/subsystem/disease/stat_entry(msg) ..("P:[active_diseases.len]") diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 69da2ab96d..3110eb3967 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -101,8 +101,9 @@ /datum/disease/proc/cure(add_resistance = TRUE) if(affected_mob) if(disease_flags & CAN_RESIST) - if(add_resistance && !(type in affected_mob.resistances)) - affected_mob.resistances += type + var/id = GetDiseaseID() + if(add_resistance && !(id in affected_mob.resistances)) + affected_mob.resistances += id remove_virus() qdel(src) @@ -119,7 +120,7 @@ /datum/disease/proc/GetDiseaseID() - return type + return "[type]" //don't use this proc directly. this should only ever be called by cure() /datum/disease/proc/remove_virus() diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index bbe98ff18d..0c1058a287 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -95,15 +95,6 @@ return 0 return 1 -// To add special resistances. -/datum/disease/advance/cure(resistance=1) - if(affected_mob) - var/id = "[GetDiseaseID()]" - if(resistance && !(id in affected_mob.resistances)) - affected_mob.resistances[id] = id - remove_virus() - qdel(src) //delete the datum to stop it processing - // Returns the advance disease with a different reference memory. /datum/disease/advance/Copy(process = 0) return new /datum/disease/advance(process, src, 1)