diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 1f33bb83ca..2373284060 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -49,6 +49,9 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) /datum/disease/proc/infect(mob/living/infectee, make_copy = TRUE) var/datum/disease/D = make_copy ? Copy() : src + if(infectee.HasDisease(D)) + qdel(D) + return infectee.addDisease(D) D.affected_mob = infectee GLOB.active_diseases += D diff --git a/code/modules/reagents/reagents/core.dm b/code/modules/reagents/reagents/core.dm index 6f11548133..12d37b0af3 100644 --- a/code/modules/reagents/reagents/core.dm +++ b/code/modules/reagents/reagents/core.dm @@ -88,6 +88,8 @@ var/datum/disease/D = ID if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) continue + if(M.HasDisease(D)) + continue D.try_infect(M) /datum/reagent/blood/affect_touch(mob/living/carbon/M, alien, removed)