From bccaea11c9d4c05fad28fec963380624b33e0feb Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 11 Aug 2012 01:05:14 -0700 Subject: [PATCH] Some more minor improvements. --- code/ZAS/Functions.dm | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/code/ZAS/Functions.dm b/code/ZAS/Functions.dm index 0251e787dca..6d40eec83ed 100644 --- a/code/ZAS/Functions.dm +++ b/code/ZAS/Functions.dm @@ -18,7 +18,7 @@ proc/FloodFill(turf/start) for(var/d in cardinal) var/turf/O = get_step(T,d) //Simple pass check. - if(istype(O) && !(O in open || O in closed) && O.ZCanPass(T)) + if(istype(O) && !(O in open || O in closed || O in doors) && O.ZCanPass(T)) open += O else doors |= T @@ -28,28 +28,29 @@ proc/FloodFill(turf/start) open -= T closed += T - for(var/turf/T in doors) - var/force_connection = 1 - var/turf/simulated/O = get_step(T,NORTH) - if(O in closed) - closed += T - continue - else if(T.ZCanPass(O) && istype(O)) - force_connection = 0 - - O = get_step(T,WEST) - if(O in closed) - closed += T - continue - else if(force_connection && T.ZCanPass(O) && istype(O)) - force_connection = 0 - - if(force_connection) - O = get_step(T,SOUTH) + if(closed.len) + for(var/turf/T in doors) + var/force_connection = 1 + var/turf/simulated/O = get_step(T,NORTH) if(O in closed) closed += T - else if((!T.ZCanPass(O) || !istype(O)) && get_step(T,EAST) in closed) + continue + else if(T.ZCanPass(O) && istype(O)) + force_connection = 0 + + O = get_step(T,WEST) + if(O in closed) closed += T + continue + else if(force_connection && T.ZCanPass(O) && istype(O)) + force_connection = 0 + + if(force_connection) + O = get_step(T,SOUTH) + if(O in closed) + closed += T + else if((!T.ZCanPass(O) || !istype(O)) && get_step(T,EAST) in closed) + closed += T return closed