From 3ae48df6811976820dc497008aef38486a95044d Mon Sep 17 00:00:00 2001
From: ItsVyzo
Date: Sun, 21 Jan 2024 02:35:53 +0300
Subject: [PATCH 1/6] faxpansion
---
code/_globalvars/global_lists.dm | 3 ++
code/game/machinery/fax_machine.dm | 48 ++++++++++++++++++++++++++-
code/modules/admin/tabs/event_tab.dm | 30 +++++++++++++++--
icons/obj/items/paper.dmi | Bin 11203 -> 12014 bytes
4 files changed, 78 insertions(+), 3 deletions(-)
diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm
index 6e1b229e562f..6a38b5c60652 100644
--- a/code/_globalvars/global_lists.dm
+++ b/code/_globalvars/global_lists.dm
@@ -3,6 +3,9 @@ GLOBAL_LIST_EMPTY(WYFaxes) //Departmental faxes
GLOBAL_LIST_EMPTY(USCMFaxes)
GLOBAL_LIST_EMPTY(ProvostFaxes)
GLOBAL_LIST_EMPTY(CMBFaxes)
+GLOBAL_LIST_EMPTY(UPPFaxes)
+GLOBAL_LIST_EMPTY(TWEFaxes)
+GLOBAL_LIST_EMPTY(CLFFaxes)
GLOBAL_LIST_EMPTY(GeneralFaxes) //Inter-machine faxes
GLOBAL_LIST_EMPTY(fax_contents) //List of fax contents to maintain it even if source paper is deleted
diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm
index 4a5c62b1f9a0..0111b8924b53 100644
--- a/code/game/machinery/fax_machine.dm
+++ b/code/game/machinery/fax_machine.dm
@@ -6,7 +6,10 @@ GLOBAL_LIST_EMPTY(alldepartments)
#define DEPARTMENT_CMB "CMB Incident Command Center, Local Operations"
#define DEPARTMENT_PROVOST "USCM Provost Office"
#define DEPARTMENT_PRESS "Various Press Organizations"
-#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS)
+#define DEPARTMENT_TWE "Three World Empire"
+#define DEPARTMENT_UPP "Union of Progress Peoples"
+#define DEPARTMENT_CLF "Colonial Liberation Front"
+#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS, DEPARTMENT_TWE, DEPARTMENT_UPP, DEPARTMENT_CLF)
/obj/structure/machinery/faxmachine // why not fax_machine?
name = "\improper General Purpose Fax Machine"
@@ -138,6 +141,13 @@ GLOBAL_LIST_EMPTY(alldepartments)
GLOB.alldepartments += DEPARTMENT_CMB
if(!(DEPARTMENT_PRESS in GLOB.alldepartments))
GLOB.alldepartments += DEPARTMENT_PRESS
+ if(!(DEPARTMENT_TWE in GLOB.alldepartments))
+ GLOB.alldepartments += DEPARTMENT_TWE
+ if(!(DEPARTMENT_UPP in GLOB.alldepartments))
+ GLOB.alldepartments += DEPARTMENT_UPP
+ if(!(DEPARTMENT_CLF in GLOB.alldepartments))
+ GLOB.alldepartments += DEPARTMENT_CLF
+
// TGUI SHIT \\
/obj/structure/machinery/faxmachine/tgui_interact(mob/user, datum/tgui/ui)
@@ -280,6 +290,9 @@ GLOBAL_LIST_EMPTY(alldepartments)
. += ""
. += ""
. += ""
+ . += ""
+ . += ""
+ . += ""
// converting whatever type the fax is into a single paper with all the information on it.
/obj/structure/machinery/faxmachine/proc/copy_fax_paper(mob/living/user)
@@ -344,6 +357,15 @@ GLOBAL_LIST_EMPTY(alldepartments)
if(DEPARTMENT_PRESS)
GLOB.PressFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
+ if(DEPARTMENT_TWE)
+ GLOB.TWEFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
+ msg_admin += "(RPLY): "
+ if(DEPARTMENT_UPP)
+ GLOB.UPPFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
+ msg_admin += "(RPLY): "
+ if(DEPARTMENT_CLF)
+ GLOB.CLFFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
+ msg_admin += "(RPLY): "
else
GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
@@ -416,6 +438,30 @@ GLOBAL_LIST_EMPTY(alldepartments)
P.stamped += /obj/item/tool/stamp
P.overlays += stampoverlay
P.stamps += "
This paper has been stamped and encrypted by the Weyland-Yutani Quantum Relay (tm)."
+ if("TWE Royal Marines Commando Quantum Relay")
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-twe"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "
This paper has been stamped by the TWE Royal Marines Commando Quantum Relay."
+ if("UPP High Kommand Quantum Relay")
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-upp"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "
This paper has been stamped by the UPP High Kommand Quantum Relay."
+ if("CLF Gureilla Command Quantum Relay")
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-clf"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "
This paper has been stamped and encrypted by the CLF Gureilla Command Quantum Relay."
playsound(F.loc, "sound/items/polaroid1.ogg", 15, 1)
qdel(faxcontents)
diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm
index 839dea7b2334..60e07b676a77 100644
--- a/code/modules/admin/tabs/event_tab.dm
+++ b/code/modules/admin/tabs/event_tab.dm
@@ -322,7 +322,7 @@
if(!admin_holder)
return
- var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "CMB", "Other", "Cancel")
+ var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "CMB", "UPP", "TWE", "CLF", "Other", "Cancel")
var/answer = tgui_input_list(src, "Which kind of faxes would you like to see?", "Faxes", options)
switch(answer)
if("Weyland-Yutani")
@@ -334,6 +334,7 @@
body += "
"
@@ -343,6 +344,7 @@
body += "
"
@@ -363,7 +365,7 @@
body += "
"
for(var/text in GLOB.CMBFaxes)
@@ -373,6 +375,30 @@
body += "
"
+
+ for(var/text in GLOB.UPPFaxes)
+ body += text
+ body += "
"
+
+ body += "
"
diff --git a/icons/obj/items/paper.dmi b/icons/obj/items/paper.dmi
index fa8858e8a17b9927a8d90ffeaee9b97ef167e23f..b15d4be6076d44d17404eae888e8b7b09f1a4b61 100644
GIT binary patch
literal 12014
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
EU&db!P5=M^
From 44b16fca1151ecc358d3d1852f9fb52d7dca599c Mon Sep 17 00:00:00 2001
From: ItsVyzo <46250991+ItsVyzo@users.noreply.github.com>
Date: Sat, 20 Jan 2024 16:22:57 -0800
Subject: [PATCH 2/6] Update code/modules/admin/tabs/event_tab.dm
Co-authored-by: SabreML <57483089+SabreML@users.noreply.github.com>
---
code/modules/admin/tabs/event_tab.dm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm
index 60e07b676a77..a839207ae2a4 100644
--- a/code/modules/admin/tabs/event_tab.dm
+++ b/code/modules/admin/tabs/event_tab.dm
@@ -385,6 +385,9 @@
body += "
"
+
for(var/text in GLOB.TWEFaxes)
body += text
body += "
"
From 49e200165310f2910de071da4481524dae73cdfc Mon Sep 17 00:00:00 2001
From: ItsVyzo <46250991+ItsVyzo@users.noreply.github.com>
Date: Sat, 20 Jan 2024 16:23:08 -0800
Subject: [PATCH 3/6] Update code/modules/admin/tabs/event_tab.dm
Co-authored-by: SabreML <57483089+SabreML@users.noreply.github.com>
---
code/modules/admin/tabs/event_tab.dm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm
index a839207ae2a4..c94e9bb9dc37 100644
--- a/code/modules/admin/tabs/event_tab.dm
+++ b/code/modules/admin/tabs/event_tab.dm
@@ -395,6 +395,9 @@
body += "
"
+
for(var/text in GLOB.CLFFaxes)
body += text
body += "
"
From 9e4105674d47a9627b0e47b48db0131e278e1efd Mon Sep 17 00:00:00 2001
From: ItsVyzo
Date: Sun, 21 Jan 2024 06:01:39 +0300
Subject: [PATCH 4/6] VV works now
---
code/modules/admin/topic/topic.dm | 245 +++++++++++++++++++++++++++++-
1 file changed, 244 insertions(+), 1 deletion(-)
diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm
index fa814ca16b7c..5b3b9d6b57b3 100644
--- a/code/modules/admin/topic/topic.dm
+++ b/code/modules/admin/topic/topic.dm
@@ -1226,7 +1226,7 @@
return
else
return
- var/message_body = input(src.owner, "Enter Message Body, use for paragraphs", "Outgoing message from Weyland USCM", "") as message|null
+ var/message_body = input(src.owner, "Enter Message Body, use for paragraphs", "Outgoing message from USCM", "") as message|null
if(!message_body)
return
var/sent_by = input(src.owner, "Enter the name and rank you are sending from.", "Outgoing message from USCM", "") as message|null
@@ -1364,6 +1364,249 @@
return
to_chat(src.owner, "/red Unable to locate fax!")
+ else if(href_list["TWEFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["TWEFaxReply"])
+ var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
+
+ var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
+ if(!template_choice) return
+ var/datum/fax/fax_message
+ switch(template_choice)
+ if("Custom")
+ var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
for line breaks.", "Outgoing message from TWE", "") as message|null
+ if(!input)
+ return
+ fax_message = new(input)
+ if("Template")
+ var/subject = input(src.owner, "Enter subject line", "Outgoing message from TWE", "") as message|null
+ if(!subject)
+ return
+ var/addressed_to = ""
+ var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom"))
+ if(address_option == "Sender")
+ addressed_to = "[H.real_name]"
+ else if(address_option == "Custom")
+ addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from TWE", "") as message|null
+ if(!addressed_to)
+ return
+ else
+ return
+ var/message_body = input(src.owner, "Enter Message Body, use for paragraphs", "Outgoing message from TWE", "") as message|null
+ if(!message_body)
+ return
+ var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from TWE", "") as message|null
+ if(!sent_by)
+ return
+ fax_message = new(generate_templated_fax(0, "THREE WORLD EMPIRE - ROYAL MILITARY COMMAND", subject, addressed_to, message_body, sent_by, "Office of Military Communications", "Three World Empire"))
+ show_browser(usr, "[fax_message.data]", "PREVIEW OF TWE FAX", "size=500x400")
+ var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel"))
+ if(send_choice != "Send")
+ return
+ GLOB.fax_contents += fax_message // save a copy
+
+ var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ if(!customname)
+ return
+
+ GLOB.TWEFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP
+
+ var/msg_ghost = SPAN_NOTICE("THREE WORLD EMPIRE FAX REPLY: ")
+ msg_ghost += "Transmitting '[customname]' via secure connection ... "
+ msg_ghost += "view message"
+ announce_fax( ,msg_ghost)
+
+ for(var/obj/structure/machinery/faxmachine/F in GLOB.machines)
+ if(F == fax)
+ if(!(F.inoperable()))
+
+ // animate! it's alive!
+ flick("faxreceive", F)
+
+ // give the sprite some time to flick
+ spawn(20)
+ var/obj/item/paper/P = new /obj/item/paper( F.loc )
+ P.name = "Three World Empire - [customname]"
+ P.info = fax_message.data
+ P.update_icon()
+
+ playsound(F.loc, "sound/machines/fax.ogg", 15)
+
+ // Stamps
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-twe"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "
This paper has been stamped by the Three World Empire Quantum Relay (tm)."
+
+ to_chat(src.owner, "Message reply to transmitted successfully.")
+ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
+ return
+ to_chat(src.owner, "/red Unable to locate fax!")
+
+ else if(href_list["UPPFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["UPPFaxReply"])
+ var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
+
+ var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
+ if(!template_choice) return
+ var/datum/fax/fax_message
+ switch(template_choice)
+ if("Custom")
+ var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
for line breaks.", "Outgoing message from UPP", "") as message|null
+ if(!input)
+ return
+ fax_message = new(input)
+ if("Template")
+ var/subject = input(src.owner, "Enter subject line", "Outgoing message from UPP", "") as message|null
+ if(!subject)
+ return
+ var/addressed_to = ""
+ var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom"))
+ if(address_option == "Sender")
+ addressed_to = "[H.real_name]"
+ else if(address_option == "Custom")
+ addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from UPP", "") as message|null
+ if(!addressed_to)
+ return
+ else
+ return
+ var/message_body = input(src.owner, "Enter Message Body, use for paragraphs", "Outgoing message from UPP", "") as message|null
+ if(!message_body)
+ return
+ var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from UPP", "") as message|null
+ if(!sent_by)
+ return
+ fax_message = new(generate_templated_fax(0, "UNION OF PROGRESSIVE PEOPLES - MILITARY HIGH KOMMAND", subject, addressed_to, message_body, sent_by, "Military High Kommand", "Union of Progressive Peoples"))
+ show_browser(usr, "[fax_message.data]", "PREVIEW OF UPP FAX", "size=500x400")
+ var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel"))
+ if(send_choice != "Send")
+ return
+ GLOB.fax_contents += fax_message // save a copy
+
+ var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ if(!customname)
+ return
+
+ GLOB.UPPFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP
+
+ var/msg_ghost = SPAN_NOTICE("UNION OF PROGRESSIVE PEOPLES FAX REPLY: ")
+ msg_ghost += "Transmitting '[customname]' via secure connection ... "
+ msg_ghost += "view message"
+ announce_fax( ,msg_ghost)
+
+ for(var/obj/structure/machinery/faxmachine/F in GLOB.machines)
+ if(F == fax)
+ if(!(F.inoperable()))
+
+ // animate! it's alive!
+ flick("faxreceive", F)
+
+ // give the sprite some time to flick
+ spawn(20)
+ var/obj/item/paper/P = new /obj/item/paper( F.loc )
+ P.name = "Union of Progressive Peoples - [customname]"
+ P.info = fax_message.data
+ P.update_icon()
+
+ playsound(F.loc, "sound/machines/fax.ogg", 15)
+
+ // Stamps
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-upp"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "
This paper has been stamped by the Union of Progressive Peoples Quantum Relay (tm)."
+
+ to_chat(src.owner, "Message reply to transmitted successfully.")
+ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
+ return
+ to_chat(src.owner, "/red Unable to locate fax!")
+
+ else if(href_list["CLFFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["CLFFaxReply"])
+ var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
+
+ var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
+ if(!template_choice) return
+ var/datum/fax/fax_message
+ switch(template_choice)
+ if("Custom")
+ var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
for line breaks.", "Outgoing message from CLF", "") as message|null
+ if(!input)
+ return
+ fax_message = new(input)
+ if("Template")
+ var/subject = input(src.owner, "Enter subject line", "Outgoing message from CLF", "") as message|null
+ if(!subject)
+ return
+ var/addressed_to = ""
+ var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom"))
+ if(address_option == "Sender")
+ addressed_to = "[H.real_name]"
+ else if(address_option == "Custom")
+ addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from CLF", "") as message|null
+ if(!addressed_to)
+ return
+ else
+ return
+ var/message_body = input(src.owner, "Enter Message Body, use for paragraphs", "Outgoing message from CLF", "") as message|null
+ if(!message_body)
+ return
+ var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from CLF", "") as message|null
+ if(!sent_by)
+ return
+ fax_message = new(generate_templated_fax(0, "COLONIAL LIBERATION FRONT - COLONIAL COUNCIL OF LIBERATION", subject, addressed_to, message_body, sent_by, "Guerilla Forces Command", "Colonial Liberation Front"))
+ show_browser(usr, "[fax_message.data]", "PREVIEW OF CLF FAX", "size=500x400")
+ var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel"))
+ if(send_choice != "Send")
+ return
+ GLOB.fax_contents += fax_message // save a copy
+
+ var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ if(!customname)
+ return
+
+ GLOB.CLFFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP
+
+ var/msg_ghost = SPAN_NOTICE("COLONIAL LIBERATION FRONT FAX REPLY: ")
+ msg_ghost += "Transmitting '[customname]' via secure connection ... "
+ msg_ghost += "view message"
+ announce_fax( ,msg_ghost)
+
+ for(var/obj/structure/machinery/faxmachine/F in GLOB.machines)
+ if(F == fax)
+ if(!(F.inoperable()))
+
+ // animate! it's alive!
+ flick("faxreceive", F)
+
+ // give the sprite some time to flick
+ spawn(20)
+ var/obj/item/paper/P = new /obj/item/paper( F.loc )
+ P.name = "Colonial Liberation Front - [customname]"
+ P.info = fax_message.data
+ P.update_icon()
+
+ playsound(F.loc, "sound/machines/fax.ogg", 15)
+
+ // Stamps
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-clf"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "
This paper has been stamped and encrypted by the Colonial Liberation Front Quantum Relay (tm)."
+
+ to_chat(src.owner, "Message reply to transmitted successfully.")
+ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
+ return
+ to_chat(src.owner, "/red Unable to locate fax!")
+
else if(href_list["CMBFaxReply"])
var/mob/living/carbon/human/H = locate(href_list["CMBFaxReply"])
var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
From f491c0bc70b01f3febdd7dc920bb7f32e3cbf84e Mon Sep 17 00:00:00 2001
From: ItsVyzo
Date: Sun, 21 Jan 2024 07:03:08 +0300
Subject: [PATCH 5/6] yess
---
code/modules/admin/tabs/event_tab.dm | 8 ++++++--
code/modules/admin/topic/topic.dm | 1 +
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm
index c94e9bb9dc37..d03e52406cbc 100644
--- a/code/modules/admin/tabs/event_tab.dm
+++ b/code/modules/admin/tabs/event_tab.dm
@@ -322,7 +322,11 @@
if(!admin_holder)
return
- var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "CMB", "UPP", "TWE", "CLF", "Other", "Cancel")
+ var/list/options = list(
+ "Weyland-Yutani", "High Command", "Provost", "Press",
+ "Colonial Marshal Bureau", "Union of Progressive Peoples",
+ "Three World Empire", "Colonial Liberation Front",
+ "Other", "Cancel")
var/answer = tgui_input_list(src, "Which kind of faxes would you like to see?", "Faxes", options)
switch(answer)
if("Weyland-Yutani")
@@ -363,7 +367,7 @@
body += "
"
body += "
"
diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm
index 5b3b9d6b57b3..dd2b3e68b310 100644
--- a/code/modules/admin/topic/topic.dm
+++ b/code/modules/admin/topic/topic.dm
@@ -1199,6 +1199,7 @@
message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
return
to_chat(src.owner, "/red Unable to locate fax!")
+
else if(href_list["USCMFaxReply"])
var/mob/living/carbon/human/H = locate(href_list["USCMFaxReply"])
var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
From 9470c8ad9244418f3f68f138ce8c8d032ab37b32 Mon Sep 17 00:00:00 2001
From: ItsVyzo
Date: Fri, 2 Feb 2024 14:40:12 +0300
Subject: [PATCH 6/6] fixes
---
code/game/machinery/fax_machine.dm | 8 ++++----
code/modules/admin/topic/topic.dm | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm
index 0111b8924b53..0d9b2268994a 100644
--- a/code/game/machinery/fax_machine.dm
+++ b/code/game/machinery/fax_machine.dm
@@ -287,7 +287,7 @@ GLOBAL_LIST_EMPTY(alldepartments)
. = ..()
. += ""
. += ""
- . += ""
+ . += ""
. += ""
. += ""
. += ""
@@ -352,8 +352,8 @@ GLOBAL_LIST_EMPTY(alldepartments)
GLOB.CMBFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
if(DEPARTMENT_WY)
- GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
- msg_admin += "(RPLY): "
+ GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
+ msg_admin += "(RPLY): "
if(DEPARTMENT_PRESS)
GLOB.PressFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
@@ -367,7 +367,7 @@ GLOBAL_LIST_EMPTY(alldepartments)
GLOB.CLFFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
else
- GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
+ GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
msg_admin += SPAN_STAFF_IC("Receiving fax via secure connection ... view message")
diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm
index dd2b3e68b310..514a46e3259a 100644
--- a/code/modules/admin/topic/topic.dm
+++ b/code/modules/admin/topic/topic.dm
@@ -1163,7 +1163,7 @@
GLOB.fax_contents += fax_message // save a copy
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
- GLOB.USCMFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]")
+ GLOB.PressFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]")
var/msg_ghost = SPAN_NOTICE("PRESS REPLY: ")
msg_ghost += "Transmitting '[customname]' via secure connection ... "
@@ -1283,8 +1283,8 @@
return
to_chat(src.owner, "/red Unable to locate fax!")
- else if(href_list["CLFaxReply"])
- var/mob/living/carbon/human/H = locate(href_list["CLFaxReply"])
+ else if(href_list["WYFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["WYFaxReply"])
var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))