diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm
index 414071a964..e64d4f946f 100644
--- a/code/_onclick/cyborg.dm
+++ b/code/_onclick/cyborg.dm
@@ -32,7 +32,7 @@
CtrlClickOn(A)
return
- if(stat || lockcharge || weakened || stunned || paralysis)
+ if(stat || lockdown || weakened || stunned || paralysis)
return
if(!canClick())
diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm
index da20f1bd05..6a1e96e18a 100644
--- a/code/datums/wires/robot.dm
+++ b/code/datums/wires/robot.dm
@@ -16,7 +16,7 @@ var/const/BORG_WIRE_CAMERA = 16
. += text("
\n[(R.lawupdate ? "The LawSync light is on." : "The LawSync light is off.")]")
. += text("
\n[(R.connected_ai ? "The AI link light is on." : "The AI link light is off.")]")
. += text("
\n[((!isnull(R.camera) && R.camera.status == 1) ? "The Camera light is on." : "The Camera light is off.")]")
- . += text("
\n[(R.lockcharge ? "The lockdown light is on." : "The lockdown light is off.")]")
+ . += text("
\n[(R.lockdown ? "The lockdown light is on." : "The lockdown light is off.")]")
return .
/datum/wires/robot/UpdateCut(var/index, var/mended)
@@ -64,7 +64,7 @@ var/const/BORG_WIRE_CAMERA = 16
R << "Your camera lense focuses loudly."
if(BORG_WIRE_LOCKED_DOWN)
- R.SetLockdown(!R.lockcharge) // Toggle
+ R.SetLockdown(!R.lockdown) // Toggle
/datum/wires/robot/CanUse(var/mob/living/L)
var/mob/living/silicon/robot/R = holder
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 149c9c6254..eaecda84ee 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -58,7 +58,7 @@
return
// Antagonistic cyborgs? Left here for downstream
- if(target.mind && target.mind.special_role && target.emagged)
+ if(target.mind.special_role || target.emagged)
target << "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered."
target.ResetSecurityCodes()
else
@@ -101,6 +101,7 @@
else
target.canmove = !target.canmove
target.lockcharge = !target.canmove //when canmove is 1, lockcharge should be 0
+ target.lockdown = !target.canmove
if (target.lockcharge)
target << "You have been locked down!"
else
@@ -115,8 +116,8 @@
if(!target || !istype(target))
return
- // Antag AI checks
- if(!istype(user, /mob/living/silicon/ai) || !(user.mind.special_role && user.mind.original == user))
+ // Antag synthetic checks
+ if(!istype(user, /mob/living/silicon) || !(user.mind.special_role && user.mind.original == user))
user << "Access Denied"
return
@@ -202,6 +203,10 @@
robot["module"] = R.module ? R.module.name : "None"
robot["master_ai"] = R.connected_ai ? R.connected_ai.name : "None"
robot["hackable"] = 0
+ //Antag synths should be able to hack themselves and see their hacked status.
+ if(operator && istype(operator, /mob/living/silicon) && (operator.mind.special_role && operator.mind.original == operator))
+ robot["hacked"] = R.emagged ? 1 : 0
+ robot["hackable"] = R.emagged? 0 : 1
// Antag AIs know whether linked cyborgs are hacked or not.
if(operator && istype(operator, /mob/living/silicon/ai) && (R.connected_ai == operator) && (operator.mind.special_role && operator.mind.original == operator))
robot["hacked"] = R.emagged ? 1 : 0
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 8b5f566d15..a44be64253 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -336,7 +336,7 @@
weaponlock_time = 120
/mob/living/silicon/robot/update_canmove()
- if(paralysis || stunned || weakened || buckled || lockcharge || !is_component_functioning("actuator")) canmove = 0
+ if(paralysis || stunned || weakened || buckled || lockdown || !is_component_functioning("actuator")) canmove = 0
else canmove = 1
return canmove
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 4260f1d365..ad3445483d 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -81,7 +81,8 @@
var/weapon_lock = 0
var/weaponlock_time = 120
var/lawupdate = 1 //Cyborgs will sync their laws with their AI by default
- var/lockcharge //Used when locking down a borg to preserve cell charge
+ var/lockcharge //Used when looking to see if a borg is locked down.
+ var/lockdown = 0 //Controls whether or not the borg is actually locked down.
var/speed = 0 //Cause sec borgs gotta go fast //No they dont!
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
var/tracking_entities = 0 //The number of known entities currently accessing the internal camera
@@ -864,6 +865,7 @@
disconnect_from_ai()
lawupdate = 0
lockcharge = 0
+ lockdown = 0
canmove = 1
scrambledcodes = 1
//Disconnect it's camera so it's not so easily tracked.
@@ -887,6 +889,7 @@
// They stay locked down if their wire is cut.
if(wires.LockedCut())
state = 1
+ lockdown = state
lockcharge = state
update_canmove()
diff --git a/code/modules/nano/interaction/base.dm b/code/modules/nano/interaction/base.dm
index 82fd32ea3c..e48022e2cc 100644
--- a/code/modules/nano/interaction/base.dm
+++ b/code/modules/nano/interaction/base.dm
@@ -32,6 +32,6 @@
. = STATUS_INTERACTIVE
if(cell.charge <= 0)
return STATUS_CLOSE
- if(lockcharge)
+ if(lockdown)
. = STATUS_DISABLED
return min(., ..())