/obj/machinery/computer/secure_data//TODO:SANITY name = "security records console" desc = "Used to view and edit personnel's security records." icon_screen = "security" icon_keyboard = "security_key" req_one_access = list(ACCESS_SECURITY, ACCESS_FORENSICS_LOCKERS) circuit = /obj/item/circuitboard/computer/secure_data var/obj/item/card/id/scan = null var/authenticated = null var/rank = null var/screen = null var/datum/data/record/active1 = null var/datum/data/record/active2 = null var/a_id = null var/temp = null var/printing = null var/can_change_id = 0 var/list/Perp var/tempname = null //Sorting Variables var/sortBy = "name" var/order = 1 // -1 = Descending - 1 = Ascending light_color = LIGHT_COLOR_RED /obj/machinery/computer/secure_data/examine(mob/user) ..() if(scan) to_chat(user, "Alt-click to eject the ID card.") /obj/machinery/computer/secure_data/syndie icon_keyboard = "syndie_key" /obj/machinery/computer/secure_data/laptop name = "security laptop" desc = "A cheap Nanotrasen security laptop, it functions as a security records console. It's bolted to the table." icon_state = "laptop" icon_screen = "seclaptop" icon_keyboard = "laptop_key" clockwork = TRUE //it'd look weird pass_flags = PASSTABLE /obj/machinery/computer/secure_data/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/card/id)) if(!scan) if(!user.transferItemToLoc(O, src)) return scan = O to_chat(user, "You insert [O].") playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) updateUsrDialog() else to_chat(user, "There's already an ID card in the console.") else return ..() //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/secure_data/ui_interact(mob/user) . = ..() if(src.z > 6) to_chat(user, "Unable to establish a connection: \black You're too far away from the station!") return var/dat if(temp) dat = text("[]

Clear Screen", temp) else dat = text("Confirm Identity: []
", (scan ? text("[]", scan.name) : "----------")) if(authenticated) switch(screen) if(1) //body tag start + onload and onkeypress (onkeyup) javascript event calls dat += "" //search bar javascript dat += {" "} dat += {"

"} dat += "New Record
" //search bar dat += {"
Search:
"} dat += {"

Records:
"} if(!isnull(GLOB.data_core.general)) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general, sortBy, order)) var/crimstat = "" for(var/datum/data/record/E in GLOB.data_core.security) if((E.fields["name"] == R.fields["name"]) && (E.fields["id"] == R.fields["id"])) crimstat = E.fields["criminal"] var/background switch(crimstat) if("*Arrest*") background = "'background-color:#990000;'" if("Incarcerated") background = "'background-color:#CD6500;'" if("Paroled") background = "'background-color:#CD6500;'" if("Discharged") background = "'background-color:#006699;'" if("None") background = "'background-color:#4F7529;'" if("") background = "''" //"'background-color:#FFFFFF;'" crimstat = "No Record." dat += "" dat += text("", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], R.fields["name"]) dat += text("", R.fields["id"]) dat += text("", R.fields["rank"]) dat += text("", R.fields["fingerprint"]) dat += text("", crimstat) dat += {"
Name ID Rank Fingerprints Criminal Status
[][][][][]

"} dat += "Record Maintenance

" dat += "{Log Out}" if(2) dat += "Records Maintenance
" dat += "
Delete All Records

