diff --git a/code/defines/mob/living/silicon/robot.dm b/code/defines/mob/living/silicon/robot.dm index d3bcfa6d02..9cc8ebbfc7 100644 --- a/code/defines/mob/living/silicon/robot.dm +++ b/code/defines/mob/living/silicon/robot.dm @@ -47,3 +47,4 @@ var/weaponlock_time = 120 var/datum/ai_laws/laws = null //Making it so borgs can have laws when there isn't an AI. 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 diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 1b3a5a327c..11fd2a4dc1 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -68,14 +68,18 @@ if(screen == 1) for(var/mob/living/silicon/robot/R in world) if(istype(user, /mob/living/silicon/ai)) - if (R.connected_ai != user) - continue + if (R.connected_ai != user) continue + if(istype(user, /mob/living/silicon/robot)) + if (R != user) continue dat += "[R.name] |" if(R.stat) dat += " Not Responding |" + else if (!R.canmove) + dat += " Locked Down |" else dat += " Operating Normally |" - if(R.cell) + if (!R.canmove) + else if(R.cell) dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" else dat += " No Cell Installed |" @@ -87,6 +91,7 @@ dat += " Slaved to [R.connected_ai.name] |" else dat += " Independent from AI |" + dat += "([R.canmove ? "Lockdown" : "Release"]) " dat += "(Destroy)" dat += "
" dat += "(Return to Main Menu)
" @@ -179,6 +184,27 @@ else usr << "\red Access Denied." + else if (href_list["stopbot"]) + if(src.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) + if(R) + var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm") + if(R) +// message_admins("\blue [key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") + R.canmove = !R.canmove + if (R.lockcharge) + R.cell.charge = R.lockcharge + R.lockcharge = null + R << "Your lockdown has been removed!" + else + R.lockcharge = R.cell.charge + R.cell.charge = 0 + R << "You have been locked down!" + + else + usr << "\red Access Denied." + src.add_fingerprint(usr) src.updateUsrDialog() return diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index b933bde575..8f31086f92 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -61,7 +61,7 @@ src.stat = 1 update_canmove() - if(paralysis || stunned || weakened || buckled) canmove = 0 + if(paralysis || stunned || weakened || buckled || lockcharge) canmove = 0 else canmove = 1