laptop vending part 1. and more cleanup.

This commit is contained in:
DJSnapshot
2014-06-22 17:19:40 -07:00
parent 41362280f3
commit aa27bdc64c
15 changed files with 178 additions and 340 deletions

View File

@@ -1338,6 +1338,7 @@
#include "code\WorkInProgress\computer3\computer3_notes.dm" #include "code\WorkInProgress\computer3\computer3_notes.dm"
#include "code\WorkInProgress\computer3\file.dm" #include "code\WorkInProgress\computer3\file.dm"
#include "code\WorkInProgress\computer3\laptop.dm" #include "code\WorkInProgress\computer3\laptop.dm"
#include "code\WorkInProgress\computer3\lapvend.dm"
#include "code\WorkInProgress\computer3\networking.dm" #include "code\WorkInProgress\computer3\networking.dm"
#include "code\WorkInProgress\computer3\NTOS.dm" #include "code\WorkInProgress\computer3\NTOS.dm"
#include "code\WorkInProgress\computer3\program.dm" #include "code\WorkInProgress\computer3\program.dm"
@@ -1350,10 +1351,16 @@
#include "code\WorkInProgress\computer3\computers\card.dm" #include "code\WorkInProgress\computer3\computers\card.dm"
#include "code\WorkInProgress\computer3\computers\communications.dm" #include "code\WorkInProgress\computer3\computers\communications.dm"
#include "code\WorkInProgress\computer3\computers\crew.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\HolodeckControl.dm"
#include "code\WorkInProgress\computer3\computers\law.dm" #include "code\WorkInProgress\computer3\computers\law.dm"
#include "code\WorkInProgress\computer3\computers\medical.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\security.dm"
#include "code\WorkInProgress\computer3\computers\welcome.dm"
#include "code\WorkInProgress\kilakk\fax.dm" #include "code\WorkInProgress\kilakk\fax.dm"
#include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Mini\atmos_control.dm"
#include "code\WorkInProgress\Ported\policetape.dm" #include "code\WorkInProgress\Ported\policetape.dm"

View File

@@ -5,7 +5,7 @@
/datum/file/program/ntos /datum/file/program/ntos
name = "Nanotrasen Operating System" name = "Nanotrasen Operating System"
extension = "prog" extension = "prog"
active_state = "NTOS" active_state = "ntos"
var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer
var/fileop = "runfile" var/fileop = "runfile"

View File

@@ -127,6 +127,9 @@
update_icon() update_icon()
proc/update_spawn_files()
for(var/typekey in spawn_files)
hdd.addfile(new typekey,1)
proc/spawn_parts() proc/spawn_parts()
for(var/typekey in spawn_parts) for(var/typekey in spawn_parts)

View File

