From 2bd13e700a32b91c5abff06b486e97152e1c72fb Mon Sep 17 00:00:00 2001 From: xxalpha Date: Wed, 3 Feb 2016 06:47:48 +0000 Subject: [PATCH] get_areas_in_range() nospace wormhole --- code/__HELPERS/unsorted.dm | 13 +++++++++++++ code/datums/diseases/wizarditis.dm | 7 +++---- code/game/mecha/equipment/tools/other_tools.dm | 8 +++----- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 20d35846a87..336648791af 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1175,6 +1175,19 @@ B --><-- A return L +/proc/get_areas_in_range(dist=0, atom/center=usr) + if(!dist) + var/turf/T = get_turf(center) + return T ? list(T.loc) : list() + if(!center) + return list() + + var/list/turfs = RANGE_TURFS(dist, center) + var/list/areas = list() + for(var/V in turfs) + var/turf/T = V + areas |= T.loc + return areas /atom/proc/contains(var/atom/A) if(!A) diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index 5e9043f8d04..25c73a7f0ed 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -87,10 +87,9 @@ STI KALY - blind /datum/disease/wizarditis/proc/teleport() - var/list/theareas = list() - for(var/area/AR in ultra_range(80, affected_mob, 1)) - if(theareas.Find(AR) || istype(AR,/area/space)) continue - theareas += AR + var/list/theareas = get_areas_in_range(80, affected_mob) + for(var/area/space/S in theareas) + theareas -= S if(!theareas||!theareas.len) return diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index a1ce789e73a..60b088ebc97 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -35,11 +35,9 @@ /obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(atom/target) - if(!action_checks(target) || src.loc.z == ZLEVEL_CENTCOM) return - var/list/theareas = list() - for(var/area/AR in ultra_range(100, chassis, 1)) - if(AR in theareas) continue - theareas += AR + if(!action_checks(target) || src.loc.z == ZLEVEL_CENTCOM) + return + var/list/theareas = get_areas_in_range(100, chassis) if(!theareas.len) return var/area/thearea = pick(theareas)