// the power monitoring computer // for the moment, just report the status of all APCs in the same powernet /obj/machinery/power/monitor name = "power monitoring computer" desc = "It monitors power levels across the station." icon = 'icons/obj/computer.dmi' icon_state = "power" //computer stuff density = 1 anchored = 1.0 var/circuit = /obj/item/weapon/circuitboard/powermonitor use_power = 1 idle_power_usage = 300 active_power_usage = 300 /obj/machinery/power/monitor/New() ..() var/obj/structure/cable/attached = null var/turf/T = loc if(isturf(T)) attached = locate() in T if(attached) powernet = attached.get_powernet() /obj/machinery/power/monitor/attack_ai(mob/user) add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) return interact(user) /obj/machinery/power/monitor/attack_hand(mob/user) add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) return interact(user) /obj/machinery/power/monitor/interact(mob/user) if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) if (!istype(user, /mob/living/silicon)) user.unset_machine() user << browse(null, "window=powcomp") return user.set_machine(src) var/t = "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 t += "
Total power: [powernet.avail] W
Total load: [num2text(powernet.viewload,10)] W
" t += "" if(L.len > 0) t += "Area Eqp./Lgt./Env. Load Cell
" var/list/S = list(" Off","AOff"," On", " AOn") var/list/chg = list("N","C","F") for(var/obj/machinery/power/apc/A in L) t += copytext(add_tspace("\The [A.area]", 30), 1, 30) 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 += "
" user << browse(t, "window=powcomp;size=420x900") onclose(user, "powcomp") /obj/machinery/power/monitor/Topic(href, href_list) ..() if( href_list["close"] ) usr << browse(null, "window=powcomp") usr.unset_machine() return if( href_list["update"] ) src.updateDialog() return /obj/machinery/power/monitor/power_change() ..() if(stat & BROKEN) icon_state = "broken" else if (stat & NOPOWER) spawn(rand(0, 15)) src.icon_state = "c_unpowered" else icon_state = initial(icon_state) //copied from computer.dm /obj/machinery/power/monitor/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) if(do_after(user, 20)) var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) var/obj/item/weapon/circuitboard/M = new circuit( A ) A.circuit = M A.anchored = 1 for (var/obj/C in src) C.loc = src.loc if (src.stat & BROKEN) user << "\blue The broken glass falls out." new /obj/item/weapon/shard( src.loc ) A.state = 3 A.icon_state = "3" else user << "\blue You disconnect the monitor." A.state = 4 A.icon_state = "4" M.deconstruct_computer(src) del(src) else src.attack_hand(user) return