diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index d4b776daf54..2dd748b43c8 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -115,10 +115,13 @@ Class Procs: var/atom/movable/occupant = null var/speed_process = FALSE // Process as fast as possible? var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created + var/obj/item/card/id/prisoner/inserted_prisoner_id var/obj/item/card/id/inserted_scan_id var/obj/item/card/id/inserted_modify_id - var/obj/item/card/id/prisoner/inserted_prisoner_id var/damage_deflection = 0 + var/list/region_access = null // For the identification console (card.dm) + var/list/head_subordinates = null // For the identification console (card.dm) + var/authenticated = 0 // For the identification console (card.dm) var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE var/fair_market_price = 69 @@ -152,9 +155,6 @@ Class Procs: else STOP_PROCESSING(SSfastprocess, src) dropContents() - inserted_scan_id = null - inserted_modify_id = null - inserted_prisoner_id = null if(length(component_parts)) for(var/atom/A in component_parts) qdel(A) @@ -551,25 +551,12 @@ Class Procs: AM.pixel_x = -8 + ((.%3)*8) AM.pixel_y = -8 + (round( . / 3)*8) -/obj/machinery/proc/id_insert(mob/user, obj/item/card/id/I, obj/item/card/id/target_id) - if(target_id) - to_chat(user, "There's already an ID card in the console!") - return - if(istype(I)) - if(!user.transferItemToLoc(I, src)) - return - user.visible_message("[user] inserts an ID card into the console.", \ - "You insert the ID card into the console.") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - else - to_chat(user, "No valid ID.") - updateUsrDialog() - -/obj/machinery/proc/id_eject(mob/user, obj/item/card/id/target_id) - if(target_id) - target_id.forceMove(drop_location()) +/obj/machinery/proc/id_eject_prisoner(mob/user) + if(inserted_prisoner_id) + inserted_prisoner_id.forceMove(drop_location()) if(!issilicon(user) && Adjacent(user)) - user.put_in_hands(target_id) + user.put_in_hands(inserted_prisoner_id) + inserted_prisoner_id = null user.visible_message("[user] gets an ID card from the console.", \ "You get the ID card from the console.") playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) @@ -578,19 +565,102 @@ Class Procs: else to_chat(user, "There's no ID card in the console!") + if(!inserted_prisoner_id) + to_chat(user, "There's no ID card in the console!") + return + if(inserted_prisoner_id) + inserted_prisoner_id.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(inserted_prisoner_id) + inserted_prisoner_id = null + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/proc/id_insert_prisoner(mob/user) + if(inserted_prisoner_id) + to_chat(user, "There's already an ID card in the console!") + return + var/obj/item/card/id/prisoner/I = user.get_active_held_item() + if(istype(I)) + if(!user.transferItemToLoc(I, src)) + return + inserted_prisoner_id = I + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + else + to_chat(user, "No valid ID.") + updateUsrDialog() + +/obj/machinery/proc/id_insert_scan(mob/user, obj/item/card/id/I) + I = user.get_active_held_item() + if(istype(I)) + if(inserted_scan_id) + to_chat(user, "There's already an ID card in the console!") + return + if(!user.transferItemToLoc(I, src)) + return + inserted_scan_id = I + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/proc/id_eject_scan(mob/user) + if(!inserted_scan_id) + to_chat(user, "There's no ID card in the console!") + return + if(inserted_scan_id) + inserted_scan_id.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(inserted_scan_id) + inserted_scan_id = null + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/proc/id_eject_modify(mob/user) + if(inserted_modify_id) + GLOB.data_core.manifest_modify(inserted_modify_id.registered_name, inserted_modify_id.assignment) + inserted_modify_id.update_label() + inserted_modify_id.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(inserted_modify_id) + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + inserted_modify_id = null + region_access = null + head_subordinates = null + updateUsrDialog() + +/obj/machinery/proc/id_insert_modify(mob/user) + var/obj/item/card/id/I = user.get_active_held_item() + if(istype(I)) + if(inserted_modify_id) + to_chat(user, "There's already an ID card in the console!") + return + if(!user.transferItemToLoc(I, src)) + return + inserted_modify_id = I + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + /obj/machinery/AltClick(mob/user) if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) return - if(inserted_scan_id) - id_eject(user, inserted_scan_id) - inserted_scan_id = null - return if(inserted_modify_id) - id_eject(user, inserted_modify_id) - inserted_modify_id = null + id_eject_modify(user) + authenticated = FALSE + return + if(inserted_scan_id) + id_eject_scan(user) + authenticated = FALSE return if(inserted_prisoner_id) - id_eject(user, inserted_prisoner_id) - inserted_prisoner_id = null - return - to_chat(user, "There's no ID card in the console!") + id_eject_prisoner(user) diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index cef37e5f344..85f8201c324 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -14,7 +14,6 @@ var/icon_screen = "generic" var/clockwork = FALSE var/time_to_screwdrive = 20 - var/authenticated = 0 /obj/machinery/computer/Initialize(mapload, obj/item/circuitboard/C) . = ..() diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index bc68d45b1f8..a12c2d9b2f5 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -19,8 +19,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/mode = 0 var/printing = null var/target_dept = 0 //Which department this computer has access to. 0=all departments - var/list/region_access - var/list/head_subordinates //Cooldown for closing positions in seconds //if set to -1: No cooldown... probably a bad idea @@ -60,18 +58,25 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /obj/machinery/computer/card/attackby(obj/I, mob/user, params) if(istype(I, /obj/item/card/id)) if(!inserted_scan_id) - id_insert(user, I, inserted_scan_id) - inserted_scan_id = I + id_insert_scan(user) return if(!inserted_modify_id) - id_insert(user, I, inserted_modify_id) - inserted_modify_id = I + id_insert_modify(user) return else to_chat(user, "There's already an ID card in the console!") else return ..() +/obj/machinery/computer/card/Destroy() + if(inserted_scan_id) + qdel(inserted_scan_id) + inserted_scan_id = null + if(inserted_modify_id) + qdel(inserted_modify_id) + inserted_modify_id = null + return ..() + /obj/machinery/computer/card/handle_atom_del(atom/A) ..() if(A == inserted_scan_id) @@ -310,20 +315,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) switch(href_list["choice"]) if ("inserted_modify_id") if (inserted_modify_id) - GLOB.data_core.manifest_modify(inserted_modify_id.registered_name, inserted_modify_id.assignment) - inserted_modify_id.update_label() - region_access = null - head_subordinates = null - id_eject(usr, inserted_modify_id) - inserted_modify_id = null - authenticated = FALSE + id_eject_modify(usr) + else + id_insert_modify(usr) if ("inserted_scan_id") if (inserted_scan_id) - id_eject(usr, inserted_scan_id) - inserted_scan_id = null - authenticated = FALSE + id_eject_scan(usr) + else + id_insert_scan(usr) if ("auth") - if ((!authenticated && (inserted_scan_id || issilicon(usr)) && (inserted_modify_id || mode))) + if ((!( authenticated ) && (inserted_scan_id || issilicon(usr)) && (inserted_modify_id || mode))) if (check_access(inserted_scan_id)) region_access = list() head_subordinates = list() @@ -403,12 +404,10 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if (inserted_modify_id) inserted_modify_id.assignment = t1 playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) - inserted_modify_id.update_label() if ("demote") if(inserted_modify_id.assignment in head_subordinates || inserted_modify_id.assignment == "Assistant") inserted_modify_id.assignment = "Unassigned" playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) - inserted_modify_id.update_label() else to_chat(usr, "You are not authorized to demote this position.") if ("reg") @@ -419,7 +418,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if(newName) inserted_modify_id.registered_name = newName playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) - inserted_modify_id.update_label() else to_chat(usr, "Invalid name entered.") updateUsrDialog() diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index c8599071214..890fa96beb0 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -21,13 +21,11 @@ /obj/machinery/computer/gulag_teleporter_computer/Destroy() if(inserted_prisoner_id) inserted_prisoner_id.forceMove(get_turf(src)) - inserted_prisoner_id = null return ..() /obj/machinery/computer/gulag_teleporter_computer/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/card/id)) - id_insert(user, I, inserted_prisoner_id) - inserted_prisoner_id = I + id_insert_prisoner(user) else return ..() @@ -88,8 +86,9 @@ beacon = findbeacon() if("handle_id") if(inserted_prisoner_id) - id_eject(usr, inserted_prisoner_id) - inserted_prisoner_id = null + id_eject_prisoner(usr) + else + id_insert_prisoner(usr) if("set_goal") var/new_goal = input("Set the amount of points:", "Points", inserted_prisoner_id.goal) as num|null if(!isnum(new_goal)) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index bf2b7a81a4b..515311e37b7 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -11,7 +11,6 @@ var/screen = null var/datum/data/record/active1 var/datum/data/record/active2 - var/a_id = null var/temp = null var/printing = null //Sorting Variables @@ -23,6 +22,12 @@ /obj/machinery/computer/med_data/syndie icon_keyboard = "syndie_key" +/obj/machinery/computer/med_data/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id)) + id_insert_scan(user) + else + return ..() + /obj/machinery/computer/med_data/ui_interact(mob/user) . = ..() playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) @@ -197,8 +202,9 @@ src.temp = null if(href_list["inserted_scan_id"]) if(inserted_scan_id) - id_eject(usr, inserted_scan_id) - inserted_scan_id = null + id_eject_scan(usr) + else + id_insert_scan(usr) else if(href_list["logout"]) src.authenticated = null src.screen = null diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index e09de45fdb5..8f7c158d102 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -71,8 +71,7 @@ /obj/machinery/computer/prisoner/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/card/id)) if(screen) - id_insert(user, I, inserted_prisoner_id) - inserted_prisoner_id = I + id_insert_prisoner(user) else to_chat(user, "Unauthorized access.") else @@ -91,17 +90,11 @@ if(href_list["id"]) if(href_list["id"] =="insert" && !inserted_prisoner_id) - var/obj/item/card/id/prisoner/I = usr.is_holding_item_of_type(/obj/item/card/id/prisoner) - if(I) - id_insert(usr, I, inserted_prisoner_id) - inserted_prisoner_id = I - else - to_chat(usr, "No valid ID.") + id_insert_prisoner(usr) else if(inserted_prisoner_id) switch(href_list["id"]) if("eject") - id_eject(usr, inserted_prisoner_id) - inserted_prisoner_id = null + id_eject_prisoner(usr) if("reset") inserted_prisoner_id.points = 0 if("setgoal") diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index f63f9be671e..de1dff51e2f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -9,7 +9,6 @@ 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 @@ -36,8 +35,7 @@ /obj/machinery/computer/secure_data/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/card/id)) - id_insert(user, I, inserted_scan_id) - inserted_scan_id = I + id_insert_scan(user) else return ..() @@ -325,9 +323,11 @@ What a mess.*/ if("Confirm Identity") if(inserted_scan_id) - id_eject(usr, inserted_scan_id) - inserted_scan_id = null + id_eject_scan(usr) return + else + id_insert_scan(usr) + if("Log Out") authenticated = null screen = null diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 4f1ce5d874a..7ca03d62572 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -30,8 +30,7 @@ /obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/card/id)) - id_insert(user, I, inserted_prisoner_id) - inserted_prisoner_id = I + id_insert_prisoner(user) else return ..() @@ -78,8 +77,11 @@ switch(action) if("handle_id") if(inserted_prisoner_id) - id_eject(usr, inserted_prisoner_id) - inserted_prisoner_id = null + id_eject_prisoner(usr) + else + var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id/prisoner) + if(I) + id_insert_prisoner(usr) if("release_items") var/mob/living/carbon/human/H = locate(params["mobref"]) in stored_items if ((H == usr || allowed(usr)) && inserted_prisoner_id) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index c2f3ed3a29f..a84079c5ce8 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -34,8 +34,7 @@ GLOBAL_LIST(labor_sheet_values) /obj/machinery/mineral/labor_claim_console/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/card/id)) - id_insert(user, I, inserted_prisoner_id) - inserted_prisoner_id = I + id_insert_prisoner(user) else return ..() @@ -73,8 +72,10 @@ GLOBAL_LIST(labor_sheet_values) switch(action) if("handle_id") if(inserted_prisoner_id) - id_eject(usr, inserted_prisoner_id) - inserted_prisoner_id = null + if(!usr.get_active_held_item()) + id_eject_prisoner(usr) + else + id_insert_prisoner(usr) if("claim_points") inserted_prisoner_id.points += stacking_machine.points stacking_machine.points = 0 diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 717bdbb9fcf..b42eb6e1052 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -49,8 +49,6 @@ . = ..() if(in_range(user, src) || isobserver(user)) . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
Ore pickup speed at [ore_pickup_rate].
" - if(panel_open) - . += "Alt-click to rotate the input and output direction." /obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) var/datum/component/material_container/mat_container = materials.mat_container @@ -181,8 +179,7 @@ if(istype(W, /obj/item/card/id)) var/obj/item/card/id/I = user.get_active_held_item() if(istype(I)) - id_insert(user, I, inserted_prisoner_id) - inserted_prisoner_id = I + id_insert_prisoner(user) interact(user) return return @@ -200,10 +197,7 @@ return ..() -/obj/machinery/mineral/ore_redemption/AltClick(mob/living/user) - ..() - if(!user.canUseTopic(src, BE_CLOSE)) - return +/obj/machinery/mineral/ore_redemption/multitool_act(mob/living/user, obj/item/multitool/I) if (panel_open) input_dir = turn(input_dir, -90) output_dir = turn(output_dir, -90) @@ -265,14 +259,12 @@ if("Eject") if(!inserted_scan_id) return - id_eject(usr, inserted_prisoner_id) - inserted_prisoner_id = null + id_eject_prisoner(usr) return TRUE if("Insert") var/obj/item/card/id/I = usr.get_active_held_item() if(istype(I)) - id_insert(usr, I, inserted_prisoner_id) - inserted_prisoner_id = I + id_insert_prisoner(usr) else to_chat(usr, "Not a valid ID!") return TRUE @@ -283,7 +275,6 @@ if("Release") if(!mat_container) return - if(materials.on_hold()) to_chat(usr, "Mineral access is on hold, please contact the quartermaster.") else if(!check_access(inserted_scan_id) && !allowed(usr)) //Check the ID inside, otherwise check the user @@ -307,7 +298,7 @@ desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/sheets_to_remove = round(min(desired,50,stored_amount)) - + var/count = mat_container.retrieve_sheets(sheets_to_remove, mat, get_step(src, output_dir)) var/list/mats = list() mats[mat] = MINERAL_MATERIAL_AMOUNT