From 29777f25e5268dd7789ba198cfc9d88f33adb5bc Mon Sep 17 00:00:00 2001
From: Ghommie <42542238+Ghommie@users.noreply.github.com>
Date: Sun, 27 Oct 2019 11:55:11 +0100
Subject: [PATCH 1/2] stop cyborg from interacting with objects out of their
FoV, lil camera console fix
---
code/game/machinery/computer/camera.dm | 54 ++++++-------------
.../modules/mob/living/silicon/robot/robot.dm | 2 +-
2 files changed, 17 insertions(+), 39 deletions(-)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 7dcd85d310..3a2e0cbfb7 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -17,7 +17,7 @@
network += lowertext(i)
/obj/machinery/computer/security/check_eye(mob/user)
- if( (stat & (NOPOWER|BROKEN)) || user.incapacitated() || user.eye_blind )
+ if(CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !user.canUseTopic(src, !issilicon(user), FALSE))
user.unset_machine()
return
if(!(user in watchers))
@@ -30,14 +30,6 @@
if(!C.can_use())
user.unset_machine()
return
- if(!issilicon(user))
- if(!Adjacent(user))
- user.unset_machine()
- return
- else if(iscyborg(user))
- var/list/viewing = viewers(src)
- if(!viewing.Find(user))
- user.unset_machine()
/obj/machinery/computer/security/on_unset_machine(mob/user)
watchers.Remove(user)
@@ -97,36 +89,22 @@
user.unset_machine()
playsound(src, 'sound/machines/terminal_off.ogg', 25, 0)
return
- if(C)
- var/camera_fail = 0
- if(!C.can_use() || user.machine != src || user.eye_blind || user.incapacitated())
- camera_fail = 1
- else if(iscyborg(user))
- var/list/viewing = viewers(src)
- if(!viewing.Find(user))
- camera_fail = 1
- else if(!issilicon(user))
- if(!Adjacent(user))
- camera_fail = 1
-
- if(camera_fail)
- user.unset_machine()
- return 0
-
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0)
- if(isAI(user))
- var/mob/living/silicon/ai/A = user
- A.eyeobj.setLoc(get_turf(C))
- A.client.eye = A.eyeobj
- else
- user.reset_perspective(C)
- user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
- user.clear_fullscreen("flash", 5)
- watchers[user] = C
- use_power(50)
- addtimer(CALLBACK(src, .proc/use_camera_console, user), 5)
- else
+ if(!C || !C.can_use() || CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !user.canUseTopic(src, !issilicon(user), FALSE))
user.unset_machine()
+ return FALSE
+
+ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0)
+ if(isAI(user))
+ var/mob/living/silicon/ai/A = user
+ A.eyeobj.setLoc(get_turf(C))
+ A.client.eye = A.eyeobj
+ else
+ user.reset_perspective(C)
+ user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
+ user.clear_fullscreen("flash", 5)
+ watchers[user] = C
+ use_power(50)
+ addtimer(CALLBACK(src, .proc/use_camera_console, user), 5)
//returns the list of cameras accessible from this computer
/obj/machinery/computer/security/proc/get_available_cameras()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 5b670aaa42..56f9971f4c 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -942,7 +942,7 @@
if(be_close && !in_range(M, src))
to_chat(src, "You are too far away!")
return FALSE
- return TRUE
+ return can_see(M) //stop cyborgs from using things they have lost vision of.
/mob/living/silicon/robot/updatehealth()
..()
From 9608b437b459abdedf0070127a74e38fbb07815d Mon Sep 17 00:00:00 2001
From: Ghommie <42542238+Ghommie@users.noreply.github.com>
Date: Sun, 27 Oct 2019 12:18:49 +0100
Subject: [PATCH 2/2] I need to fix the camera bug later... thing has been
borked for one year.
---
code/game/machinery/computer/camera.dm | 4 ++--
code/modules/mob/living/silicon/robot/robot.dm | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 3a2e0cbfb7..11935e2bfc 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -17,7 +17,7 @@
network += lowertext(i)
/obj/machinery/computer/security/check_eye(mob/user)
- if(CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !user.canUseTopic(src, !issilicon(user), FALSE))
+ if(CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !in_view_range(user, src) || !user.canUseTopic(src, !issilicon(user), FALSE))
user.unset_machine()
return
if(!(user in watchers))
@@ -89,7 +89,7 @@
user.unset_machine()
playsound(src, 'sound/machines/terminal_off.ogg', 25, 0)
return
- if(!C || !C.can_use() || CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !user.canUseTopic(src, !issilicon(user), FALSE))
+ if(!C || !C.can_use() || CHECK_BITFIELD(stat, NOPOWER|BROKEN) || is_blind(user) || !in_view_range(user, src) || !user.canUseTopic(src, !issilicon(user), FALSE))
user.unset_machine()
return FALSE
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 56f9971f4c..5b670aaa42 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -942,7 +942,7 @@
if(be_close && !in_range(M, src))
to_chat(src, "You are too far away!")
return FALSE
- return can_see(M) //stop cyborgs from using things they have lost vision of.
+ return TRUE
/mob/living/silicon/robot/updatehealth()
..()