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) => {
@@ -1185,10 +1185,16 @@ const Requisitions = (props, context) => {
);
};
-const AntiAir = (props, context) => {
+const FlightLogs = (props, context) => {
const { data, act } = useBackend(context);
- const { logged_in, access_text, last_page, current_menu, aa_adjustments } =
- data;
+ const {
+ logged_in,
+ access_text,
+ last_page,
+ current_menu,
+ records_flight,
+ access_level,
+ } = data;
return (
<>
@@ -1228,8 +1234,8 @@ const AntiAir = (props, context) => {
- AntiAir Control Logs
- {!!aa_adjustments.length && (
+ Flight Control Logs
+ {!!records_flight.length && (
{
Time
-
+
User
-
- Adjustment
+
+ Details
)}
- {aa_adjustments.map((record, i) => {
+ {records_flight.map((record, i) => {
return (
{record.time}
-
+
{record.user}
-
+
{record.details}
+
+ act('delete_record', { record: record.ref })}
+ />
+
);
})}