From ca13a8872c2fa87d90242a0eeca3287a0dde6b90 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 10 Jul 2019 04:00:47 +1000 Subject: [PATCH] MC camera and access fixes and adjustments (#6269) * Adjusts MC camera program, fixes ID program * Fixes oversight with network access --- code/__defines/machinery.dm | 3 +- code/game/machinery/camera/presets.dm | 3 ++ .../integrated_electronics/subtypes/output.dm | 2 +- .../file_system/programs/command/card.dm | 11 ++----- .../file_system/programs/generic/camera.dm | 31 ++++++++++++++----- maps/northern_star/northern_star_defines.dm | 10 ++++++ maps/southern_cross/southern_cross_defines.dm | 13 +++++++- maps/~map_system/maps.dm | 1 + 8 files changed, 54 insertions(+), 20 deletions(-) diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 48babcae96..3676071d7c 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -34,6 +34,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define NETWORK_CRESCENT "Spaceport" // #define NETWORK_CAFE_DOCK "Cafe Dock" #define NETWORK_CARGO "Cargo" +#define NETWORK_CIRCUITS "Circuits" #define NETWORK_CIVILIAN "Civilian" // #define NETWORK_CIVILIAN_EAST "Civilian East" // #define NETWORK_CIVILIAN_WEST "Civilian West" @@ -109,7 +110,7 @@ var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret #define SUPERMATTER_WARNING 3 // Ambient temp > CRITICAL_TEMPERATURE OR integrity damaged #define SUPERMATTER_DANGER 4 // Integrity < 50% #define SUPERMATTER_EMERGENCY 5 // Integrity < 25% -#define SUPERMATTER_DELAMINATING 6 // Pretty obvious. +#define SUPERMATTER_DELAMINATING 6 // Pretty obvious. //wIP - PORT ALL OF THESE TO SUBSYSTEMS AND GET RID OF THE WHOLE LIST PROCESS THING // Fancy-pants START/STOP_PROCESSING() macros that lets us custom define what the list is. diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index abd0434c5e..f35fc538da 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -43,6 +43,9 @@ var/global/list/engineering_networks = list( /obj/machinery/camera/network/civilian network = list(NETWORK_CIVILIAN) +/obj/machinery/camera/network/circuits + network = list(NETWORK_CIRCUITS) + /* /obj/machinery/camera/network/civilian_east network = list(NETWORK_CIVILIAN_EAST) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 1e7ad6c31a..cd8f8a7fc3 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -244,7 +244,7 @@ activators = list() spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_idle = 5 // Raises to 80 when on. - var/obj/machinery/camera/network/research/camera + var/obj/machinery/camera/network/circuits/camera /obj/item/integrated_circuit/output/video_camera/New() ..() diff --git a/code/modules/modular_computers/file_system/programs/command/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm index 80a250ca6b..b93fbb4d7d 100644 --- a/code/modules/modular_computers/file_system/programs/command/card.dm +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -168,7 +168,7 @@ if("terminate") if(computer && can_run(user, 1)) id_card.assignment = "Terminated" - remove_nt_access(id_card) + id_card.access = list() callHook("terminate_employee", list(id_card)) if("edit") if(computer && can_run(user, 1)) @@ -206,8 +206,7 @@ access = jobdatum.get_access() - remove_nt_access(id_card) - apply_access(id_card, access) + id_card.access = access id_card.assignment = t1 id_card.rank = t1 @@ -225,9 +224,3 @@ SSnanoui.update_uis(NM) return 1 - -/datum/computer_file/program/card_mod/proc/remove_nt_access(var/obj/item/weapon/card/id/id_card) - id_card.access -= get_access_ids(ACCESS_TYPE_STATION|ACCESS_TYPE_CENTCOM) - -/datum/computer_file/program/card_mod/proc/apply_access(var/obj/item/weapon/card/id/id_card, var/list/accesses) - id_card.access |= accesses diff --git a/code/modules/modular_computers/file_system/programs/generic/camera.dm b/code/modules/modular_computers/file_system/programs/generic/camera.dm index 15c7868737..a722dea6b6 100644 --- a/code/modules/modular_computers/file_system/programs/generic/camera.dm +++ b/code/modules/modular_computers/file_system/programs/generic/camera.dm @@ -11,10 +11,15 @@ return 0 if(NETWORK_ENGINE,NETWORK_ALARM_ATMOS,NETWORK_ALARM_FIRE,NETWORK_ALARM_POWER) return access_engine + if(NETWORK_CIRCUITS) + return access_research if(NETWORK_ERT) return access_cent_specops - return access_security // Default for all other networks + if(network in using_map.station_networks) + return access_security // Default for all other station networks + else + return 999 //Inaccessible if not a station network and not mentioned above /datum/computer_file/program/camera_monitor filename = "cammon" @@ -41,10 +46,17 @@ var/list/all_networks[0] for(var/network in using_map.station_networks) - all_networks.Add(list(list( - "tag" = network, - "has_access" = can_access_network(user, get_camera_access(network)) - ))) + if(can_access_network(user, get_camera_access(network), 1)) + all_networks.Add(list(list( + "tag" = network, + "has_access" = 1 + ))) + for(var/network in using_map.secondary_networks) + if(can_access_network(user, get_camera_access(network), 0)) + all_networks.Add(list(list( + "tag" = network, + "has_access" = 1 + ))) all_networks = modify_networks_list(all_networks) @@ -67,12 +79,15 @@ /datum/nano_module/camera_monitor/proc/modify_networks_list(var/list/networks) return networks -/datum/nano_module/camera_monitor/proc/can_access_network(var/mob/user, var/network_access) +/datum/nano_module/camera_monitor/proc/can_access_network(var/mob/user, var/network_access, var/station_network = 0) // No access passed, or 0 which is considered no access requirement. Allow it. if(!network_access) return 1 - return check_access(user, access_security) || check_access(user, access_heads) || check_access(user, network_access) + if(station_network) + return check_access(user, network_access) || check_access(user, access_security) || check_access(user, access_heads) + else + return check_access(user, network_access) /datum/nano_module/camera_monitor/Topic(href, href_list) if(..()) @@ -90,7 +105,7 @@ else if(href_list["switch_network"]) // Either security access, or access to the specific camera network's department is required in order to access the network. - if(can_access_network(usr, get_camera_access(href_list["switch_network"]))) + if(can_access_network(usr, get_camera_access(href_list["switch_network"]), (href_list["switch_network"] in using_map.station_networks))) current_network = href_list["switch_network"] else to_chat(usr, "\The [nano_host()] shows an \"Network Access Denied\" error message.") diff --git a/maps/northern_star/northern_star_defines.dm b/maps/northern_star/northern_star_defines.dm index 8cf1820c78..15090d646c 100644 --- a/maps/northern_star/northern_star_defines.dm +++ b/maps/northern_star/northern_star_defines.dm @@ -53,6 +53,16 @@ NETWORK_INTERROGATION ) + secondary_networks = list( + NETWORK_ERT, + NETWORK_MERCENARY, + NETWORK_THUNDER, + NETWORK_COMMUNICATORS, + NETWORK_ALARM_ATMOS, + NETWORK_ALARM_POWER, + NETWORK_ALARM_FIRE + ) + allowed_spawns = list("Arrivals Shuttle","Gateway", "Cryogenic Storage", "Cyborg Storage", "Elevator") diff --git a/maps/southern_cross/southern_cross_defines.dm b/maps/southern_cross/southern_cross_defines.dm index 958659c692..a91e0367a6 100644 --- a/maps/southern_cross/southern_cross_defines.dm +++ b/maps/southern_cross/southern_cross_defines.dm @@ -47,6 +47,7 @@ // Networks that will show up as options in the camera monitor program station_networks = list( NETWORK_CARGO, + NETWORK_CIRCUITS, NETWORK_CIVILIAN, NETWORK_COMMAND, NETWORK_ENGINE, @@ -65,7 +66,17 @@ NETWORK_SECURITY, NETWORK_TELECOM ) - + // Camera networks that exist, but don't show on regular camera monitors. + secondary_networks = list( + NETWORK_ERT, + NETWORK_MERCENARY, + NETWORK_THUNDER, + NETWORK_COMMUNICATORS, + NETWORK_ALARM_ATMOS, + NETWORK_ALARM_POWER, + NETWORK_ALARM_FIRE, + NETWORK_SUPPLY + ) usable_email_tlds = list("freemail.nt") allowed_spawns = list("Arrivals Shuttle","Gateway", "Cryogenic Storage", "Cyborg Storage") unit_test_exempt_areas = list(/area/ninja_dojo, /area/ninja_dojo/firstdeck, /area/ninja_dojo/arrivals_dock) diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index a4a76e1c8d..3576663bd5 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -79,6 +79,7 @@ var/list/all_maps = list() var/emergency_shuttle_recall_message var/list/station_networks = list() // Camera networks that will show up on the console. + var/list/secondary_networks = list() // Camera networks that exist, but don't show on regular camera monitors. var/allowed_spawns = list("Arrivals Shuttle","Gateway", "Cryogenic Storage", "Cyborg Storage")