diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index aab766f9e4e..e94fc9f4b00 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -605,6 +605,18 @@ Turf and target are separate in case you want to teleport some distance from a t GLOB.sortedAreas.Add(src) sortTim(GLOB.sortedAreas, /proc/cmp_name_asc) +//Takes: Area type as a text string from a variable. +//Returns: Instance for the area in the world. +/proc/get_area_instance_from_text(areatext) + var/areainstance = null + if(istext(areatext)) + areatext = text2path(areatext) + for(var/V in GLOB.sortedAreas) + var/area/A = V + if(A.type == areatext) + areainstance = V + return areainstance + //Takes: Area type as text string or as typepath OR an instance of the area. //Returns: A list of all areas of that type in the world. /proc/get_areas(areatype, subtypes=TRUE) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 4628ab8c7b9..f88578bbf9c 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -669,7 +669,7 @@ return if(control_area) - control_area = locate(text2path(control_area)) in GLOB.sortedAreas + control_area = get_area_instance_from_text(control_area) if(control_area == null) control_area = get_area(src) stack_trace("Bad control_area path for [src], [src.control_area]") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 907f3791b84..28882a0c7e8 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -178,7 +178,7 @@ //if area isn't specified use current if(areastring) - src.area = locate(text2path(areastring)) in GLOB.sortedAreas + src.area = get_area_instance_from_text(areastring) if(!src.area) src.area = A stack_trace("Bad areastring path for [src], [src.areastring]")