mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-04-05 11:56:08 +01:00
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com>
127 lines
4.4 KiB
Plaintext
127 lines
4.4 KiB
Plaintext
SUBSYSTEM_DEF(access)
|
|
name = "Access"
|
|
flags = SS_NO_FIRE
|
|
|
|
VAR_PRIVATE/list/datum/access/priv_all_access_datums
|
|
VAR_PRIVATE/list/datum/access/priv_all_access
|
|
VAR_PRIVATE/list/datum/access/priv_station_access
|
|
VAR_PRIVATE/list/datum/access/priv_centcom_access
|
|
VAR_PRIVATE/list/datum/access/priv_syndicate_access
|
|
VAR_PRIVATE/list/datum/access/priv_private_access
|
|
|
|
VAR_PRIVATE/list/datum/access/priv_all_access_datums_id = list()
|
|
VAR_PRIVATE/list/datum/access/priv_all_access_datums_region = list()
|
|
VAR_PRIVATE/list/datum/access/priv_region_access = list()
|
|
|
|
/datum/controller/subsystem/access/Initialize()
|
|
priv_all_access_datums = init_subtypes(/datum/access)
|
|
priv_all_access_datums = dd_sortedObjectList(priv_all_access_datums)
|
|
|
|
for(var/datum/access/A in get_all_access_datums())
|
|
priv_all_access_datums_id["[A.id]"] = A
|
|
LAZYADD(priv_all_access_datums_region["[A.region]"], A)
|
|
LAZYADD(priv_region_access["[A.region]"], A.id)
|
|
|
|
priv_all_access = get_access_ids()
|
|
priv_station_access = get_access_ids(ACCESS_TYPE_STATION)
|
|
priv_centcom_access = get_access_ids(ACCESS_TYPE_CENTCOM)
|
|
priv_syndicate_access = get_access_ids(ACCESS_TYPE_SYNDICATE)
|
|
priv_private_access = get_access_ids(ACCESS_TYPE_PRIVATE)
|
|
|
|
return SS_INIT_SUCCESS
|
|
|
|
/datum/controller/subsystem/access/proc/get_centcom_access(job)
|
|
switch(job)
|
|
if("VIP Guest")
|
|
return list(ACCESS_CENT_GENERAL)
|
|
if("Custodian")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
|
|
if("Thunderdome Overseer")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER)
|
|
if("Intel Officer")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING)
|
|
if("Medical Officer")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_MEDICAL)
|
|
if("Death Commando")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
|
|
if("Research Officer")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_TELEPORTER, ACCESS_CENT_STORAGE)
|
|
if("BlackOps Commander")
|
|
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_CREED)
|
|
if("Supreme Commander")
|
|
return get_all_centcom_access()
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_access_datums()
|
|
return priv_all_access_datums
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_access_datums_by_id()
|
|
return priv_all_access_datums_id
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_access_datums_by_region()
|
|
return priv_all_access_datums_region
|
|
|
|
/datum/controller/subsystem/access/proc/get_access_ids(access_types = ACCESS_TYPE_ALL)
|
|
var/list/L = list()
|
|
for(var/datum/access/A in get_all_access_datums())
|
|
if(A.access_type & access_types)
|
|
L += A.id
|
|
return L
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_accesses()
|
|
RETURN_TYPE(/list)
|
|
return priv_all_access
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_station_access()
|
|
RETURN_TYPE(/list)
|
|
return priv_station_access
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_centcom_access()
|
|
RETURN_TYPE(/list)
|
|
return priv_centcom_access
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_syndicate_access()
|
|
RETURN_TYPE(/list)
|
|
return priv_syndicate_access
|
|
|
|
/datum/controller/subsystem/access/proc/get_all_private_access()
|
|
RETURN_TYPE(/list)
|
|
return priv_private_access
|
|
|
|
/datum/controller/subsystem/access/proc/get_region_accesses(var/code)
|
|
if(code == ACCESS_REGION_ALL)
|
|
return get_all_station_access()
|
|
|
|
return priv_region_access["[code]"]
|
|
|
|
/datum/controller/subsystem/access/proc/get_region_accesses_name(var/code)
|
|
switch(code)
|
|
if(ACCESS_REGION_ALL)
|
|
return "All"
|
|
if(ACCESS_REGION_SECURITY) //security
|
|
return "Security"
|
|
if(ACCESS_REGION_MEDBAY) //medbay
|
|
return "Medbay"
|
|
if(ACCESS_REGION_RESEARCH) //research
|
|
return "Research"
|
|
if(ACCESS_REGION_ENGINEERING) //engineering and maintenance
|
|
return "Engineering"
|
|
if(ACCESS_REGION_COMMAND) //command
|
|
return "Command"
|
|
if(ACCESS_REGION_GENERAL) //station general
|
|
return "Station General"
|
|
if(ACCESS_REGION_SUPPLY) //supply
|
|
return "Supply"
|
|
|
|
/datum/controller/subsystem/access/proc/get_access_desc(id)
|
|
var/list/access_list = get_all_access_datums_by_id()
|
|
var/datum/access/access_datum = access_list["[id]"]
|
|
|
|
return access_datum ? access_datum.desc : ""
|
|
|
|
/datum/controller/subsystem/access/proc/get_centcom_access_desc(A)
|
|
return get_access_desc(A)
|
|
|
|
/datum/controller/subsystem/access/proc/get_access_by_id(id)
|
|
var/list/access_list = get_all_access_datums_by_id()
|
|
return access_list["[id]"]
|