From 40beaad0b380d4c62cd7c1da9176aee240c2becf Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 16 Apr 2024 04:19:29 +0200 Subject: [PATCH] [MIRROR] Moves the GPS component from the upload computers and communications console to the boards themselves when used (#27291) * Moves the GPS component from the upload computers and communications console to the boards themselves when used (#82574) ## About The Pull Request Moves the GPS component on Upload computers and Communications Console to be handled from the board, not the machine, when a board is used to modify the AI or used to login. ## Why It's Good For The Game Quite frankely, the mechanic already exists. But it does not work due to the component being attatched to the computer. Currently it's intended for these critical computers to give GPS signals because they can be taken, and built extremely easily, anywhere, and deconstructed. Especially the upload boards, since the AI and borgs are directly in the center of it when people keep subverting and fixing laws. This is extremely annoying for the silicons. On top of that, you building a communications console to hack in maint somewhere will leave some sort of a trace to justify the reward. Yes, they have a computer that sends out the GPS signal. But anyone with a brain could realize all that's needed to circumvent this mechanic is the use of a screwdriver. Now, the GPS is registered on the boards themselves. The boards get stored in the contents of the computer. You can't circumvent this now. ## Changelog :cl: balance: The upload and communication boards directly have trackers installed, activated only when authenticated. /:cl: --------- Co-authored-by: Jacquerel * Moves the GPS component from the upload computers and communications console to the boards themselves when used --------- Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Co-authored-by: Jacquerel --- code/game/machinery/computer/_computer.dm | 10 ++++++++++ code/game/machinery/computer/communications.dm | 3 ++- code/game/machinery/computer/law.dm | 2 +- .../items/circuitboards/computer_circuitboards.dm | 5 +++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index ec4971ddab6..f9158d21996 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -87,6 +87,16 @@ playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE) set_light(0) +/obj/machinery/computer/proc/imprint_gps(gps_tag) // Currently used by the upload computers and communications console + var/tracker = gps_tag + if(!tracker) // Don't give a null GPS signal if there is none + return + for(var/obj/item/circuitboard/computer/board in src.contents) + if(!contents || board.GetComponent(/datum/component/gps)) + return + board.AddComponent(/datum/component/gps, "[tracker]") + balloon_alert_to_viewers("board tracker enabled", vision_distance = 1) + /obj/machinery/computer/emp_act(severity) . = ..() if (!(. & EMP_PROTECT_SELF)) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 9dd2deaaeb6..caa3452626e 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -98,7 +98,6 @@ GLOBAL_VAR_INIT(cops_arrived, FALSE) REGISTER_REQUIRED_MAP_ITEM(1, INFINITY) GLOB.shuttle_caller_list += src - AddComponent(/datum/component/gps, "Secured Communications Signal") /// Are we NOT a silicon, AND we're logged in as the captain? /obj/machinery/computer/communications/proc/authenticated_as_non_silicon_captain(mob/user) @@ -445,6 +444,8 @@ GLOBAL_VAR_INIT(cops_arrived, FALSE) state = STATE_MAIN playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE) + imprint_gps(gps_tag = "Encrypted Communications Channel") + if ("toggleEmergencyAccess") if(emergency_access_cooldown(usr)) //if were in cooldown, dont allow the following code return diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 372d75822b7..816177f9f0e 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -7,7 +7,6 @@ /obj/machinery/computer/upload/Initialize(mapload) . = ..() - AddComponent(/datum/component/gps, "Encrypted Upload") if(!mapload) log_silicon("\A [name] was created at [loc_name(src)].") message_admins("\A [name] was created at [ADMIN_VERBOSEJMP(src)].") @@ -29,6 +28,7 @@ current = null return M.install(current.laws, user) + imprint_gps(gps_tag = "Weak Upload Signal") else return ..() diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 2eca8339590..9cf1cdb7cbe 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -2,6 +2,11 @@ name = "Generic" name_extension = "(Computer Board)" +/obj/item/circuitboard/computer/examine() + . = ..() + if(GetComponent(/datum/component/gps)) + . += span_info("there's a small, blinking light!") + //Command /obj/item/circuitboard/computer/aiupload