From 7dbef5fc1d87cc894d82f43083d0d2b59ea57a1c Mon Sep 17 00:00:00 2001
From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Date: Mon, 20 Apr 2026 03:29:03 +0530
Subject: [PATCH] [NO GBP] Fixes AI Camera mode being limited by range (#95741)
## About The Pull Request
- Fixes #95738
## Changelog
:cl:
fix: AI camera mode works from any distances
/:cl:
---
code/modules/photography/camera/camera.dm | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index 00815854fbe..e62f4c4ffe8 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -137,6 +137,7 @@
to_chat(user, span_notice("The dimensions of the picture will be [EXAMINE_HINT("[APERTURE_TO_METERS(picture_size_x)]x[APERTURE_TO_METERS(picture_size_y)]")]"))
return TRUE
+
/// Resets flash to be used again
/obj/item/camera/proc/cooldown()
PRIVATE_PROC(TRUE)
@@ -211,21 +212,21 @@
//Checking if we can target
var/turf/target_turf = get_turf(target)
+ var/view_size = user?.client?.view || world.view
if(isnull(target_turf))
return
- if(isAI(user) && !SScameras.is_visible_by_cameras(target_turf))
- return
- if(isliving(loc) && !(target_turf in view(world.view, loc)))
- return
- if(!(target_turf in view(world.view, user || src)))
+ if(isAI(user))
+ if(!SScameras.is_visible_by_cameras(target_turf))
+ return
+ else if(!(target_turf in view(view_size, user)))
return
//These vars will be reused later on
var/size_x = picture_size_x - 1
var/size_y = picture_size_y - 1
- var/list/viewlist = getviewsize(user?.client?.view || world.view)
+ var/list/viewlist = getviewsize(view_size)
var/view_range = max(viewlist[1], viewlist[2]) + max(size_x, size_y)
- var/viewer = get_turf(user?.client?.eye || user || target) // not sure why target is a fallback
+ var/viewer = get_turf(user?.client?.eye || user)
var/list/seen = get_hear_turfs(view_range, viewer)
if(!(target_turf in seen))
return
@@ -286,7 +287,7 @@
continue
names += "[person.name]"
- var/datum/picture/picture = new("picture", desc.Join("
"), mobs_spotted, dead_spotted, names, get_icon, null, width * ICON_SIZE_X, height * ICON_SIZE_X, blueprints, can_see_ghosts = see_ghosts)
+ var/datum/picture/picture = new("picture", desc.Join("
"), mobs_spotted, dead_spotted, names, get_icon, null, width * ICON_SIZE_X, height * ICON_SIZE_Y, blueprints, can_see_ghosts = see_ghosts)
after_picture(user, picture)
SEND_SIGNAL(src, COMSIG_CAMERA_IMAGE_CAPTURED, target, user, picture)
blending = FALSE