From b90d344afcf7177f0324eec201987e6e1505b5ae Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 12 Jun 2019 01:10:21 +0300 Subject: [PATCH] It works. It just works. --- code/controllers/subsystem/ticker.dm | 4 ++-- .../antagonists/traitor/datum_traitor.dm | 20 +++++++++++-------- .../browserassets/css/browserOutput.css | 3 +++ code/modules/mob/living/carbon/say.dm | 15 ++++++++++++-- code/modules/mob/living/say.dm | 9 +++++++-- 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 4a3143da79..74f9ad0382 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -126,9 +126,9 @@ SUBSYSTEM_DEF(ticker) if(!GLOB.syndicate_code_phrase) - GLOB.syndicate_code_phrase = generate_code_phrase() + GLOB.syndicate_code_phrase = generate_code_phrase(return_list=TRUE) if(!GLOB.syndicate_code_response) - GLOB.syndicate_code_response = generate_code_phrase() + GLOB.syndicate_code_response = generate_code_phrase(return_list=TRUE) start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10) if(CONFIG_GET(flag/randomize_shift_time)) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 47823a2dc4..ac5c67617d 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -18,7 +18,7 @@ /datum/antagonist/traitor/on_gain() if(owner.current && isAI(owner.current)) traitor_kind = TRAITOR_AI - + SSticker.mode.traitors += owner owner.special_role = special_role if(give_objectives) @@ -48,7 +48,7 @@ A.verbs -= /mob/living/silicon/ai/proc/choose_modules A.malf_picker.remove_malf_verbs(A) qdel(A.malf_picker) - + SSticker.mode.traitors -= owner if(!silent && owner.current) to_chat(owner.current," You are no longer the [special_role]! ") @@ -244,14 +244,18 @@ return var/mob/traitor_mob=owner.current - to_chat(traitor_mob, "The Syndicate provided you with the following information on how to identify their agents:") - to_chat(traitor_mob, "Code Phrase: [GLOB.syndicate_code_phrase]") - to_chat(traitor_mob, "Code Response: [GLOB.syndicate_code_response]") + var/phrases = jointext(GLOB.syndicate_code_phrase, ", ") + var/responses = jointext(GLOB.syndicate_code_response, ", ") - antag_memory += "Code Phrase: [GLOB.syndicate_code_phrase]
" - antag_memory += "Code Response: [GLOB.syndicate_code_response]
" + to_chat(traitor_mob, "The Syndicate have provided you with the following codewords to identify fellow agents:") + to_chat(traitor_mob, "Code Phrase: [phrases]") + to_chat(traitor_mob, "Code Response: [responses]") - to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.") + antag_memory += "Code Phrase: [phrases]
" + antag_memory += "Code Response: [responses]
" + + to_chat(traitor_mob, "Use the codewords during regular conversation to identify other agents. Proceed with caution, however, as everyone is a potential foe.") + to_chat(traitor_mob, "You memorize the codewords, allowing you to recognise them when heard.") /datum/antagonist/traitor/proc/add_law_zero() var/mob/living/silicon/ai/killer = owner.current diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 33884f8ef0..cf11b77879 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -303,6 +303,7 @@ h1.alert, h2.alert {color: #000000;} .userdanger {color: #ff0000; font-weight: bold; font-size: 24px;} .danger {color: #ff0000;} .warning {color: #ff0000; font-style: italic;} +.alertwarning {color: #FF0000; font-weight: bold} .boldwarning {color: #ff0000; font-style: italic; font-weight: bold} .announce {color: #228b22; font-weight: bold;} .boldannounce {color: #ff0000; font-weight: bold;} @@ -316,6 +317,8 @@ h1.alert, h2.alert {color: #000000;} .unconscious {color: #0000ff; font-weight: bold;} .suicide {color: #ff5050; font-style: italic;} .green {color: #03ff39;} +.red {color: #FF0000} +.blue {color: #215cff} .nicegreen {color: #14a833;} .userlove {color: #FF1493; font-style: italic; font-weight: bold; text-shadow: 0 0 6px #ff6dbc;} .love {color: #ff006a; font-style: italic; text-shadow: 0 0 6px #ff6d6d;} diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index f6e43f487f..c52b827964 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -39,10 +39,21 @@ else . = initial(dt.flags) & TONGUELESS_SPEECH -/mob/living/carbon/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) +/mob/living/carbon/hear_intercept(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) . = ..() if(!client) return for(var/T in get_traumas()) var/datum/brain_trauma/trauma = T - message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq) \ No newline at end of file + message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq) + + if (src.mind.has_antag_datum(/datum/antagonist/traitor)) + for (var/codeword in GLOB.syndicate_code_phrase) + var/regex/codeword_match = new("([codeword])", "ig") + message = codeword_match.Replace(message, "$1") + + for (var/codeword in GLOB.syndicate_code_response) + var/regex/codeword_match = new("([codeword])", "ig") + message = codeword_match.Replace(message, "$1") + + return message diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index e2f62b054c..160e596882 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -229,9 +229,14 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // Recompose message for AI hrefs, language incomprehension. message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode) + message = hear_intercept(message, speaker, message_language, raw_message, radio_freq, spans, message_mode) + show_message(message, 2, deaf_message, deaf_type) return message +/mob/living/proc/hear_intercept(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) + return message + /mob/living/send_speech(message, message_range = 6, obj/source = src, bubble_type = bubble_icon, list/spans, datum/language/message_language=null, message_mode) var/static/list/eavesdropping_modes = list(MODE_WHISPER = TRUE, MODE_WHISPER_CRIT = TRUE) var/eavesdrop_range = 0 @@ -389,8 +394,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list( else . = ..() -/mob/living/whisper(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null) - say("#[message]", bubble_type, spans, sanitize, language) +/mob/living/whisper(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) + say("#[message]", bubble_type, spans, sanitize, language, ignore_spam, forced) /mob/living/get_language_holder(shadow=TRUE) if(mind && shadow)