diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index aab766f9e4..e94fc9f4b0 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.rej b/code/game/machinery/porta_turret/portable_turret.dm.rej new file mode 100644 index 0000000000..c91133b09c --- /dev/null +++ b/code/game/machinery/porta_turret/portable_turret.dm.rej @@ -0,0 +1,14 @@ +diff a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm (rejected hunks) +@@ -669,11 +669,7 @@ + return + + if(control_area) +- control_area = text2path(control_area) //resolves the string to path, then filters out instances generated by subtypes of the path in sortedAreas +- for(var/V in GLOB.sortedAreas) +- var/area/B = V +- if(B.type == control_area) +- control_area = V ++ 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.rej b/code/modules/power/apc.dm.rej new file mode 100644 index 0000000000..0164f12908 --- /dev/null +++ b/code/modules/power/apc.dm.rej @@ -0,0 +1,14 @@ +diff a/code/modules/power/apc.dm b/code/modules/power/apc.dm (rejected hunks) +@@ -178,11 +178,7 @@ + + //if area isn't specified use current + if(areastring) +- areastring = text2path(areastring) //resolves the string to path, then filters out instances generated by subtypes of the path in sortedAreas +- for(var/V in GLOB.sortedAreas) +- var/area/B = V +- if(B.type == areastring) +- src.area = V ++ src.area = get_area_instance_from_text(areastring) + if(!src.area) + src.area = A + stack_trace("Bad areastring path for [src], [src.areastring]")