diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 57a550f52c1f..3c84ab55548c 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -36,12 +36,14 @@ /datum/job/cyborg/proc/get_random_open_turf_in_area() var/list/turfs = get_area_turfs(/area/station/ai_monitored/turret_protected/ai_upload) - var/turf/open/target_turf = null - while(!target_turf) - var/turf/turf = pick(turfs) - if(!turf.density) - target_turf = turf - return target_turf + while(length(turfs)) + var/turf/turf = pick_n_take(turfs) + if(!isfloorturf(turf) || turf.is_blocked_turf(exclude_mobs = TRUE)) + continue + return turf + stack_trace("Failed to find eligible spawn turf for a cyborg, using observer start landmark instead.") + var/obj/effect/landmark/observer_start/target = locate(/obj/effect/landmark/observer_start) in GLOB.landmarks_list + return get_turf(target) /datum/job/cyborg/after_spawn(mob/living/spawned, client/player_client) . = ..()