From d859e3a6370add6e5d2cc522a4a04b73263164a2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 17:18:06 -0500 Subject: [PATCH] Diseases can now only spread to mobs with an atmos line of sight --- code/datums/diseases/_disease.dm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index fbf6af136e..cc11d0e6d2 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -115,12 +115,19 @@ else return - if(isturf(source.loc)) + var/turf/T = source.loc + if(istype(T)) for(var/mob/living/carbon/C in oview(spread_range, source)) - if(isturf(C.loc)) - if(AStar(source, C.loc,/turf/proc/Distance, spread_range, adjacent = (spread_flags & AIRBORNE) ? /turf/proc/reachableAdjacentAtmosTurfs : /turf/proc/reachableAdjacentTurfs)) - C.ContractDisease(src) - + var/turf/V = get_turf(C) + if(V) + while(TRUE) + if(V == T) + C.ContractDisease(src) + break + var/turf/Temp = get_step_towards(V, T) + if(!CANATMOSPASS(V, Temp)) + break + V = Temp /datum/disease/process() if(!holder)