Back" if(3) dat += "Security Record
" if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)) if(istype(active1.fields["photo_front"], /obj/item/photo)) var/obj/item/photo/P1 = active1.fields["photo_front"] user << browse_rsc(P1.picture.picture_image, "photo_front") if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P2 = active1.fields["photo_side"] user << browse_rsc(P2.picture.picture_image, "photo_side") dat += {"
"} dat += "" dat += {"
Name: [active1.fields["name"]] 
ID: [active1.fields["id"]] 
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Rank: [active1.fields["rank"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 

Print photo
Update front photo

Print photo
Update side photo
"} else dat += "
General Record Lost!
" if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) dat += "Security Data" dat += "
Criminal Status: [active2.fields["criminal"]]" dat += "

Minor Crimes: Add New" dat +={""} for(var/datum/data/crime/c in active2.fields["mi_crim"]) dat += "" dat += "" dat += "" dat += "" dat += "" dat += "" dat += "
Crime Details Author Time Added Del
[c.crimeName][c.crimeDetails][c.author][c.time]\[X\]
" dat += "
Major Crimes: Add New" dat +={""} for(var/datum/data/crime/c in active2.fields["ma_crim"]) dat += "" dat += "" dat += "" dat += "" dat += "" dat += "" dat += "
Crime Details Author Time Added Del
[c.crimeName][c.crimeDetails][c.author][c.time]\[X\]
" dat += "
\nImportant Notes:
\n\t [active2.fields["notes"]] " dat += "

Comments/Log
" var/counter = 1 while(active2.fields[text("com_[]", counter)]) dat += (active2.fields[text("com_[]", counter)] + "
") if(active2.fields[text("com_[]", counter)] != "Deleted") dat += text("Delete Entry

", counter) counter++ dat += "Add Entry

" dat += "Delete Record (Security Only)
" else dat += "Security Record Lost!
" dat += "New Security Record

" dat += "Delete Record (ALL)
Print Record
Print Wanted Poster
Back

" dat += "{Log Out}" else else dat += "{Log In}" var/datum/browser/popup = new(user, "secure_rec", "Security Records Console", 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() return /*Revised /N I can't be bothered to look more of the actual code outside of switch but that probably needs revising too. What a mess.*/ /obj/machinery/computer/secure_data/Topic(href, href_list) . = ..() if(.) return . if(!( GLOB.data_core.general.Find(active1) )) active1 = null if(!( GLOB.data_core.security.Find(active2) )) active2 = null if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr) || IsAdminGhost(usr)) usr.set_machine(src) switch(href_list["choice"]) // SORTING! if("Sorting") // Reverse the order if clicked twice if(sortBy == href_list["sort"]) if(order == 1) order = -1 else order = 1 else // New sorting order! sortBy = href_list["sort"] order = initial(order) //BASIC FUNCTIONS if("Clear Screen") temp = null if("Return") screen = 1 active1 = null active2 = null if("Confirm Identity") eject_id(usr) if("Log Out") authenticated = null screen = null active1 = null active2 = null if("Log In") if(issilicon(usr)) var/mob/living/silicon/borg = usr active1 = null active2 = null authenticated = borg.name rank = "AI" screen = 1 else if(IsAdminGhost(usr)) active1 = null active2 = null authenticated = usr.client.holder.admin_signature rank = "Central Command" screen = 1 else if(istype(scan, /obj/item/card/id)) active1 = null active2 = null if(check_access(scan)) authenticated = scan.registered_name rank = scan.assignment screen = 1 //RECORD FUNCTIONS if("Record Maintenance") screen = 2 active1 = null active2 = null if("Browse Record") var/datum/data/record/R = locate(href_list["d_rec"]) var/S = locate(href_list["d_rec"]) if(!( GLOB.data_core.general.Find(R) )) temp = "Record Not Found!" else for(var/datum/data/record/E in GLOB.data_core.security) if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) S = E active1 = R active2 = S screen = 3 if("Print Record") if(!( printing )) printing = 1 GLOB.data_core.securityPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) sleep(30) var/obj/item/paper/P = new /obj/item/paper( loc ) P.info = "
Security Record - (SR-[GLOB.data_core.securityPrintCount])

" if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))) P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"]) P.info += "\nSpecies: [active1.fields["species"]]
" P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) else P.info += "General Record Lost!
" if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) P.info += text("
\n
Security Data