@@ -31,28 +31,85 @@
// the list of jobs won't change after all... // the list of jobs won't change after all...
proc/scriptblock() proc/scriptblock()
var/global/dat = null var/global/dat = null
if(!dat) var/counter = 0
var/jobs_all = "" var jobs_all = ""
for(var/job in list_jobs()) jobs_all += "<table><tr><td></td><td><b>Command</b></td>"
jobs_all += topic_link(src,"assign=[job]",replacetext(job," ","&nbsp;")) + " "//make sure there isn't a line break in the middle of a job
jobs_all += "</tr><tr height='20'><td><b>Special</b></font></td>"//Captain in special because he is head of heads ~Intercross21
jobs_all += "<td weight='100'><a href='?src=\ref[src];;assign=Captain'>Captain</a></td>"
jobs_all += "<td weight='100'><a href='?src=\ref[src];;assign=Custom'>Custom</a></td>"
counter = 0
jobs_all += "</tr><tr><td><font color='#A50000'><b>Security</b></font></td>"//Red
for(var/job in security_positions)
counter++
if(counter >= 6)
jobs_all += "</tr><tr height='20'><td></td><td></td>"
counter = 0
jobs_all += "<td height='20' weight='100'><a href='?src=\ref[src];assign=[job]'>[replacetext(job, " ", "&nbsp")]</a></td>"
counter = 0
jobs_all += "</tr><tr><td><font color='#FFA500'><b>Engineering</b></font></td>"//Orange
for(var/job in engineering_positions)
counter++
if(counter >= 6)
jobs_all += "</tr><tr height='20'><td></td><td></td>"
counter = 0
jobs_all += "<td height='20' weight='100'><a href='?src=\ref[src];assign=[job]'>[replacetext(job, " ", "&nbsp")]</a></td>"
counter = 0
jobs_all += "</tr><tr height='20'><td><font color='#008000'><b>Medical</b></font></td>"//Green
for(var/job in medical_positions)
counter++
if(counter >= 6)
jobs_all += "</tr><tr height='20'><td></td><td></td>"
counter = 0
jobs_all += "<td weight='100'><a href='?src=\ref[src];assign=[job]'>[replacetext(job, " ", "&nbsp")]</a></td>"
counter = 0
jobs_all += "</tr><tr height='20'><td><font color='#800080'><b>Science</b></font></td>"//Purple
for(var/job in science_positions)
counter++
if(counter >= 6)
jobs_all += "</tr><tr height='20'><td></td><td></td>"
counter = 0
jobs_all += "<td weight='100'><a href='?src=\ref[src];assign=[job]'>[replacetext(job, " ", "&nbsp")]</a></td>"
counter = 0
jobs_all += "</tr><tr height='20'><td><font color='#808080'><b>Civilian</b></font></td>"//Grey
for(var/job in civilian_positions)
counter++
if(counter >= 6)
jobs_all += "</tr><tr height='20'><td></td><td></td>"
counter = 0
jobs_all += "<td weight='100'><a href='?src=\ref[src];assign=[job]'>[replacetext(job, " ", "&nbsp")]</a></td>"
dat = {"<script type="text/javascript"> dat = {"<script type="text/javascript">
function markRed(){ function markRed(){
var nameField = document.getElementById('namefield'); var nameField = document.getElementById('namefield');
nameField.style.backgroundColor = "#FFDDDD"; nameField.style.backgroundColor = "#FFDDDD";
} }
function markGreen(){ function markGreen(){
var nameField = document.getElementById('namefield'); var nameField = document.getElementById('namefield');
nameField.style.backgroundColor = "#DDFFDD"; nameField.style.backgroundColor = "#DDFFDD";
} }
function showAll(){ function markAccountGreen(){
var allJobsSlot = document.getElementById('alljobsslot'); var nameField = document.getElementById('accountfield');
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>hide</a><br>[jobs_all]"; nameField.style.backgroundColor = "#DDFFDD";
} }
function hideAll(){ function markAccountRed(){
var allJobsSlot = document.getElementById('alljobsslot'); var nameField = document.getElementById('accountfield');
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>change</a>"; nameField.style.backgroundColor = "#FFDDDD";
} }
</script>"} function showAll(){
var allJobsSlot = document.getElementById('alljobsslot');
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>hide</a><br>"+ "[jobs_all]";
}
function hideAll(){
var allJobsSlot = document.getElementById('alljobsslot');
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>[(writer.assignment) ? writer.assignment : "Unassgied"]</a>";
}
</script>"}
return dat return dat
// creates the list of access rights on the card // creates the list of access rights on the card

View File

@@ -11,6 +11,11 @@
default_prog = /datum/file/program/med_data 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) 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 /datum/file/program/med_data
name = "Medical Records" name = "Medical Records"
desc = "This can be used to check medical records." desc = "This can be used to check medical records."

View File

@@ -2,6 +2,9 @@
default_prog = /datum/file/program/message_mon default_prog = /datum/file/program/message_mon
spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/prox) 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 /datum/file/program/message_mon
name = "Message Monitor Console" 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." 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." 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() update_icon()
if(emag || hacking) if(emag || hacking)
overlay.icon_state = hack_icon overlay.icon_state = hack_icon
@@ -45,12 +55,12 @@
interact() interact()
if(!interactable()) if(!interactable())
return return
//If the computer is being hacked or is emagged, display the reboot message. //If the computer is being hacked or is emagged, display the reboot message.
if(hacking || emag) if(hacking || emag)
message = rebootmsg message = rebootmsg
var/dat = "<head><title>Message Monitor Console</title></head><body>"
var/dat = "<center><font color='blue'[message]</font>/</center>" dat += "<center><h2>Message Monitor Console</h2></center><hr>"
dat += "<center><h4><font color='blue'[message]</h5></center>"
if(auth) if(auth)
dat += "<h4><dd><A href='?src=\ref[src];auth=1'>&#09;<font color='green'>\[Authenticated\]</font></a>&#09;/" dat += "<h4><dd><A href='?src=\ref[src];auth=1'>&#09;<font color='green'>\[Authenticated\]</font></a>&#09;/"
@@ -61,12 +71,9 @@
if(hacking || emag) if(hacking || emag)
screen = 2 screen = 2
else else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
if(!auth) if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) message = noserver
screen = 0 screen = 0
if( !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)) )
message = noserver
screen = 0
switch(screen) switch(screen)
//Main menu //Main menu
@@ -202,9 +209,11 @@
<td width='15%'>[rc.rec_dpt]</td><td width='300px'>[rc.message]</td><td width='15%'>[rc.stamp]</td><td width='15%'>[rc.id_auth]</td><td width='15%'>[rc.priority]</td></tr>"} <td width='15%'>[rc.rec_dpt]</td><td width='300px'>[rc.message]</td><td width='15%'>[rc.stamp]</td><td width='15%'>[rc.id_auth]</td><td width='15%'>[rc.priority]</td></tr>"}
dat += "</table>" dat += "</table>"
message = defaultmsg
popup.width = 700
popup.height = 700
popup.set_content(dat) popup.set_content(dat)
popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state))
popup.open() popup.open()
return return

