diff --git a/code/__DEFINES/ARES.dm b/code/__DEFINES/ARES.dm index ec84a6ab5992..f21910a8a8c4 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 4bfd5b98ad26..5e95d0b9ffc8 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 bd3fa6536be0..f57b22fa5cc7 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -57,20 +57,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) @@ -225,8 +228,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 @@ -235,6 +236,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() @@ -280,18 +292,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)) @@ -429,12 +429,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" @@ -458,7 +458,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 4e2b479e71a2..1761c87c2474 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 2dff476a7b3e..aa8de9dccf56 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 ecf1bacf080b..0e6e073c22fa 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) => {