diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 86f8807c590..5993bf3464f 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -339,12 +339,4 @@ return 0 return 1 busy = 0 - return 0 - -/obj/machinery/camera/proc/check_AI_light(var/mob/living/silicon/ai/AI) - if ((src in range(6, AI.eyeobj)) && AI.camera_light_on && !light_disabled) - SetLuminosity(AI_CAMERA_LUMINOSITY) - spawn (5) - check_AI_light(AI) - else - SetLuminosity(0) \ No newline at end of file + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index e16f7feabbb..b1cdf016494 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -46,6 +46,7 @@ var/list/ai_list = list() var/mob/living/silicon/ai/parent = null var/camera_light_on = 0 + var/list/obj/machinery/camera/lit_cameras = list() var/datum/trackable/track = null @@ -644,18 +645,24 @@ var/list/ai_list = list() src << "Camera lights activated." return +//AI_CAMERA_LUMINOSITY + /mob/living/silicon/ai/proc/light_cameras() - if (!camera_light_on) - return + var/list/obj/machinery/camera/add = list() + var/list/obj/machinery/camera/remove = list() + var/list/obj/machinery/camera/visible = list() + for (var/datum/camerachunk/CC in eyeobj.visibleCameraChunks) + for (var/obj/machinery/camera/C in CC.cameras) + if (!C.can_use() || C.light_disabled || get_dist(C, eyeobj) > 7) + continue + visible |= C - for(var/obj/machinery/camera/C in range(7, src.eyeobj)) - if (!C.can_use()) - continue - if (C.luminosity > 0) - continue - if (C.light_disabled) - continue - C.check_AI_light(src) + add = visible - lit_cameras + remove = lit_cameras - visible - spawn (5) - light_cameras() \ No newline at end of file + for (var/obj/machinery/camera/C in remove) + C.SetLuminosity(0) + lit_cameras -= C + for (var/obj/machinery/camera/C in add) + C.SetLuminosity(AI_CAMERA_LUMINOSITY) + lit_cameras |= C \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index a80d6a54271..1faa3934eac 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -90,6 +90,8 @@ //user.unset_machine() //Uncomment this if it causes problems. //user.lightNearbyCamera() + if (user.camera_light_on) + user.light_cameras() // Return to the Core.