View File

@@ -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 = "<A href='?src=\ref[src];time=0'>Stop Time Launch</A>"
else
d2 = "<A href='?src=\ref[src];time=1'>Initiate Time Launch</A>"
var/second = time % 60
var/minute = (time - second) / 60
dat += "<HR>\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] <A href='?src=\ref[src];tp=-30'>-</A> <A href='?src=\ref[src];tp=-1'>-</A> <A href='?src=\ref[src];tp=1'>+</A> <A href='?src=\ref[src];tp=30'>+</A>"
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 += "<A href = '?src=\ref[src];power=[t]'>[t]</A> "
dat += "<HR>\nPower Level: [temp]<BR>\n<A href = '?src=\ref[src];alarm=1'>Firing Sequence</A><BR>\n<A href = '?src=\ref[src];drive=1'>Test Fire Driver</A><BR>\n<A href = '?src=\ref[src];door=1'>Toggle Outer Door</A><BR>"
else
dat += "<BR>\n<A href = '?src=\ref[src];door=1'>Toggle Outer Door</A><BR>"
dat += "<BR><BR><A href='?src=\ref[user];mach_close=computer'>Close</A>"
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"

View File

@@ -11,7 +11,8 @@
proc/format(var/obj/machinery/power/apc/A) proc/format(var/obj/machinery/power/apc/A)
var/static/list/S = list(" Off","AOff"," On", " AOn") var/static/list/S = list(" Off","AOff"," On", " AOn")
var/static/list/chg = list("N","C","F") 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"]<BR>" 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"]<BR>"
interact() interact()
if(!interactable()) if(!interactable())
@@ -23,7 +24,7 @@
var/t = "" var/t = ""
t += "<A href='?src=\ref[src]'>Refresh</A><br /><br />" t += "<A href='?src=\ref[src]'>Refresh</A><br /><br />"
if(!L || !L.len) if(!L || !L.len)
t += "\red No connection" t += "No connection"
else else
var/datum/powernet/powernet = computer.net.connect_to(/datum/powernet,null) var/datum/powernet/powernet = computer.net.connect_to(/datum/powernet,null)
if(powernet) if(powernet)

View File

