diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 786deaa56a..02ce509970 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -83,12 +83,23 @@ if(!eyeobj.eye_initialized) var/camera_location - for(var/obj/machinery/camera/C in GLOB.cameranet.cameras) - if(!C.can_use() || z_lock.len && !(C.z in z_lock)) - continue - if(C.network & networks) - camera_location = get_turf(C) - break + var/turf/myturf = get_turf(src) + if(eyeobj.use_static) + if((!z_lock.len || (myturf.z in z_lock)) && GLOB.cameranet.checkTurfVis(myturf)) + camera_location = myturf + else + for(var/obj/machinery/camera/C in GLOB.cameranet.cameras) + if(!C.can_use() || z_lock.len && !(C.z in z_lock)) + continue + var/list/network_overlap = networks & C.network + if(network_overlap.len) + camera_location = get_turf(C) + break + else + camera_location = myturf + if(z_lock.len && !(myturf.z in z_lock)) + camera_location = locate(round(world.maxx/2), round(world.maxy/2), z_lock[1]) + if(camera_location) eyeobj.eye_initialized = TRUE give_eye_control(L) diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 263901a763..15257a62a1 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -173,7 +173,10 @@ var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj var/turf/eyeturf = get_turf(the_eye) if(!eyeturf) - return + return SHUTTLE_DOCKER_BLOCKED + if(z_lock.len && !(eyeturf.z in z_lock)) + return SHUTTLE_DOCKER_BLOCKED + . = SHUTTLE_DOCKER_LANDING_CLEAR var/list/bounds = shuttle_port.return_coords(the_eye.x - x_offset, the_eye.y - y_offset, the_eye.dir) var/list/overlappers = SSshuttle.get_dock_overlap(bounds[1], bounds[2], bounds[3], bounds[4], the_eye.z)