mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-06 07:32:15 +00:00
Just some general cleanup
Moved the spacecraft folder into the unused section, moved syndiebeacon into machinery. Research moved into Modules. Virus2 moved into WIP - is anyone even working on this, it looks almost done? Computer2,optics,pda2,experimental moved unto unused. WIP Chemistry things moved into Chemical Module Cameras.dm moved into weapons GameKit.dm moved into unused BrokenInHands.dm moved into unused Removed Grillify.dm Moved all of the files listed as unused in the mining module to unused Removed several empty folders in modules Moved cloning.dm into machinery Moved NewBan.dm into admin Changed humanoid aliens new_life.dm into life.dm Moved beast mob into unused Moved hivebot into unused Moved carpedexplosion.dm into unused Moved ai_lockdown.dm verb into unused and removed it from the AIs verb list as it didn't actually do anything. Removed mastercontroler2.dm Moved savefile.dm from human to new_player Bugfix People spawning on the starting screen on rev/cult should be fixed. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1964 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
445
code/unused/pda2/base_os.dm
Normal file
445
code/unused/pda2/base_os.dm
Normal file
@@ -0,0 +1,445 @@
|
||||
/datum/computer/file/pda_program/os
|
||||
proc
|
||||
receive_os_command(list/command_list)
|
||||
if((!src.holder) || (!src.master) || (!command_list) || !(command_list["command"]))
|
||||
return 1
|
||||
|
||||
if((!istype(holder)) || (!istype(master)))
|
||||
return 1
|
||||
|
||||
if(!(holder in src.master.contents))
|
||||
if(master.active_program == src)
|
||||
master.active_program = null
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
//Main os program: Provides old pda interface and four programs including file browser, notes, messenger, and atmos scan
|
||||
main_os
|
||||
name = "ThinkOS 7"
|
||||
size = 8.0
|
||||
var/mode = 0
|
||||
//Note vars
|
||||
var/note = "Congratulations, your station has chosen the Thinktronic 5150 Personal Data Assistant!"
|
||||
var/note_mode = 0 //0 For note editor, 1 for note browser
|
||||
var/datum/computer/file/text/note_file = null //If set, save to this file.
|
||||
//Messenger vars
|
||||
var/list/detected_pdas = list()
|
||||
var/message_on = 1
|
||||
var/message_silent = 0 //To beep or not to beep, that is the question
|
||||
var/message_mode = 0 //0 for pda list, 1 for messages
|
||||
var/message_tone = "beep" //Custom ringtone
|
||||
var/message_note = null //Current messages in memory (Store as separate file only later??)
|
||||
//File browser vars
|
||||
var/datum/computer/folder/browse_folder = null
|
||||
var/datum/computer/file/clipboard = null //Current file to copy
|
||||
|
||||
|
||||
|
||||
receive_os_command(list/command_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
//world << "[command_list["command"]]"
|
||||
return
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
|
||||
switch(src.mode)
|
||||
if(0)
|
||||
dat += "<h2>PERSONAL DATA ASSISTANT</h2>"
|
||||
dat += "Owner: [src.master.owner]<br><br>"
|
||||
|
||||
dat += "<h4>General Functions</h4>"
|
||||
dat += "<ul>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];mode=1'>Notekeeper</a></li>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];mode=2'>Messenger</a></li>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];mode=3'>File Browser</a></li>"
|
||||
dat += "</ul>"
|
||||
|
||||
dat += "<h4>Utilities</h4>"
|
||||
dat += "<ul>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];mode=4'>Atmospheric Scan</a></li>"
|
||||
dat += "<li>Scanner: [src.master.scan_program ? "<a href='byond://?src=\ref[src];scanner=1'>[src.master.scan_program.name]</a>" : "None loaded"]</li>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];flight=1'>[src.master.fon ? "Disable" : "Enable"] Flashlight</a></li>"
|
||||
|
||||
dat += "</ul>"
|
||||
|
||||
if(1)
|
||||
//Note Program. Can save/load note files.
|
||||
dat += "<h4>Notekeeper V2.5</h4>"
|
||||
|
||||
if(!src.note_mode)
|
||||
dat += "<a href='byond://?src=\ref[src];input=note'>Edit</a>"
|
||||
dat += " | <a href='byond://?src=\ref[src];note_func=new'>New File</a>"
|
||||
dat += " | <a href='byond://?src=\ref[src];note_func=save'>Save</a>"
|
||||
dat += " | <a href='byond://?src=\ref[src];note_func=switchmenu'>Load</a><br>"
|
||||
|
||||
dat += src.note
|
||||
else
|
||||
dat += " <a href='byond://?src=\ref[src];note_func=switchmenu'>Back</a>"
|
||||
dat += " | \[[src.holding_folder.holder.file_amount - src.holding_folder.holder.file_used]\] Free<br>"
|
||||
dat += "<table cellspacing=5>"
|
||||
|
||||
for(var/datum/computer/file/text/T in src.holding_folder.contents)
|
||||
dat += "<tr><td><a href='byond://?src=\ref[src];target=\ref[T];note_func=load'>[T.name]</a></td>"
|
||||
dat += "<td>[T.extension]</td>"
|
||||
dat += "<td>Length: [T.data ? (length(T.data)) : "0"]</td></tr>"
|
||||
|
||||
dat += "</table>"
|
||||
|
||||
if(2)
|
||||
//Messenger. Uses Radio. Is a messenger.
|
||||
//TO-DO: ~file sharing~
|
||||
src.master.overlays = null //Remove existing alerts
|
||||
dat += "<h4>SpaceMessenger V4.0.5</h4>"
|
||||
|
||||
if (!src.message_mode)
|
||||
|
||||
dat += "<a href='byond://?src=\ref[src];message_func=ringer'>Ringer: [src.message_silent == 1 ? "Off" : "On"]</a> | "
|
||||
dat += "<a href='byond://?src=\ref[src];message_func=on'>Send / Receive: [src.message_on == 1 ? "On" : "Off"]</a> | "
|
||||
dat += "<a href='byond://?src=\ref[src];input=tone'>Set Ringtone</a> | "
|
||||
dat += "<a href='byond://?src=\ref[src];message_mode=1'>Messages</a><br>"
|
||||
|
||||
dat += "<font size=2><a href='byond://?src=\ref[src];message_func=scan'>Scan</a></font><br>"
|
||||
dat += "<b>Detected PDAs</b><br>"
|
||||
|
||||
dat += "<ul>"
|
||||
|
||||
var/count = 0
|
||||
|
||||
if (src.message_on)
|
||||
for (var/obj/item/device/pda2/P in src.detected_pdas)
|
||||
if (!P.owner)
|
||||
src.detected_pdas -= P
|
||||
continue
|
||||
else if (P == src) //I guess this can happen if somebody copies the system file.
|
||||
src.detected_pdas -= P
|
||||
continue
|
||||
|
||||
dat += "<li><a href='byond://?src=\ref[src];input=message;target=\ref[P]'>[P]</a>"
|
||||
|
||||
dat += "</li>"
|
||||
count++
|
||||
|
||||
dat += "</ul>"
|
||||
|
||||
if (count == 0)
|
||||
dat += "None detected.<br>"
|
||||
|
||||
else
|
||||
dat += "<a href='byond://?src=\ref[src];message_func=clear'>Clear</a> | "
|
||||
dat += "<a href='byond://?src=\ref[src];message_mode=0'>Back</a><br>"
|
||||
|
||||
dat += "<h4>Messages</h4>"
|
||||
|
||||
dat += src.message_note
|
||||
dat += "<br>"
|
||||
|
||||
if(3)
|
||||
//File Browser.
|
||||
//To-do(?): Setting "favorite" programs to access straight from main menu
|
||||
//Not sure how needed it is, not like they have to go through 500 subfolders or whatever
|
||||
if((!src.browse_folder) || !(src.browse_folder.holder in src.master))
|
||||
src.browse_folder = src.holding_folder
|
||||
|
||||
dat += " | <a href='byond://?src=\ref[src];target=\ref[src.browse_folder];browse_func=paste'>Paste</a>"
|
||||
dat += " | Drive: "
|
||||
dat += "\[<a href='byond://?src=\ref[src];browse_func=drive'>[src.browse_folder.holder == src.master.hd ? "MAIN" : "CART"]</a>\]<br>"
|
||||
|
||||
dat += "<b>Contents of [browse_folder] | Drive ID:\[[src.browse_folder.holder.title]]</b><br>"
|
||||
dat += "<b>Used: \[[src.browse_folder.holder.file_used]/[src.browse_folder.holder.file_amount]\]</b><hr>"
|
||||
|
||||
dat += "<table cellspacing=5>"
|
||||
for(var/datum/computer/file/F in browse_folder.contents)
|
||||
if(F == src)
|
||||
dat += "<tr><td>System</td><td>Size: [src.size]</td><td>SYSTEM</td></tr>"
|
||||
continue
|
||||
dat += "<tr><td><a href='byond://?src=\ref[src];target=\ref[F];browse_func=open'>[F.name]</a></td>"
|
||||
dat += "<td>Size: [F.size]</td>"
|
||||
|
||||
dat += "<td>[F.extension]</td>"
|
||||
|
||||
dat += "<td><a href='byond://?src=\ref[src];target=\ref[F];browse_func=delete'>Del</a></td>"
|
||||
dat += "<td><a href='byond://?src=\ref[src];target=\ref[F];input=rename'>Rename</a></td>"
|
||||
|
||||
dat += "<td><a href='byond://?src=\ref[src];target=\ref[F];browse_func=copy'>Copy</a></td>"
|
||||
|
||||
dat += "</tr>"
|
||||
|
||||
dat += "</table>"
|
||||
|
||||
if(4)
|
||||
//Atmos Scanner
|
||||
dat += "<h4>Atmospheric Readings</h4>"
|
||||
|
||||
var/turf/T = get_turf_or_move(get_turf(src.master))
|
||||
if (isnull(T))
|
||||
dat += "Unable to obtain a reading.<br>"
|
||||
else
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
|
||||
var/pressure = environment.return_pressure()
|
||||
var/total_moles = environment.total_moles()
|
||||
|
||||
dat += "Air Pressure: [round(pressure,0.1)] kPa<br>"
|
||||
|
||||
if (total_moles)
|
||||
var/o2_level = environment.oxygen/total_moles
|
||||
var/n2_level = environment.nitrogen/total_moles
|
||||
var/co2_level = environment.carbon_dioxide/total_moles
|
||||
var/plasma_level = environment.toxins/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
|
||||
|
||||
dat += "Nitrogen: [round(n2_level*100)]%<br>"
|
||||
|
||||
dat += "Oxygen: [round(o2_level*100)]%<br>"
|
||||
|
||||
dat += "Carbon Dioxide: [round(co2_level*100)]%<br>"
|
||||
|
||||
dat += "Plasma: [round(plasma_level*100)]%<br>"
|
||||
|
||||
if(unknown_level > 0.01)
|
||||
dat += "OTHER: [round(unknown_level)]%<br>"
|
||||
|
||||
dat += "Temperature: [round(environment.temperature-T0C)]°C<br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
return dat
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(href_list["mode"])
|
||||
var/newmode = text2num(href_list["mode"])
|
||||
src.mode = max(newmode, 0)
|
||||
|
||||
else if(href_list["flight"])
|
||||
src.master.toggle_light()
|
||||
|
||||
else if(href_list["scanner"])
|
||||
if(src.master.scan_program)
|
||||
src.master.scan_program = null
|
||||
|
||||
else if(href_list["input"])
|
||||
switch(href_list["input"])
|
||||
if("tone")
|
||||
var/t = input(usr, "Please enter new ringtone", src.name, src.message_tone) as text
|
||||
if (!t)
|
||||
return
|
||||
|
||||
if (!src.master || !in_range(src.master, usr) && src.master.loc != usr)
|
||||
return
|
||||
|
||||
if(!(src.holder in src.master))
|
||||
return
|
||||
|
||||
t = copytext(sanitize(t), 1, 20)
|
||||
src.message_tone = t
|
||||
|
||||
if("note")
|
||||
var/t = input(usr, "Please enter note", src.name, src.note) as message
|
||||
if (!t)
|
||||
return
|
||||
|
||||
if (!src.master || !in_range(src.master, usr) && src.master.loc != usr)
|
||||
return
|
||||
|
||||
if(!(src.holder in src.master))
|
||||
return
|
||||
|
||||
t = copytext(adminscrub(t), 1, MAX_MESSAGE_LEN)
|
||||
src.note = t
|
||||
|
||||
|
||||
if("message")
|
||||
var/obj/item/device/pda2/P = locate(href_list["target"])
|
||||
if(!P || !istype(P))
|
||||
return
|
||||
|
||||
var/t = input(usr, "Please enter message", P.name, null) as text
|
||||
if (!t)
|
||||
return
|
||||
|
||||
if (!src.master || !in_range(src.master, usr) && src.master.loc != usr)
|
||||
return
|
||||
|
||||
if(!(src.holder in src.master))
|
||||
return
|
||||
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.data["command"] = "text message"
|
||||
signal.data["message"] = t
|
||||
signal.data["sender"] = src.master.owner
|
||||
signal.data["tag"] = "\ref[P]"
|
||||
src.post_signal(signal)
|
||||
src.message_note += "<i><b>→ To [P.owner]:</b></i><br>[t]<br>"
|
||||
|
||||
if("rename")
|
||||
var/datum/computer/file/F = locate(href_list["target"])
|
||||
if(!F || !istype(F))
|
||||
return
|
||||
|
||||
var/t = input(usr, "Please enter new name", src.name, F.name) as text
|
||||
t = copytext(sanitize(t), 1, 16)
|
||||
if (!t)
|
||||
return
|
||||
if (!in_range(src.master, usr) || !(F.holder in src.master))
|
||||
return
|
||||
if(F.holder.read_only)
|
||||
return
|
||||
F.name = capitalize(lowertext(t))
|
||||
|
||||
|
||||
else if(href_list["message_func"]) //Messenger specific topic junk
|
||||
switch(href_list["message_func"])
|
||||
if("ringer")
|
||||
src.message_silent = !src.message_silent
|
||||
if("on")
|
||||
src.message_on = !src.message_on
|
||||
if("clear")
|
||||
src.message_note = null
|
||||
if("scan")
|
||||
if(src.message_on)
|
||||
src.detected_pdas = list()
|
||||
var/datum/signal/signal = new
|
||||
signal.data["command"] = "report pda"
|
||||
src.post_signal(signal)
|
||||
|
||||
else if(href_list["note_func"]) //Note program specific topic junk
|
||||
switch(href_list["note_func"])
|
||||
if("new")
|
||||
src.note_file = null
|
||||
src.note = null
|
||||
if("save")
|
||||
if(src.note_file && src.note_file.holder in src.master)
|
||||
src.note_file.data = src.note
|
||||
else
|
||||
var/datum/computer/file/text/F = new /datum/computer/file/text
|
||||
if(!src.holding_folder.add_file(F))
|
||||
del(F)
|
||||
else
|
||||
src.note_file = F
|
||||
F.data = src.note
|
||||
|
||||
if("load")
|
||||
var/datum/computer/file/text/T = locate(href_list["target"])
|
||||
if(!T || !istype(T))
|
||||
return
|
||||
|
||||
src.note_file = T
|
||||
src.note = note_file.data
|
||||
src.note_mode = 0
|
||||
|
||||
if("switchmenu")
|
||||
src.note_mode = !src.note_mode
|
||||
|
||||
else if(href_list["browse_func"]) //File browser specific topic junk
|
||||
var/datum/computer/target = locate(href_list["target"])
|
||||
switch(href_list["browse_func"])
|
||||
if("drive")
|
||||
if(src.browse_folder.holder == src.master.hd && src.master.cartridge && (src.master.cartridge.root))
|
||||
src.browse_folder = src.master.cartridge.root
|
||||
else
|
||||
src.browse_folder = src.holding_folder
|
||||
if("open")
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
if(istype(target, /datum/computer/file/pda_program))
|
||||
if(istype(target,/datum/computer/file/pda_program/os) && (src.master.host_program))
|
||||
return
|
||||
else
|
||||
src.master.run_program(target)
|
||||
src.master.updateSelfDialog()
|
||||
return
|
||||
|
||||
if("delete")
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
src.master.delete_file(target)
|
||||
|
||||
if("copy")
|
||||
if(istype(target,/datum/computer/file) && (!target.holder || (target.holder in src.master.contents)))
|
||||
src.clipboard = target
|
||||
|
||||
if("paste")
|
||||
if(istype(target,/datum/computer/folder))
|
||||
if(!src.clipboard || !src.clipboard.holder || !(src.clipboard.holder in src.master.contents))
|
||||
return
|
||||
|
||||
if(!istype(src.clipboard))
|
||||
return
|
||||
|
||||
src.clipboard.copy_file_to_folder(target)
|
||||
|
||||
|
||||
else if(href_list["message_mode"])
|
||||
var/newmode = text2num(href_list["message_mode"])
|
||||
src.message_mode = max(newmode, 0)
|
||||
|
||||
src.master.add_fingerprint(usr)
|
||||
src.master.updateSelfDialog()
|
||||
return
|
||||
|
||||
receive_signal(datum/signal/signal)
|
||||
if(..())
|
||||
return
|
||||
|
||||
switch(signal.data["command"])
|
||||
if("text message")
|
||||
if(!message_on || !signal.data["message"])
|
||||
return
|
||||
var/sender = signal.data["sender"]
|
||||
if(!sender)
|
||||
sender = "!Unknown!"
|
||||
|
||||
src.message_note += "<i><b>← From <a href='byond://?src=\ref[src];input=message;target=\ref[signal.source]'>[sender]</a>:</b></i><br>[signal.data["message"]]<br>"
|
||||
var/alert_beep = null //Don't beep if set to silent.
|
||||
if(!src.message_silent)
|
||||
alert_beep = src.message_tone
|
||||
|
||||
src.master.display_alert(alert_beep)
|
||||
src.master.updateSelfDialog()
|
||||
|
||||
if("report pda")
|
||||
if(!message_on)
|
||||
return
|
||||
|
||||
var/datum/signal/newsignal = new
|
||||
newsignal.data["command"] = "reporting pda"
|
||||
newsignal.data["tag"] = "\ref[signal.source]"
|
||||
src.post_signal(newsignal)
|
||||
|
||||
if("reporting pda")
|
||||
if(!detected_pdas)
|
||||
detected_pdas = new()
|
||||
|
||||
if(!(signal.source in detected_pdas))
|
||||
detected_pdas += signal.source
|
||||
|
||||
src.master.updateSelfDialog()
|
||||
|
||||
return
|
||||
|
||||
return_text_header()
|
||||
if(!src.master)
|
||||
return
|
||||
|
||||
var/dat
|
||||
|
||||
if(src.mode)
|
||||
dat += " | <a href='byond://?src=\ref[src];mode=0'>Main Menu</a>"
|
||||
|
||||
else if (!isnull(src.master.cartridge))
|
||||
dat += " | <a href='byond://?src=\ref[src.master];eject_cart=1'>Eject [src.master.cartridge]</a>"
|
||||
|
||||
dat += " | <a href='byond://?src=\ref[src.master];refresh=1'>Refresh</a>"
|
||||
|
||||
return dat
|
||||
185
code/unused/pda2/base_program.dm
Normal file
185
code/unused/pda2/base_program.dm
Normal file
@@ -0,0 +1,185 @@
|
||||
//Eventual plan: Convert all datum/data to datum/computer/file
|
||||
/datum/computer/file/text
|
||||
name = "text"
|
||||
extension = "TEXT"
|
||||
size = 2.0
|
||||
var/data = null
|
||||
|
||||
/datum/computer/file/record
|
||||
name = "record"
|
||||
extension = "REC"
|
||||
|
||||
var/list/fields = list( )
|
||||
|
||||
|
||||
//base pda program
|
||||
|
||||
/datum/computer/file/pda_program
|
||||
name = "blank program"
|
||||
extension = "PPROG"
|
||||
var/obj/item/device/pda2/master = null
|
||||
var/id_tag = null
|
||||
|
||||
os
|
||||
name = "blank system program"
|
||||
extension = "PSYS"
|
||||
|
||||
scan
|
||||
name = "blank scan program"
|
||||
extension = "PSCAN"
|
||||
|
||||
New(obj/holding as obj)
|
||||
if(holding)
|
||||
src.holder = holding
|
||||
|
||||
if(istype(src.holder.loc,/obj/item/device/pda2))
|
||||
src.master = src.holder.loc
|
||||
|
||||
proc
|
||||
return_text()
|
||||
if((!src.holder) || (!src.master))
|
||||
return 1
|
||||
|
||||
if((!istype(holder)) || (!istype(master)))
|
||||
return 1
|
||||
|
||||
if(!(holder in src.master.contents))
|
||||
//world << "Holder [holder] not in [master] of prg:[src]"
|
||||
if(master.active_program == src)
|
||||
master.active_program = null
|
||||
return 1
|
||||
|
||||
if(!src.holder.root)
|
||||
src.holder.root = new /datum/computer/folder
|
||||
src.holder.root.holder = src
|
||||
src.holder.root.name = "root"
|
||||
|
||||
return 0
|
||||
|
||||
process() //This isn't actually used at the moment
|
||||
if((!src.holder) || (!src.master))
|
||||
return 1
|
||||
|
||||
if((!istype(holder)) || (!istype(master)))
|
||||
return 1
|
||||
|
||||
if(!(holder in src.master.contents))
|
||||
if(master.active_program == src)
|
||||
master.active_program = null
|
||||
return 1
|
||||
|
||||
if(!src.holder.root)
|
||||
src.holder.root = new /datum/computer/folder
|
||||
src.holder.root.holder = src
|
||||
src.holder.root.name = "root"
|
||||
|
||||
return 0
|
||||
|
||||
//maybe remove this, I haven't found a good use for it yet
|
||||
send_os_command(list/command_list)
|
||||
if(!src.master || !src.holder || src.master.host_program || !command_list)
|
||||
return 1
|
||||
|
||||
if(!istype(src.master.host_program) || src.master.host_program == src)
|
||||
return 1
|
||||
|
||||
src.master.host_program.receive_os_command()
|
||||
|
||||
return 0
|
||||
|
||||
return_text_header()
|
||||
if(!src.master || !src.holder)
|
||||
return
|
||||
|
||||
var/dat = " | <a href='byond://?src=\ref[src];quit=1'>Main Menu</a>"
|
||||
dat += " | <a href='byond://?src=\ref[src.master];refresh=1'>Refresh</a>"
|
||||
|
||||
return dat
|
||||
|
||||
post_signal(datum/signal/signal, newfreq)
|
||||
if(master)
|
||||
master.post_signal(signal, newfreq)
|
||||
else
|
||||
del(signal)
|
||||
|
||||
transfer_holder(obj/item/weapon/disk/data/newholder,datum/computer/folder/newfolder)
|
||||
|
||||
if((newholder.file_used + src.size) > newholder.file_amount)
|
||||
return 0
|
||||
|
||||
if(!newholder.root)
|
||||
newholder.root = new /datum/computer/folder
|
||||
newholder.root.holder = newholder
|
||||
newholder.root.name = "root"
|
||||
|
||||
if(!newfolder)
|
||||
newfolder = newholder.root
|
||||
|
||||
if((src.holder && src.holder.read_only) || newholder.read_only)
|
||||
return 0
|
||||
|
||||
if((src.holder) && (src.holder.root))
|
||||
src.holder.root.remove_file(src)
|
||||
|
||||
newfolder.add_file(src)
|
||||
|
||||
if(istype(newholder.loc,/obj/item/device/pda2))
|
||||
src.master = newholder.loc
|
||||
|
||||
//world << "Setting [src.holder] to [newholder]"
|
||||
src.holder = newholder
|
||||
return 1
|
||||
|
||||
|
||||
receive_signal(datum/signal/signal)
|
||||
if((!src.holder) || (!src.master))
|
||||
return 1
|
||||
|
||||
if((!istype(holder)) || (!istype(master)))
|
||||
return 1
|
||||
|
||||
if(!(holder in src.master.contents))
|
||||
if(master.active_program == src)
|
||||
master.active_program = null
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
if((!src.holder) || (!src.master))
|
||||
return 1
|
||||
|
||||
if((!istype(holder)) || (!istype(master)))
|
||||
return 1
|
||||
|
||||
if(src.master.active_program != src)
|
||||
return 1
|
||||
|
||||
if ((!usr.contents.Find(src.master) && (!in_range(src.master, usr) || !istype(src.master.loc, /turf))) && (!istype(usr, /mob/living/silicon)))
|
||||
return 1
|
||||
|
||||
if(!(holder in src.master.contents))
|
||||
if(master.active_program == src)
|
||||
master.active_program = null
|
||||
return 1
|
||||
|
||||
usr.machine = src.master
|
||||
|
||||
if (href_list["close"])
|
||||
usr.machine = null
|
||||
usr << browse(null, "window=pda2")
|
||||
return 0
|
||||
|
||||
if (href_list["quit"])
|
||||
// src.master.processing_programs.Remove(src)
|
||||
if(src.master.host_program && src.master.host_program.holder && (src.master.host_program.holder in src.master.contents))
|
||||
src.master.run_program(src.master.host_program)
|
||||
src.master.updateSelfDialog()
|
||||
return 1
|
||||
else
|
||||
src.master.active_program = null
|
||||
src.master.updateSelfDialog()
|
||||
return 1
|
||||
|
||||
return 0
|
||||
297
code/unused/pda2/pda2.dm
Normal file
297
code/unused/pda2/pda2.dm
Normal file
@@ -0,0 +1,297 @@
|
||||
//The advanced pea-green monochrome lcd of tomorrow.
|
||||
|
||||
|
||||
//TO-DO: rearrange all this disk/data stuff so that fixed disks are the parent type
|
||||
//because otherwise you have carts going into floppy drives and it's ALL MAD
|
||||
/obj/item/weapon/disk/data/cartridge
|
||||
name = "Cart 2.0"
|
||||
desc = "A data cartridge for portable microcomputers."
|
||||
icon = 'pda.dmi'
|
||||
icon_state = "cart"
|
||||
item_state = "electronic"
|
||||
file_amount = 80.0
|
||||
title = "ROM Cart"
|
||||
|
||||
pda2test
|
||||
name = "Test Cart"
|
||||
New()
|
||||
..()
|
||||
src.root.add_file( new /datum/computer/file/computer_program/arcade(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/manifest(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/status_display(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/signaler(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/qm_records(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/scan/health_scan(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/records/security(src))
|
||||
src.root.add_file( new /datum/computer/file/pda_program/records/medical(src))
|
||||
src.read_only = 1
|
||||
|
||||
|
||||
/obj/item/device/pda2
|
||||
name = "PDA"
|
||||
desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by an EEPROM cartridge."
|
||||
icon = 'pda.dmi'
|
||||
icon_state = "pda"
|
||||
item_state = "electronic"
|
||||
w_class = 2.0
|
||||
flags = FPRINT | TABLEPASS | ONBELT
|
||||
|
||||
var/owner = null
|
||||
var/default_cartridge = null // Access level defined by cartridge
|
||||
var/obj/item/weapon/disk/data/cartridge/cartridge = null //current cartridge
|
||||
var/datum/computer/file/pda_program/active_program = null
|
||||
var/datum/computer/file/pda_program/os/host_program = null
|
||||
var/datum/computer/file/pda_program/scan/scan_program = null
|
||||
var/obj/item/weapon/disk/data/fixed_disk/hd = null
|
||||
var/fon = 0 //Is the flashlight function on?
|
||||
var/f_lum = 3 //Luminosity for the flashlight function
|
||||
// var/datum/data/record/active1 = null //General
|
||||
// var/datum/data/record/active2 = null //Medical
|
||||
// var/datum/data/record/active3 = null //Security
|
||||
// var/obj/item/weapon/integrated_uplink/uplink = null //Maybe replace uplink with some remote ~syndicate~ server
|
||||
var/frequency = 1149
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/setup_default_cartridge = null //Cartridge contains job-specific programs
|
||||
var/setup_drive_size = 24.0 //PDAs don't have much work room at all, really.
|
||||
var/setup_system_os_path = /datum/computer/file/pda_program/os/main_os //Needs an operating system to...operate!!
|
||||
|
||||
|
||||
/obj/item/device/pda2/pickup(mob/user)
|
||||
if (src.fon)
|
||||
src.sd_SetLuminosity(0)
|
||||
user.sd_SetLuminosity(user.luminosity + src.f_lum)
|
||||
|
||||
/obj/item/device/pda2/dropped(mob/user)
|
||||
if (src.fon)
|
||||
user.sd_SetLuminosity(user.luminosity - src.f_lum)
|
||||
src.sd_SetLuminosity(src.f_lum)
|
||||
|
||||
/obj/item/device/pda2/New()
|
||||
..()
|
||||
spawn(5)
|
||||
src.hd = new /obj/item/weapon/disk/data/fixed_disk(src)
|
||||
src.hd.file_amount = src.setup_drive_size
|
||||
src.hd.name = "Minidrive"
|
||||
src.hd.title = "Minidrive"
|
||||
|
||||
if(src.setup_system_os_path)
|
||||
src.host_program = new src.setup_system_os_path
|
||||
|
||||
src.hd.file_amount = max(src.hd.file_amount, src.host_program.size)
|
||||
|
||||
src.host_program.transfer_holder(src.hd)
|
||||
|
||||
if(radio_controller)
|
||||
radio_controller.add_object(src, frequency)
|
||||
|
||||
|
||||
if (src.default_cartridge)
|
||||
src.cartridge = new src.setup_default_cartridge(src)
|
||||
// if(src.owner)
|
||||
// processing_items.Add(src)
|
||||
|
||||
/obj/item/device/pda2/attack_self(mob/user as mob)
|
||||
user.machine = src
|
||||
|
||||
var/dat = "<html><head><title>Personal Data Assistant</title></head><body>"
|
||||
|
||||
dat += "<a href='byond://?src=\ref[src];close=1'>Close</a>"
|
||||
|
||||
if (!src.owner)
|
||||
if(src.cartridge)
|
||||
dat += " | <a href='byond://?src=\ref[src];eject_cart=1'>Eject [src.cartridge]</a>"
|
||||
dat += "<br>Warning: No owner information entered. Please swipe card.<br><br>"
|
||||
dat += "<a href='byond://?src=\ref[src];refresh=1'>Retry</a>"
|
||||
else
|
||||
if(src.active_program)
|
||||
dat += src.active_program.return_text()
|
||||
else
|
||||
if(src.host_program)
|
||||
src.run_program(src.host_program)
|
||||
dat += src.active_program.return_text()
|
||||
else
|
||||
if(src.cartridge)
|
||||
dat += " | <a href='byond://?src=\ref[src];eject_cart=1'>Eject [src.cartridge]</a><br>"
|
||||
dat += "<center><font color=red>Fatal Error 0x17<br>"
|
||||
dat += "No System Software Loaded</font></center>"
|
||||
//To-do: System recovery shit (maybe have a dedicated computer for this kind of thing)
|
||||
|
||||
|
||||
user << browse(dat,"window=pda2")
|
||||
onclose(user,"pda2")
|
||||
return
|
||||
|
||||
/obj/item/device/pda2/Topic(href, href_list)
|
||||
..()
|
||||
|
||||
if (usr.contents.Find(src) || usr.contents.Find(src.master) || (istype(src.loc, /turf) && get_dist(src, usr) <= 1))
|
||||
if (usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
usr.machine = src
|
||||
|
||||
|
||||
if(href_list["return_to_host"])
|
||||
if(src.host_program)
|
||||
src.active_program = src.host_program
|
||||
src.host_program = null
|
||||
|
||||
else if (href_list["eject_cart"])
|
||||
src.eject_cartridge()
|
||||
|
||||
else if (href_list["refresh"])
|
||||
src.updateSelfDialog()
|
||||
|
||||
else if (href_list["close"])
|
||||
usr << browse(null, "window=pda2")
|
||||
usr.machine = null
|
||||
|
||||
src.updateSelfDialog()
|
||||
return
|
||||
|
||||
/obj/item/device/pda2/attackby(obj/item/weapon/C as obj, mob/user as mob)
|
||||
if (istype(C, /obj/item/weapon/disk/data/cartridge) && isnull(src.cartridge))
|
||||
user.drop_item()
|
||||
C.loc = src
|
||||
user << "\blue You insert [C] into [src]."
|
||||
src.cartridge = C
|
||||
src.updateSelfDialog()
|
||||
|
||||
else if (istype(C, /obj/item/weapon/card/id) && !src.owner && C:registered)
|
||||
src.owner = C:registered
|
||||
src.name = "PDA-[src.owner]"
|
||||
user << "\blue Card scanned."
|
||||
src.updateSelfDialog()
|
||||
|
||||
/obj/item/device/pda2/receive_signal(datum/signal/signal)
|
||||
if(!signal || signal.encryption || !src.owner) return
|
||||
|
||||
if(signal.data["tag"] && signal.data["tag"] != "\ref[src]") return
|
||||
|
||||
if(src.host_program)
|
||||
src.host_program.receive_signal(signal)
|
||||
|
||||
if(src.active_program && (src.active_program != src.host_program))
|
||||
src.host_program.receive_signal(signal)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/pda2/attack(mob/M as mob, mob/user as mob)
|
||||
if(src.scan_program)
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/device/pda2/afterattack(atom/A as mob|obj|turf|area, mob/user as mob)
|
||||
var/scan_dat = null
|
||||
if(src.scan_program && istype(src.scan_program))
|
||||
scan_dat = src.scan_program.scan_atom(A)
|
||||
|
||||
if(scan_dat)
|
||||
A.visible_message("\red [user] has scanned [A]!")
|
||||
user.show_message(scan_dat, 1)
|
||||
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/pda2/proc
|
||||
|
||||
post_signal(datum/signal/signal,var/newfreq)
|
||||
if(!signal)
|
||||
return
|
||||
var/freq = newfreq
|
||||
if(!freq)
|
||||
freq = src.frequency
|
||||
|
||||
signal.source = src
|
||||
|
||||
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
|
||||
|
||||
signal.transmission_method = TRANSMISSION_RADIO
|
||||
if(frequency)
|
||||
return frequency.post_signal(src, signal)
|
||||
else
|
||||
del(signal)
|
||||
|
||||
eject_cartridge()
|
||||
if(src.cartridge)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
if(src.active_program && (src.active_program.holder == src.cartridge))
|
||||
src.active_program = null
|
||||
|
||||
if(src.host_program && (src.host_program.holder == src.cartridge))
|
||||
src.host_program = null
|
||||
|
||||
if(src.scan_program && (src.scan_program.holder == src.cartridge))
|
||||
src.scan_program = null
|
||||
|
||||
src.cartridge.loc = T
|
||||
src.cartridge = null
|
||||
|
||||
return
|
||||
|
||||
//Toggle the built-in flashlight
|
||||
toggle_light()
|
||||
src.fon = (!src.fon)
|
||||
|
||||
if (ismob(src.loc))
|
||||
if (src.fon)
|
||||
src.loc.sd_SetLuminosity(src.loc.luminosity + src.f_lum)
|
||||
else
|
||||
src.loc.sd_SetLuminosity(src.loc.luminosity - src.f_lum)
|
||||
else
|
||||
src.sd_SetLuminosity(src.fon * src.f_lum)
|
||||
|
||||
src.updateSelfDialog()
|
||||
|
||||
display_alert(var/alert_message) //Add alert overlay and beep
|
||||
if (alert_message)
|
||||
playsound(src.loc, 'twobeep.ogg', 50, 1)
|
||||
for (var/mob/O in hearers(3, src.loc))
|
||||
O.show_message(text("\icon[src] *[alert_message]*"))
|
||||
|
||||
src.overlays = null
|
||||
src.overlays += image('pda.dmi', "pda-r")
|
||||
return
|
||||
|
||||
run_program(datum/computer/file/pda_program/program)
|
||||
if((!program) || (!program.holder))
|
||||
return 0
|
||||
|
||||
if(!(program.holder in src))
|
||||
// world << "Not in src"
|
||||
program = new program.type
|
||||
program.transfer_holder(src.hd)
|
||||
|
||||
if(program.master != src)
|
||||
program.master = src
|
||||
|
||||
if(!src.host_program && istype(program, /datum/computer/file/pda_program/os))
|
||||
src.host_program = program
|
||||
|
||||
if(istype(program, /datum/computer/file/pda_program/scan))
|
||||
if(program == src.scan_program)
|
||||
src.scan_program = null
|
||||
else
|
||||
src.scan_program = program
|
||||
return 1
|
||||
|
||||
src.active_program = program
|
||||
return 1
|
||||
|
||||
delete_file(datum/computer/file/file)
|
||||
//world << "Deleting [file]..."
|
||||
if((!file) || (!file.holder) || (file.holder.read_only))
|
||||
//world << "Cannot delete :("
|
||||
return 0
|
||||
|
||||
//Don't delete the running program you jerk
|
||||
if(src.active_program == file || src.host_program == file)
|
||||
src.active_program = null
|
||||
|
||||
//world << "Now calling del on [file]..."
|
||||
del(file)
|
||||
return 1
|
||||
181
code/unused/pda2/record_progs.dm
Normal file
181
code/unused/pda2/record_progs.dm
Normal file
@@ -0,0 +1,181 @@
|
||||
//CONTENTS:
|
||||
//Generic records
|
||||
//Security records
|
||||
//Medical records
|
||||
|
||||
|
||||
/datum/computer/file/pda_program/records
|
||||
var/mode = 0
|
||||
var/datum/data/record/active1 = null //General
|
||||
var/datum/data/record/active2 = null //Security/Medical/Whatever
|
||||
|
||||
//To-do: editing arrest status/etc from pda.
|
||||
/datum/computer/file/pda_program/records/security
|
||||
name = "Security Records"
|
||||
size = 12.0
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
|
||||
switch(src.mode)
|
||||
if(0)
|
||||
dat += "<h4>Security Record List</h4>"
|
||||
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
dat += "<a href='byond://?src=\ref[src];select_rec=\ref[R]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
if(1)
|
||||
|
||||
dat += "<h4>Security Record</h4>"
|
||||
|
||||
dat += "<a href='byond://?src=\ref[src];mode=0'>Back</a><br>"
|
||||
|
||||
if (istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))
|
||||
dat += "Name: [src.active1.fields["name"]] ID: [src.active1.fields["id"]]<br>"
|
||||
dat += "Sex: [src.active1.fields["sex"]]<br>"
|
||||
dat += "Age: [src.active1.fields["age"]]<br>"
|
||||
dat += "Fingerprint: [src.active1.fields["fingerprint"]]<br>"
|
||||
dat += "Physical Status: [src.active1.fields["p_stat"]]<br>"
|
||||
dat += "Mental Status: [src.active1.fields["m_stat"]]<br>"
|
||||
else
|
||||
dat += "<b>Record Lost!</b><br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<h4>Security Data</h4>"
|
||||
if (istype(src.active2, /datum/data/record) && data_core.security.Find(src.active2))
|
||||
dat += "Criminal Status: [src.active2.fields["criminal"]]<br>"
|
||||
|
||||
dat += "Minor Crimes: [src.active2.fields["mi_crim"]]<br>"
|
||||
dat += "Details: [src.active2.fields["mi_crim"]]<br><br>"
|
||||
|
||||
dat += "Major Crimes: [src.active2.fields["ma_crim"]]<br>"
|
||||
dat += "Details: [src.active2.fields["ma_crim_d"]]<br><br>"
|
||||
|
||||
dat += "Important Notes:<br>"
|
||||
dat += "[src.active2.fields["notes"]]"
|
||||
else
|
||||
dat += "<b>Record Lost!</b><br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
return dat
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(href_list["mode"])
|
||||
var/newmode = text2num(href_list["mode"])
|
||||
src.mode = max(newmode, 0)
|
||||
|
||||
else if(href_list["select_rec"])
|
||||
var/datum/data/record/R = locate(href_list["select_rec"])
|
||||
var/datum/data/record/S = locate(href_list["select_rec"])
|
||||
|
||||
if (data_core.general.Find(R))
|
||||
for (var/datum/data/record/E in data_core.security)
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
S = E
|
||||
break
|
||||
|
||||
src.active1 = R
|
||||
src.active2 = S
|
||||
|
||||
src.mode = 1
|
||||
|
||||
src.master.add_fingerprint(usr)
|
||||
src.master.updateSelfDialog()
|
||||
return
|
||||
|
||||
/datum/computer/file/pda_program/records/medical
|
||||
name = "Medical Records"
|
||||
size = 8.0
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
|
||||
switch(src.mode)
|
||||
if(0)
|
||||
|
||||
dat += "<h4>Medical Record List</h4>"
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
dat += "<a href='byond://?src=\ref[src];select_rec=\ref[R]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
dat += "<br>"
|
||||
|
||||
if(1)
|
||||
|
||||
dat += "<h4>Medical Record</h4>"
|
||||
|
||||
dat += "<a href='byond://?src=\ref[src];mode=0'>Back</a><br>"
|
||||
|
||||
if (istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))
|
||||
dat += "Name: [src.active1.fields["name"]] ID: [src.active1.fields["id"]]<br>"
|
||||
dat += "Sex: [src.active1.fields["sex"]]<br>"
|
||||
dat += "Age: [src.active1.fields["age"]]<br>"
|
||||
dat += "Fingerprint: [src.active1.fields["fingerprint"]]<br>"
|
||||
dat += "Physical Status: [src.active1.fields["p_stat"]]<br>"
|
||||
dat += "Mental Status: [src.active1.fields["m_stat"]]<br>"
|
||||
else
|
||||
dat += "<b>Record Lost!</b><br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<h4>Medical Data</h4>"
|
||||
if (istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))
|
||||
dat += "Blood Type: [src.active2.fields["b_type"]]<br><br>"
|
||||
|
||||
dat += "Minor Disabilities: [src.active2.fields["mi_dis"]]<br>"
|
||||
dat += "Details: [src.active2.fields["mi_dis_d"]]<br><br>"
|
||||
|
||||
dat += "Major Disabilities: [src.active2.fields["ma_dis"]]<br>"
|
||||
dat += "Details: [src.active2.fields["ma_dis_d"]]<br><br>"
|
||||
|
||||
dat += "Allergies: [src.active2.fields["alg"]]<br>"
|
||||
dat += "Details: [src.active2.fields["alg_d"]]<br><br>"
|
||||
|
||||
dat += "Current Diseases: [src.active2.fields["cdi"]]<br>"
|
||||
dat += "Details: [src.active2.fields["cdi_d"]]<br><br>"
|
||||
|
||||
dat += "Important Notes: [src.active2.fields["notes"]]<br>"
|
||||
else
|
||||
dat += "<b>Record Lost!</b><br>"
|
||||
|
||||
dat += "<br>"
|
||||
|
||||
return dat
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(href_list["mode"])
|
||||
var/newmode = text2num(href_list["mode"])
|
||||
src.mode = max(newmode, 0)
|
||||
|
||||
else if(href_list["select_rec"])
|
||||
var/datum/data/record/R = locate(href_list["select_rec"])
|
||||
var/datum/data/record/M = locate(href_list["select_rec"])
|
||||
|
||||
if (data_core.general.Find(R))
|
||||
for (var/datum/data/record/E in data_core.medical)
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
M = E
|
||||
break
|
||||
|
||||
src.active1 = R
|
||||
src.active2 = M
|
||||
|
||||
src.mode = 1
|
||||
|
||||
src.master.add_fingerprint(usr)
|
||||
src.master.updateSelfDialog()
|
||||
return
|
||||
101
code/unused/pda2/scanners.dm
Normal file
101
code/unused/pda2/scanners.dm
Normal file
@@ -0,0 +1,101 @@
|
||||
//CONTENTS:
|
||||
//Base scanner stuff
|
||||
//Health scanner
|
||||
//Forensic scanner
|
||||
//Reagent scanner
|
||||
|
||||
/datum/computer/file/pda_program/scan
|
||||
return_text()
|
||||
return src.return_text_header()
|
||||
|
||||
proc/scan_atom(atom/A as mob|obj|turf|area)
|
||||
|
||||
if( !A || (!src.holder) || (!src.master))
|
||||
return 1
|
||||
|
||||
if((!istype(holder)) || (!istype(master)))
|
||||
return 1
|
||||
|
||||
if(!(holder in src.master.contents))
|
||||
if(master.scan_program == src)
|
||||
master.scan_program = null
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
//Health analyzer program
|
||||
health_scan
|
||||
name = "Health Scan"
|
||||
size = 8.0
|
||||
|
||||
scan_atom(atom/A as mob|obj|turf|area)
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/mob/living/carbon/C = A
|
||||
if(!istype(C))
|
||||
return
|
||||
|
||||
var/dat = "\blue Analyzing Results for [C]:\n"
|
||||
dat += "\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health]% healthy"]\n"
|
||||
dat += "\blue \t Damage Specifics: [C.oxyloss > 50 ? "\red" : "\blue"][C.oxyloss]-[C.toxloss > 50 ? "\red" : "\blue"][C.toxloss]-[C.fireloss > 50 ? "\red" : "\blue"][C.fireloss]-[C.bruteloss > 50 ? "\red" : "\blue"][C.bruteloss]\n"
|
||||
dat += "\blue \t Key: Suffocation/Toxin/Burns/Brute\n"
|
||||
dat += "\blue \t Body Temperature: [C.bodytemperature-T0C]°C ([C.bodytemperature*1.8-459.67]°F)"
|
||||
if(C.virus)
|
||||
dat += "\red \n<b>Warning Virus Detected.</b>\nName: [C.virus.name].\nType: [C.virus.spread].\nStage: [C.virus.stage]/[C.virus.max_stages].\nPossible Cure: [C.virus.cure]"
|
||||
|
||||
return dat
|
||||
|
||||
//Forensic scanner
|
||||
forensic_scan
|
||||
name = "Forensic Scan"
|
||||
size = 8.0
|
||||
|
||||
scan_atom(atom/A as mob|obj|turf|area)
|
||||
if(..())
|
||||
return
|
||||
var/dat = null
|
||||
|
||||
if(istype(A,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = A
|
||||
if (!istype(H.dna, /datum/dna) || !isnull(H.gloves))
|
||||
dat += "\blue Unable to scan [A]'s fingerprints.\n"
|
||||
else
|
||||
dat += "\blue [H]'s Fingerprints: [md5(H.dna.uni_identity)]\n"
|
||||
if ( !(H.blood_DNA) )
|
||||
dat += "\blue No blood found on [H]\n"
|
||||
else
|
||||
dat += "\blue Blood type: [H.blood_type]\nDNA: [H.blood_DNA]\n"
|
||||
|
||||
if (!A.fingerprints)
|
||||
dat += "\blue Unable to locate any fingerprints on [A]!\n"
|
||||
else
|
||||
var/list/L = params2list(A:fingerprints)
|
||||
dat += "\blue Isolated [L.len] fingerprints.\n"
|
||||
for(var/i in L)
|
||||
dat += "\blue \t [i]\n"
|
||||
|
||||
return dat
|
||||
|
||||
|
||||
//Reagent scanning program
|
||||
reagent_scan
|
||||
name = "Reagent Scan"
|
||||
size = 6.0
|
||||
|
||||
scan_atom(atom/A as mob|obj|turf|area)
|
||||
if(..())
|
||||
return
|
||||
var/dat = null
|
||||
if(!isnull(A.reagents))
|
||||
if(A.reagents.reagent_list.len > 0)
|
||||
var/reagents_length = A.reagents.reagent_list.len
|
||||
dat += "\blue [reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.\n"
|
||||
for (var/datum/reagent/re in A.reagents.reagent_list)
|
||||
dat += "\blue \t [re] - [re.volume]\n"
|
||||
else
|
||||
dat = "\blue No active chemical agents found in [A]."
|
||||
else
|
||||
dat = "\blue No significant chemical agents found in [A]."
|
||||
|
||||
return dat
|
||||
204
code/unused/pda2/smallprogs.dm
Normal file
204
code/unused/pda2/smallprogs.dm
Normal file
@@ -0,0 +1,204 @@
|
||||
//Assorted small programs not worthy of their own file
|
||||
//CONTENTS:
|
||||
//Crew Manifest viewer
|
||||
//Status display controller
|
||||
//Remote signaling program
|
||||
//Cargo orders monitor
|
||||
|
||||
//Manifest
|
||||
/datum/computer/file/pda_program/manifest
|
||||
name = "Manifest"
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
|
||||
dat += "<h4>Crew Manifest</h4>"
|
||||
dat += "Entries cannot be modified from this terminal.<br><br>"
|
||||
|
||||
for (var/datum/data/record/t in data_core.general)
|
||||
dat += "[t.fields["name"]] - [t.fields["rank"]]<br>"
|
||||
dat += "<br>"
|
||||
|
||||
return dat
|
||||
|
||||
//Status Display
|
||||
/datum/computer/file/pda_program/status_display
|
||||
name = "Status Controller"
|
||||
size = 8.0
|
||||
var/message1 // For custom messages on the displays.
|
||||
var/message2
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
|
||||
dat += "<h4>Station Status Display Interlink</h4>"
|
||||
|
||||
dat += "\[ <A HREF='?src=\ref[src];statdisp=blank'>Clear</A> \]<BR>"
|
||||
dat += "\[ <A HREF='?src=\ref[src];statdisp=shuttle'>Shuttle ETA</A> \]<BR>"
|
||||
dat += "\[ <A HREF='?src=\ref[src];statdisp=message'>Message</A> \]"
|
||||
|
||||
dat += "<ul><li> Line 1: <A HREF='?src=\ref[src];statdisp=setmsg1'>[ message1 ? message1 : "(none)"]</A>"
|
||||
dat += "<li> Line 2: <A HREF='?src=\ref[src];statdisp=setmsg2'>[ message2 ? message2 : "(none)"]</A></ul><br>"
|
||||
dat += "\[ Alert: <A HREF='?src=\ref[src];statdisp=alert;alert=default'>None</A> |"
|
||||
|
||||
dat += " <A HREF='?src=\ref[src];statdisp=alert;alert=redalert'>Red Alert</A> |"
|
||||
dat += " <A HREF='?src=\ref[src];statdisp=alert;alert=lockdown'>Lockdown</A> |"
|
||||
dat += " <A HREF='?src=\ref[src];statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR>"
|
||||
|
||||
return dat
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(href_list["statdisp"])
|
||||
switch(href_list["statdisp"])
|
||||
if("message")
|
||||
post_status("message", message1, message2)
|
||||
if("alert")
|
||||
post_status("alert", href_list["alert"])
|
||||
|
||||
if("setmsg1")
|
||||
message1 = input("Line 1", "Enter Message Text", message1) as text|null
|
||||
if (!src.master || !in_range(src.master, usr) && src.master.loc != usr)
|
||||
return
|
||||
|
||||
if(!(src.holder in src.master))
|
||||
return
|
||||
src.master.updateSelfDialog()
|
||||
|
||||
if("setmsg2")
|
||||
message2 = input("Line 2", "Enter Message Text", message2) as text|null
|
||||
if (!src.master || !in_range(src.master, usr) && src.master.loc != usr)
|
||||
return
|
||||
|
||||
if(!(src.holder in src.master))
|
||||
return
|
||||
|
||||
src.master.updateSelfDialog()
|
||||
else
|
||||
post_status(href_list["statdisp"])
|
||||
|
||||
src.master.add_fingerprint(usr)
|
||||
src.master.updateSelfDialog()
|
||||
return
|
||||
|
||||
proc/post_status(var/command, var/data1, var/data2)
|
||||
if(!src.master)
|
||||
return
|
||||
|
||||
var/datum/signal/status_signal = new
|
||||
status_signal.source = src.master
|
||||
status_signal.transmission_method = 1
|
||||
status_signal.data["command"] = command
|
||||
|
||||
switch(command)
|
||||
if("message")
|
||||
status_signal.data["msg1"] = data1
|
||||
status_signal.data["msg2"] = data2
|
||||
if("alert")
|
||||
status_signal.data["picture_state"] = data1
|
||||
|
||||
src.post_signal(status_signal,"1435")
|
||||
|
||||
//Signaler
|
||||
/datum/computer/file/pda_program/signaler
|
||||
name = "Signalix 5"
|
||||
size = 8.0
|
||||
var/send_freq = 1457 //Frequency signal is sent at, should be kept within normal radio ranges.
|
||||
var/send_code = 30
|
||||
var/last_transmission = 0 //No signal spamming etc
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
|
||||
dat += "<h4>Remote Signaling System</h4>"
|
||||
dat += {"
|
||||
<a href='byond://?src=\ref[src];send=1'>Send Signal</A><BR>
|
||||
|
||||
Frequency:
|
||||
<a href='byond://?src=\ref[src];adj_freq=-10'>-</a>
|
||||
<a href='byond://?src=\ref[src];adj_freq=-2'>-</a>
|
||||
[format_frequency(send_freq)]
|
||||
<a href='byond://?src=\ref[src];adj_freq=2'>+</a>
|
||||
<a href='byond://?src=\ref[src];adj_freq=10'>+</a><br>
|
||||
<br>
|
||||
Code:
|
||||
<a href='byond://?src=\ref[src];adj_code=-5'>-</a>
|
||||
<a href='byond://?src=\ref[src];adj_code=-1'>-</a>
|
||||
[send_code]
|
||||
<a href='byond://?src=\ref[src];adj_code=1'>+</a>
|
||||
<a href='byond://?src=\ref[src];adj_code=5'>+</a><br>"}
|
||||
|
||||
return dat
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if (href_list["send"])
|
||||
if(last_transmission && world.time < (last_transmission + 5))
|
||||
return
|
||||
last_transmission = world.time
|
||||
spawn( 0 )
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
lastsignalers.Add("[time] <B>:</B> [usr.key] used [src.master] @ location ([src.master.loc.x],[src.master.loc.y],[src.master.loc.z]) <B>:</B> [format_frequency(send_freq)]/[send_code]")
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = send_code
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
|
||||
src.post_signal(signal,"[send_freq]")
|
||||
return
|
||||
|
||||
else if (href_list["adj_freq"])
|
||||
src.send_freq = sanitize_frequency(src.send_freq + text2num(href_list["adj_freq"]))
|
||||
|
||||
else if (href_list["adj_code"])
|
||||
src.send_code += text2num(href_list["adj_code"])
|
||||
src.send_code = round(src.send_code)
|
||||
src.send_code = min(100, src.send_code)
|
||||
src.send_code = max(1, src.send_code)
|
||||
|
||||
src.master.add_fingerprint(usr)
|
||||
src.master.updateSelfDialog()
|
||||
return
|
||||
|
||||
//Supply record monitor
|
||||
/datum/computer/file/pda_program/qm_records
|
||||
name = "Supply Records"
|
||||
size = 8.0
|
||||
|
||||
return_text()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/dat = src.return_text_header()
|
||||
dat += "<h4>Supply Record Interlink</h4>"
|
||||
|
||||
dat += "<BR><B>Supply shuttle</B><BR>"
|
||||
dat += "Location: [supply_shuttle_moving ? "Moving to station ([supply_shuttle_timeleft] Mins.)":supply_shuttle_at_station ? "Station":"Dock"]<BR>"
|
||||
dat += "Current approved orders: <BR><ol>"
|
||||
for(var/S in supply_shuttle_shoppinglist)
|
||||
var/datum/supply_order/SO = S
|
||||
dat += "<li>[SO.object.name] approved by [SO.orderedby] [SO.comment ? "([SO.comment])":""]</li>"
|
||||
dat += "</ol>"
|
||||
|
||||
dat += "Current requests: <BR><ol>"
|
||||
for(var/S in supply_shuttle_requestlist)
|
||||
var/datum/supply_order/SO = S
|
||||
dat += "<li>[SO.object.name] requested by [SO.orderedby]</li>"
|
||||
dat += "</ol><font size=\"-3\">Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management."
|
||||
|
||||
return dat
|
||||
Reference in New Issue
Block a user