//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/skills//TODO:SANITY name = "employment records console" desc = "Used to view, edit and maintain employment records." icon_state = "laptop" icon_keyboard = "laptop_key" icon_screen = "medlaptop" light_color = "#00b000" req_one_access = list(access_heads) circuit = /obj/item/weapon/circuitboard/skills density = 0 var/obj/item/weapon/card/id/scan = null var/authenticated = null var/rank = null var/screen = null var/datum/data/record/active1 = 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 /obj/machinery/computer/skills/attackby(obj/item/O as obj, var/mob/user) if(istype(O, /obj/item/weapon/card/id) && !scan && user.unEquip(O)) O.loc = src scan = O to_chat(user, "You insert [O].") else ..() /obj/machinery/computer/skills/attack_ai(mob/user as mob) return attack_hand(user) //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/skills/attack_hand(mob/user as mob) if(..()) return if (using_map && !(src.z in using_map.contact_levels)) to_chat(user, "Unable to establish a connection: You're too far away from the station!") return var/dat if (temp) dat = text("[]

Clear Screen", temp, src) else dat = text("Confirm Identity: []
", src, (scan ? text("[]", scan.name) : "----------")) if (authenticated) switch(screen) if(1.0) dat += {"

"} dat += text("Search Records
", src) dat += text("New Record
", src) dat += {"

Records:
"} if(!isnull(data_core.general)) for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order)) for(var/datum/data/record/E in data_core.security) var/background dat += text("", background, src, R, R.fields["name"]) dat += text("", R.fields["id"]) dat += text("", R.fields["rank"]) dat += text("", R.fields["fingerprint"]) dat += "
Name ID Rank Fingerprints
[][][][]

" dat += text("Record Maintenance

", src) dat += text("{Log Out}",src) if(2.0) dat += "Records Maintenance
" dat += "
Delete All Records

Back" if(3.0) dat += "
Employment Record

" if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) var/icon/front = active1.fields["photo_front"] var/icon/side = active1.fields["photo_side"] user << browse_rsc(front, "front.png") user << browse_rsc(side, "side.png") dat += "" dat += "
" dat += "Name: [active1.fields["name"]]
" dat += "ID: [active1.fields["id"]]
\n" dat += "Entity Classification: [active1.fields["brain_type"]]
\n" dat += "Sex: [active1.fields["sex"]]
\n" dat += "Age: [active1.fields["age"]]
\n" dat += "Rank: [active1.fields["rank"]]
\n" dat += "Fingerprint: [active1.fields["fingerprint"]]
\n" dat += "Physical Status: [active1.fields["p_stat"]]
\n" dat += "Mental Status: [active1.fields["m_stat"]]

\n" dat += "Employment/skills summary:
" dat += decode(active1.fields["notes"]) dat += "


" var/counter = 1 while(src.active1.fields[text("com_[]", counter)]) dat += text("[]
Delete Entry

", src.active1.fields[text("com_[]", counter)], src, counter) counter++ dat += "Add Entry

Photo:
" dat += "
" else dat += "General Record Lost!
" dat += text("\nDelete Record (ALL)

\nPrint Record
\nBack
", src, src, src) if(4.0) if(!Perp.len) dat += text("ERROR. String could not be located.

Back", src) else dat += {" "} dat += text("", tempname) dat += {"
Search Results for '[]':
"} for(var/i=1, i<=Perp.len, i += 2) var/crimstat = "" var/datum/data/record/R = Perp[i] if(istype(Perp[i+1],/datum/data/record/)) var/datum/data/record/E = Perp[i+1] crimstat = E.fields["criminal"] var/background background = "'background-color:#00FF7F;'" dat += text("", background, src, R, 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
[][][][][]

