diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index 2d410d7cf92..86d32b10cbb 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -117,6 +117,10 @@ /datum/component/infective/proc/try_infect_streak(datum/source, list/directions, list/output_diseases) SIGNAL_HANDLER + // This blood is not infectable / does not have a diseases list + if(!islist(output_diseases)) + return + output_diseases |= diseases /datum/component/infective/proc/try_infect(mob/living/L, target_zone) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 1bff969d368..eb73859425a 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -116,6 +116,10 @@ . = ..() RegisterSignal(src, COMSIG_MOVABLE_PIPE_EJECTING, .proc/on_pipe_eject) +/obj/effect/decal/cleanable/blood/gibs/Destroy() + LAZYNULL(streak_diseases) + return ..() + /obj/effect/decal/cleanable/blood/gibs/replace_decal(obj/effect/decal/cleanable/C) return FALSE //Never fail to place us @@ -145,9 +149,9 @@ streak(dirs) /obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions, mapload=FALSE) + LAZYINITLIST(streak_diseases) SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, streak_diseases) var/direction = pick(directions) - streak_diseases = list() var/delay = 2 var/range = pick(0, 200; 1, 150; 2, 50; 3, 17; 50) //the 3% chance of 50 steps is intentional and played for laughs. if(!step_to(src, get_step(src, direction), 0))