diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm
index 299371a59c7..5488aaa7c56 100644
--- a/code/game/machinery/computer/teleporter.dm
+++ b/code/game/machinery/computer/teleporter.dm
@@ -29,6 +29,7 @@
for(var/direction in GLOB.cardinals)
power_station = locate(/obj/machinery/teleport/station, get_step(src, direction))
if(power_station)
+ power_station.link_console_and_hub()
break
return power_station
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index e51a6315914..563b8b23e6e 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -42,6 +42,7 @@
for(var/direction in GLOB.cardinals)
power_station = locate(/obj/machinery/teleport/station, get_step(src, direction))
if(power_station)
+ power_station.link_console_and_hub()
break
return power_station
@@ -132,7 +133,7 @@
if(!panel_open)
. += "The panel is screwed in, obstructing the linking device and wiring panel."
else
- . += "The linking device is now able to be scanned with a multitool.
The wiring can be connected to a nearby console and hub with a pair of wirecutters."
+ . += "The linking device is now able to be scanned with a multitool."
if(in_range(user, src) || isobserver(user))
. += "The status display reads: This station can be linked to [efficiency] other station(s)."
@@ -183,12 +184,6 @@
else if(default_deconstruction_crowbar(W))
return
-
- else if(W.tool_behaviour == TOOL_WIRECUTTER)
- if(panel_open)
- link_console_and_hub()
- to_chat(user, "You reconnect the station to nearby machinery.")
- return
else
return ..()
diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm
index c4f0bca6394..88226a647ed 100644
--- a/code/modules/unit_tests/_unit_tests.dm
+++ b/code/modules/unit_tests/_unit_tests.dm
@@ -49,6 +49,7 @@
#include "stomach.dm"
#include "subsystem_init.dm"
#include "surgeries.dm"
+#include "teleporters.dm"
#include "timer_sanity.dm"
#include "unit_test.dm"
diff --git a/code/modules/unit_tests/teleporters.dm b/code/modules/unit_tests/teleporters.dm
new file mode 100644
index 00000000000..fa2624adaa0
--- /dev/null
+++ b/code/modules/unit_tests/teleporters.dm
@@ -0,0 +1,10 @@
+/datum/unit_test/auto_teleporter_linking/Run()
+ // Put down the teleporter machinery
+ var/obj/machinery/teleport/hub/hub = allocate(/obj/machinery/teleport/hub)
+ var/obj/machinery/teleport/station/station = allocate(/obj/machinery/teleport/station, locate(run_loc_bottom_left.x + 1, run_loc_bottom_left.y, run_loc_bottom_left.z))
+ var/obj/machinery/computer/teleporter/computer = allocate(/obj/machinery/computer/teleporter, locate(run_loc_bottom_left.x + 2, run_loc_bottom_left.y, run_loc_bottom_left.z))
+
+ TEST_ASSERT_EQUAL(hub.power_station, station, "Hub didn't link to the station")
+ TEST_ASSERT_EQUAL(station.teleporter_console, computer, "Station didn't link to the teleporter console")
+ TEST_ASSERT_EQUAL(station.teleporter_hub, hub, "Station didn't link to the hub")
+ TEST_ASSERT_EQUAL(computer.power_station, station, "Teleporter console didn't link to the hub")