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