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