diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 932d46b6c0c..9b7af34349f 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -401,7 +401,9 @@ if(!calibrated && com.cc_beacon) visible_message("Cannot lock on target. Please calibrate the teleporter before attempting long range teleportation.") else if(!calibrated && prob(25 - ((accurate) * 10)) && !com.cc_beacon) //oh dear a problem - . = do_teleport(M, locate(rand((2*TRANSITIONEDGE), world.maxx - (2*TRANSITIONEDGE)), rand((2*TRANSITIONEDGE), world.maxy - (2*TRANSITIONEDGE)), 3), 2, bypass_area_flag = com.area_bypass) + var/list/target_z = levels_by_trait(REACHABLE) + target_z -= M.z //Where to sir? Anywhere but here. + . = do_teleport(M, locate(rand((2*TRANSITIONEDGE), world.maxx - (2*TRANSITIONEDGE)), rand((2*TRANSITIONEDGE), world.maxy - (2*TRANSITIONEDGE)), pick(target_z)), 2, bypass_area_flag = com.area_bypass) else . = do_teleport(M, com.target, bypass_area_flag = com.area_bypass) calibrated = FALSE