diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index e8d4078593..045257fc71 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1238,7 +1238,11 @@ About the new airlock wires panel:
var/obj/item/weapon/airlock_electronics/ae
if(!electronics)
ae = new/obj/item/weapon/airlock_electronics( src.loc )
- ae.conf_access = src.req_access
+ if(src.req_access.len)
+ ae.conf_access = src.req_access
+ else if (src.req_one_access.len)
+ ae.conf_access = src.req_one_access
+ ae.one_access = 1
else
ae = electronics
electronics = null
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 2310e85c07..ddedf045e7 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -11,6 +11,7 @@
req_access = list(access_engine)
var/list/conf_access = null
+ var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access
var/last_configurator = null
var/locked = 1
@@ -33,6 +34,8 @@
else
t1 += "Block
"
+ t1 += "Access requirement is set to "
+ t1 += one_access ? "ONE
" : "ALL
"
t1 += conf_access == null ? "All
" : "All
"
@@ -44,6 +47,8 @@
if (!conf_access || !conf_access.len || !(acc in conf_access))
t1 += "[aname]
"
+ else if(one_access)
+ t1 += "[aname]
"
else
t1 += "[aname]
"
@@ -75,6 +80,9 @@
if (href_list["logout"])
locked = 1
+ if (href_list["one_access"])
+ one_access = !one_access
+
if (href_list["access"])
toggle_access(href_list["access"])
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 7ece9970d5..9930d8d84f 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -421,7 +421,11 @@ obj/structure/door_assembly
door = new src.airlock_type( src.loc )
//door.req_access = src.req_access
door.electronics = src.electronics
- door.req_access = src.electronics.conf_access
+ if(src.electronics.one_access)
+ door.req_access = null
+ door.req_one_access = src.electronics.conf_access
+ else
+ door.req_access = src.electronics.conf_access
if(created_name)
door.name = created_name
src.electronics.loc = door
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index f199d9edd9..478f6989ba 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -219,7 +219,11 @@ obj/structure/windoor_assembly/Del()
windoor.dir = src.dir
windoor.density = 0
- windoor.req_access = src.electronics.conf_access
+ if(src.electronics.one_access)
+ windoor.req_access = null
+ windoor.req_one_access = src.electronics.conf_access
+ else
+ windoor.req_access = src.electronics.conf_access
windoor.electronics = src.electronics
src.electronics.loc = windoor
else
@@ -233,7 +237,11 @@ obj/structure/windoor_assembly/Del()
windoor.dir = src.dir
windoor.density = 0
- windoor.req_access = src.electronics.conf_access
+ if(src.electronics.one_access)
+ windoor.req_access = null
+ windoor.req_one_access = src.electronics.conf_access
+ else
+ windoor.req_access = src.electronics.conf_access
windoor.electronics = src.electronics
src.electronics.loc = windoor