diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index e6399f82fb5..468f5d45b1b 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1392,9 +1392,9 @@ About the new airlock wires panel:
ae = new/obj/item/airlock_electronics(loc)
check_access()
if(req_access.len)
- ae.conf_access = req_access
+ ae.selected_accesses = req_access
else if(req_one_access.len)
- ae.conf_access = req_one_access
+ ae.selected_accesses = req_one_access
ae.one_access = 1
else
ae = electronics
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 660c6df683e..e404ff8514b 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -3,16 +3,29 @@
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_SMALL
- materials = list(MAT_METAL=50, MAT_GLASS=50)
+ materials = list(MAT_METAL = 50, MAT_GLASS = 50)
origin_tech = "engineering=2;programming=1"
req_access = list(ACCESS_ENGINE)
toolspeed = 1
usesound = 'sound/items/deconstruct.ogg'
- var/list/conf_access = null
- var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access
- var/const/max_brain_damage = 60 // Maximum brain damage a mob can have until it can't use the electronics
- var/unres_sides = 0
- var/unres_direction = null
+ /// List of accesses currently set
+ var/list/selected_accesses = list()
+ /// Is the door access using req_one_access (TRUE) or req_access (FALSE)
+ var/one_access = FALSE
+ /// An associative list containing all station accesses. Includes their name and access number.
+ var/static/list/door_accesses_list = list()
+ /// Maximum brain damage a mob can have until it can't use the electronics
+ var/const/max_brain_damage = 60
+ /// Which direction has unrestricted access to the airlock (e.g. medbay doors from the inside)
+ var/unres_access_from = null
+
+/obj/item/airlock_electronics/Initialize(mapload)
+ . = ..()
+ if(!length(door_accesses_list))
+ for(var/access in get_all_accesses())
+ door_accesses_list += list(list(
+ "name" = get_access_desc(access),
+ "id" = access))
/obj/item/airlock_electronics/attack_self(mob/user)
if(!ishuman(user) && !isrobot(user))
@@ -21,82 +34,71 @@
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.getBrainLoss() >= max_brain_damage)
- to_chat(user, "You forget how to use \the [src].")
+ to_chat(user, "You forget how to use [src].")
return
+ tgui_interact(user)
- var/t1 = text("Access control
\n")
- t1 += "