@@ -1,11 +1,14 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
/obj/machinery/computer3/prisoner /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" name = "Prisoner Management Comsole"
icon = 'icons/obj/computer.dmi' active_state = "explosive"
icon_state = "explosive"
req_access = list(access_armory) req_access = list(access_armory)
circuit = "/obj/item/part/board/circuit/prisoner"
var/id = 0.0 var/id = 0.0
var/temp = null var/temp = null
var/status = 0 var/status = 0
@@ -14,18 +17,9 @@
var/screen = 0 // 0 - No Access Denied, 1 - Access allowed var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
attack_ai(var/mob/user as mob) interact()
return src.attack_hand(user) if(!interactable())
attack_paw(var/mob/user as mob)
return
attack_hand(var/mob/user as mob)
if(..())
return return
user.set_machine(src)
var/dat var/dat
dat += "<B>Prisoner Implant Manager System</B><BR>" dat += "<B>Prisoner Implant Manager System</B><BR>"
if(screen == 0) if(screen == 0)
@@ -35,7 +29,7 @@
var/turf/Tr = null var/turf/Tr = null
for(var/obj/item/weapon/implant/chem/C in world) for(var/obj/item/weapon/implant/chem/C in world)
Tr = get_turf(C) 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 if(!C.implanted) continue
dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: " dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: "
dat += "<A href='?src=\ref[src];inject1=\ref[C]'>(<font color=red>(1)</font>)</A>" dat += "<A href='?src=\ref[src];inject1=\ref[C]'>(<font color=red>(1)</font>)</A>"
@@ -45,7 +39,7 @@
dat += "<HR>Tracking Implants<BR>" dat += "<HR>Tracking Implants<BR>"
for(var/obj/item/weapon/implant/tracking/T in world) for(var/obj/item/weapon/implant/tracking/T in world)
Tr = get_turf(T) 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 if(!T.implanted) continue
var/loc_display = "Unknown" var/loc_display = "Unknown"
var/mob/living/carbon/M = T.imp_in var/mob/living/carbon/M = T.imp_in
@@ -55,55 +49,52 @@
if(T.malfunction) if(T.malfunction)
loc_display = pick(teleportlocs) loc_display = pick(teleportlocs)
dat += "ID: [T.id] | Location: [loc_display]<BR>" dat += "ID: [T.id] | Location: [loc_display]<BR>"
dat += "<A href='?src=\ref[src];warn=\ref[T]'>(<font color=red><i>Message Holder</i></font>)</A> |<BR>" dat += "<A href='?src=\ref[src];warn=\ref[T]'>(<i>Send Message</i></font>)</A> |<BR>"
dat += "********************************<BR>" dat += "********************************<BR>"
dat += "<HR><A href='?src=\ref[src];lock=1'>Lock Console</A>" dat += "<HR><A href='?src=\ref[src];lock=1'>Lock Console</A>"
user << browse(dat, "window=computer;size=400x500") popup.width = 400
onclose(user, "computer") popup.height = 500
popup.set_content(dat)
popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state))
popup.open()
return return
process() process()
if(!..()) if(!..())
src.updateDialog() interact()
return return
Topic(href, href_list) Topic(href, href_list)
if(..()) if(!interactable() || ..(href,href_list))
return 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"]) if(href_list["inject1"])
var/obj/item/weapon/implant/I = locate(href_list["inject1"]) var/obj/item/weapon/implant/I = locate(href_list["inject1"])
if(I) I.activate(1) if(I) I.activate(1)
else if(href_list["inject5"]) else if(href_list["inject5"])
var/obj/item/weapon/implant/I = locate(href_list["inject5"]) var/obj/item/weapon/implant/I = locate(href_list["inject5"])
if(I) I.activate(5) if(I) I.activate(5)
else if(href_list["inject10"]) else if(href_list["inject10"])
var/obj/item/weapon/implant/I = locate(href_list["inject10"]) var/obj/item/weapon/implant/I = locate(href_list["inject10"])
if(I) I.activate(10) if(I) I.activate(10)
else if(href_list["lock"]) else if(href_list["lock"])
if(src.allowed(usr)) screen = !screen
screen = !screen
else
usr << "Unauthorized Access."
else if(href_list["warn"]) else if(href_list["warn"])
var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN)
if(!warning) return if(!warning) return
var/obj/item/weapon/implant/I = locate(href_list["warn"]) var/obj/item/weapon/implant/I = locate(href_list["warn"])
if((I)&&(I.imp_in)) if((I)&&(I.imp_in))
var/mob/living/carbon/R = I.imp_in var/mob/living/carbon/R = I.imp_in
R << "\green You hear a voice in your head saying: '[warning]'" R << "\green You hear a voice in your head saying: '[warning]'"
src.add_fingerprint(usr) interact()
src.updateUsrDialog()
return return

View File

@@ -74,9 +74,9 @@
dat += " Independent from AI |" dat += " Independent from AI |"
if (istype(usr, /mob/living/silicon)) if (istype(usr, /mob/living/silicon))
if(issilicon(usr) && is_special_character(usr) && !R.emagged) if(issilicon(usr) && is_special_character(usr) && !R.emagged)
dat += "<A href='?src=\ref[src];magbot=\ref[R]'>(<font color=blue><i>Hack</i></font>)</A> " dat += "<A href='?src=\ref[src];magbot=\ref[R]'>(<i>Hack</i>)</A> "
dat += "<A href='?src=\ref[src];stopbot=\ref[R]'>(<font color=green><i>[R.canmove ? "Lockdown" : "Release"]</i></font>)</A> " dat += "<A href='?src=\ref[src];stopbot=\ref[R]'>(<i>[R.canmove ? "Lockdown" : "Release"]</i>)</A> "
dat += "<A href='?src=\ref[src];killbot=\ref[R]'>(<font color=red><i>Destroy</i></font>)</A>" dat += "<A href='?src=\ref[src];killbot=\ref[R]'>(<i>Destroy</i>)</A>"
dat += "<BR>" dat += "<BR>"
dat += "<A href='?src=\ref[src];screen=0'>(Return to Main Menu)</A><BR>" dat += "<A href='?src=\ref[src];screen=0'>(Return to Main Menu)</A><BR>"
if(screen == 2) if(screen == 2)