" dat += text("
Return to index.", src) else else dat += text("{Log In}", src) user << browse(text("Employment Records[]", dat), "window=secure_rec;size=600x400") onclose(user, "secure_rec") 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/skills/Topic(href, href_list) if(..()) return 1 if (!( data_core.general.Find(active1) )) active1 = null if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) 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 if("Confirm Identity") if (scan) if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) usr.put_in_hands(scan) else scan.loc = get_turf(src) scan = null else var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I)) I.loc = src scan = I if("Log Out") authenticated = null screen = null active1 = null if("Log In") if (istype(usr, /mob/living/silicon/ai)) src.active1 = null src.authenticated = usr.name src.rank = "AI" src.screen = 1 else if (istype(usr, /mob/living/silicon/robot)) src.active1 = null src.authenticated = usr.name var/mob/living/silicon/robot/R = usr src.rank = R.braintype src.screen = 1 else if (istype(scan, /obj/item/weapon/card/id)) active1 = null if(check_access(scan)) authenticated = scan.registered_name rank = scan.assignment screen = 1 //RECORD FUNCTIONS if("Search Records") var/t1 = input("Search String: (Partial Name or ID or Fingerprints or Rank)", "Secure. records", null, null) as text if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || !in_range(src, usr))) return Perp = new/list() t1 = lowertext(t1) var/list/components = splittext(t1, " ") if(components.len > 5) return //Lets not let them search too greedily. for(var/datum/data/record/R in data_core.general) var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"] for(var/i = 1, i<=components.len, i++) if(findtext(temptext,components[i])) var/prelist = new/list(2) prelist[1] = R Perp += prelist for(var/i = 1, i<=Perp.len, i+=2) for(var/datum/data/record/E in data_core.security) var/datum/data/record/R = Perp[i] if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) Perp[i+1] = E tempname = t1 screen = 4 if("Record Maintenance") screen = 2 active1 = null if ("Browse Record") var/datum/data/record/R = locate(href_list["d_rec"]) if (!( data_core.general.Find(R) )) temp = "Record Not Found!" else for(var/datum/data/record/E in data_core.security) active1 = R screen = 3 /* if ("Search Fingerprints") var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))) return active1 = null t1 = lowertext(t1) for(var/datum/data/record/R in data_core.general) if (lowertext(R.fields["fingerprint"]) == t1) active1 = R if (!( active1 )) temp = text("Could not locate record [].", t1) else for(var/datum/data/record/E in data_core.security) if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) screen = 3 */ if ("Print Record") if (!( printing )) printing = 1 sleep(50) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) P.info = "
Employment Record

" if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
\nEmployment/Skills Summary:
\n[]
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"], active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"], decode(active1.fields["notes"])) else P.info += "General Record Lost!
" P.info += "" if(active1) P.name = "Employment Record ([active1.fields["name"]])" else P.name = "Employment Record (Unknown/Invald Entry)" log_debug("[usr] ([usr.ckey]) attempted to print a null employee record, this should be investigated.") printing = null // Add comment if ("add_c") if (!( istype(src.active1, /datum/data/record) )) return var/a1 = src.active1 var/t1 = sanitize(input("Add Comment:", "Emp. records", null, null) as message) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return var/counter = 1 while(src.active1.fields[text("com_[]", counter)]) counter++ src.active1.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]
[t1]") // Delete comment if ("del_c") var/target = href_list["del_c"] if (istype(src.active1, /datum/data/record) && src.active1.fields["com_[target]"]) src.active1.fields["com_[target]"] = "Deleted" //RECORD DELETE if ("Delete All Records") temp = "" temp += "Are you sure you wish to delete all Employment records?
" temp += "Yes
" temp += "No" if ("Purge All Records") if(PDA_Manifest.len) PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.security) qdel(R) temp = "All Employment records deleted." if ("Delete Record (ALL)") if (active1) temp = "
Are you sure you wish to delete the record (ALL)?
" temp += "Yes
" temp += "No" //RECORD CREATE if ("New Record (General)") if(PDA_Manifest.len) PDA_Manifest.Cut() active1 = data_core.CreateGeneralRecord() //FIELD FUNCTIONS if ("Edit Field") var/a1 = active1 switch(href_list["field"]) if("name") if (istype(active1, /datum/data/record)) var/t1 = sanitizeName(input("Please input name:", "Secure. records", active1.fields["name"], null) as text) if ((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon)))) || active1 != a1) return active1.fields["name"] = t1 if("id") if (istype(active1, /datum/data/record)) var/t1 = sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["id"] = t1 if("fingerprint") if (istype(active1, /datum/data/record)) var/t1 = sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != 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 ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["age"] = t1 if("rank") var/list/L = list( "Head of Personnel", "Colony Director", "AI" ) //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!") if("species") if (istype(active1, /datum/data/record)) var/t1 = sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["species"] = t1 //TEMPORARY MENU FUNCTIONS else//To properly clear as per clear screen. temp=null switch(href_list["choice"]) if ("Change Rank") if (active1) if(PDA_Manifest.len) PDA_Manifest.Cut() active1.fields["rank"] = href_list["rank"] if(href_list["rank"] in joblist) active1.fields["real_rank"] = href_list["real_rank"] if ("Delete Record (ALL) Execute") if (active1) if(PDA_Manifest.len) PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.medical) if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) qdel(R) else qdel(active1) else temp = "This function does not appear to be working at the moment. Our apologies." add_fingerprint(usr) updateUsrDialog() return /obj/machinery/computer/skills/emp_act(severity) if(stat & (BROKEN|NOPOWER)) ..(severity) return for(var/datum/data/record/R in data_core.security) if(prob(10/severity)) switch(rand(1,6)) if(1) R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(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", "Parolled", "Released") if(5) R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") if(PDA_Manifest.len) PDA_Manifest.Cut() if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") continue else if(prob(1)) qdel(R) continue ..(severity)