diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm index 6773053b46b..56a47d5bdbb 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm @@ -3499,7 +3499,8 @@ }, /obj/item/circuitboard/computer/rdconsole, /obj/structure/frame/computer{ - dir = 8 + dir = 8; + anchored = 1 }, /obj/machinery/airalarm/directional/east, /obj/effect/mapping_helpers/airalarm/syndicate_access, diff --git a/modular_skyrat/master_files/code/controllers/subsystem/research.dm b/modular_skyrat/master_files/code/controllers/subsystem/research.dm new file mode 100644 index 00000000000..e091808d826 --- /dev/null +++ b/modular_skyrat/master_files/code/controllers/subsystem/research.dm @@ -0,0 +1,20 @@ +/** + * Sorts the get_available_servers() returned list by closest server source location + * Returns the closest server found as a single entity list. + */ +/datum/controller/subsystem/research/get_available_servers(turf/location) + var/list/local_servers = ..() + if(local_servers && (length(local_servers) > 1) && !is_station_level(location.z)) /// If there was more than 1 valid server located off-station, find closest server + var/server_distance_closest = INFINITY + var/server_distance_current = INFINITY + var/obj/machinery/rnd/server/closest_server = local_servers[1] + + for (var/obj/machinery/rnd/server/individual_server as anything in local_servers) + if(location.z != individual_server.z) /// Not on the same z level, skip + continue + server_distance_current = get_dist(location, get_turf(individual_server)) + if(server_distance_closest > server_distance_current) /// This is closer than the last server we tested + server_distance_closest = server_distance_current + closest_server = individual_server + return list(closest_server) + return local_servers diff --git a/tgstation.dme b/tgstation.dme index e84d081e917..3016bcfd285 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6313,6 +6313,7 @@ #include "modular_skyrat\master_files\code\controllers\subsystem\dbcore.dm" #include "modular_skyrat\master_files\code\controllers\subsystem\events.dm" #include "modular_skyrat\master_files\code\controllers\subsystem\language.dm" +#include "modular_skyrat\master_files\code\controllers\subsystem\research.dm" #include "modular_skyrat\master_files\code\datums\ai_laws.dm" #include "modular_skyrat\master_files\code\datums\emotes.dm" #include "modular_skyrat\master_files\code\datums\ert.dm"