Adds a framework for airlocks changing access depending on security level. (#17849)

* Adds a framework for airlocks changing access depending on security level.

* cleanup

* s

* s

* req_one_access

* update

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2023-12-07 13:17:56 +01:00
committed by GitHub
parent d5fc4894da
commit 33ad531b0b
5 changed files with 99 additions and 5 deletions
@@ -221,4 +221,16 @@ var/global/maint_all_access = 0
var/exceptional_circumstances = maint_all_access || maint_sec_access
if(exceptional_circumstances && src.check_access_list(list(access_maint_tunnels)))
return 1
if(access_by_level || req_one_access_by_level)
var/sec_level = get_security_level()
if(sec_level in (req_one_access_by_level ? req_one_access_by_level : access_by_level))
var/access_to_use = req_one_access_by_level ? req_one_access_by_level[sec_level] : access_by_level[sec_level]
if(!access_to_use)
return TRUE
if(req_one_access_by_level)
if(has_access(req_one_access = access_to_use, accesses = A))
return TRUE
else
if(has_access(access_to_use, accesses = A))
return TRUE
return ..(M)