diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index fbc223f62a5c..7eb6f0151086 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -53,6 +53,7 @@ #define ADMIN_KICK(user) "(KICK)" #define ADMIN_CENTCOM_REPLY(user) "(RPLY)" #define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" +#define ADMIN_MU_REPLY(user) "(RPLY)" //NON-MODULE CHANGE #define ADMIN_SC(user) "(SC)" #define ADMIN_SMITE(user) "(SMITE)" #define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index 686c42e07d07..8ef5893f895f 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -74,6 +74,14 @@ #define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange #define FREQ_SECURITY 1359 // Security comms frequency, red +//NON-MODULE CHANGE START : Mu radio, f is used because F, K, Q and W are the only available radio keys. +#define RADIO_CHANNEL_MU "Mu" +#define RADIO_KEY_MU "f" +#define RADIO_TOKEN_MU ":f" + +#define FREQ_MU 1401 +//NON-MODULE CHANGE END + #define FREQ_HOLOGRID_SOLUTION 1433 #define FREQ_STATUS_DISPLAYS 1435 diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index fb9e130e9fd6..8d0830c15b9c 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -82,6 +82,7 @@ #define span_minorannounce(str) ("" + str + "") #define span_minoralert(str) ("" + str + "") #define span_monkey(str) ("" + str + "") +#define span_muradio(str) ("" + str + "") //NON-MODULE CHANGE #define span_name(str) ("" + str + "") #define span_narsie(str) ("" + str + "") #define span_narsiesmall(str) ("" + str + "") diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 8c5fd154805a..74e07b759a4c 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -151,6 +151,10 @@ SUBSYSTEM_DEF(blackbox) record_feedback("tally", "radio_usage", 1, "supply") if(FREQ_CENTCOM) record_feedback("tally", "radio_usage", 1, "centcom") + //NON-MODULE CHANGE START + if(FREQ_MU) + record_feedback("tally", "radio_usage", 1, "mu") + //NON-MODULE CHANGE END if(FREQ_AI_PRIVATE) record_feedback("tally", "radio_usage", 1, "ai private") if(FREQ_CTF_RED) diff --git a/code/game/communications.dm b/code/game/communications.dm index 0be3ccf17bc0..dcd539f7e126 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -99,6 +99,7 @@ GLOBAL_LIST_INIT(radiochannels, list( RADIO_CHANNEL_ENGINEERING = FREQ_ENGINEERING, RADIO_CHANNEL_SECURITY = FREQ_SECURITY, RADIO_CHANNEL_CENTCOM = FREQ_CENTCOM, + RADIO_CHANNEL_MU = FREQ_MU, //NON-MODULE CHANGE RADIO_CHANNEL_SYNDICATE = FREQ_SYNDICATE, RADIO_CHANNEL_UPLINK = FREQ_UPLINK, RADIO_CHANNEL_SUPPLY = FREQ_SUPPLY, @@ -118,6 +119,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list( "[FREQ_ENGINEERING]" = RADIO_CHANNEL_ENGINEERING, "[FREQ_SECURITY]" = RADIO_CHANNEL_SECURITY, "[FREQ_CENTCOM]" = RADIO_CHANNEL_CENTCOM, + "[FREQ_MU]" = RADIO_CHANNEL_MU, // NON-MODULE CHANGE "[FREQ_SYNDICATE]" = RADIO_CHANNEL_SYNDICATE, "[FREQ_UPLINK]" = RADIO_CHANNEL_UPLINK, "[FREQ_SUPPLY]" = RADIO_CHANNEL_SUPPLY, diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 70c9783c3b4a..8bd69b7460bd 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -254,6 +254,23 @@ usr.log_talk(message, LOG_SAY, tag = "message to [associates]") deadchat_broadcast(" has messaged [associates], \"[message]\" at [span_name("[get_area_name(usr, TRUE)]")].", span_name("[usr.real_name]"), usr, message_type = DEADCHAT_ANNOUNCEMENT) COOLDOWN_START(src, important_action_cooldown, IMPORTANT_ACTION_COOLDOWN) + //NON-MODULE CHANGE START + if ("messageMu") + if (!authenticated_as_non_silicon_captain(usr)) + return + if (!COOLDOWN_FINISHED(src, important_action_cooldown)) + return + + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) + var/message = trim(html_encode(params["message"]), MAX_MESSAGE_LEN) + + message_mu(message, usr) + to_chat(usr, span_notice("Message transmitted to Aristocracy of Mu.")) + + usr.log_talk(message, LOG_SAY, tag = "message to Mu") + deadchat_broadcast(" has messaged Mu, \"[message]\" at [span_name("[get_area_name(usr, TRUE)]")].", span_name("[usr.real_name]"), usr, message_type = DEADCHAT_ANNOUNCEMENT) + COOLDOWN_START(src, important_action_cooldown, IMPORTANT_ACTION_COOLDOWN) + //NON-MODULE CHANGE END if ("purchaseShuttle") var/can_buy_shuttles_or_fail_reason = can_buy_shuttles(usr) if (can_buy_shuttles_or_fail_reason != TRUE) @@ -538,6 +555,7 @@ data["canBuyShuttles"] = can_buy_shuttles(user) data["canMakeAnnouncement"] = FALSE data["canMessageAssociates"] = FALSE + data["canMessageMu"] = FALSE //NON-MODULE CHANGE data["canRecallShuttles"] = !issilicon(user) data["canRequestNuke"] = FALSE data["canSendToSectors"] = FALSE @@ -556,6 +574,7 @@ if (authenticated_as_non_silicon_captain(user)) data["canMessageAssociates"] = TRUE + data["canMessageMu"] = TRUE //NON-MODULE CHANGE data["canRequestNuke"] = TRUE if (can_send_messages_to_other_sectors(user)) diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 3fb862716996..fe0c2804b28e 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -9,6 +9,7 @@ var/list/banned_frequencies = list( FREQ_SYNDICATE, FREQ_CENTCOM, + FREQ_MU, //NON-MODULE CHANGE FREQ_CTF_RED, FREQ_CTF_YELLOW, FREQ_CTF_GREEN, diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 87ab06976c9e..7150ffdbc1c7 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -7,6 +7,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( RADIO_CHANNEL_ENGINEERING = RADIO_TOKEN_ENGINEERING, RADIO_CHANNEL_SECURITY = RADIO_TOKEN_SECURITY, RADIO_CHANNEL_CENTCOM = RADIO_TOKEN_CENTCOM, + RADIO_CHANNEL_MU = RADIO_TOKEN_MU, //NON-MODULE CHANGE RADIO_CHANNEL_SYNDICATE = RADIO_TOKEN_SYNDICATE, RADIO_CHANNEL_SUPPLY = RADIO_TOKEN_SUPPLY, RADIO_CHANNEL_SERVICE = RADIO_TOKEN_SERVICE, diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 67369d91a17e..919b24a5dbc5 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -326,7 +326,8 @@ var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, language, radio_message, spans, message_mods) // Independent radios, on the CentCom frequency, reach all independent radios - if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_CTF_GREEN || freq == FREQ_CTF_YELLOW)) + //NON-MODULE CHANGE : Adds Mu to the list of frequencies + if (independent && (freq == FREQ_CENTCOM || freq == FREQ_MU || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_CTF_GREEN || freq == FREQ_CTF_YELLOW)) signal.data["compression"] = 0 signal.transmission_method = TRANSMISSION_SUPERSPACE signal.levels = list(0) diff --git a/code/game/say.dm b/code/game/say.dm index e6ea129d5a08..c16c35c6b161 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -15,6 +15,7 @@ GLOBAL_LIST_INIT(freqtospan, list( "[FREQ_SYNDICATE]" = "syndradio", "[FREQ_UPLINK]" = "syndradio", // this probably shouldnt appear ingame "[FREQ_CENTCOM]" = "centcomradio", + "[FREQ_MU]" = "muradio", "[FREQ_CTF_RED]" = "redteamradio", "[FREQ_CTF_BLUE]" = "blueteamradio", "[FREQ_CTF_GREEN]" = "greenteamradio", diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 6196e2c94b60..e5cd0cf21e5e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1003,6 +1003,15 @@ var/mob/M = locate(href_list["SyndicateReply"]) usr.client.admin_headset_message(M, RADIO_CHANNEL_SYNDICATE) + //NON-MODULE CHANGE START + else if(href_list["MuReply"]) + if(!check_rights(R_ADMIN)) + return + + var/mob/M = locate(href_list["MuReply"]) + usr.client.admin_headset_message(M, RADIO_CHANNEL_MU) + //NON-MODULE CHANGE END + else if(href_list["HeadsetMessage"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminevents.dm b/code/modules/admin/verbs/adminevents.dm index f69e891625a6..7abddfbd2f86 100644 --- a/code/modules/admin/verbs/adminevents.dm +++ b/code/modules/admin/verbs/adminevents.dm @@ -56,7 +56,7 @@ return if (!sender) - sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE) + sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE,RADIO_CHANNEL_MU) //NON-MODULE CHANGE: Adds in the Mu Channel if(!sender) return @@ -69,7 +69,17 @@ log_directed_talk(mob, target, input, LOG_ADMIN, "reply") message_admins("[key_name_admin(src)] replied to [key_name_admin(target)]'s [sender] message with: \"[input]\"") target.balloon_alert(target, "you hear a voice") - to_chat(target, span_hear("You hear something crackle in your [human_recipient ? "ears" : "radio receiver"] for a moment before a voice speaks. \"Please stand by for a message from [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] [input]. Message ends.\""), confidential = TRUE) + // NON-MODULE CHANGE START: have to turn this into a switch + var/stylized_sender_name = "" + switch(sender) + if("CentCom") + stylized_sender_name = "Central Command" + if("Syndicate") + stylized_sender_name = "your benefactor" + if("Mu") + stylized_sender_name = "the Aristocracy of Mu" + to_chat(target, span_hear("You hear something crackle in your [human_recipient ? "ears" : "radio receiver"] for a moment before a voice speaks. \"Please stand by for a message from [stylized_sender_name]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] [input]. Message ends.\""), confidential = TRUE) + // NON-MODULE CHANGE END BLACKBOX_LOG_ADMIN_VERB("Headset Message") diff --git a/code/modules/admin/verbs/commandreport.dm b/code/modules/admin/verbs/commandreport.dm index 86e7ec1328b4..b52ccd2a0542 100644 --- a/code/modules/admin/verbs/commandreport.dm +++ b/code/modules/admin/verbs/commandreport.dm @@ -4,6 +4,7 @@ /// Preset central command names to chose from for centcom reports. #define CENTCOM_PRESET "Central Command" #define SYNDICATE_PRESET "The Syndicate" +#define MU_PRESET "Aristocracy of Mu" //NON-MODULE CHANGE #define WIZARD_PRESET "The Wizard Federation" #define CUSTOM_PRESET "Custom Command Name" @@ -55,7 +56,7 @@ /// The subheader to include when sending the announcement. Keep blank to not include a subheader var/subheader = "" /// A static list of preset names that can be chosen. - var/list/preset_names = list(CENTCOM_PRESET, SYNDICATE_PRESET, WIZARD_PRESET, CUSTOM_PRESET) + var/list/preset_names = list(CENTCOM_PRESET, SYNDICATE_PRESET, MU_PRESET, WIZARD_PRESET, CUSTOM_PRESET) //NON-MODULE CHANGE /datum/command_report_menu/New(mob/user) ui_user = user @@ -154,7 +155,7 @@ if(chosen_color == "default") if(command_name == SYNDICATE_PRESET) chosen_color = "red" - else if(command_name == WIZARD_PRESET) + else if(command_name == WIZARD_PRESET || command_name == MU_PRESET) //NON-MODULE CHANGE chosen_color = "purple" priority_announce(command_report_content, subheader == ""? null : subheader, report_sound, has_important_message = TRUE, color_override = chosen_color) @@ -171,5 +172,6 @@ #undef CENTCOM_PRESET #undef SYNDICATE_PRESET +#undef MU_PRESET //NON-MODULE CHANGE #undef WIZARD_PRESET #undef CUSTOM_PRESET diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 82c6bdc48043..46be691785ac 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -74,6 +74,20 @@ for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list) console.override_cooldown() +//NON-MODULE CHANGE START +/// Used by communications consoles to message the Mu Aristocracy +/proc/message_mu(text, mob/sender) + var/msg = copytext_char(sanitize(text), 1, MAX_MESSAGE_LEN) + GLOB.requests.message_mu(sender.client, msg) + msg = span_adminnotice("MU:[ADMIN_FULLMONTY(sender)] [ADMIN_MU_REPLY(sender)]: [msg]") + 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')) + to_chat(GLOB.admins, msg, confidential = TRUE) + for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list) + console.override_cooldown() +//NON-MODULE CHANGE END + /// Used by communications consoles to request the nuclear launch codes /proc/nuke_request(text, mob/sender) var/msg = copytext_char(sanitize(text), 1, MAX_MESSAGE_LEN) diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index e86c9792f273..7770179bcf5e 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( RADIO_KEY_SYNDICATE = RADIO_CHANNEL_SYNDICATE, RADIO_KEY_UPLINK = RADIO_CHANNEL_UPLINK, RADIO_KEY_CENTCOM = RADIO_CHANNEL_CENTCOM, + RADIO_KEY_MU = RADIO_CHANNEL_MU, //NON-MODULE CHANGE // Admin MODE_KEY_ADMIN = MODE_ADMIN, diff --git a/code/modules/requests/request_manager.dm b/code/modules/requests/request_manager.dm index dd6d8d42a480..b8cb8679d0d9 100644 --- a/code/modules/requests/request_manager.dm +++ b/code/modules/requests/request_manager.dm @@ -4,6 +4,8 @@ #define REQUEST_CENTCOM "request_centcom" /// Requests for the Syndicate #define REQUEST_SYNDICATE "request_syndicate" +/// Requests for Mu +#define REQUEST_MU "request_mu" //NON-MODULE CHANGE /// Requests for the nuke code #define REQUEST_NUKE "request_nuke" /// Requests somebody from fax @@ -89,6 +91,18 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) /datum/request_manager/proc/message_syndicate(client/C, message) request_for_client(C, REQUEST_SYNDICATE, message) +//NON-MODULE CHANGE START +/** + * Creates a request for a Syndicate message + * + * Arguments: + * * C - The client who is sending the request + * * message - The message + */ +/datum/request_manager/proc/message_mu(client/C, message) + request_for_client(C, REQUEST_MU, message) +//NON-MODULE CHANGE END + /** * Creates a request for the nuclear self destruct codes * @@ -216,7 +230,18 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) to_chat(usr, "Cannot reply to a prayer", confidential = TRUE) return TRUE var/mob/M = request.owner?.mob - usr.client.admin_headset_message(M, request.req_type == REQUEST_SYNDICATE ? RADIO_CHANNEL_SYNDICATE : RADIO_CHANNEL_CENTCOM) + //NON-MODULE CHANGE START + var/channel_to_reply_with = RADIO_CHANNEL_CENTCOM + switch(request.req_type) + if(REQUEST_CENTCOM) + channel_to_reply_with = RADIO_CHANNEL_CENTCOM + if(REQUEST_SYNDICATE) + channel_to_reply_with = RADIO_CHANNEL_SYNDICATE + if(REQUEST_MU) + channel_to_reply_with = RADIO_CHANNEL_MU + + usr.client.admin_headset_message(M, channel_to_reply_with) + //NON-MODULE CHANGE END return TRUE if ("setcode") if (request.req_type != REQUEST_NUKE) @@ -267,6 +292,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) #undef REQUEST_PRAYER #undef REQUEST_CENTCOM #undef REQUEST_SYNDICATE +#undef REQUEST_MU #undef REQUEST_NUKE #undef REQUEST_FAX #undef REQUEST_INTERNET_SOUND diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 36c85642ad23..93b49f306551 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -5,7 +5,7 @@ // If you modify this file you ALSO need to modify tgui/packages/tgui-panel/styles/tgchat/chat-light.scss and chat-dark.scss // BUT you have to use PX font sizes with are on a x8 scale of these font sizes // Sample font-size: DM: 8 CSS: 64px - +// NON-MODULE CHANGE: Mu radio added in /client/script = {"