diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index e5869310ade..fdc4428ae38 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -45,6 +45,11 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) light_color = LIGHT_COLOR_BLUE +/obj/machinery/computer/card/examine(mob/user) + ..() + if(scan || modify) + to_chat(user, "Alt-click to eject the ID card.") + /obj/machinery/computer/card/Initialize() . = ..() change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay) @@ -69,6 +74,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) return modify = idcard playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + updateUsrDialog() else return ..() @@ -349,38 +355,9 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) usr.set_machine(src) switch(href_list["choice"]) if ("modify") - if (modify) - GLOB.data_core.manifest_modify(modify.registered_name, modify.assignment) - modify.update_label() - modify.forceMove(drop_location()) - modify.verb_pickup() - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - modify = null - region_access = null - head_subordinates = null - else - var/obj/item/I = usr.get_active_held_item() - if (istype(I, /obj/item/card/id)) - if (!usr.transferItemToLoc(I,src)) - return - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - modify = I - authenticated = 0 - + eject_id_modify(usr) if ("scan") - if (scan) - scan.forceMove(drop_location()) - scan.verb_pickup() - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - scan = null - else - var/obj/item/I = usr.get_active_held_item() - if (istype(I, /obj/item/card/id)) - if (!usr.transferItemToLoc(I,src)) - return - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - scan = I - authenticated = 0 + eject_id_scan(usr) if ("auth") if ((!( authenticated ) && (scan || issilicon(usr)) && (modify || mode))) if (check_access(scan)) @@ -550,6 +527,49 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) updateUsrDialog() return +/obj/machinery/computer/card/AltClick(mob/user) + if(user.canUseTopic(src)) + if(scan) + eject_id_scan(user) + if(modify) + eject_id_modify(user) + +/obj/machinery/computer/card/proc/eject_id_scan(mob/user) + if(scan) + scan.forceMove(drop_location()) + user.put_in_hands(scan) + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + scan = null + else //switching the ID with the one you're holding + var/obj/item/I = user.get_active_held_item() + if(istype(I, /obj/item/card/id)) + if(!user.transferItemToLoc(I,src)) + return + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + scan = I + authenticated = FALSE + updateUsrDialog() + +/obj/machinery/computer/card/proc/eject_id_modify(mob/user) + if(modify) + GLOB.data_core.manifest_modify(modify.registered_name, modify.assignment) + modify.update_label() + modify.forceMove(drop_location()) + user.put_in_hands(modify) + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + modify = null + region_access = null + head_subordinates = null + else //switching the ID with the one you're holding + var/obj/item/I = user.get_active_held_item() + if(istype(I, /obj/item/card/id)) + if (!user.transferItemToLoc(I,src)) + return + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + modify = I + authenticated = FALSE + updateUsrDialog() + /obj/machinery/computer/card/proc/get_subordinates(rank) for(var/datum/job/job in SSjob.occupations) if(rank in job.department_head) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 7fadcac2f26..8859522ed26 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -23,6 +23,11 @@ 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" @@ -41,6 +46,8 @@ 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 @@ -301,15 +308,7 @@ What a mess.*/ active2 = null if("Confirm Identity") - if(scan) - usr.put_in_hands(scan) - scan = null - else - var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id) - if(I) - if(!usr.transferItemToLoc(I, src)) - return - scan = I + eject_id(usr) if("Log Out") authenticated = null @@ -790,3 +789,20 @@ What a mess.*/ if(!record2 || record2 == active2) return 1 return 0 + +/obj/machinery/computer/secure_data/AltClick(mob/user) + if(user.canUseTopic(src) && scan) + eject_id(user) + +/obj/machinery/computer/secure_data/proc/eject_id(mob/user) + if(scan) + 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 + var/obj/item/I = user.is_holding_item_of_type(/obj/item/card/id) + if(I) + if(!user.transferItemToLoc(I, src)) + return + scan = I + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm index b08fab8465f..caebfb447b8 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -57,6 +57,7 @@ else stored_card2 = I to_chat(user, "You insert \the [I] into \the [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) return TRUE @@ -93,6 +94,7 @@ P.event_idremoved(1, slot) to_chat(user, "You remove the card[ejected>1 ? "s" : ""] from \the [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) return TRUE return FALSE