diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm index 9b490803820..a2d476c8814 100644 --- a/code/modules/atmospherics/environmental/LINDA_system.dm +++ b/code/modules/atmospherics/environmental/LINDA_system.dm @@ -67,18 +67,17 @@ var/turf/T = get_step(src, direction) if(!istype(T)) continue - var/counterdir = get_dir(T, src) if(CanAtmosPass(T)) atmos_adjacent_turfs_amount += 1 - atmos_adjacent_turfs |= direction - if(!(T.atmos_adjacent_turfs & counterdir)) + atmos_adjacent_turfs |= T + if(!(src in T.atmos_adjacent_turfs)) T.atmos_adjacent_turfs_amount += 1 - T.atmos_adjacent_turfs |= counterdir + T.atmos_adjacent_turfs |= src else - atmos_adjacent_turfs &= ~direction - if(T.atmos_adjacent_turfs & counterdir) + atmos_adjacent_turfs -= T + if(src in T.atmos_adjacent_turfs) T.atmos_adjacent_turfs_amount -= 1 - T.atmos_adjacent_turfs &= ~counterdir + T.atmos_adjacent_turfs -= src //returns a list of adjacent turfs that can share air with this one. //alldir includes adjacent diagonal tiles that can share @@ -86,28 +85,20 @@ /turf/proc/GetAtmosAdjacentTurfs(alldir = 0) if (!istype(src, /turf/simulated)) return list() - - var/adjacent_turfs = list() - - var/turf/simulated/curloc = src - for (var/direction in cardinal) - if(!(curloc.atmos_adjacent_turfs & direction)) - continue - - var/turf/simulated/S = get_step(curloc, direction) - if (istype(S)) - adjacent_turfs += S + + var/adjacent_turfs = atmos_adjacent_turfs.Copy() if (!alldir) - return adjacent_turfs + return adjacent_turfs() + var/turf/simulated/curloc = src for (var/direction in diagonals) var/matchingDirections = 0 var/turf/simulated/S = get_step(curloc, direction) for (var/checkDirection in cardinal) - if(!(S.atmos_adjacent_turfs & checkDirection)) - continue var/turf/simulated/checkTurf = get_step(S, checkDirection) + if(!(checkTurf in S.atmos_adjacent_turfs)) + continue if (checkTurf in adjacent_turfs) matchingDirections++ @@ -190,4 +181,4 @@ var/const/SPAWN_AIR = 256 new_gases["n2"][MOLES] += MOLES_N2STANDARD * amount air.merge(G) - SSair.add_to_active(src, 0) \ No newline at end of file + SSair.add_to_active(src, 0)