\nCriminal Status: []", active2.fields["criminal"]) P.info += "
\n
\nMinor Crimes:
\n" P.info +={""} for(var/datum/data/crime/c in active2.fields["mi_crim"]) P.info += "" P.info += "" P.info += "" P.info += "" P.info += "" P.info += "
Crime Details Author Time Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" P.info += "
\nMajor Crimes:
\n" P.info +={""} for(var/datum/data/crime/c in active2.fields["ma_crim"]) P.info += "" P.info += "" P.info += "" P.info += "" P.info += "" P.info += "
Crime Details Author Time Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" P.info += text("
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", active2.fields["notes"]) var/counter = 1 while(active2.fields[text("com_[]", counter)]) P.info += text("[]
", active2.fields[text("com_[]", counter)]) counter++ P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, active1.fields["name"]) else P.info += "Security Record Lost!
" P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, "Record Lost") P.info += "" printing = null if("Print Poster") if(!( printing )) var/wanted_name = stripped_input(usr, "Please enter an alias for the criminal:", "Print Wanted Poster", active1.fields["name"]) if(wanted_name) var/default_description = "A poster declaring [wanted_name] to be a dangerous individual, wanted by Nanotrasen. Report any sightings to security immediately." var/list/major_crimes = active2.fields["ma_crim"] var/list/minor_crimes = active2.fields["mi_crim"] if(major_crimes.len + minor_crimes.len) default_description += "\n[wanted_name] is wanted for the following crimes:\n" if(minor_crimes.len) default_description += "\nMinor Crimes:" for(var/datum/data/crime/c in active2.fields["mi_crim"]) default_description += "\n[c.crimeName]\n" default_description += "[c.crimeDetails]\n" if(major_crimes.len) default_description += "\nMajor Crimes:" for(var/datum/data/crime/c in active2.fields["ma_crim"]) default_description += "\n[c.crimeName]\n" default_description += "[c.crimeDetails]\n" var/info = stripped_multiline_input(usr, "Please input a description for the poster:", "Print Wanted Poster", default_description, null) if(info) playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) printing = 1 sleep(30) if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)))//make sure the record still exists. var/obj/item/photo/photo = active1.fields["photo_front"] new /obj/item/poster/wanted(loc, photo.picture.picture_image, wanted_name, info) printing = 0 //RECORD DELETE if("Delete All Records") temp = "" temp += "Are you sure you wish to delete all Security records?
" temp += "Yes
" temp += "No" if("Purge All Records") investigate_log("[key_name(usr)] has purged all the security records.", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.security) qdel(R) GLOB.data_core.security.Cut() temp = "All Security records deleted." if("Add Entry") if(!( istype(active2, /datum/data/record) )) return var/a2 = active2 var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, station_time_timestamp(), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) if("Delete Record (ALL)") if(active1) temp = "
Are you sure you wish to delete the record (ALL)?
" temp += "Yes
" temp += "No" if("Delete Record (Security)") if(active2) temp = "
Are you sure you wish to delete the record (Security Portion Only)?
" temp += "Yes
" temp += "No" if("Delete Entry") if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" //RECORD CREATE if("New Record (Security)") if((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) var/datum/data/record/R = new /datum/data/record() R.fields["name"] = active1.fields["name"] R.fields["id"] = active1.fields["id"] R.name = text("Security Record #[]", R.fields["id"]) R.fields["criminal"] = "None" R.fields["mi_crim"] = list() R.fields["ma_crim"] = list() R.fields["notes"] = "No notes." GLOB.data_core.security += R active2 = R screen = 3 if("New Record (General)") //General Record var/datum/data/record/G = new /datum/data/record() G.fields["name"] = "New Record" G.fields["id"] = "[num2hex(rand(1, 1.6777215E7), 6)]" G.fields["rank"] = "Unassigned" G.fields["sex"] = "Male" G.fields["age"] = "Unknown" G.fields["species"] = "Human" G.fields["photo_front"] = new /icon() G.fields["photo_side"] = new /icon() G.fields["fingerprint"] = "?????" G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" GLOB.data_core.general += G active1 = G //Security Record var/datum/data/record/R = new /datum/data/record() R.fields["name"] = active1.fields["name"] R.fields["id"] = active1.fields["id"] R.name = text("Security Record #[]", R.fields["id"]) R.fields["criminal"] = "None" R.fields["mi_crim"] = list() R.fields["ma_crim"] = list() R.fields["notes"] = "No notes." GLOB.data_core.security += R active2 = R //Medical Record var/datum/data/record/M = new /datum/data/record() M.fields["id"] = active1.fields["id"] M.fields["name"] = active1.fields["name"] M.fields["blood_type"] = "?" M.fields["b_dna"] = "?????" M.fields["mi_dis"] = "None" M.fields["mi_dis_d"] = "No minor disabilities have been declared." M.fields["ma_dis"] = "None" M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." M.fields["alg"] = "None" M.fields["alg_d"] = "No allergies have been detected in this patient." M.fields["cdi"] = "None" M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." M.fields["notes"] = "No notes." GLOB.data_core.medical += M //FIELD FUNCTIONS if("Edit Field") var/a1 = active1 var/a2 = active2 switch(href_list["field"]) if("name") if(istype(active1, /datum/data/record) || istype(active2, /datum/data/record)) var/t1 = copytext(sanitize(input("Please input name:", "Secure. records", active1.fields["name"], null) as text),1,MAX_MESSAGE_LEN) if(!canUseSecurityRecordsConsole(usr, t1, a1)) return if(istype(active1, /datum/data/record)) active1.fields["name"] = t1 if(istype(active2, /datum/data/record)) active2.fields["name"] = t1 if("id") if(istype(active2, /datum/data/record) || istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input id:", "Secure. records", active1.fields["id"], null) if(!canUseSecurityRecordsConsole(usr, t1, a1)) return if(istype(active1, /datum/data/record)) active1.fields["id"] = t1 if(istype(active2, /datum/data/record)) active2.fields["id"] = t1 if("fingerprint") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) if(!canUseSecurityRecordsConsole(usr, t1, a1)) return active1.fields["fingerprint"] = t1 if("sex") if(istype(active1, /datum/data/record)) if(active1.fields["sex"] == "Male") active1.fields["sex"] = "Female" else active1.fields["sex"] = "Male" if("age") if(istype(active1, /datum/data/record)) var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num if(!canUseSecurityRecordsConsole(usr, "age", a1)) return active1.fields["age"] = t1 if("species") if(istype(active1, /datum/data/record)) var/t1 = input("Select a species", "Species Selection") as null|anything in GLOB.roundstart_races if(!canUseSecurityRecordsConsole(usr, t1, a1)) return active1.fields["species"] = t1 if("show_photo_front") if(active1.fields["photo_front"]) if(istype(active1.fields["photo_front"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_front"] P.show(usr) if("upd_photo_front") var/obj/item/photo/photo = get_photo(usr) if(photo) qdel(active1.fields["photo_front"]) //Lets center it to a 32x32. var/icon/I = photo.picture.picture_image var/w = I.Width() var/h = I.Height() var/dw = w - 32 var/dh = w - 32 I.Crop(dw/2, dh/2, w - dw/2, h - dh/2) active1.fields["photo_front"] = photo if("print_photo_front") if(active1.fields["photo_front"]) if(istype(active1.fields["photo_front"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_front"] print_photo(P.picture.picture_image, active1.fields["name"]) if("show_photo_side") if(active1.fields["photo_side"]) if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_side"] P.show(usr) if("upd_photo_side") var/obj/item/photo/photo = get_photo(usr) if(photo) qdel(active1.fields["photo_side"]) //Lets center it to a 32x32. var/icon/I = photo.picture.picture_image var/w = I.Width() var/h = I.Height() var/dw = w - 32 var/dh = w - 32 I.Crop(dw/2, dh/2, w - dw/2, h - dh/2) active1.fields["photo_side"] = photo if("print_photo_side") if(active1.fields["photo_side"]) if(istype(active1.fields["photo_side"], /obj/item/photo)) var/obj/item/photo/P = active1.fields["photo_side"] print_photo(P.picture.picture_image, active1.fields["name"]) if("mi_crim_add") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) var/t2 = stripped_input(usr, "Please input minor crime details:", "Secure. records", "", null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) GLOB.data_core.addMinorCrime(active1.fields["id"], crime) investigate_log("New Minor Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("mi_crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) if(!canUseSecurityRecordsConsole(usr, "delete", null, a2)) return GLOB.data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"]) if("ma_crim_add") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) var/t2 = stripped_input(usr, "Please input major crime details:", "Secure. records", "", null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) GLOB.data_core.addMajorCrime(active1.fields["id"], crime) investigate_log("New Major Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("ma_crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) if(!canUseSecurityRecordsConsole(usr, "delete", null, a2)) return GLOB.data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"]) if("notes") if(istype(active2, /datum/data/record)) var/t1 = stripped_input(usr, "Please summarize notes:", "Secure. records", active2.fields["notes"], null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return active2.fields["notes"] = t1 if("criminal") if(istype(active2, /datum/data/record)) temp = "
Criminal Status:
" temp += "" if("rank") var/list/L = list( "Head of Personnel", "Captain", "AI", "Central Command" ) //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N if((istype(active1, /datum/data/record) && L.Find(rank))) temp = "
Rank:
" temp += "" else alert(usr, "You do not have the required rank to do this!") //TEMPORARY MENU FUNCTIONS else//To properly clear as per clear screen. temp=null switch(href_list["choice"]) if("Change Rank") if(active1) active1.fields["rank"] = href_list["rank"] if(href_list["rank"] in get_all_jobs()) active1.fields["real_rank"] = href_list["real_rank"] if("Change Criminal Status") if(active2) var/old_field = active2.fields["criminal"] switch(href_list["criminal2"]) if("none") active2.fields["criminal"] = "None" if("arrest") active2.fields["criminal"] = "*Arrest*" if("incarcerated") active2.fields["criminal"] = "Incarcerated" if("paroled") active2.fields["criminal"] = "Paroled" if("released") active2.fields["criminal"] = "Discharged" investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [key_name(usr)].", INVESTIGATE_RECORDS) for(var/mob/living/carbon/human/H in GLOB.carbon_list) H.sec_hud_set_security_status() if("Delete Record (Security) Execute") investigate_log("[key_name(usr)] has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS) if(active2) qdel(active2) active2 = null if("Delete Record (ALL) Execute") if(active1) investigate_log("[key_name(usr)] has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.medical) if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) qdel(R) break qdel(active1) active1 = null if(active2) qdel(active2) active2 = null else temp = "This function does not appear to be working at the moment. Our apologies." add_fingerprint(usr) updateUsrDialog() return /obj/machinery/computer/secure_data/proc/get_photo(mob/user) var/obj/item/photo/P = null if(issilicon(user)) var/mob/living/silicon/tempAI = user var/datum/picture/selection = tempAI.GetPhoto(user) if(selection) P = new(null, selection) else if(istype(user.get_active_held_item(), /obj/item/photo)) P = user.get_active_held_item() return P /obj/machinery/computer/secure_data/proc/print_photo(icon/temp, name) if (printing) return printing = TRUE sleep(20) var/obj/item/photo/P = new/obj/item/photo(drop_location()) var/icon/small_img = icon(temp) var/icon/ic = icon('icons/obj/items_and_weapons.dmi',"photo") small_img.Scale(8, 8) ic.Blend(small_img,ICON_OVERLAY, 13, 13) P.icon = ic P.picture.picture_image = temp P.desc = "The photo on file for [name]." P.pixel_x = rand(-10, 10) P.pixel_y = rand(-10, 10) printing = FALSE /obj/machinery/computer/secure_data/emp_act(severity) . = ..() if(stat & (BROKEN|NOPOWER) || . & EMP_PROTECT_SELF) return for(var/datum/data/record/R in GLOB.data_core.security) if(prob(10/severity)) switch(rand(1,8)) if(1) if(prob(10)) R.fields["name"] = "[pick(lizard_name(MALE),lizard_name(FEMALE))]" else R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) R.fields["age"] = rand(5, 85) if(4) R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Paroled", "Discharged") if(5) R.fields["p_stat"] = pick("*Unconscious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") if(7) R.fields["species"] = pick(GLOB.roundstart_races) if(8) var/datum/data/record/G = pick(GLOB.data_core.general) R.fields["photo_front"] = G.fields["photo_front"] R.fields["photo_side"] = G.fields["photo_side"] continue else if(prob(1)) qdel(R) continue /obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 0, record1, record2) if(user) if(authenticated) if(user.canUseTopic(src)) if(!trim(message1)) return 0 if(!record1 || record1 == active1) if(!record2 || record2 == active2) return 1 return 0 /obj/machinery/computer/secure_data/AltClick(mob/user) if(user.canUseTopic(src)) eject_id(user) /obj/machinery/computer/secure_data/proc/eject_id(mob/user) if(scan) scan.forceMove(drop_location()) if(!issilicon(user) && Adjacent(user)) user.put_in_hands(scan) scan = null playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) else //switching the ID with the one you're holding if(issilicon(user) || !Adjacent(user)) return var/obj/item/card/id/held_id = user.is_holding_item_of_type(/obj/item/card/id) if(QDELETED(held_id) || !user.transferItemToLoc(held_id, src)) return scan = held_id playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)