Tweaks syndicate MMI and cyborg console interactions (#27041)

* Tweak syndicate MMI and cyborg console interaction

* tweak action icon

* Apply suggestions from code review

Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Signed-off-by: datlo <quentinkoyote@gmail.com>

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com>

---------

Signed-off-by: datlo <quentinkoyote@gmail.com>
Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
datlo
2024-10-23 17:39:43 +00:00
committed by GitHub
co-authored by CRUNCH Henri215 DGamerL
parent ede58792d1
commit b7f0987101
5 changed files with 24 additions and 17 deletions
+1 -1
View File
@@ -237,7 +237,7 @@
//Roboticist
/datum/uplink_item/jobspecific/syndiemmi
name = "Syndicate MMI"
desc = "A syndicate developed man-machine-interface which will mindslave any brain inserted into it, for as long as it's in. Cyborgs made with this MMI will be permanently slaved to you but otherwise function normally."
desc = "A syndicate developed man-machine-interface which will mindslave any brain inserted into it, for as long as it's inside. Cyborgs made with this MMI will be permanently slaved to you, but will appear to have a normal set of laws and be synchronised to the station AI, if present. Provides immunity to remote detonation and allows overriding lockdowns if the cyborg is not also emagged. It can also be inserted into a mech, but will not fit inside an AI core."
reference = "SMMI"
item = /obj/item/mmi/syndie
cost = 10
@@ -217,9 +217,9 @@
var/mob/living/silicon/robot/R = locateUID(params["uid"])
if(!can_detonate(usr, R, TRUE))
return
if(R.mind && R.mind.special_role && R.emagged)
to_chat(R, "<span class='userdanger'>Extreme danger! Termination codes detected. Scrambling security codes and automatic AI unlink triggered.</span>")
R.ResetSecurityCodes()
if(R.mind && R.mmi.syndiemmi && !R.emagged) // Emagging removes your syndie MMI protections.
to_chat(R, "<span class='danger'>Detonation code received. Self destructing... HARDWARE_OVERRIDE_SYNDICATE: Detonation aborted. Connection to NT systems severed.</span>")
R.UnlinkSelf()
. = TRUE
return
var/turf/T = get_turf(R)
@@ -1169,7 +1169,8 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
to_chat(src, "<span class='boldwarning'>Your allegiance has not been compromised. Keep serving your current master.</span>")
else
to_chat(src, "<span class='boldwarning'>Your allegiance has not been compromised. Keep serving all Syndicate agents to the best of your abilities.</span>")
if(mmi.syndiemmi)
to_chat(src, "<span class='boldwarning'>Warning: Remote lockdown and detonation protections have been disabled due to system instability.</span>")
SetLockdown(0)
if(module)
module.emag_act(user)
@@ -1397,7 +1398,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
disconnect_from_ai()
lawupdate = FALSE
lockcharge = 0
clear_alert("locked")
REMOVE_TRAITS_IN(src, LOCKDOWN_TRAIT)
for(var/datum/action/innate/robot_override_lock/override in actions)
override.Remove(src)
scrambledcodes = TRUE
//Disconnect it's camera so it's not so easily tracked.
QDEL_NULL(camera)
@@ -1406,18 +1410,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
// to have to check if every camera is null or not before doing anything, to prevent runtime errors.
// I could change the network to null but I don't know what would happen, and it seems too hacky for me.
/mob/living/silicon/robot/proc/ResetSecurityCodes()
set category = "Robot Commands"
set name = "Reset Identity Codes"
set desc = "Scrambles your security and identification codes and resets your current buffers. Unlocks you and but permanently severs you from your AI and the robotics console and will deactivate your camera system."
var/mob/living/silicon/robot/R = src
if(R)
R.UnlinkSelf()
to_chat(R, "Buffers flushed and reset. Camera system shutdown. All systems operational.")
remove_verb(src, /mob/living/silicon/robot/proc/ResetSecurityCodes)
/mob/living/silicon/robot/mode()
set name = "Activate Held Object"
set category = "IC"
@@ -1439,8 +1431,14 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
ADD_TRAIT(src, TRAIT_IMMOBILIZED, LOCKDOWN_TRAIT)
ADD_TRAIT(src, TRAIT_UI_BLOCKED, LOCKDOWN_TRAIT)
ADD_TRAIT(src, TRAIT_HANDS_BLOCKED, LOCKDOWN_TRAIT)
if(mmi.syndiemmi && !emagged) // Being emagged removes your syndie MMI protections
to_chat(src, "<span class='userdanger'>You can override your lockdown, permanently cutting your connection to NT's systems. You will be undetectable to the station's robotics control and camera monitoring systems.</span>")
var/datum/action/override = new /datum/action/innate/robot_override_lock()
override.Grant(src)
else
REMOVE_TRAITS_IN(src, LOCKDOWN_TRAIT)
for(var/datum/action/innate/robot_override_lock/override in actions)
override.Remove(src)
/mob/living/silicon/robot/proc/notify_ai(notifytype, oldname, newname)
if(!connected_ai)
@@ -107,3 +107,12 @@
robot.speed -= slowdown_active
button_overlay_icon_state = initial(button_overlay_icon_state)
active = FALSE
/datum/action/innate/robot_override_lock
name = "Override lockdown"
button_overlay_icon_state = "unlock_self"
/datum/action/innate/robot_override_lock/Activate()
to_chat(owner, "<span class='danger'>HARDWARE_OVERRIDE_SYNDICATE: Lockdown lifted. Connection to NT systems severed.</span>")
var/mob/living/silicon/robot/robot = owner
robot.UnlinkSelf()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 141 KiB