Power Monitoring
"
-
- t += "
Refresh"
- t += "
Close"
-
- if(!powernet)
- t += "\red No connection"
- else
-
- var/list/L = list()
- for(var/obj/machinery/power/terminal/term in powernet.nodes)
- if(istype(term.master, /obj/machinery/power/apc))
- var/obj/machinery/power/apc/A = term.master
- L += A
-
- // AUTOFIXED BY fix_string_idiocy.py
- // C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\computer\power.dm:97: t += "Total power: [powernet.avail] W
Total load: [num2text(powernet.viewload,10)] W
"
- t += {"Total power: [powernet.avail] W
Total load: [num2text(powernet.viewload,10)] W
- "}
- // END AUTOFIX
-
- var/list/State = list(" Off",
- "AOff",
- " On",
- " AOn")
- var/list/chg = list("Not charging",
- "Charging",
- "Fully charged")
- // Start of power report table
- // Table header
- t += {"
- | | Area | Eqp. | Lgt. | Env. | Load | Cell |
"}
- if(L.len > 0)
- // Each entry
- for(var/obj/machinery/power/apc/A in L)
- t += {"
- | [get_area_master(A) ] |
- [State[A.equipment+1]] |
- [State[A.lighting+1 ]] |
- [State[A.environ+1 ]] |
- [A.lastused_total ] |
- [A.cell ? "[round(A.cell.percent())]% [chg[A.charging+1]]" : " N/C"] |
-
"}
-
- t += "
"
- // End of powa report
-
- user << browse(t, "window=powcomp;size=640x800")
- onclose(user, "powcomp")
-
-/obj/machinery/computer/monitor/Topic(href, href_list)
- if(..())
- return
- if( href_list["close"] )
- usr << browse(null, "window=powcomp")
- usr.unset_machine()
- return
- if( href_list["update"] )
- src.updateDialog()
- return
\ No newline at end of file
+ power_monitor.ui_interact(user)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 13780588e7f..9128fa216a5 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -144,6 +144,7 @@
/obj/item/weapon/robot_module/engineering
name = "engineering robot module"
+ subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
stacktypes = list(
/obj/item/stack/sheet/metal = 50,
diff --git a/code/modules/mob/living/silicon/subsystems.dm b/code/modules/mob/living/silicon/subsystems.dm
index 12f3e67fe83..d39e502491b 100644
--- a/code/modules/mob/living/silicon/subsystems.dm
+++ b/code/modules/mob/living/silicon/subsystems.dm
@@ -3,6 +3,7 @@
var/datum/nano_module/alarm_monitor/all/alarm_monitor
var/datum/nano_module/atmos_control/atmos_control
var/datum/nano_module/crew_monitor/crew_monitor
+ var/datum/nano_module/power_monitor/silicon/power_monitor
/mob/living/silicon
var/list/silicon_subsystems = list(
@@ -13,7 +14,14 @@
silicon_subsystems = list(
/mob/living/silicon/proc/subsystem_alarm_monitor,
/mob/living/silicon/proc/subsystem_atmos_control,
- /mob/living/silicon/proc/subsystem_crew_monitor
+ /mob/living/silicon/proc/subsystem_crew_monitor,
+ /mob/living/silicon/proc/subsystem_power_monitor
+ )
+
+/mob/living/silicon/robot/drone
+ silicon_subsystems = list(
+ /mob/living/silicon/proc/subsystem_alarm_monitor,
+ /mob/living/silicon/proc/subsystem_power_monitor
)
/mob/living/silicon/robot/syndicate
@@ -23,6 +31,7 @@
alarm_monitor = new(src)
atmos_control = new(src)
crew_monitor = new(src)
+ power_monitor = new(src)
if(!register_alarms)
return
@@ -58,3 +67,13 @@
set name = "Crew Monitor"
crew_monitor.ui_interact(usr, state = self_state)
+
+/********************
+* Power Monitor *
+********************/
+/mob/living/silicon/proc/subsystem_power_monitor()
+ set category = "Subsystems"
+ set name = "Power Monitor"
+
+ power_monitor.ui_interact(usr, state = self_state)
+
diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm
index b20370ad9d4..b43d84b04eb 100644
--- a/code/modules/nano/modules/crew_monitor.dm
+++ b/code/modules/nano/modules/crew_monitor.dm
@@ -3,7 +3,8 @@
var/list/tracked = new
/datum/nano_module/crew_monitor/Topic(href, href_list)
- if(..()) return
+ if(..())
+ return 1
var/turf/T = get_turf(nano_host())
if (!T || !(T.z in config.player_levels))
usr << "