View File

@@ -10,7 +10,7 @@
icon_state = "laptop" icon_state = "laptop"
/datum/file/program/secure_data//TODO:SANITY /datum/file/program/secure_data
name = "Security Records" name = "Security Records"
desc = "Used to view and edit personnel's security records" desc = "Used to view and edit personnel's security records"
active_state = "security" active_state = "security"

View File

@@ -1,33 +1,23 @@
/obj/machinery/computer3/station_alert /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" name = "Station Alert Console"
desc = "Used to access the station's automated alert system." desc = "Used to access the station's automated alert system."
icon_state = "alert:0" active_state = "alert:0"
circuit = "/obj/item/part/board/circuit/stationalert"
var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list()) 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) interact(mob/user)
usr.set_machine(src) usr.set_machine(src)
var/dat = "" if(!interactable())
return
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
dat += "<A HREF='?src=\ref[user];mach_close=alerts'>Close</A><br><br>"
for (var/cat in src.alarms) for (var/cat in src.alarms)
dat += text("<h2>[]</h2>", cat) dat += text("<B>[]</B><BR>\n", cat)
var/list/L = src.alarms[cat] var/list/L = src.alarms[cat]
if (L.len) if (L.len)
for (var/alarm in L) for (var/alarm in L)
@@ -36,7 +26,7 @@
var/list/sources = alm[3] var/list/sources = alm[3]
dat += "<NOBR>" dat += "<NOBR>"
dat += "&bull; " dat += "&bull; "
dat += "[format_text(A.name)]" dat += "[A.name]"
if (sources.len > 1) if (sources.len > 1)
dat += text(" - [] sources", sources.len) dat += text(" - [] sources", sources.len)
dat += "</NOBR><BR>\n" dat += "</NOBR><BR>\n"
@@ -45,11 +35,10 @@
dat += "<BR>\n" dat += "<BR>\n"
//user << browse(dat, "window=alerts") //user << browse(dat, "window=alerts")
//onclose(user, "alerts") //onclose(user, "alerts")
var/datum/browser/popup = new(user, "alerts", "Current Station Alerts")
popup.add_head_content("<META HTTP-EQUIV='Refresh' CONTENT='10'>")
popup.set_content(dat) 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() popup.open()
return
Topic(href, href_list) Topic(href, href_list)
@@ -59,8 +48,6 @@
proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource) proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource)
if(stat & (BROKEN))
return
var/list/L = src.alarms[class] var/list/L = src.alarms[class]
for (var/I in L) for (var/I in L)
if (I == A.name) if (I == A.name)
@@ -82,8 +69,6 @@
proc/cancelAlarm(var/class, area/A as area, obj/origin) proc/cancelAlarm(var/class, area/A as area, obj/origin)
if(stat & (BROKEN))
return
var/list/L = src.alarms[class] var/list/L = src.alarms[class]
var/cleared = 0 var/cleared = 0
for (var/I in L) for (var/I in L)
@@ -98,17 +83,15 @@
return !cleared return !cleared
process() process()
if(stat & (BROKEN|NOPOWER))
icon_state = "atmos0"
return
var/active_alarms = 0 var/active_alarms = 0
for (var/cat in src.alarms) for (var/cat in src.alarms)
var/list/L = src.alarms[cat] var/list/L = src.alarms[cat]
if(L.len) active_alarms = 1 if(L.len) active_alarms = 1
if(active_alarms) if(active_alarms)
icon_state = "alert:2" active_state = "alert:2"
else else
icon_state = "alert:0" active_state = "alert:0"
..() ..()
return return

View File

@@ -25,7 +25,7 @@
item_state = "laptop-inhand" item_state = "laptop-inhand"
pixel_x = 2 pixel_x = 2
pixel_y = -3 pixel_y = -3
w_class = 4 w_class = 3
var/obj/machinery/computer3/laptop/stored_computer = null var/obj/machinery/computer3/laptop/stored_computer = null

View File

@@ -281,7 +281,7 @@ Programs are a file that can be executed
/datum/file/program/Genetics /datum/file/program/Genetics
name = "Genetics Suite" 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." desc = "A sophisticated software suite containing read-only genetics hardware specifications and a highly compressed genome databank."
active_state = "dna" active_state = "dna"
volume = 8000 volume = 8000

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB