//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/machinery/computer/card name = "\improper ID card modification console" desc = "Terminal for programming employee ID cards to access parts of the station." icon_keyboard = "id_key" icon_screen = "id" light_color = "#0099ff" req_access = list(access_change_ids) circuit = /obj/item/weapon/circuitboard/card var/obj/item/weapon/card/id/scan = null var/obj/item/weapon/card/id/modify = null var/mode = 0.0 var/printing = null /obj/machinery/computer/card/proc/is_centcom() return 0 /obj/machinery/computer/card/proc/is_authenticated() return scan ? check_access(scan) : 0 /obj/machinery/computer/card/proc/get_target_rank() return modify && modify.assignment ? modify.assignment : "Unassigned" /obj/machinery/computer/card/proc/format_jobs(list/jobs) var/list/formatted = list() for(var/job in jobs) formatted.Add(list(list( "display_name" = replacetext(job, " ", " "), "target_rank" = get_target_rank(), "job" = job))) return formatted /obj/machinery/computer/card/verb/eject_id() set category = "Object" set name = "Eject ID Card" set src in oview(1) if(!usr || usr.stat || usr.lying) return if(scan) to_chat(usr, "You remove \the [scan] from \the [src].") scan.forceMove(get_turf(src)) if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human)) usr.put_in_hands(scan) scan = null else if(modify) to_chat(usr, "You remove \the [modify] from \the [src].") modify.forceMove(get_turf(src)) if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human)) usr.put_in_hands(modify) modify = null else to_chat(usr, "There is nothing to remove from the console.") return /obj/machinery/computer/card/attackby(obj/item/weapon/card/id/id_card, mob/user) if(!istype(id_card)) return ..() if(!scan && (access_change_ids in id_card.access) && (user.unEquip(id_card) || (id_card.loc == user && istype(user,/mob/living/silicon/robot)))) //Grippers. Again. ~Mechoid user.drop_item() id_card.forceMove(src) scan = id_card else if(!modify) user.drop_item() id_card.forceMove(src) modify = id_card SSnanoui.update_uis(src) attack_hand(user) /obj/machinery/computer/card/attack_ai(var/mob/user as mob) return attack_hand(user) /obj/machinery/computer/card/attack_hand(mob/user as mob) if(..()) return if(stat & (NOPOWER|BROKEN)) return ui_interact(user) /obj/machinery/computer/card/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1) user.set_machine(src) if(data_core) data_core.get_manifest_list() var/data[0] data["src"] = "\ref[src]" data["station_name"] = station_name() data["mode"] = mode data["printing"] = printing data["manifest"] = PDA_Manifest data["target_name"] = modify ? modify.name : "-----" data["target_owner"] = modify && modify.registered_name ? modify.registered_name : "-----" data["target_rank"] = get_target_rank() data["scan_name"] = scan ? scan.name : "-----" data["authenticated"] = is_authenticated() data["has_modify"] = !!modify data["account_number"] = modify ? modify.associated_account_number : null data["centcom_access"] = is_centcom() data["all_centcom_access"] = null data["regions"] = null data["jobs"] = list( list("cat" = "Engineering", "jobs" = format_jobs(engineering_positions)), list("cat" = "Medical", "jobs" = format_jobs(medical_positions)), list("cat" = "Science", "jobs" = format_jobs(science_positions)), list("cat" = "Security", "jobs" = format_jobs(security_positions)), list("cat" = "Cargo", "jobs" = format_jobs(cargo_positions)), list("cat" = "Exploration", "jobs" = format_jobs(planet_positions)), //VOREStation Edit list("cat" = "Civilian", "jobs" = format_jobs(civilian_positions)), list("cat" = "CentCom", "jobs" = format_jobs(get_all_centcom_jobs())) ) if (modify && is_centcom()) var/list/all_centcom_access = list() for(var/access in get_all_centcom_access()) all_centcom_access.Add(list(list( "desc" = replacetext(get_centcom_access_desc(access), " ", " "), "ref" = access, "allowed" = (access in modify.access) ? 1 : 0))) data["all_centcom_access"] = all_centcom_access else if (modify) var/list/regions = list() for(var/i = 1; i <= 7; i++) var/list/accesses = list() for(var/access in get_region_accesses(i)) if (get_access_desc(access)) accesses.Add(list(list( "desc" = replacetext(get_access_desc(access), " ", " "), "ref" = access, "allowed" = (access in modify.access) ? 1 : 0))) regions.Add(list(list( "name" = get_region_accesses_name(i), "accesses" = accesses))) data["regions"] = regions ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "identification_computer.tmpl", src.name, 600, 700) ui.set_initial_data(data) ui.open() /obj/machinery/computer/card/Topic(href, href_list) if(..()) return 1 switch(href_list["choice"]) if ("modify") if (modify) data_core.manifest_modify(modify.registered_name, modify.assignment) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") if(ishuman(usr)) modify.forceMove(get_turf(src)) if(!usr.get_active_hand()) usr.put_in_hands(modify) modify = null else modify.forceMove(get_turf(src)) modify = null else var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I)) I.forceMove(src) modify = I if ("scan") if (scan) if(ishuman(usr)) scan.forceMove(get_turf(src)) if(!usr.get_active_hand()) usr.put_in_hands(scan) scan = null else scan.forceMove(get_turf(src)) scan = null else var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.forceMove(src) scan = I if("access") if(href_list["allowed"]) if(is_authenticated()) var/access_type = text2num(href_list["access_target"]) var/access_allowed = text2num(href_list["allowed"]) if(access_type in (is_centcom() ? get_all_centcom_access() : get_all_station_access())) modify.access -= access_type if(!access_allowed) modify.access += access_type if ("assign") if (is_authenticated() && modify) var/t1 = href_list["assign_target"] if(t1 == "Custom") var/temp_t = sanitize(input("Enter a custom job assignment.","Assignment"), 45) //let custom jobs function as an impromptu alt title, mainly for sechuds if(temp_t && modify) modify.assignment = temp_t else var/list/access = list() if(is_centcom()) access = get_centcom_access(t1) else var/datum/job/jobdatum for(var/jobtype in typesof(/datum/job)) var/datum/job/J = new jobtype if(ckey(J.title) == ckey(t1)) jobdatum = J break if(!jobdatum) to_chat(usr, "No log exists for this job: [t1]") return access = jobdatum.get_access() modify.access = access modify.assignment = t1 modify.rank = t1 callHook("reassign_employee", list(modify)) if ("reg") if (is_authenticated()) var/t2 = modify if ((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) var/temp_name = sanitizeName(href_list["reg"]) if(temp_name) modify.registered_name = temp_name else src.visible_message("[src] buzzes rudely.") SSnanoui.update_uis(src) if ("account") if (is_authenticated()) var/t2 = modify if ((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) var/account_num = text2num(href_list["account"]) modify.associated_account_number = account_num SSnanoui.update_uis(src) if ("mode") mode = text2num(href_list["mode_target"]) if ("print") if (!printing) printing = 1 spawn(50) printing = null SSnanoui.update_uis(src) var/obj/item/weapon/paper/P = new(loc) if (mode) P.name = text("crew manifest ([])", stationtime2text()) P.info = {"

Crew Manifest


[data_core ? data_core.get_manifest(0) : ""] "} else if (modify) P.name = "access report" P.info = {"

Access Report

Prepared By: [scan.registered_name ? scan.registered_name : "Unknown"]
For: [modify.registered_name ? modify.registered_name : "Unregistered"]

Assignment: [modify.assignment]
Account Number: #[modify.associated_account_number]
Blood Type: [modify.blood_type]

Access:
"} for(var/A in modify.access) P.info += " [get_access_desc(A)]" if ("terminate") if (is_authenticated()) modify.assignment = "Dismissed" //VOREStation Edit: setting adjustment modify.access = list() callHook("terminate_employee", list(modify)) if (modify) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications return 1 /obj/machinery/computer/card/centcom name = "\improper CentCom ID card modification console" circuit = /obj/item/weapon/circuitboard/card/centcom req_access = list(access_cent_captain) /obj/machinery/computer/card/centcom/is_centcom() return 1