From c20abb1586cb080e8bc063d4242369f608697025 Mon Sep 17 00:00:00 2001 From: XDTM Date: Thu, 28 Jun 2018 09:33:28 +0200 Subject: [PATCH 1/2] Only advance diseases have a limit --- code/datums/diseases/_disease.dm | 6 ++---- code/datums/diseases/advance/advance.dm | 12 ++++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index f5285de466c..0af4eea8ac5 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -42,10 +42,8 @@ //add this disease if the host does not already have too many /datum/disease/proc/try_infect(var/mob/living/infectee, make_copy = TRUE) - if(infectee.diseases.len < DISEASE_LIMIT) - infect(infectee, make_copy) - return TRUE - return FALSE + infect(infectee, make_copy) + return TRUE //add the disease with no checks /datum/disease/proc/infect(var/mob/living/infectee, make_copy = TRUE) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index ddb924f7402..2d1a4427702 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -56,13 +56,13 @@ return ..() /datum/disease/advance/try_infect(var/mob/living/infectee, make_copy = TRUE) - var/replace_num = infectee.diseases.len + 1 - DISEASE_LIMIT + //see if we are more transmittable than enough diseases to replace them + //diseases replaced in this way do not confer immunity + var/list/L = list() + for(var/datum/disease/advance/P in infectee.diseases) + L += P + var/replace_num = L.len + 1 - DISEASE_LIMIT if(replace_num > 0) - //see if we are more transmittable than enough diseases to replace them - //diseases replaced in this way do not confer immunity - var/list/L = list() - for(var/datum/disease/advance/P in infectee.diseases) - L += P sortTim(L, /proc/cmp_advdisease_resistance_asc) var/datum/disease/advance/competition = L[replace_num] if(totalTransmittable() > competition.totalResistance()) From 549f5ceea6b18cf8ac987ac96a489cd19038d1f3 Mon Sep 17 00:00:00 2001 From: XDTM Date: Thu, 28 Jun 2018 10:18:44 +0200 Subject: [PATCH 2/2] better code --- code/datums/diseases/advance/advance.dm | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 2d1a4427702..f506f44ad55 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -58,20 +58,18 @@ /datum/disease/advance/try_infect(var/mob/living/infectee, make_copy = TRUE) //see if we are more transmittable than enough diseases to replace them //diseases replaced in this way do not confer immunity - var/list/L = list() + var/list/advance_diseases = list() for(var/datum/disease/advance/P in infectee.diseases) - L += P - var/replace_num = L.len + 1 - DISEASE_LIMIT + advance_diseases += P + var/replace_num = advance_diseases.len + 1 - DISEASE_LIMIT //amount of diseases that need to be removed to fit this one if(replace_num > 0) - sortTim(L, /proc/cmp_advdisease_resistance_asc) - var/datum/disease/advance/competition = L[replace_num] - if(totalTransmittable() > competition.totalResistance()) - for(var/i in 1 to replace_num) - var/datum/disease/advance/A = L[replace_num] - A.cure(FALSE) - else - //we are not strong enough to bully our way in - return FALSE + sortTim(advance_diseases, /proc/cmp_advdisease_resistance_asc) + for(var/i in 1 to replace_num) + var/datum/disease/advance/competition = advance_diseases[i] + if(totalTransmittable() > competition.totalResistance()) + competition.cure(FALSE) + else + return FALSE //we are not strong enough to bully our way in infect(infectee, make_copy) return TRUE