diff --git a/baystation12.dme b/baystation12.dme
index 45911ead56..ddbd5a3e5b 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1338,6 +1338,7 @@
#include "code\WorkInProgress\computer3\computer3_notes.dm"
#include "code\WorkInProgress\computer3\file.dm"
#include "code\WorkInProgress\computer3\laptop.dm"
+#include "code\WorkInProgress\computer3\lapvend.dm"
#include "code\WorkInProgress\computer3\networking.dm"
#include "code\WorkInProgress\computer3\NTOS.dm"
#include "code\WorkInProgress\computer3\program.dm"
@@ -1350,10 +1351,16 @@
#include "code\WorkInProgress\computer3\computers\card.dm"
#include "code\WorkInProgress\computer3\computers\communications.dm"
#include "code\WorkInProgress\computer3\computers\crew.dm"
+#include "code\WorkInProgress\computer3\computers\customs.dm"
#include "code\WorkInProgress\computer3\computers\HolodeckControl.dm"
#include "code\WorkInProgress\computer3\computers\law.dm"
#include "code\WorkInProgress\computer3\computers\medical.dm"
+#include "code\WorkInProgress\computer3\computers\Operating.dm"
+#include "code\WorkInProgress\computer3\computers\power.dm"
+#include "code\WorkInProgress\computer3\computers\prisoner.dm"
+#include "code\WorkInProgress\computer3\computers\robot.dm"
#include "code\WorkInProgress\computer3\computers\security.dm"
+#include "code\WorkInProgress\computer3\computers\welcome.dm"
#include "code\WorkInProgress\kilakk\fax.dm"
#include "code\WorkInProgress\Mini\atmos_control.dm"
#include "code\WorkInProgress\Ported\policetape.dm"
diff --git a/code/WorkInProgress/computer3/NTOS.dm b/code/WorkInProgress/computer3/NTOS.dm
index ee68971083..8b779d9077 100644
--- a/code/WorkInProgress/computer3/NTOS.dm
+++ b/code/WorkInProgress/computer3/NTOS.dm
@@ -5,7 +5,7 @@
/datum/file/program/ntos
name = "Nanotrasen Operating System"
extension = "prog"
- active_state = "NTOS"
+ active_state = "ntos"
var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer
var/fileop = "runfile"
diff --git a/code/WorkInProgress/computer3/computer.dm b/code/WorkInProgress/computer3/computer.dm
index 48869571d1..95824e555e 100644
--- a/code/WorkInProgress/computer3/computer.dm
+++ b/code/WorkInProgress/computer3/computer.dm
@@ -127,6 +127,9 @@
update_icon()
+ proc/update_spawn_files()
+ for(var/typekey in spawn_files)
+ hdd.addfile(new typekey,1)
proc/spawn_parts()
for(var/typekey in spawn_parts)
diff --git a/code/WorkInProgress/computer3/computers/card.dm b/code/WorkInProgress/computer3/computers/card.dm
index 660e25a67c..6080b59643 100644
--- a/code/WorkInProgress/computer3/computers/card.dm
+++ b/code/WorkInProgress/computer3/computers/card.dm
@@ -31,28 +31,85 @@
// the list of jobs won't change after all...
proc/scriptblock()
var/global/dat = null
- if(!dat)
- var/jobs_all = ""
- for(var/job in list_jobs())
- jobs_all += topic_link(src,"assign=[job]",replacetext(job," "," ")) + " "//make sure there isn't a line break in the middle of a job
+ var/counter = 0
+ var jobs_all = ""
+ jobs_all += "
| Command | "
+
+ jobs_all += "
| Special | "//Captain in special because he is head of heads ~Intercross21
+ jobs_all += "Captain | "
+ jobs_all += "Custom | "
+
+ counter = 0
+ jobs_all += "
| Security | "//Red
+ for(var/job in security_positions)
+ counter++
+ if(counter >= 6)
+ jobs_all += "
| | "
+ counter = 0
+ jobs_all += "[replacetext(job, " ", " ")] | "
+
+ counter = 0
+ jobs_all += "
| Engineering | "//Orange
+ for(var/job in engineering_positions)
+ counter++
+ if(counter >= 6)
+ jobs_all += "
| | "
+ counter = 0
+ jobs_all += "[replacetext(job, " ", " ")] | "
+
+ counter = 0
+ jobs_all += "
| Medical | "//Green
+ for(var/job in medical_positions)
+ counter++
+ if(counter >= 6)
+ jobs_all += "
| | "
+ counter = 0
+ jobs_all += "[replacetext(job, " ", " ")] | "
+
+ counter = 0
+ jobs_all += "
| Science | "//Purple
+ for(var/job in science_positions)
+ counter++
+ if(counter >= 6)
+ jobs_all += "
| | "
+ counter = 0
+ jobs_all += "[replacetext(job, " ", " ")] | "
+
+ counter = 0
+ jobs_all += "
| Civilian | "//Grey
+ for(var/job in civilian_positions)
+ counter++
+ if(counter >= 6)
+ jobs_all += "
| | "
+ counter = 0
+ jobs_all += "[replacetext(job, " ", " ")] | "
+
dat = {""}
+ function markRed(){
+ var nameField = document.getElementById('namefield');
+ nameField.style.backgroundColor = "#FFDDDD";
+ }
+ function markGreen(){
+ var nameField = document.getElementById('namefield');
+ nameField.style.backgroundColor = "#DDFFDD";
+ }
+ function markAccountGreen(){
+ var nameField = document.getElementById('accountfield');
+ nameField.style.backgroundColor = "#DDFFDD";
+ }
+ function markAccountRed(){
+ var nameField = document.getElementById('accountfield');
+ nameField.style.backgroundColor = "#FFDDDD";
+ }
+ function showAll(){
+ var allJobsSlot = document.getElementById('alljobsslot');
+ allJobsSlot.innerHTML = "hide
"+ "[jobs_all]";
+ }
+ function hideAll(){
+ var allJobsSlot = document.getElementById('alljobsslot');
+ allJobsSlot.innerHTML = "[(writer.assignment) ? writer.assignment : "Unassgied"]";
+ }
+ "}
return dat
// creates the list of access rights on the card
diff --git a/code/WorkInProgress/computer3/computers/medical.dm b/code/WorkInProgress/computer3/computers/medical.dm
index e370182744..8e6b7cb7fc 100644
--- a/code/WorkInProgress/computer3/computers/medical.dm
+++ b/code/WorkInProgress/computer3/computers/medical.dm
@@ -11,6 +11,11 @@
default_prog = /datum/file/program/med_data
spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio)
+
+/obj/machinery/computer3/laptop/medical
+ spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio)
+ spawn_files = list(/datum/file/program/arcade,/datum/file/program/crew,/datum/file/program/med_data)
+
/datum/file/program/med_data
name = "Medical Records"
desc = "This can be used to check medical records."
diff --git a/code/WorkInProgress/computer3/computers/message.dm b/code/WorkInProgress/computer3/computers/message.dm
index d03f4a4753..3bbb580f5e 100644
--- a/code/WorkInProgress/computer3/computers/message.dm
+++ b/code/WorkInProgress/computer3/computers/message.dm
@@ -2,6 +2,9 @@
default_prog = /datum/file/program/message_mon
spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/prox)
+
+//BROKEN AS HELL, DON'T USE UNTIL FIXED
+
/datum/file/program/message_mon
name = "Message Monitor Console"
desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages."
@@ -35,6 +38,13 @@
var/custommessage = "This is a test, please ignore."
+ procinitialize()
+ if(!linkedServer)
+ if(message_servers && message_servers.len > 0)
+ linkedServer = message_servers[1]
+ return
+
+
update_icon()
if(emag || hacking)
overlay.icon_state = hack_icon
@@ -45,12 +55,12 @@
interact()
if(!interactable())
return
-
//If the computer is being hacked or is emagged, display the reboot message.
if(hacking || emag)
message = rebootmsg
-
- var/dat = "/"
+ var/dat = "Message Monitor Console"
+ dat += "Message Monitor Console
"
+ dat += ""
if(auth)
dat += " \[Authenticated\] /"
@@ -61,12 +71,9 @@
if(hacking || emag)
screen = 2
- else
- if(!auth)
- screen = 0
- if( !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)) )
- message = noserver
- screen = 0
+ else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
+ if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) message = noserver
+ screen = 0
switch(screen)
//Main menu
@@ -202,9 +209,11 @@
| [rc.rec_dpt] | [rc.message] | [rc.stamp] | [rc.id_auth] | [rc.priority] |
"}
dat += "
"
- message = defaultmsg
+ popup.width = 700
+ popup.height = 700
popup.set_content(dat)
+ popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state))
popup.open()
return
diff --git a/code/WorkInProgress/computer3/computers/pod.dm b/code/WorkInProgress/computer3/computers/pod.dm
deleted file mode 100644
index 47f45b1c91..0000000000
--- a/code/WorkInProgress/computer3/computers/pod.dm
+++ /dev/null
@@ -1,218 +0,0 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-/obj/machinery/computer3/pod
- name = "Pod Launch Control"
- desc = "A controll for launching pods. Some people prefer firing Mechas."
- icon_state = "computer_generic"
- var/id = 1.0
- var/obj/machinery/mass_driver/connected = null
- var/timing = 0.0
- var/time = 30.0
- var/title = "Mass Driver Controls"
-
-
-/obj/machinery/computer3/pod/New()
- ..()
- spawn( 5 )
- for(var/obj/machinery/mass_driver/M in world)
- if(M.id == id)
- connected = M
- else
- return
- return
-
-
-/obj/machinery/computer3/pod/proc/alarm()
- if(stat & (NOPOWER|BROKEN))
- return
-
- if(!( connected ))
- viewers(null, null) << "Cannot locate mass driver connector. Cancelling firing sequence!"
- return
-
- for(var/obj/machinery/door/poddoor/M in world)
- if(M.id == id)
- M.open()
- return
- sleep(20)
-
- for(var/obj/machinery/mass_driver/M in world)
- if(M.id == id)
- M.power = connected.power
- M.drive()
-
- sleep(50)
- for(var/obj/machinery/door/poddoor/M in world)
- if(M.id == id)
- M.close()
- return
- return
-
-
-/obj/machinery/computer3/pod/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/tool/screwdriver))
- playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if(stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
- new /obj/item/trash/shard( loc )
-
- //generate appropriate circuitboard. Accounts for /pod/old computer types
- var/obj/item/part/board/circuit/pod/M = null
- if(istype(src, /obj/machinery/computer/pod/old))
- M = new /obj/item/part/board/circuit/olddoor( A )
- if(istype(src, /obj/machinery/computer/pod/old/syndicate))
- M = new /obj/item/part/board/circuit/syndicatedoor( A )
- if(istype(src, /obj/machinery/computer/pod/old/swf))
- M = new /obj/item/part/board/circuit/swfdoor( A )
- else //it's not an old computer. Generate standard pod circuitboard.
- M = new /obj/item/part/board/circuit/pod( A )
-
- for (var/obj/C in src)
- C.loc = loc
- M.id = id
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
-
- //generate appropriate circuitboard. Accounts for /pod/old computer types
- var/obj/item/part/board/circuit/pod/M = null
- if(istype(src, /obj/machinery/computer/pod/old))
- M = new /obj/item/part/board/circuit/olddoor( A )
- if(istype(src, /obj/machinery/computer/pod/old/syndicate))
- M = new /obj/item/part/board/circuit/syndicatedoor( A )
- if(istype(src, /obj/machinery/computer/pod/old/swf))
- M = new /obj/item/part/board/circuit/swfdoor( A )
- else //it's not an old computer. Generate standard pod circuitboard.
- M = new /obj/item/part/board/circuit/pod( A )
-
- for (var/obj/C in src)
- C.loc = loc
- M.id = id
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- attack_hand(user)
- return
-
-
-/obj/machinery/computer3/pod/attack_ai(var/mob/user as mob)
- return attack_hand(user)
-
-
-/obj/machinery/computer3/pod/attack_paw(var/mob/user as mob)
- return attack_hand(user)
-
-
-/obj/machinery/computer3/pod/attack_hand(var/mob/user as mob)
- if(..())
- return
-
- var/dat = ""
- user.set_machine(src)
- if(connected)
- var/d2
- if(timing) //door controls do not need timers.
- d2 = "Stop Time Launch"
- else
- d2 = "Initiate Time Launch"
- var/second = time % 60
- var/minute = (time - second) / 60
- dat += "
\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] - - + +"
- var/temp = ""
- var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
- for(var/t in L)
- if(t == connected.power)
- temp += "[t] "
- else
- temp += "[t] "
- dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
"
- else
- dat += "
\nToggle Outer Door
"
- dat += "
Close"
- add_fingerprint(usr)
- //user << browse(dat, "window=computer;size=400x500")
- //onclose(user, "computer")
- var/datum/browser/popup = new(user, "computer", title, 400, 500)
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.open()
- return
-
-
-/obj/machinery/computer3/pod/process()
- if(!..())
- return
- if(timing)
- if(time > 0)
- time = round(time) - 1
- else
- alarm()
- time = 0
- timing = 0
- updateDialog()
- return
-
-
-/obj/machinery/computer3/pod/Topic(href, href_list)
- if(..())
- return
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
- if(href_list["power"])
- var/t = text2num(href_list["power"])
- t = min(max(0.25, t), 16)
- if(connected)
- connected.power = t
- if(href_list["alarm"])
- alarm()
- if(href_list["time"])
- timing = text2num(href_list["time"])
- if(href_list["tp"])
- var/tp = text2num(href_list["tp"])
- time += tp
- time = min(max(round(time), 0), 120)
- if(href_list["door"])
- for(var/obj/machinery/door/poddoor/M in world)
- if(M.id == id)
- if(M.density)
- M.open()
- else
- M.close()
- updateUsrDialog()
- return
-
-
-
-/obj/machinery/computer3/pod/old
- icon_state = "old"
- name = "DoorMex Control Console"
- title = "Door Controls"
-
-
-
-/obj/machinery/computer3/pod/old/syndicate
- name = "ProComp Executive IIc"
- desc = "The Syndicate operate on a tight budget. Operates external airlocks."
- title = "External Airlock Controls"
- req_access = list(access_syndicate)
-
-/obj/machinery/computer3/pod/old/syndicate/attack_hand(var/mob/user as mob)
- if(!allowed(user))
- user << "\red Access Denied"
- return
- else
- ..()
-
-/obj/machinery/computer3/pod/old/swf
- name = "Magix System IV"
- desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition"
diff --git a/code/WorkInProgress/computer3/computers/power.dm b/code/WorkInProgress/computer3/computers/power.dm
index 4bd838a207..6e27da0568 100644
--- a/code/WorkInProgress/computer3/computers/power.dm
+++ b/code/WorkInProgress/computer3/computers/power.dm
@@ -11,7 +11,8 @@
proc/format(var/obj/machinery/power/apc/A)
var/static/list/S = list(" Off","AOff"," On", " AOn")
var/static/list/chg = list("N","C","F")
- return "[copytext(add_tspace("\The [A.area]", 30), 1, 30)] [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"]
"
+ return "[copytext(add_tspace("\The [A.area]", 30), 1, 30)] [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"]
"
interact()
if(!interactable())
@@ -23,7 +24,7 @@
var/t = ""
t += "Refresh
"
if(!L || !L.len)
- t += "\red No connection"
+ t += "No connection"
else
var/datum/powernet/powernet = computer.net.connect_to(/datum/powernet,null)
if(powernet)
diff --git a/code/WorkInProgress/computer3/computers/prisoner.dm b/code/WorkInProgress/computer3/computers/prisoner.dm
index d88a8bffdf..529a210e43 100644
--- a/code/WorkInProgress/computer3/computers/prisoner.dm
+++ b/code/WorkInProgress/computer3/computers/prisoner.dm
@@ -1,11 +1,14 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
/obj/machinery/computer3/prisoner
+ default_prog = /datum/file/program/prisoner
+ spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio)
+ icon_state = "frame-sec"
+
+/datum/file/program/prisoner
name = "Prisoner Management Comsole"
- icon = 'icons/obj/computer.dmi'
- icon_state = "explosive"
+ active_state = "explosive"
req_access = list(access_armory)
- circuit = "/obj/item/part/board/circuit/prisoner"
+
var/id = 0.0
var/temp = null
var/status = 0
@@ -14,18 +17,9 @@
var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
- attack_ai(var/mob/user as mob)
- return src.attack_hand(user)
-
-
- attack_paw(var/mob/user as mob)
- return
-
-
- attack_hand(var/mob/user as mob)
- if(..())
+ interact()
+ if(!interactable())
return
- user.set_machine(src)
var/dat
dat += "Prisoner Implant Manager System
"
if(screen == 0)
@@ -35,7 +29,7 @@
var/turf/Tr = null
for(var/obj/item/weapon/implant/chem/C in world)
Tr = get_turf(C)
- if((Tr) && (Tr.z != src.z)) continue//Out of range
+ if((Tr) && (Tr.z != computer.z)) continue//Out of range
if(!C.implanted) continue
dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: "
dat += "((1))"
@@ -45,7 +39,7 @@
dat += "
Tracking Implants
"
for(var/obj/item/weapon/implant/tracking/T in world)
Tr = get_turf(T)
- if((Tr) && (Tr.z != src.z)) continue//Out of range
+ if((Tr) && (Tr.z != computer.z)) continue//Out of range
if(!T.implanted) continue
var/loc_display = "Unknown"
var/mob/living/carbon/M = T.imp_in
@@ -55,55 +49,52 @@
if(T.malfunction)
loc_display = pick(teleportlocs)
dat += "ID: [T.id] | Location: [loc_display]
"
- dat += "(Message Holder) |
"
+ dat += "(Send Message) |
"
dat += "********************************
"
dat += "
Lock Console"
- user << browse(dat, "window=computer;size=400x500")
- onclose(user, "computer")
+ popup.width = 400
+ popup.height = 500
+ popup.set_content(dat)
+ popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state))
+ popup.open()
return
process()
if(!..())
- src.updateDialog()
+ interact()
return
Topic(href, href_list)
- if(..())
+ if(!interactable() || ..(href,href_list))
return
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
- if(href_list["inject1"])
- var/obj/item/weapon/implant/I = locate(href_list["inject1"])
- if(I) I.activate(1)
+ if(href_list["inject1"])
+ var/obj/item/weapon/implant/I = locate(href_list["inject1"])
+ if(I) I.activate(1)
- else if(href_list["inject5"])
- var/obj/item/weapon/implant/I = locate(href_list["inject5"])
- if(I) I.activate(5)
+ else if(href_list["inject5"])
+ var/obj/item/weapon/implant/I = locate(href_list["inject5"])
+ if(I) I.activate(5)
- else if(href_list["inject10"])
- var/obj/item/weapon/implant/I = locate(href_list["inject10"])
- if(I) I.activate(10)
+ else if(href_list["inject10"])
+ var/obj/item/weapon/implant/I = locate(href_list["inject10"])
+ if(I) I.activate(10)
- else if(href_list["lock"])
- if(src.allowed(usr))
- screen = !screen
- else
- usr << "Unauthorized Access."
+ else if(href_list["lock"])
+ screen = !screen
- else if(href_list["warn"])
- var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN)
- if(!warning) return
- var/obj/item/weapon/implant/I = locate(href_list["warn"])
- if((I)&&(I.imp_in))
- var/mob/living/carbon/R = I.imp_in
- R << "\green You hear a voice in your head saying: '[warning]'"
+ else if(href_list["warn"])
+ var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN)
+ if(!warning) return
+ var/obj/item/weapon/implant/I = locate(href_list["warn"])
+ if((I)&&(I.imp_in))
+ var/mob/living/carbon/R = I.imp_in
+ R << "\green You hear a voice in your head saying: '[warning]'"
- src.add_fingerprint(usr)
- src.updateUsrDialog()
+ interact()
return
diff --git a/code/WorkInProgress/computer3/computers/robot.dm b/code/WorkInProgress/computer3/computers/robot.dm
index e3eca9ace2..98eea82f9c 100644
--- a/code/WorkInProgress/computer3/computers/robot.dm
+++ b/code/WorkInProgress/computer3/computers/robot.dm
@@ -74,9 +74,9 @@
dat += " Independent from AI |"
if (istype(usr, /mob/living/silicon))
if(issilicon(usr) && is_special_character(usr) && !R.emagged)
- dat += "(Hack) "
- dat += "([R.canmove ? "Lockdown" : "Release"]) "
- dat += "(Destroy)"
+ dat += "(Hack) "
+ dat += "([R.canmove ? "Lockdown" : "Release"]) "
+ dat += "(Destroy)"
dat += "
"
dat += "(Return to Main Menu)
"
if(screen == 2)
diff --git a/code/WorkInProgress/computer3/computers/security.dm b/code/WorkInProgress/computer3/computers/security.dm
index 77161bb247..7d94f892bb 100644
--- a/code/WorkInProgress/computer3/computers/security.dm
+++ b/code/WorkInProgress/computer3/computers/security.dm
@@ -10,7 +10,7 @@
icon_state = "laptop"
-/datum/file/program/secure_data//TODO:SANITY
+/datum/file/program/secure_data
name = "Security Records"
desc = "Used to view and edit personnel's security records"
active_state = "security"
diff --git a/code/WorkInProgress/computer3/computers/station_alert.dm b/code/WorkInProgress/computer3/computers/station_alert.dm
index 2ee767a39a..850bfc83c5 100644
--- a/code/WorkInProgress/computer3/computers/station_alert.dm
+++ b/code/WorkInProgress/computer3/computers/station_alert.dm
@@ -1,33 +1,23 @@
-
/obj/machinery/computer3/station_alert
+ default_prog = /datum/file/program/station_alert
+ spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio)
+ icon_state = "frame-eng"
+
+
+/datum/file/program/station_alert
name = "Station Alert Console"
desc = "Used to access the station's automated alert system."
- icon_state = "alert:0"
- circuit = "/obj/item/part/board/circuit/stationalert"
+ active_state = "alert:0"
var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list())
-
- attack_ai(mob/user)
- add_fingerprint(user)
- if(stat & (BROKEN|NOPOWER))
- return
- interact(user)
- return
-
-
- attack_hand(mob/user)
- add_fingerprint(user)
- if(stat & (BROKEN|NOPOWER))
- return
- interact(user)
- return
-
-
interact(mob/user)
usr.set_machine(src)
- var/dat = ""
+ if(!interactable())
+ return
+ var/dat = "Current Station Alerts\n"
+ dat += "Close
"
for (var/cat in src.alarms)
- dat += text("[]
", cat)
+ dat += text("[]
\n", cat)
var/list/L = src.alarms[cat]
if (L.len)
for (var/alarm in L)
@@ -36,7 +26,7 @@
var/list/sources = alm[3]
dat += ""
dat += "• "
- dat += "[format_text(A.name)]"
+ dat += "[A.name]"
if (sources.len > 1)
dat += text(" - [] sources", sources.len)
dat += "
\n"
@@ -45,11 +35,10 @@
dat += "
\n"
//user << browse(dat, "window=alerts")
//onclose(user, "alerts")
- var/datum/browser/popup = new(user, "alerts", "Current Station Alerts")
- popup.add_head_content("")
popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
+ popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state))
popup.open()
+ return
Topic(href, href_list)
@@ -59,8 +48,6 @@
proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource)
- if(stat & (BROKEN))
- return
var/list/L = src.alarms[class]
for (var/I in L)
if (I == A.name)
@@ -82,8 +69,6 @@
proc/cancelAlarm(var/class, area/A as area, obj/origin)
- if(stat & (BROKEN))
- return
var/list/L = src.alarms[class]
var/cleared = 0
for (var/I in L)
@@ -98,17 +83,15 @@
return !cleared
+
process()
- if(stat & (BROKEN|NOPOWER))
- icon_state = "atmos0"
- return
var/active_alarms = 0
for (var/cat in src.alarms)
var/list/L = src.alarms[cat]
if(L.len) active_alarms = 1
if(active_alarms)
- icon_state = "alert:2"
+ active_state = "alert:2"
else
- icon_state = "alert:0"
+ active_state = "alert:0"
..()
return
diff --git a/code/WorkInProgress/computer3/laptop.dm b/code/WorkInProgress/computer3/laptop.dm
index c681ff50a7..4b3368b946 100644
--- a/code/WorkInProgress/computer3/laptop.dm
+++ b/code/WorkInProgress/computer3/laptop.dm
@@ -25,7 +25,7 @@
item_state = "laptop-inhand"
pixel_x = 2
pixel_y = -3
- w_class = 4
+ w_class = 3
var/obj/machinery/computer3/laptop/stored_computer = null
diff --git a/code/WorkInProgress/computer3/program.dm b/code/WorkInProgress/computer3/program.dm
index 985ed74d35..67e1d7b3d3 100644
--- a/code/WorkInProgress/computer3/program.dm
+++ b/code/WorkInProgress/computer3/program.dm
@@ -281,7 +281,7 @@ Programs are a file that can be executed
/datum/file/program/Genetics
name = "Genetics Suite"
- image = 'icons/nots/genetics.png'
+ image = 'icons/ntos/genetics.png'
desc = "A sophisticated software suite containing read-only genetics hardware specifications and a highly compressed genome databank."
active_state = "dna"
volume = 8000
diff --git a/icons/obj/computer3.dmi b/icons/obj/computer3.dmi
index 4942da6a6b..1fb6ce267e 100644
Binary files a/icons/obj/computer3.dmi and b/icons/obj/computer3.dmi differ