//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
/obj/machinery/computer/robotics
name = "robotics control"
desc = "Used to remotely lockdown or detonate linked Cyborgs."
icon = 'icons/obj/computer.dmi'
icon_state = "robot"
req_access = list(access_robotics)
circuit = "/obj/item/weapon/circuitboard/robotics"
var/hacking = 0
var/id = 0.0
var/temp = null
var/status = 0
var/timeleft = 60
var/stop = 0.0
var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text
light_color = LIGHT_COLOR_PINK
/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
src.add_hiddenprint(user)
return src.attack_hand(user)
/obj/machinery/computer/robotics/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/robotics/attack_hand(var/mob/user as mob)
if(..())
return
if (src.z > 6)
to_chat(user, "Unable to establish a connection: You're too far away from the station!")
return
user.set_machine(src)
var/dat
if (src.temp)
dat = "[src.temp]
Clear Screen"
else
if(screen == 0)
dat += {"
Cyborg Control Console
1. Cyborg Status
2. Emergency Full Destruct
"}
if(screen == 1)
for(var/mob/living/silicon/robot/R in mob_list)
if(istype(user, /mob/living/silicon/ai))
if (R.connected_ai != user)
continue
if(istype(user, /mob/living/silicon/robot))
if (R != user)
continue
if(R.scrambledcodes)
continue
dat += "[R.name] |"
if(R.stat)
dat += " Not Responding |"
else if (!R.canmove)
dat += " Locked Down |"
else
dat += " Operating Normally |"
if (!R.canmove)
else if(R.cell)
dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |"
else
dat += " No Cell Installed |"
if(R.module)
dat += " Module Installed ([R.module.name]) |"
else
dat += " No Module Installed |"
if(R.connected_ai)
dat += " Slaved to [R.connected_ai.name] |"
else
dat += " Independent from AI |"
if(issilicon(user) && ismalf(user) && !R.emagged)
dat += "(Hack) "
dat += {"([R.canmove ? "Lockdown" : "Release"])
([R.modulelock ? "Module-unlock" : "Module-lock"])
(Destroy)
"}
dat += "(Return to Main Menu)
"
if(screen == 2)
if(!src.status)
dat += {"
Emergency Robot Self-Destruct
\nStatus: Off
\n
\nCountdown: [src.timeleft]/60 \[Reset\]
\n
\nStart Sequence
\n
\nClose"}
else
dat = {"Emergency Robot Self-Destruct
\nStatus: Activated
\n
\nCountdown: [src.timeleft]/60 \[Reset\]
\n
\nStop Sequence
\n
\nClose"}
dat += "(Return to Main Menu)
"
user << browse(dat, "window=computer;size=400x500")
onclose(user, "computer")
return
/obj/machinery/computer/robotics/Topic(href, href_list)
if(..())
return 1
else
usr.set_machine(src)
if (href_list["eject"])
src.temp = {"Destroy Robots?
\[Swipe ID to initiate destruction sequence\]
Cancel"}
else if (href_list["eject2"])
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if (istype(I, /obj/item/device/pda))
var/obj/item/device/pda/pda = I
I = pda.id
if (istype(I))
if(src.check_access(I))
if (!status)
message_admins("[key_name_admin(usr)] has initiated the global cyborg killswitch!")
log_game("[key_name(usr)] has initiated the global cyborg killswitch!")
src.status = 1
src.start_sequence()
src.temp = null
else
to_chat(usr, "Access Denied.")
else if (href_list["stop"])
src.temp = {"
Stop Robot Destruction Sequence?
Yes
No"}
else if (href_list["stop2"])
src.stop = 1
src.temp = null
src.status = 0
else if (href_list["reset"])
src.timeleft = 60
else if (href_list["temp"])
src.temp = null
else if (href_list["screen"])
switch(href_list["screen"])
if("0")
screen = 0
if("1")
screen = 1
if("2")
screen = 2
else if (href_list["killbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["killbot"])
if(R)
if(istype(usr, /mob/living/silicon/ai))
if (R.connected_ai != usr)
return
if(istype(usr, /mob/living/silicon/robot))
if (R != usr)
return
if(R.scrambledcodes)
return
var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm")
if(R && istype(R))
if(R.self_destruct())
message_admins("[key_name_admin(usr)] detonated [R.name]!")
log_game("[key_name_admin(usr)] detonated [R.name]!")
else
to_chat(usr, "Access Denied.")
else if (href_list["lockbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["lockbot"])
if(R && istype(R))
if(istype(usr, /mob/living/silicon/ai))
if (R.connected_ai != usr)
return
if(istype(usr, /mob/living/silicon/robot))
if (R != usr)
return
if(R.scrambledcodes)
return
var/choice = input("Are you certain you wish to [R.modulelock ? "module-unlock" : "module-lock"] [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm")
if(R && istype(R))
message_admins("[key_name_admin(usr)] [R.modulelock ? "module-unlocked" : "module-locked"] [R.name]!")
log_game("[key_name(usr)] [R.modulelock ? "module-unlocked" : "module-locked"] [R.name]!")
R.toggle_modulelock()
if (R.modulelock)
to_chat(R, "Your modules have been remotely locked!")
else
to_chat(R, "Your modules have been remotely unlocked!")
else
to_chat(usr, "Access Denied.")
else if (href_list["stopbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["stopbot"])
if(R && istype(R)) // Extra sancheck because of input var references
if(istype(usr, /mob/living/silicon/ai))
if (R.connected_ai != usr)
return
if(istype(usr, /mob/living/silicon/robot))
if (R != usr)
return
if(R.scrambledcodes)
return
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 && istype(R))
message_admins("[key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!")
log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [R.name]!")
R.canmove = !R.canmove
if (R.lockcharge)
// R.cell.charge = R.lockcharge
R.lockcharge = !R.lockcharge
to_chat(R, "Your lockdown has been lifted!")
else
R.lockcharge = !R.lockcharge
// R.cell.charge = 0
to_chat(R, "You have been locked down!")
else
to_chat(usr, "Access Denied.")
else if (href_list["magbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["magbot"])
if(istype(usr, /mob/living/silicon/ai))
if (R.connected_ai != usr)
return
if(istype(usr, /mob/living/silicon/robot))
if (R != usr)
return
if(R.scrambledcodes)
return
// whatever weirdness this is supposed to be, but that is how the href gets added, so here it is again
if((ismalf(usr) || (usr == R && istraitor(usr))) && !R.emagged)
var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm")
if(R)
if (!hacking)
hacking = 1
to_chat(usr, "Beginning override of cyborg safeties. This will take some time, and you cannot hack other borgs during the process.")
sleep(600)
// message_admins("[key_name_admin(usr)] emagged [R.name] using robotic console!")
log_game("[key_name(usr)] emagged [R.name] using robotic console!")
R.SetEmagged(TRUE)
to_chat(usr, "Hack successful. [R.name] now has access to illegal technology.")
if(R.mind.special_role)
R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes
hacking = 0
else
to_chat(usr, "You are already hacking a cyborg.")
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/machinery/computer/robotics/proc/start_sequence()
do
if(src.stop)
src.stop = 0
return
src.timeleft--
sleep(10)
while(src.timeleft)
for(var/mob/living/silicon/robot/R in mob_list)
if(!R.scrambledcodes)
R.self_destruct()
return
/obj/machinery/computer/robotics/emag(mob/user)
..()
req_access = list()
if(user)
to_chat(user, "You disable the console's access requirement.")