From b6f10e11c4a7170f24fa591e9c9df678a5d81d1c Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Mon, 11 Sep 2023 07:05:53 +0100 Subject: [PATCH] Project ARES: Logging tweaks & updates (#4225) # About the pull request Merges the AntiAir and Security Update logs. Fixes Security Updates to actually work (I still don't know why they weren't working) Replaces AntiAir logs with the flight records from logs I made in #4024 Fixes ARES logs keeping the mob datum rather than just passing the name string. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Fixes ARES Security Logs and stops ARES logs recording mob datums instead of names. add: Moves AntiAir records to Security Logs. add: Adds Flight Records to ARES Interface, detailing launches and setting changes. Does not include CAS details. code: Changes ARES log procs from using 'user' to 'user_name' to identify it should be the string rather than mob datum. /:cl: --- code/__DEFINES/ARES.dm | 1 + code/game/machinery/ARES/ARES.dm | 4 +- code/game/machinery/ARES/ARES_procs.dm | 50 +++++++++---------- code/game/machinery/ARES/ARES_records.dm | 12 ++++- .../machinery/computer/almayer_control.dm | 4 +- code/game/supplyshuttle.dm | 5 +- code/modules/cm_marines/anti_air.dm | 4 +- code/modules/cm_marines/overwatch.dm | 2 +- .../security_levels/security_levels.dm | 14 +++--- .../shuttle/computers/dropship_computer.dm | 9 ++++ code/modules/shuttles/marine_ferry.dm | 2 + code/modules/shuttles/shuttle_console.dm | 2 + .../packages/tgui/interfaces/AresInterface.js | 46 +++++++++++------ 13 files changed, 97 insertions(+), 58 deletions(-) diff --git a/code/__DEFINES/ARES.dm b/code/__DEFINES/ARES.dm index 405070218741..a1b82af25821 100644 --- a/code/__DEFINES/ARES.dm +++ b/code/__DEFINES/ARES.dm @@ -26,6 +26,7 @@ #define ARES_RECORD_SECURITY "Security Update" #define ARES_RECORD_MAINTENANCE "Maintenance Ticket" #define ARES_RECORD_ACCESS "Access Ticket" +#define ARES_RECORD_FLIGHT "Flight Record" /// Not by ARES logged through marine_announcement() #define ARES_LOG_NONE 0 diff --git a/code/game/machinery/ARES/ARES.dm b/code/game/machinery/ARES/ARES.dm index 166c03d98cab..ed4391c89c24 100644 --- a/code/game/machinery/ARES/ARES.dm +++ b/code/game/machinery/ARES/ARES.dm @@ -149,8 +149,10 @@ var/list/records_talking = list() /// Holds all (/datum/ares_record/requisition_log)s var/list/records_asrs = list() - /// Holds all (/datum/ares_record/security)s and (/datum/ares_record/antiair)s + /// Holds all (/datum/ares_record/security)s (including AA) var/list/records_security = list() + /// Holds all (/datum/ares_record/flight)s + var/list/records_flight = list() /// Is nuke request usable or not? var/nuke_available = TRUE diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index 2ac662a91b15..e03f218f0f34 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -59,20 +59,23 @@ GLOBAL_LIST_INIT(maintenance_categories, list( /datum/ares_link/proc/log_ares_bioscan(title, input) interface.records_bioscan.Add(new /datum/ares_record/bioscan(title, input)) -/datum/ares_link/proc/log_ares_bombardment(mob/living/user, ob_name, coordinates) - interface.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, "Bombardment fired at [coordinates].", user)) +/datum/ares_link/proc/log_ares_bombardment(user_name, ob_name, coordinates) + interface.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, "Bombardment fired at [coordinates].", user_name)) /datum/ares_link/proc/log_ares_announcement(title, message) interface.records_announcement.Add(new /datum/ares_record/announcement(title, message)) -/datum/ares_link/proc/log_ares_antiair(mob/living/user, details) - interface.records_security.Add(new /datum/ares_record/antiair(details, user)) - -/datum/ares_link/proc/log_ares_requisition(source, details, mob/living/user) - interface.records_asrs.Add(new /datum/ares_record/requisition_log(source, details, user)) +/datum/ares_link/proc/log_ares_requisition(source, details, user_name) + interface.records_asrs.Add(new /datum/ares_record/requisition_log(source, details, user_name)) /datum/ares_link/proc/log_ares_security(title, details) interface.records_security.Add(new /datum/ares_record/security(title, details)) + +/datum/ares_link/proc/log_ares_antiair(details) + interface.records_security.Add(new /datum/ares_record/security/antiair(details)) + +/datum/ares_link/proc/log_ares_flight(user_name, details) + interface.records_flight.Add(new /datum/ares_record/flight(details, user_name)) // ------ End ARES Logging Procs ------ // /proc/ares_apollo_talk(broadcast_message) @@ -227,8 +230,6 @@ GLOBAL_LIST_INIT(maintenance_categories, list( var/list/logged_alerts = list() for(var/datum/ares_record/security/security_alert as anything in records_security) - if(!istype(security_alert)) - continue var/list/current_alert = list() current_alert["time"] = security_alert.time current_alert["title"] = security_alert.title @@ -237,6 +238,17 @@ GLOBAL_LIST_INIT(maintenance_categories, list( logged_alerts += list(current_alert) data["records_security"] = logged_alerts + var/list/logged_flights = list() + for(var/datum/ares_record/flight/flight_log as anything in records_flight) + var/list/current_flight = list() + current_flight["time"] = flight_log.time + current_flight["title"] = flight_log.title + current_flight["details"] = flight_log.details + current_flight["user"] = flight_log.user + current_flight["ref"] = "\ref[flight_log]" + logged_flights += list(current_flight) + data["records_flight"] = logged_flights + var/list/logged_bioscans = list() for(var/datum/ares_record/bioscan/scan as anything in records_bioscan) var/list/current_scan = list() @@ -282,18 +294,6 @@ GLOBAL_LIST_INIT(maintenance_categories, list( logged_discussions += list(deleted_disc) data["deleted_discussions"] = logged_discussions - var/list/logged_adjustments = list() - for(var/datum/ares_record/antiair/aa_adjustment as anything in records_security) - if(!istype(aa_adjustment)) - continue - var/list/current_adjustment = list() - current_adjustment["time"] = aa_adjustment.time - current_adjustment["details"] = aa_adjustment.details - current_adjustment["user"] = aa_adjustment.user - current_adjustment["ref"] = "\ref[aa_adjustment]" - logged_adjustments += list(current_adjustment) - data["aa_adjustments"] = logged_adjustments - var/list/logged_orders = list() for(var/datum/ares_record/requisition_log/req_order as anything in records_asrs) if(!istype(req_order)) @@ -431,12 +431,12 @@ GLOBAL_LIST_INIT(maintenance_categories, list( if("page_security") last_menu = current_menu current_menu = "security" + if("page_flight") + last_menu = current_menu + current_menu = "flight_log" if("page_requisitions") last_menu = current_menu current_menu = "requisitions" - if("page_antiair") - last_menu = current_menu - current_menu = "antiair" if("page_emergency") last_menu = current_menu current_menu = "emergency" @@ -460,7 +460,7 @@ GLOBAL_LIST_INIT(maintenance_categories, list( new_title = "[record.title] at [record.time]" new_details = record.details records_announcement -= record - if(ARES_RECORD_SECURITY) + if(ARES_RECORD_SECURITY, ARES_RECORD_ANTIAIR) new_title = "[record.title] at [record.time]" new_details = record.details records_security -= record diff --git a/code/game/machinery/ARES/ARES_records.dm b/code/game/machinery/ARES/ARES_records.dm index 65fc2b1aa762..19751462bc37 100644 --- a/code/game/machinery/ARES/ARES_records.dm +++ b/code/game/machinery/ARES/ARES_records.dm @@ -32,13 +32,21 @@ /datum/ares_record/security record_name = ARES_RECORD_SECURITY -/datum/ares_record/antiair +/datum/ares_record/security/antiair record_name = ARES_RECORD_ANTIAIR -/datum/ares_record/antiair/New(details, user) +/datum/ares_record/security/antiair/New(details) time = worldtime2text() src.title = "AntiAir Adjustment" src.details = details + +/datum/ares_record/flight + record_name = ARES_RECORD_FLIGHT + +/datum/ares_record/flight/New(details, user) + time = worldtime2text() + src.title = "Flight Log" + src.details = details src.user = user /datum/ares_record/bombardment diff --git a/code/game/machinery/computer/almayer_control.dm b/code/game/machinery/computer/almayer_control.dm index 012c1d9eea4a..c3b17dbf8090 100644 --- a/code/game/machinery/computer/almayer_control.dm +++ b/code/game/machinery/computer/almayer_control.dm @@ -164,11 +164,11 @@ if(!level_selected) return - set_security_level(seclevel2num(level_selected)) + set_security_level(seclevel2num(level_selected), log = ARES_LOG_NONE) log_game("[key_name(usr)] has changed the security level to [get_security_level()].") message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") var/datum/ares_link/link = GLOB.ares_link - link.log_ares_security("Security Level Update", "[usr] has changed the security level to [get_security_level()].") + link.log_ares_security("Manual Security Update", "[usr] has changed the security level to [get_security_level()].") . = TRUE if("messageUSCM") diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 4d60c6c263cf..22a3f48c837e 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -1031,8 +1031,9 @@ var/datum/controller/supply/supply_controller = new() var/pack_name = supply_pack.name if(supply_pack.dollar_cost) pack_source = "Unknown" - pack_name = "Unknown" - link.log_ares_requisition(pack_source, pack_name, usr) + if(prob(90)) + pack_name = "Unknown" + link.log_ares_requisition(pack_source, pack_name, usr.name) else temp = "Not enough money left.
" temp += "
Back Main Menu" diff --git a/code/modules/cm_marines/anti_air.dm b/code/modules/cm_marines/anti_air.dm index fc67f9a2018d..cdb162cddfa3 100644 --- a/code/modules/cm_marines/anti_air.dm +++ b/code/modules/cm_marines/anti_air.dm @@ -110,12 +110,12 @@ var/obj/structure/anti_air_cannon/almayer_aa_cannon almayer_aa_cannon.protecting_section = "" return message_admins("[key_name(usr)] has set the AA to [html_encode(almayer_aa_cannon.protecting_section)].") - link.log_ares_antiair(usr, "Set AA to cover [html_encode(almayer_aa_cannon.protecting_section)].") + link.log_ares_antiair("[usr] Set AA to cover [html_encode(almayer_aa_cannon.protecting_section)].") . = TRUE if("deactivate") almayer_aa_cannon.protecting_section = "" message_admins("[key_name(usr)] has deactivated the AA cannon.") - link.log_ares_antiair(usr, "Deactivated Anti Air systems.") + link.log_ares_antiair("[usr] Deactivated Anti Air systems.") . = TRUE add_fingerprint(usr) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 235fcffd5357..d2d55a8cadb1 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -798,7 +798,7 @@ log_attack("[key_name(user)] fired an orbital bombardment in [A.name] for squad '[current_squad]'") /// Project ARES interface log. - GLOB.ares_link.log_ares_bombardment(user, ob_name, "X[x_bomb], Y[y_bomb] in [A.name]") + GLOB.ares_link.log_ares_bombardment(user.name, ob_name, "X[x_bomb], Y[y_bomb] in [A.name]") busy = FALSE var/turf/target = locate(T.x + rand(-3, 3), T.y + rand(-3, 3), T.z) diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index be087444c99e..ba842fb0bfb9 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -7,7 +7,7 @@ //config.alert_desc_blue_downto -/proc/set_security_level(level, no_sound=0, announce=1) +/proc/set_security_level(level, no_sound = FALSE, announce = TRUE, log = ARES_LOG_SECURITY) if(level != security_level) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_SECURITY_LEVEL_CHANGED, level) @@ -16,32 +16,32 @@ switch(level) if(SEC_LEVEL_GREEN) if(announce) - ai_announcement("Attention: Security level lowered to GREEN - all clear.", no_sound ? null : 'sound/AI/code_green.ogg', ARES_LOG_SECURITY) + ai_announcement("Attention: Security level lowered to GREEN - all clear.", no_sound ? null : 'sound/AI/code_green.ogg', log) security_level = SEC_LEVEL_GREEN if(SEC_LEVEL_BLUE) if(security_level < SEC_LEVEL_BLUE) if(announce) - ai_announcement("Attention: Security level elevated to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_elevated.ogg', ARES_LOG_SECURITY) + ai_announcement("Attention: Security level elevated to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_elevated.ogg', log) else if(announce) - ai_announcement("Attention: Security level lowered to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_lowered.ogg', ARES_LOG_SECURITY) + ai_announcement("Attention: Security level lowered to BLUE - potentially hostile activity on board.", no_sound ? null : 'sound/AI/code_blue_lowered.ogg', log) security_level = SEC_LEVEL_BLUE if(SEC_LEVEL_RED) if(security_level < SEC_LEVEL_RED) if(announce) - ai_announcement("Attention: Security level elevated to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_elevated.ogg', ARES_LOG_SECURITY) + ai_announcement("Attention: Security level elevated to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_elevated.ogg', log) else if(announce) - ai_announcement("Attention: Security level lowered to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_lowered.ogg', ARES_LOG_SECURITY) + ai_announcement("Attention: Security level lowered to RED - there is an immediate threat to the ship.", no_sound ? null : 'sound/AI/code_red_lowered.ogg', log) security_level = SEC_LEVEL_RED if(SEC_LEVEL_DELTA) if(announce) var/name = "SELF-DESTRUCT SYSTEMS ACTIVE" var/input = "DANGER, THE EMERGENCY DESTRUCT SYSTEM IS NOW ACTIVATED. PROCEED TO THE SELF-DESTRUCT CHAMBER FOR CONTROL ROD INSERTION." - marine_announcement(input, name, 'sound/AI/selfdestruct_short.ogg', logging = ARES_LOG_SECURITY) + marine_announcement(input, name, 'sound/AI/selfdestruct_short.ogg', logging = log) security_level = SEC_LEVEL_DELTA EvacuationAuthority.enable_self_destruct() diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 7e8dc34f6892..c7a79b9c44ca 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -272,6 +272,8 @@ GLOB.alt_ctrl_disabled = TRUE marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg', logging = ARES_LOG_SECURITY) + var/datum/ares_link/link = GLOB.ares_link + link.log_ares_flight("Unknown", "Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.") var/mob/living/carbon/xenomorph/xeno = user var/hivenumber = XENO_HIVE_NORMAL @@ -350,6 +352,7 @@ to_chat(user, SPAN_WARNING("The dropship isn't responding to controls.")) return + var/datum/ares_link/link = GLOB.ares_link switch(action) if("move") if(shuttle.mode != SHUTTLE_IDLE && (shuttle.mode != SHUTTLE_CALL && !shuttle.destination)) @@ -366,6 +369,7 @@ update_equipment(is_optimised) if(is_set_flyby) to_chat(user, SPAN_NOTICE("You begin the launch sequence for a flyby.")) + link.log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flyby.") var/log = "[key_name(user)] launched the dropship [src.shuttleId] on flyby." msg_admin_niche(log) log_interact(user, msg = "[log]") @@ -394,6 +398,7 @@ return TRUE SSshuttle.moveShuttle(shuttle.id, dock.id, TRUE) to_chat(user, SPAN_NOTICE("You begin the launch sequence to [dock].")) + link.log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flight to [dock].") var/log = "[key_name(user)] launched the dropship [src.shuttleId] on transport." msg_admin_niche(log) log_interact(user, msg = "[log]") @@ -413,11 +418,13 @@ to_chat(user, SPAN_WARNING("Door controls have been overridden. Please call technical support.")) if("set-ferry") is_set_flyby = FALSE + link.log_ares_flight(user.name, "Set Dropship [shuttle.name] to transport runs.") var/log = "[key_name(user)] set the dropship [src.shuttleId] into transport" msg_admin_niche(log) log_interact(user, msg = "[log]") if("set-flyby") is_set_flyby = TRUE + link.log_ares_flight(user.name, "Set Dropship [shuttle.name] to flyby runs.") var/log = "[key_name(user)] set the dropship [src.shuttleId] into flyby." msg_admin_niche(log) log_interact(user, msg = "[log]") @@ -440,6 +447,7 @@ shuttle.automated_lz_id = ground_lz shuttle.automated_delay = delay playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) + link.log_ares_flight(user.name, "Enabled autopilot for Dropship [shuttle.name].") var/log = "[key_name(user)] has enabled auto pilot on '[shuttle.name]'" message_admins(log) log_interact(user, msg = "[log]") @@ -456,6 +464,7 @@ shuttle.automated_lz_id = null shuttle.automated_delay = null playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) + link.log_ares_flight(user.name, "Disabled autopilot for Dropship [shuttle.name].") var/log = "[key_name(user)] has disabled auto pilot on '[shuttle.name]'" message_admins(log) log_interact(user, msg = "[log]") diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm index 17caccde207e..426d90c1457a 100644 --- a/code/modules/shuttles/marine_ferry.dm +++ b/code/modules/shuttles/marine_ferry.dm @@ -102,6 +102,8 @@ automated_launch = FALSE automated_launch_timer = TIMER_ID_NULL ai_silent_announcement("Dropship '[name]' departing.") + var/datum/ares_link/link = GLOB.ares_link + link.log_ares_flight("Automated", "Dropship [name] launched on an automatic flight.") /* diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 12235e7ac19b..12356754872c 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -293,6 +293,8 @@ GLOBAL_LIST_EMPTY(shuttle_controls) marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg', logging = ARES_LOG_SECURITY) shuttle.alerts_allowed-- + var/datum/ares_link/link = GLOB.ares_link + link.log_ares_flight("Unknown", "Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.") to_chat(Q, SPAN_DANGER("A loud alarm erupts from [src]! The fleshy hosts must know that you can access it!")) xeno_message(SPAN_XENOANNOUNCE("The Queen has commanded the metal bird to depart for the metal hive in the sky! Rejoice!"),3,Q.hivenumber) diff --git a/tgui/packages/tgui/interfaces/AresInterface.js b/tgui/packages/tgui/interfaces/AresInterface.js index a8208f0bd4ab..aae115d150b0 100644 --- a/tgui/packages/tgui/interfaces/AresInterface.js +++ b/tgui/packages/tgui/interfaces/AresInterface.js @@ -11,12 +11,12 @@ const PAGES = { 'apollo': () => ApolloLog, 'access_log': () => AccessLogs, 'delete_log': () => DeletionLogs, + 'flight_log': () => FlightLogs, 'talking': () => ARESTalk, 'deleted_talks': () => DeletedTalks, 'read_deleted': () => ReadingTalks, 'security': () => Security, 'requisitions': () => Requisitions, - 'antiair': () => AntiAir, 'emergency': () => Emergency, }; @@ -163,14 +163,14 @@ const MainMenu = (props, context) => {