From 9ef64611b8c3963617b0108a5a50eb1c135bfa41 Mon Sep 17 00:00:00 2001 From: Citinited Date: Mon, 24 Jul 2017 04:46:55 +0100 Subject: [PATCH 1/2] Video cameras can no longer cheese the gateway --- code/game/machinery/computer/camera.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 2cb5b8a46a2..c7af1426367 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -46,6 +46,12 @@ M.unset_machine() //to properly reset the view of the users if the console is deleted. return ..() +/obj/machinery/computer/security/proc/isFarAway(var/atom/C) + var/turf/CONSOLETURF = get_turf(C) + var/turf/T = get_turf(src) + if((is_away_level(T.z) || is_away_level(CONSOLETURF.z)) && !atoms_share_level(T, CONSOLETURF)) //can only recieve away mission cameras on away missions + return TRUE + /obj/machinery/computer/security/check_eye(mob/user) if(!(user in watchers)) user.unset_machine() @@ -54,6 +60,9 @@ user.unset_machine() return var/obj/machinery/camera/C = watchers[user] + if(isFarAway(C)) + user.unset_machine() + return if(!can_access_camera(C, user)) user.unset_machine() return @@ -113,7 +122,7 @@ var/list/cameras = list() for(var/obj/machinery/camera/C in cameranet.cameras) - if((is_away_level(z) || is_away_level(C.z)) && !atoms_share_level(C, src)) //can only recieve away mission cameras on away missions + if(isFarAway(C)) continue if(!can_access_camera(C, user)) continue From 89b494b90d59bcecb70a1e8c9fa85f52da512edc Mon Sep 17 00:00:00 2001 From: Citinited Date: Sun, 6 Aug 2017 01:33:36 +0100 Subject: [PATCH 2/2] Typecasting --- code/game/machinery/computer/camera.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index c7af1426367..36647ebfc16 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -46,10 +46,10 @@ M.unset_machine() //to properly reset the view of the users if the console is deleted. return ..() -/obj/machinery/computer/security/proc/isFarAway(var/atom/C) - var/turf/CONSOLETURF = get_turf(C) - var/turf/T = get_turf(src) - if((is_away_level(T.z) || is_away_level(CONSOLETURF.z)) && !atoms_share_level(T, CONSOLETURF)) //can only recieve away mission cameras on away missions +/obj/machinery/computer/security/proc/isCameraFarAway(obj/machinery/camera/C) + var/turf/consoleturf = get_turf(src) + var/turf/cameraturf = get_turf(C) + if((is_away_level(cameraturf.z) || is_away_level(consoleturf.z)) && !atoms_share_level(cameraturf, consoleturf)) //can only recieve away mission cameras on away missions return TRUE /obj/machinery/computer/security/check_eye(mob/user) @@ -60,7 +60,7 @@ user.unset_machine() return var/obj/machinery/camera/C = watchers[user] - if(isFarAway(C)) + if(isCameraFarAway(C)) user.unset_machine() return if(!can_access_camera(C, user)) @@ -122,7 +122,7 @@ var/list/cameras = list() for(var/obj/machinery/camera/C in cameranet.cameras) - if(isFarAway(C)) + if(isCameraFarAway(C)) continue if(!can_access_camera(C, user)) continue