diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm
index b305a5525b4..5365249ca45 100644
--- a/code/defines/obj/machinery.dm
+++ b/code/defines/obj/machinery.dm
@@ -373,16 +373,19 @@
var/lastgen = 0
var/lastgenlev = -1
+
/obj/machinery/power/monitor
- name = "Power Monitoring Computer"
- desc = "Used to monitor the power."
- icon = 'computer.dmi'
- icon_state = "power"
- density = 1
- anchored = 1
- use_power = 2
- idle_power_usage = 20
- active_power_usage = 80
+ name = "Power Monitoring Computer"
+ desc = "Used to monitor the power, and remotely toggle main breakers."
+ icon = 'computer.dmi'
+ icon_state = "power"
+ density = 1
+ anchored = 1
+ use_power = 2
+ idle_power_usage = 20
+ active_power_usage = 80
+ var/control = 0
+ req_access = list(access_engine_equip)
/obj/machinery/cell_charger
name = "cell charger"
@@ -460,4 +463,4 @@
density = 1
anchored = 1.0
var/obj/item/clothing/suit/storage/det_suit/coat
- var/obj/item/clothing/head/det_hat/hat
\ No newline at end of file
+ var/obj/item/clothing/head/det_hat/hat
diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm
index 7566e0a6de0..df474f601dd 100644
--- a/code/game/machinery/computer/power.dm
+++ b/code/game/machinery/computer/power.dm
@@ -1,5 +1,9 @@
// the power monitoring computer
// for the moment, just report the status of all APCs in the same powernet
+
+//Now Supports remote access -- Newt
+
+
/obj/machinery/power/monitor/attack_ai(mob/user)
add_fingerprint(user)
@@ -41,6 +45,15 @@
A.icon_state = "4"
A.anchored = 1
del(src)
+ if(istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda))
+ //var/obj/item/weapon/card/id/W = I
+ if(src.allowed(user))
+ src.control = !src.control
+ user << "You [ control ? "enable" : "disable"] remote APC control."
+ else
+ user << "\red Access denied."
+
+
else
src.attack_hand(user)
return
@@ -84,6 +97,10 @@
for(var/obj/machinery/power/apc/A in L)
t += copytext(add_tspace(A.area.name, 30), 1, 30)
+ if(control)
+ t += " ([A.operating? " On" : "Off"])"
+ else
+ t += " ([A.operating? "On " : "Off"])"
t += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]
"
t += ""
@@ -101,6 +118,13 @@
if( href_list["update"] )
src.updateDialog()
return
+ if( href_list["breaker"])
+ var/obj/machinery/power/apc/APC = locate(href_list["apc"])
+ APC.operating = !APC.operating
+ APC.update()
+ APC.updateicon()
+ src.updateDialog()
+ return
/obj/machinery/power/monitor/process()
@@ -119,4 +143,3 @@
spawn(rand(0, 15))
src.icon_state = "c_unpowered"
stat |= NOPOWER
-