diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 6a2666eef9b..f517a7a7a51 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1731,7 +1731,7 @@
if(FAX.fax_id != href_list["destination"])
continue
FAX.receive(locate(href_list["print_fax"]), href_list["sender_name"])
-
+ return
else if(href_list["play_internet"])
if(!check_rights(R_SOUND))
diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm
index f2935853a6d..62a269d477e 100644
--- a/code/modules/paperwork/fax.dm
+++ b/code/modules/paperwork/fax.dm
@@ -1,4 +1,5 @@
GLOBAL_VAR_INIT(nt_fax_department, pick("NT HR Department", "NT Legal Department", "NT Complaint Department", "NT Customer Relations", "Nanotrasen Tech Support", "NT Internal Affairs Dept"))
+GLOBAL_VAR_INIT(fax_autoprinting, FALSE)
/obj/machinery/fax
name = "Fax Machine"
@@ -325,7 +326,7 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("NT HR Department", "NT Legal Department
history_add("Send", params["name"])
- GLOB.requests.fax_request(usr.client, "sent a fax message from [fax_name]/[fax_id] to [params["name"]]", fax_paper)
+ GLOB.requests.fax_request(usr.client, "sent a fax message from [fax_name]/[fax_id] to [params["name"]]", list("paper" = fax_paper, "destination_id" = params["id"], "sender_name" = fax_name))
to_chat(GLOB.admins,
span_adminnotice("[icon2html(src.icon, GLOB.admins)]FAX REQUEST: [ADMIN_FULLMONTY(usr)]: [span_linkify("sent a fax message from [fax_name]/[fax_id][ADMIN_FLW(src)] to [html_encode(params["name"])]")] [ADMIN_SHOW_PAPER(fax_paper)] [ADMIN_PRINT_FAX(fax_paper, fax_name, params["id"])]"),
type = MESSAGE_TYPE_PRAYER,
@@ -333,6 +334,14 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("NT HR Department", "NT Legal Department
for(var/client/staff as anything in GLOB.admins)
if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification))
SEND_SOUND(staff, sound('sound/misc/server-ready.ogg'))
+
+ if(GLOB.fax_autoprinting)
+ for(var/obj/machinery/fax/admin/FAX as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/fax/admin))
+ if(FAX.fax_id != params["id"])
+ continue
+ FAX.receive(fax_paper, fax_name)
+ break
+
log_fax(fax_paper, params["id"], params["name"])
loaded_item_ref = null
update_appearance()
diff --git a/code/modules/requests/request_manager.dm b/code/modules/requests/request_manager.dm
index 99a9bba1cc8..3106a925acd 100644
--- a/code/modules/requests/request_manager.dm
+++ b/code/modules/requests/request_manager.dm
@@ -154,6 +154,10 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new)
to_chat(usr, "You do not have permission to do this, you require +ADMIN", confidential = TRUE)
return
+ if (action == "toggleprint")
+ GLOB.fax_autoprinting = !GLOB.fax_autoprinting
+ return TRUE
+
// Get the request this relates to
var/id = params["id"] != null ? text2num(params["id"]) : null
if (!id)
@@ -228,9 +232,20 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new)
if(request.req_type != REQUEST_FAX)
to_chat(usr, "Request doesn't have a paper to read.", confidential = TRUE)
return TRUE
- var/obj/item/paper/request_message = request.additional_information
+ var/obj/item/paper/request_message = request.additional_information["paper"]
request_message.ui_interact(usr)
return TRUE
+ if ("print")
+ if (request.req_type != REQUEST_FAX)
+ to_chat(usr, "Request doesn't have a paper to print.", confidential = TRUE)
+ return TRUE
+ for(var/obj/machinery/fax/admin/FAX as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/fax/admin))
+ if(FAX.fax_id != request.additional_information["destination_id"])
+ continue
+ var/obj/item/paper/request_message = request.additional_information["paper"]
+ var/sender_name = request.additional_information["sender_name"]
+ FAX.receive(request_message, sender_name)
+ return TRUE
if ("play")
if(request.req_type != REQUEST_INTERNET_SOUND)
to_chat(usr, "Request doesn't have a sound to play.", confidential = TRUE)
@@ -257,6 +272,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new)
"timestamp" = request.timestamp,
"timestamp_str" = gameTimestamp(wtime = request.timestamp)
))
+ data["fax_autoprinting"] = GLOB.fax_autoprinting
return data
#undef REQUEST_PRAYER
diff --git a/tgui/packages/tgui/interfaces/RequestManager.tsx b/tgui/packages/tgui/interfaces/RequestManager.tsx
index 9a009106788..5bc63512f3f 100644
--- a/tgui/packages/tgui/interfaces/RequestManager.tsx
+++ b/tgui/packages/tgui/interfaces/RequestManager.tsx
@@ -3,6 +3,7 @@
* @copyright 2021 bobbahbrown (https://github.com/bobbahbrown)
* @license MIT
*/
+import { BooleanLike } from 'common/react';
import { createSearch, decodeHtmlEntities } from 'common/string';
import { useState } from 'react';
@@ -12,6 +13,7 @@ import { Window } from '../layouts';
type Data = {
requests: Request[];
+ fax_autoprinting: BooleanLike;
};
type Request = {
@@ -72,6 +74,15 @@ export const RequestManager = (props) => {
buttons={
+ act('toggleprint')}
+ tooltip={
+ 'Enables automatic printing of fax requests to the admin fax machine. By default, this fax is located in the briefing room at the central command station'
+ }
+ >
+ Auto-print Faxes
+
setSearchText(value)}
@@ -146,7 +157,12 @@ const RequestControls = (props) => {
)}
{request.req_type === 'request_fax' && (
-
+ <>
+
+
+ >
)}
{request.req_type === 'request_internet_sound' && (