From dab3a2dff8e17fe1535676c9e4efaf04fb5a60d0 Mon Sep 17 00:00:00 2001 From: ROdenFL <144662735+ROdenFL@users.noreply.github.com> Date: Wed, 10 Jul 2024 22:10:51 +0300 Subject: [PATCH] boldannounce (#5408) --- code/__DEFINES/_tgs_defines.dm | 2 +- code/__DEFINES/span.dm | 3 +- code/__HELPERS/_logging.dm | 2 +- code/__HELPERS/files.dm | 8 +- code/__HELPERS/names.dm | 131 ++++-------------- code/_onclick/click.dm | 2 +- code/controllers/failsafe.dm | 18 +-- code/controllers/master.dm | 4 +- code/controllers/subsystem/dbcore.dm | 2 +- code/controllers/subsystem/ticker.dm | 35 ++++- code/datums/components/codeword_hearing.dm | 49 +++++++ code/datums/emote/emote.dm | 8 +- code/datums/tgs_event_handler.dm | 4 +- .../datums/weather/weather_types/ash_storm.dm | 2 +- .../weather/weather_types/snow_storm.dm | 2 +- .../miniantags/abduction/abduction.dm | 2 +- .../miniantags/abduction/abduction_surgery.dm | 31 ++++- .../demons/pulse_demon/pulse_demon.dm | 4 +- .../miniantags/revenant/revenant_abilities.dm | 2 +- code/game/gamemodes/revolution/revolution.dm | 2 +- .../shadowling/shadowling_abilities.dm | 10 +- code/game/machinery/computer/ai_core.dm | 2 +- code/game/machinery/computer/aifixer.dm | 4 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/effects/mapping_helpers.dm | 2 +- code/game/objects/items/devices/scanners.dm | 4 +- .../structures/lavaland/necropolis_tendril.dm | 4 +- code/game/verbs/ooc.dm | 18 +-- code/game/world.dm | 4 +- code/modules/admin/admin.dm | 14 +- code/modules/admin/admin_ranks.dm | 2 +- code/modules/admin/db_ban/functions.dm | 6 +- code/modules/admin/holder2.dm | 10 +- .../admin/permissionverbs/permissionedit.dm | 2 +- code/modules/admin/topic.dm | 2 +- code/modules/admin/verbs/adminhelp.dm | 4 +- code/modules/admin/verbs/adminpm.dm | 2 +- code/modules/admin/verbs/adminsay.dm | 4 +- code/modules/admin/verbs/debug.dm | 2 +- .../antagonists/changeling/powers/linglink.dm | 2 +- .../ninja_status_read.dm | 2 +- .../space_ninja/suit/suit_SpiderOS.dm | 2 +- .../antagonists/traitor/datum_traitor.dm | 11 ++ code/modules/client/client_procs.dm | 4 +- code/modules/hydroponics/grown/nettle.dm | 2 +- code/modules/martial_arts/adminfu.dm | 2 +- code/modules/martial_arts/martial.dm | 10 +- code/modules/martial_arts/mimejutsu.dm | 2 +- code/modules/martial_arts/synthojitsu.dm | 2 +- code/modules/mob/hear_say.dm | 13 ++ code/modules/mob/holder.dm | 4 +- .../living/carbon/alien/special/facehugger.dm | 6 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../mob/living/carbon/human/species/vox.dm | 2 +- code/modules/mob/living/living.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 2 +- .../modules/mob/living/silicon/silicon_say.dm | 2 +- .../mob/living/simple_animal/bot/griefsky.dm | 2 +- .../mob/living/simple_animal/bot/honkbot.dm | 2 +- .../simple_animal/hostile/megafauna/drake.dm | 2 +- code/modules/mob/mob.dm | 14 +- code/modules/power/supermatter/supermatter.dm | 2 +- .../ruins/lavalandruin_code/sin_ruins.dm | 2 +- .../ruins/objects_and_mobs/necropolis_gate.dm | 4 +- code/modules/shuttle/shuttle.dm | 2 +- code/modules/station_goals/bluespace_tap.dm | 2 +- code/modules/station_goals/station_goal.dm | 2 +- code/modules/surgery/bones.dm | 30 ++-- code/modules/surgery/core_removal.dm | 16 ++- code/modules/surgery/dental_implant.dm | 9 +- code/modules/surgery/encased.dm | 30 ++-- code/modules/surgery/generic.dm | 53 ++++--- code/modules/surgery/implant_removal.dm | 15 +- code/modules/surgery/limb_augmentation.dm | 6 +- code/modules/surgery/limb_reattach.dm | 27 ++-- code/modules/surgery/organs_internal.dm | 25 ++-- code/modules/surgery/other.dm | 43 ++++-- code/modules/surgery/plastic_surgery.dm | 18 ++- .../modules/surgery/remove_embedded_object.dm | 17 ++- code/modules/surgery/robotics.dm | 110 ++++++++++----- code/modules/vote/vote_datum.dm | 2 +- paradise.dme | 1 + 82 files changed, 548 insertions(+), 371 deletions(-) create mode 100644 code/datums/components/codeword_hearing.dm diff --git a/code/__DEFINES/_tgs_defines.dm b/code/__DEFINES/_tgs_defines.dm index 37851d5d1b0..d7c670c396e 100644 --- a/code/__DEFINES/_tgs_defines.dm +++ b/code/__DEFINES/_tgs_defines.dm @@ -2,7 +2,7 @@ #define TGS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name) #define TGS_READ_GLOBAL(Name) GLOB.##Name #define TGS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value -#define TGS_WORLD_ANNOUNCE(message) to_chat(world, "[html_encode(##message)]") +#define TGS_WORLD_ANNOUNCE(message) to_chat(world, span_boldannounceooc("[html_encode(##message)]")) #define TGS_INFO_LOG(message) log_world("\[TGS] Info: [##message]") #define TGS_WARNING_LOG(message) log_world("\[TGS] Warn: [##message]") #define TGS_ERROR_LOG(message) log_world("\[TGS] Error: [##message]") diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index 4dfdb21c86c..5c13748e141 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -23,7 +23,8 @@ //#define span_blue(str) ("" + str + "") //#define span_blueteamradio(str) ("" + str + "") //#define span_bold(str) ("" + str + "") -#define span_boldannounce(str) ("" + str + "") +#define span_boldannounceic(str) ("" + str + "") +#define span_boldannounceooc(str) ("" + str + "") #define span_bolddanger(str) ("" + str + "") //#define span_boldnicegreen(str) ("" + str + "") #define span_boldnotice(str) ("" + str + "") diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 3ccf3855350..7bcd50d521d 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -44,7 +44,7 @@ GLOBAL_PROTECT(log_end) for(var/client/C in GLOB.admins) if(check_rights(R_DEBUG|R_VIEWRUNTIMES, 0, C.mob) && (C.prefs.toggles & PREFTOGGLE_CHAT_DEBUGLOGS)) - to_chat(C, "DEBUG: [text]") + to_chat(C, "DEBUG: [text]", MESSAGE_TYPE_DEBUG, confidential = TRUE) /proc/log_game(text) if(CONFIG_GET(flag/log_game)) diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm index cc2a497eae1..a8a7cb0337e 100644 --- a/code/__HELPERS/files.dm +++ b/code/__HELPERS/files.dm @@ -2,7 +2,7 @@ /proc/wrap_file(filepath) if(IsAdminAdvancedProcCall()) // Admins shouldnt fuck with this - to_chat(usr, "File load blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("File load blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to load files via advanced proc-call") return @@ -11,7 +11,7 @@ /proc/wrap_file2text(filepath) if(IsAdminAdvancedProcCall()) // Admins shouldnt fuck with this - to_chat(usr, "File load blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("File load blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to load files via advanced proc-call") return @@ -34,7 +34,7 @@ //Sends resource files to client cache /client/proc/getFiles() if(IsAdminAdvancedProcCall()) - to_chat(usr, "Shelleo blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Shelleo blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to call Shelleo via advanced proc-call") return @@ -43,7 +43,7 @@ /client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm")) if(IsAdminAdvancedProcCall()) - to_chat(usr, "Shelleo blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Shelleo blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to call Shelleo via advanced proc-call") return diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 2f5c1797756..0e6d4c5900b 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -115,6 +115,11 @@ GLOBAL_VAR(syndicate_name) GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors. GLOBAL_VAR(syndicate_code_response) //Code response for traitors. +//Cached regex search - for checking if codewords are used. +GLOBAL_DATUM(syndicate_code_phrase_regex, /regex) +GLOBAL_DATUM(syndicate_code_response_regex, /regex) + + /* Should be expanded. How this works: @@ -129,9 +134,12 @@ GLOBAL_VAR(syndicate_code_response) //Code response for traitors. /N */ -/proc/generate_code_phrase()//Proc is used for phrase and response in master_controller.dm +/proc/generate_code_phrase(return_list = FALSE) // Proc is used for phrase and response in master_controller.dm - var/code_phrase = ""//What is returned when the proc finishes. + if(!return_list) + . = "" + else + . = list() var/words = pick(//How many words there will be. Minimum of two. 2, 4 and 5 have a lesser chance of being selected. 3 is the most likely. 50; 2, 200; 3, @@ -159,34 +167,33 @@ GLOBAL_VAR(syndicate_code_response) //Code response for traitors. switch(pick(safety))//Chance based on the safety list. if(1)//1 and 2 can only be selected once each to prevent more than two specific names/places/etc. - switch(rand(1,2))//Mainly to add more options later. + switch(rand(1, 2)) // Mainly to add more options later. if(1) - if(names.len) - code_phrase += pick(names) + if(length(names)) + . += pick(names) if(2) - code_phrase += pick(GLOB.jobs)//Returns a job. + . += pick(GLOB.jobs)//Returns a job. safety -= 1 if(2) - switch(rand(1,2))//Places or things. + switch(rand(1, 2))//Places or things. if(1) - code_phrase += pick(GLOB.cocktails) + . += pick(GLOB.cocktails) if(2) - code_phrase += pick(GLOB.locations) + . += pick(GLOB.locations) safety -= 2 if(3) - switch(rand(1,3))//Nouns, adjectives, verbs. Can be selected more than once. + switch(rand(1, 3))//Nouns, adjectives, verbs. Can be selected more than once. if(1) - code_phrase += pick(GLOB.nouns) + . += pick(GLOB.nouns) if(2) - code_phrase += pick(GLOB.adjectives) + . += pick(GLOB.adjectives) if(3) - code_phrase += pick(GLOB.verbs) - if(words==1) - code_phrase += "." - else - code_phrase += ", " - - return code_phrase + . += pick(GLOB.verbs) + if(!return_list) + if(words == 1) + . += "." + else + . += ", " /proc/GenerateKey() var/newKey @@ -194,89 +201,3 @@ GLOBAL_VAR(syndicate_code_response) //Code response for traitors. newKey += pick("diamond", "beer", "mushroom", "civilian", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") return newKey - -/* -//This proc tests the gen above. -/client/verb/test_code_phrase() - set name = "Generate Code Phrase" - set category = "Debug" - - to_chat(world, "Code Phrase is: [generate_code_phrase()]") - return - - - This was an earlier attempt at code phrase system, aside from an even earlier attempt (and failure). - This system more or less works as intended--aside from being unfinished--but it's still very predictable. - Particularly, the phrase opening statements are pretty easy to recognize and identify when metagaming. - I think the above-used method solves this issue by using words in a sequence, providing for much greater flexibility. - /N - - switch(choice) - if(1) - syndicate_code_phrase += pick("I'm looking for","Have you seen","Maybe you've seen","I'm trying to find","I'm tracking") - syndicate_code_phrase += " " - syndicate_code_phrase += pick(pick(GLOB.first_names_male,GLOB.first_names_female)) - syndicate_code_phrase += " " - syndicate_code_phrase += pick(GLOB.last_names) - syndicate_code_phrase += "." - if(2) - syndicate_code_phrase += pick("How do I get to","How do I find","Where is","Where do I find") - syndicate_code_phrase += " " - syndicate_code_phrase += pick("Escape","Engineering","Atmos","the bridge","the brig","Clown Planet","CentComm","the library","the chapel","a bathroom","Med Bay","Tool Storage","the escape shuttle","Robotics","a locker room","the living quarters","the gym","the autolathe","QM","the bar","the theater","the derelict") - syndicate_code_phrase += "?" - if(3) - if(prob(70)) - syndicate_code_phrase += pick("Get me","I want","I'd like","Make me") - syndicate_code_phrase += " a " - else - syndicate_code_phrase += pick("One") - syndicate_code_phrase += " " - syndicate_code_phrase += pick("vodka and tonic","gin fizz","bahama mama","manhattan","black Russian","whiskey soda","long island tea","margarita","Irish coffee"," manly dwarf","Irish cream","doctor's delight","Beepksy Smash","tequila sunrise","brave bull","gargle blaster","bloody mary","whiskey cola","white Russian","vodka martini","martini","Cuba libre","kahlua","vodka","wine","moonshine") - syndicate_code_phrase += "." - if(4) - syndicate_code_phrase += pick("I wish I was","My dad was","His mom was","Where do I find","The hero this station needs is","I'd fuck","I wouldn't trust","Someone caught","HoS caught","Someone found","I'd wrestle","I wanna kill") - syndicate_code_phrase += " [pick("a","the")] " - syndicate_code_phrase += pick("wizard","ninja","xeno","lizard","slime","monkey","syndicate","cyborg","clown","space carp","singularity","singulo","mime") - syndicate_code_phrase += "." - if(5) - syndicate_code_phrase += pick("Do we have","Is there","Where is","Where's","Who's") - syndicate_code_phrase += " " - syndicate_code_phrase += "[pick(GLOB.joblist)]" - syndicate_code_phrase += "?" - - switch(choice) - if(1) - if(prob(80)) - syndicate_code_response += pick("Try looking for them near","I they ran off to","Yes. I saw them near","Nope. I'm heading to","Try searching") - syndicate_code_response += " " - syndicate_code_response += pick("Escape","Engineering","Atmos","the bridge","the brig","Clown Planet","CentComm","the library","the chapel","a bathroom","Med Bay","Tool Storage","the escape shuttle","Robotics","a locker room","the living quarters","the gym","the autolathe","QM","the bar","the theater","the derelict") - syndicate_code_response += "." - else if(prob(60)) - syndicate_code_response += pick("No. I'm busy, sorry.","I don't have the time.","Not sure, maybe?","There is no time.") - else - syndicate_code_response += pick("*shrug*","*smile*","*blink*","*sigh*","*laugh*","*nod*","*giggle*") - if(2) - if(prob(80)) - syndicate_code_response += pick("Go to","Navigate to","Try","Sure, run to","Try searching","It's near","It's around") - syndicate_code_response += " the " - syndicate_code_response += pick("[pick("south","north","east","west")] maitenance door","nearby maitenance","teleporter","[pick("cold","dead")] space","morgue","vacuum","[pick("south","north","east","west")] hall ","[pick("south","north","east","west")] hallway","[pick("white","black","red","green","blue","pink","purple")] [pick("rabbit","frog","lion","tiger","panther","snake","facehugger")]") - syndicate_code_response += "." - else if(prob(60)) - syndicate_code_response += pick("Try asking","Ask","Talk to","Go see","Follow","Hunt down") - syndicate_code_response += " " - if(prob(50)) - syndicate_code_response += pick(pick(GLOB.first_names_male,GLOB.first_names_female)) - syndicate_code_response += " " - syndicate_code_response += pick(GLOB.last_names) - else - syndicate_code_response += " the " - syndicate_code_response += "[pic(GLOB.joblist)]" - syndicate_code_response += "." - else - syndicate_code_response += pick("*shrug*","*smile*","*blink*","*sigh*","*laugh*","*nod*","*giggle*") - if(3) - if(4) - if(5) - - return -*/ diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index f6c6126e7c7..730d9d6fe8c 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -74,7 +74,7 @@ if(dragged && !modifiers[dragged]) return if(IsFrozen(A) && !is_admin(usr)) - to_chat(usr, "Interacting with admin-frozen players is not permitted.") + to_chat(usr, span_boldannounceooc("Interacting with admin-frozen players is not permitted.")) return if(modifiers["middle"] && modifiers["shift"] && modifiers["ctrl"]) MiddleShiftControlClickOn(A) diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index d9793651a85..e5db023b466 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -43,10 +43,10 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) break else if(defcon == 1) //Exit Failsafe if we weren't able to recover the MC in the last stage log_game("FailSafe: Failed to recover MC while in emergency state. Failsafe exiting.") - message_admins("Failsafe failed criticaly while trying to recreate broken MC. Please manually fix the MC or reboot the server. Failsafe exiting now.") - message_admins("You can try manually calling these two procs:.") - message_admins("/proc/recover_all_SS_and_recreate_master: Most stuff should still function but expect instability/runtimes/broken stuff.") - message_admins("/proc/delete_all_SS_and_recreate_master: Most stuff will be broken but basic stuff like movement and chat should still work.") + message_admins(span_boldannounceooc("Failsafe failed criticaly while trying to recreate broken MC. Please manually fix the MC or reboot the server. Failsafe exiting now.")) + message_admins(span_boldannounceooc("You can try manually calling these two procs:.")) + message_admins(span_boldannounceooc("/proc/recover_all_SS_and_recreate_master: Most stuff should still function but expect instability/runtimes/broken stuff.")) + message_admins(span_boldannounceooc("/proc/delete_all_SS_and_recreate_master: Most stuff will be broken but basic stuff like movement and chat should still work.")) else if(recovery_result == -1) //Failed to recreate MC defcon-- sleep(initial(processing_interval)) //Wait a bit until the next try @@ -81,11 +81,11 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) --defcon if(2) - to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5 - defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") + to_chat(GLOB.admins, span_boldannounceooc("Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5 - defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.")) --defcon if(1) - to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5 - defcon) * processing_interval] ticks. Killing and restarting...") + to_chat(GLOB.admins, span_boldannounceooc("Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5 - defcon) * processing_interval] ticks. Killing and restarting...")) --defcon var/rtn = Recreate_MC() if(rtn > 0) @@ -94,7 +94,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) to_chat(GLOB.admins, "MC restarted successfully") else if(rtn < 0) log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0") - to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") + to_chat(GLOB.admins, span_boldannounceooc("ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.")) //if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again //no need to handle that specially when defcon 0 can handle it @@ -136,7 +136,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) to_chat(GLOB.admins, "Failsafe recovered MC while in emergency state [defcon_pretty()]") else log_game("FailSafe: Failsafe in emergency state and was unable to recreate MC while in defcon state [defcon_pretty()].") - message_admins("Failsafe in emergency state and master down, trying to recreate MC while in defcon level [defcon_pretty()] failed.") + message_admins(span_boldannounceooc("Failsafe in emergency state and master down, trying to recreate MC while in defcon level [defcon_pretty()] failed.")) ///Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars @@ -155,7 +155,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) Master.Initialize(10, FALSE, TRUE) //Need to manually start the MC, normally world.new would do this to_chat(GLOB.admins, "MC successfully recreated after recovering all subsystems!") else - message_admins("Failed to create new MC!") + message_admins(span_boldannounceooc("Failed to create new MC!")) /datum/controller/failsafe/proc/defcon_pretty() diff --git a/code/controllers/master.dm b/code/controllers/master.dm index ac14ef36f13..db75bcedae4 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -191,7 +191,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new msg = "The [BadBoy.name] subsystem seems to be destabilizing the MC and will be offlined. The following implications are now in effect: [BadBoy.offline_implications]" BadBoy.flags |= SS_NO_FIRE if(msg) - to_chat(GLOB.admins, "[msg]") + to_chat(GLOB.admins, span_boldannounceooc("[msg]")) log_world(msg) if(istype(Master.subsystems)) @@ -201,7 +201,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new current_runlevel = Master.current_runlevel StartProcessing(10) else - to_chat(world, "The Master Controller is having some issues, we will need to re-initialize EVERYTHING") + to_chat(world, span_boldannounceooc("The Master Controller is having some issues, we will need to re-initialize EVERYTHING")) Initialize(20, TRUE) diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index d4c119a7039..1afd738bd31 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -252,7 +252,7 @@ SUBSYSTEM_DEF(dbcore) */ /datum/controller/subsystem/dbcore/proc/NewQuery(sql_query, arguments) if(IsAdminAdvancedProcCall()) - to_chat(usr, "DB query blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("DB query blocked: Advanced ProcCall detected.")) message_admins("[key_name(usr)] attempted to create a DB query via advanced proc-call") log_and_message_admins("attempted to create a DB query via advanced proc-call") return FALSE diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index dc842e37d8b..907ecd38028 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -319,9 +319,32 @@ SUBSYSTEM_DEF(ticker) // Generate code phrases and responses if(!GLOB.syndicate_code_phrase) - GLOB.syndicate_code_phrase = generate_code_phrase() + var/list/temp_syndicate_code_phrase = generate_code_phrase(return_list=TRUE) + + var/list/words_for_regex = list() + for(var/word in temp_syndicate_code_phrase) + words_for_regex += list(lowertext(word), word, uppertext(word), capitalize(word)) + var/codewords = jointext(words_for_regex, "|") + var/regex/codeword_match = new("([codewords])", "ig") + + GLOB.syndicate_code_phrase_regex = codeword_match + temp_syndicate_code_phrase = jointext(temp_syndicate_code_phrase, ", ") + GLOB.syndicate_code_phrase = temp_syndicate_code_phrase + + if(!GLOB.syndicate_code_response) - GLOB.syndicate_code_response = generate_code_phrase() + var/list/temp_syndicate_code_response = generate_code_phrase(return_list=TRUE) + + var/list/words_for_regex = list() + for(var/word in temp_syndicate_code_response) + words_for_regex += list(lowertext(word), word, uppertext(word), capitalize(word)) + + var/codewords = jointext(words_for_regex, "|") + var/regex/codeword_match = new("([codewords])", "ig") + + GLOB.syndicate_code_response_regex = codeword_match + temp_syndicate_code_response = jointext(temp_syndicate_code_response, ", ") + GLOB.syndicate_code_response = temp_syndicate_code_response // Run post setup stuff mode.post_setup() @@ -471,7 +494,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/declare_completion() - GLOB.nologevent = TRUE //end of round murder and shenanigans are legal; there's no need to jam up attack logs past this point. + GLOB.nologevent = TRUE //end of round murder and shenanigans are legal; there's no need to jam up past this point. if(toogle_gv) set_observer_default_invisibility(0) //spooks things up //Round statistics report @@ -612,7 +635,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/reboot_helper(reason, end_string, delay) // Admins delayed round end. Just alert and dont bother with anything else. if(delay_end) - to_chat(world, "An admin has delayed the round end.") + to_chat(world, span_boldannounceooc("An admin has delayed the round end.")) return if(!isnull(delay)) @@ -622,14 +645,14 @@ SUBSYSTEM_DEF(ticker) // Use default restart timeout delay = restart_timeout - to_chat(world, "Rebooting world in [delay/10] [delay > 10 ? "seconds" : "second"]. [reason]") + to_chat(world, span_boldannounceooc("Rebooting world in [delay/10] [delay > 10 ? "seconds" : "second"]. [reason]")) real_reboot_time = world.time + delay UNTIL(world.time > real_reboot_time) // Hold it here // And if we re-delayed, bail again if(delay_end) - to_chat(world, "Reboot was cancelled by an admin.") + to_chat(world, span_boldannounceooc("Reboot was cancelled by an admin.")) return if(end_string) diff --git a/code/datums/components/codeword_hearing.dm b/code/datums/components/codeword_hearing.dm new file mode 100644 index 00000000000..aa664ecc8d4 --- /dev/null +++ b/code/datums/components/codeword_hearing.dm @@ -0,0 +1,49 @@ +/** + * Component that allows for highlighting of words or phrases in chat based on regular expressions. + * + * Hooks into /mob/proc/combine_message to wrap every regex match in the message + * between tags with the provided span class. This modifies the output that + * is sent to the parent's chat window. + * + * Removal of this component should be done by calling [GetComponents(/datum/component/codeword_hearing)] + * on the parent and then iterating through all components calling [delete_if_from_source(source)]. + */ +/datum/component/codeword_hearing + dupe_mode = COMPONENT_DUPE_ALLOWED + + /// Regex for matching words or phrases you want highlighted. + var/regex/replace_regex + /// The to use for highlighting matches. + var/span_class + /// The source of this component. Used to identify the source in delete_if_from_source since this component is COMPONENT_DUPE_ALLOWED. + var/source + +/datum/component/codeword_hearing/Initialize(regex/codeword_regex, highlight_span_class, component_source) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + replace_regex = codeword_regex + span_class = highlight_span_class + source = component_source + return ..() + +/datum/component/codeword_hearing/proc/handle_hearing(message) + var/mob/living/owner = parent + if(!istype(owner)) + return + + // don't skip codewords when owner speaks + if(!owner.can_hear()) + return + + var/message_check = replace_regex.Replace(message, "$1") + + return message_check + +/// Since a parent can have multiple of these components on them simultaneously, this allows a datum to delete components from a specific source. +/datum/component/codeword_hearing/proc/delete_if_from_source(component_source) + if(source == component_source) + qdel(src) + return TRUE + + return FALSE diff --git a/code/datums/emote/emote.dm b/code/datums/emote/emote.dm index 43f769e3138..884cf24b934 100644 --- a/code/datums/emote/emote.dm +++ b/code/datums/emote/emote.dm @@ -210,11 +210,11 @@ if(!ghost.client) continue if((ghost.client.prefs.toggles & PREFTOGGLE_CHAT_GHOSTSIGHT) && !(ghost in viewers(user_turf, null))) - ghost.show_message(span_italics("[user] ([ghost_follow_link(user, ghost)]) [msg]")) + ghost.show_message(span_italics("[user] ([ghost_follow_link(user, ghost)]) [msg]"), chat_message_type = MESSAGE_TYPE_LOCALCHAT) if(isobserver(user)) for(var/mob/dead/observer/ghost in viewers(user)) - ghost.show_message(span_deadsay("[displayed_msg]"), EMOTE_VISIBLE) + ghost.show_message(span_deadsay("[displayed_msg]"), EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT) else if((emote_type & (EMOTE_AUDIBLE|EMOTE_SOUND)) && user.mind && !user.mind.miming) user.audible_message(displayed_msg, deaf_message = span_italics("You see how [user] [msg]")) @@ -286,10 +286,10 @@ for(var/mob/viewer in can_see) if(viewer.status_flags & PASSEMOTES) for(var/obj/item/holder/holder in viewer.contents) - holder.show_message(text, EMOTE_VISIBLE) + holder.show_message(text, EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT) for(var/mob/living/mob in viewer.contents) - mob.show_message(text, EMOTE_VISIBLE) + mob.show_message(text, EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT) if((isobserver(viewer) || viewer.stat == CONSCIOUS) && viewer.client?.prefs?.toggles2 & PREFTOGGLE_2_RUNECHAT) viewer.create_chat_message(user, text, list("emote")) diff --git a/code/datums/tgs_event_handler.dm b/code/datums/tgs_event_handler.dm index bc96c184b67..bc3f0a8d9a1 100644 --- a/code/datums/tgs_event_handler.dm +++ b/code/datums/tgs_event_handler.dm @@ -20,7 +20,7 @@ message_admins("TGS: Deployment failed!") if(TGS_EVENT_DEPLOYMENT_COMPLETE) message_admins("TGS: Deployment complete!") - to_chat(world, "Server updated, changes will be applied on the next round...") + to_chat(world, span_boldannounceooc("Server updated, changes will be applied on the next round...")) if(TGS_EVENT_WATCHDOG_DETACH) message_admins("TGS restarting...") reattach_timer = addtimer(CALLBACK(src, PROC_REF(LateOnReattach)), 1 MINUTES) @@ -28,7 +28,7 @@ var/datum/tgs_version/old_version = world.TgsVersion() var/datum/tgs_version/new_version = args[2] if(!old_version.Equals(new_version)) - to_chat(world, "TGS updated to v[new_version.deprefixed_parameter]") + to_chat(world, span_boldannounceooc("TGS updated to v[new_version.deprefixed_parameter]")) else message_admins("TGS: Back online") if(reattach_timer) diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm index dd66b1f81da..2f804aeb94b 100644 --- a/code/datums/weather/weather_types/ash_storm.dm +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -12,7 +12,7 @@ weather_duration_upper = 120 SECONDS weather_overlay = "ash_storm" - end_message = span_boldannounce("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.") + end_message = span_boldannounceic("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.") end_duration = 30 SECONDS end_overlay = "light_ash" diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm index 467e162a359..12fe9bf3b6d 100644 --- a/code/datums/weather/weather_types/snow_storm.dm +++ b/code/datums/weather/weather_types/snow_storm.dm @@ -13,7 +13,7 @@ weather_duration_upper = 120 SECONDS end_duration = 10 SECONDS - end_message = span_boldannounce("The snowfall dies down, it should be safe to go outside again.") + end_message = span_boldannounceic("The snowfall dies down, it should be safe to go outside again.") end_overlay = "light_snow" area_type = /area/vision_change_area/awaymission/evil_santa_storm diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index b81b3b9eaab..abdb9ac5ee0 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -205,7 +205,7 @@ if(console.experiment.points >= objective.target_amount) to_chat(world, "[team_name] team fulfilled its mission!") else - to_chat(world, "[team_name] team failed its mission.") + to_chat(world, span_boldannounceooc("[team_name] team failed its mission.")) ..() return 1 diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index c03953e5c17..6d2b75e49a8 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -38,7 +38,9 @@ if(istype(organ, /obj/item/organ/internal/heart)) IC = organ break - user.visible_message("[user] starts to remove [target]'s organs.", "You start to remove [target]'s organs...") + user.visible_message("[user] starts to remove [target]'s organs.", + span_notice("You start to remove [target]'s organs..."), + chat_message_type = MESSAGE_TYPE_COMBAT) ..() /datum/surgery_step/internal/extract_organ/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -50,14 +52,22 @@ user.put_in_hands(IC, ignore_anim = FALSE) return SURGERY_STEP_CONTINUE if(NO_INTORGANS in AB.dna.species.species_traits) - user.visible_message("[user] prepares [target]'s [target_zone] for further dissection!", "You prepare [target]'s [target_zone] for further dissection.") + user.visible_message( + "[user] prepares [target]'s [target_zone] for further dissection!", + span_notice("You prepare [target]'s [target_zone] for further dissection."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return SURGERY_STEP_CONTINUE else to_chat(user, "You don't find anything in [target]'s [target_zone]!") return SURGERY_STEP_CONTINUE /datum/surgery_step/internal/extract_organ/fail_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user]'s hand slips, failing to extract anything!", "Your hand slips, failing to extract anything!") + user.visible_message( + span_warning("[user]'s hand slips, failing to extract anything!"), + span_warning("Your hand slips, failing to extract anything!"), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return SURGERY_STEP_RETRY /datum/surgery_step/internal/gland_insert @@ -66,18 +76,27 @@ time = 32 /datum/surgery_step/internal/gland_insert/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] starts to insert [tool] into [target].", "You start to insert [tool] into [target]...") + user.visible_message( + "[user] starts to insert [tool] into [target].", + span_notice("You start to insert [tool] into [target]..."), + chat_message_type = MESSAGE_TYPE_COMBAT) ..() /datum/surgery_step/internal/gland_insert/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] inserts [tool] into [target].", "You insert [tool] into [target].") + user.visible_message( + "[user] inserts [tool] into [target].", + span_notice("You insert [tool] into [target]."), + chat_message_type = MESSAGE_TYPE_COMBAT) user.drop_from_active_hand() var/obj/item/organ/internal/heart/gland/gland = tool gland.insert(target, ORGAN_MANIPULATION_ABDUCTOR) return SURGERY_STEP_CONTINUE /datum/surgery_step/internal/gland_insert/fail_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user]'s hand slips, failing to insert the gland!", "Your hand slips, failing to insert the gland!") + user.visible_message( + span_warning("[user]'s hand slips, failing to insert the gland!"), + span_warning("Your hand slips, failing to insert the gland!"), + chat_message_type = MESSAGE_TYPE_COMBAT) return SURGERY_STEP_RETRY //IPC Gland Surgery// diff --git a/code/game/gamemodes/miniantags/demons/pulse_demon/pulse_demon.dm b/code/game/gamemodes/miniantags/demons/pulse_demon/pulse_demon.dm index 61c35f9efe7..1b191a0df45 100644 --- a/code/game/gamemodes/miniantags/demons/pulse_demon/pulse_demon.dm +++ b/code/game/gamemodes/miniantags/demons/pulse_demon/pulse_demon.dm @@ -630,7 +630,7 @@ emote("me", message = "[pick(emote_hear)]") return TRUE -/mob/living/simple_animal/demon/pulse_demon/visible_message(message, self_message, blind_message, list/ignored_mobs) +/mob/living/simple_animal/demon/pulse_demon/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type) // overriden because pulse demon is quite often in non-turf locs, and /mob/visible_message acts differently there for(var/mob/M in get_mobs_in_view(7, src)) if(M.see_invisible < invisibility) @@ -638,7 +638,7 @@ var/msg = message if(self_message && M == src) msg = self_message - M.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE) + M.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT) /mob/living/simple_animal/demon/pulse_demon/proc/try_hijack_apc(obj/machinery/power/apc/A, remote = FALSE) // one APC per pulse demon, one pulse demon per APC, no duplicate APCs diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 562ebf7ec81..d875c52dab0 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -68,7 +68,7 @@ if(do_after(src, 2 SECONDS, target, DEFAULT_DOAFTER_IGNORE|DA_IGNORE_HELD_ITEM)) //how about now if(!target.stat) to_chat(src, "They are now powerful enough to fight off your draining.") - to_chat(target, "You feel something tugging across your body before subsiding.") + to_chat(target, span_boldannounceic("You feel something tugging across your body before subsiding.")) draining = FALSE return //hey, wait a minute... to_chat(src, "You begin siphoning essence from [target]'s soul.") diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index c8acb81a118..0cc7be1d7dc 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -308,7 +308,7 @@ for(var/datum/mind/head in heads) var/target = (head in targets) if(target) - text += "Target" + text += span_boldannounceooc("Target") text += printplayer(head, 1) text += "
" to_chat(world, text) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 23127987e7f..321e2ad892e 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -330,7 +330,7 @@ if(3) to_chat(user, "You begin planting the tumor that will control the new thrall...") user.visible_message("A strange energy passes from [user]'s hands into [target]'s head!") - to_chat(target, "You feel your memories twisting, morphing. A sense of horror dominates your mind.") + to_chat(target, span_boldannounceic("You feel your memories twisting, morphing. A sense of horror dominates your mind.")) if(!do_after(user, 7.7 SECONDS, target, NONE)) //around 23 seconds total for enthralling to_chat(user, "The enthralling has been interrupted - your target's mind returns to its previous state.") to_chat(target, "You wrest yourself away from [user]'s hands and compose yourself") @@ -719,7 +719,7 @@ return to_chat(user, "You release a massive surge of power into [thrall]!") - user.visible_message("Red lightning surges into [thrall]'s face!") + user.visible_message(span_boldannounceic("Red lightning surges into [thrall]'s face!")) playsound(thrall, 'sound/weapons/egloves.ogg', 50, TRUE) playsound(thrall, 'sound/machines/defib_zap.ogg', 50, TRUE) user.Beam(thrall, icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) @@ -755,7 +755,7 @@ return to_chat(user, "You release a massive surge of power into [thrall]!") - user.visible_message("Red lightning surges from [user]'s hands into [thrall]'s chest!") + user.visible_message(span_boldannounceic("Red lightning surges from [user]'s hands into [thrall]'s chest!")) playsound(thrall, 'sound/weapons/egloves.ogg', 50, TRUE) playsound(thrall, 'sound/machines/defib_zap.ogg', 50, TRUE) user.Beam(thrall, icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) @@ -769,7 +769,7 @@ thrall.update_revive() thrall.Weaken(8 SECONDS) thrall.emote("gasp") - thrall.visible_message("[thrall] heaves in breath, dim red light shining in [thrall.p_their()] eyes.", \ + thrall.visible_message(span_boldannounceic("[thrall] heaves in breath, dim red light shining in [thrall.p_their()] eyes."), \ "You have returned. One of your masters has brought you from the darkness beyond.") playsound(thrall, "bodyfall", 50, TRUE) @@ -825,7 +825,7 @@ user.visible_message("[user]'s eyes flash a bright red!", \ "You begin to draw [target]'s life force.") target.visible_message("[target]'s face falls slack, [target.p_their()] jaw slightly distending.", \ - "You are suddenly transported... far, far away...") + span_boldannounceic("You are suddenly transported... far, far away...")) extend_limit_pressed = TRUE if(!do_after(user, 15 SECONDS, target, max_interact_count = 1)) diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index d42bec61133..2819d67458a 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -297,7 +297,7 @@ That prevents a few funky behaviors. /atom/proc/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card) if(istype(card)) if(card.flush) - to_chat(user, span_boldannounce("ERROR:") + "AI flush is in progress, cannot execute transfer protocol.") + to_chat(user, span_boldannounceic("ERROR:") + "AI flush is in progress, cannot execute transfer protocol.") return 0 return 1 diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index f57f26ff7f7..de252f75549 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -137,9 +137,9 @@ occupant = null update_icon() else if(active) - to_chat(user, span_boldannounce("ERROR: ") + "Reconstruction in progress.") + to_chat(user, span_boldannounceic("ERROR: ") + "Reconstruction in progress.") else if(!occupant) - to_chat(user, span_boldannounce("ERROR: ") + "Unable to locate artificial intelligence.") + to_chat(user, span_boldannounceic("ERROR: ") + "Unable to locate artificial intelligence.") /obj/machinery/computer/aifixer/Destroy() if(occupant) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 0672738d7a8..74843f17da1 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1078,7 +1078,7 @@ to_chat(user, span_warning("No AI detected in the [name] onboard computer.")) return if(AI.mind.special_role) //Malf AIs cannot leave mechs. Except through death. - to_chat(user, span_boldannounce("ACCESS DENIED.")) + to_chat(user, span_boldannounceic("ACCESS DENIED.")) return AI.aiRestorePowerRoutine = 0//So the AI initially has power. AI.control_disabled = TRUE diff --git a/code/game/objects/effects/mapping_helpers.dm b/code/game/objects/effects/mapping_helpers.dm index d62bb678996..49e2e6ef43f 100644 --- a/code/game/objects/effects/mapping_helpers.dm +++ b/code/game/objects/effects/mapping_helpers.dm @@ -136,4 +136,4 @@ . = ..() var/msg = "HEY, LISTEN!!! Merge Conflict Marker detected at [AREACOORD(src)]! Please manually address all potential merge conflicts!!!" warning(msg) - to_chat(world, "[msg]") + to_chat(world, span_boldannounceooc("[msg]")) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 0dce8322de9..3ecc51a6adc 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -245,7 +245,7 @@ REAGENT SCANNER if(H.reagents.reagent_list.len) to_chat(user, "Subject contains the following reagents:") for(var/datum/reagent/R in H.reagents.reagent_list) - to_chat(user, "[R.volume]u of [R.name][R.overdosed ? " - OVERDOSING" : ".
"]") + to_chat(user, "[R.volume]u of [R.name][R.overdosed ? " - [span_boldannounceic("OVERDOSING")]" : "."]") else to_chat(user, "Subject contains no reagents.") if(H.reagents.addiction_list.len) @@ -501,7 +501,7 @@ REAGENT SCANNER if(H.reagents.reagent_list.len) . += "Обнаружены реагенты:" for(var/datum/reagent/R in H.reagents.reagent_list) - . += " [R.volume]u [R.name][R.overdosed ? " - ПЕРЕДОЗИРОВКА" : "."]" + . += " [R.volume]u [R.name][R.overdosed ? " - [span_boldannounceic("ПЕРЕДОЗИРОВКА")]" : "."]" else . += "Реагенты не обнаружены." if(H.reagents.addiction_list.len) diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index d3caa6d89cf..7ac81bb320f 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -114,7 +114,7 @@ GLOBAL_LIST_INIT(tendrils, list()) /obj/effect/collapse/Initialize(mapload) . = ..() emitted_light = new(loc) - visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") + visible_message(span_boldannounceic("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!")) visible_message("Something falls free of the tendril!") playsound(loc, 'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) addtimer(CALLBACK(src, PROC_REF(collapse)), 50) @@ -127,7 +127,7 @@ GLOBAL_LIST_INIT(tendrils, list()) for(var/mob/M in range(7, src)) shake_camera(M, 15, 1) playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, TRUE) - visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") + visible_message(span_boldannounceic("The tendril falls inward, the ground around it widening into a yawning chasm!")) for(var/turf/T in range(2,src)) if(!T.density) T.TerraformTurf(/turf/simulated/floor/chasm/straight_down/lava_land_surface) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 799c8a80da6..0e3c3fbcd8f 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -15,18 +15,18 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00") if(!mob) return if(IsGuestKey(key)) - to_chat(src, "Guests may not use OOC.") + to_chat(src, span_danger("Guests may not use OOC."), MESSAGE_TYPE_WARNING, confidential = TRUE) return - if(!check_rights(R_ADMIN|R_MOD, 0)) + if(!check_rights(R_ADMIN|R_MOD,0)) if(!CONFIG_GET(flag/ooc_allowed)) - to_chat(src, "OOC is globally muted.") + to_chat(src, span_danger("OOC is globally muted."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(!CONFIG_GET(flag/dooc_allowed) && (mob.stat == DEAD)) - to_chat(usr, "OOC for dead mobs has been turned off.") + to_chat(usr, span_danger("OOC for dead mobs has been turned off."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(prefs.muted & MUTE_OOC) - to_chat(src, "You cannot use OOC (muted).") + to_chat(src, span_danger("You cannot use OOC (muted)."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(!msg) @@ -183,18 +183,18 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00") if(!mob) return if(IsGuestKey(key)) - to_chat(src, "Guests may not use OOC.") + to_chat(src, span_danger("Guests may not use LOOC."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(!check_rights(R_ADMIN|R_MOD,0)) if(!CONFIG_GET(flag/looc_allowed)) - to_chat(src, "LOOC is globally muted.") + to_chat(src, span_danger("LOOC is globally muted."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(!CONFIG_GET(flag/dooc_allowed) && (mob.stat == DEAD)) - to_chat(usr, "LOOC for dead mobs has been turned off.") + to_chat(usr, span_danger("LOOC for dead mobs has been turned off."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(prefs.muted & MUTE_OOC) - to_chat(src, "You cannot use LOOC (muted).") + to_chat(src, span_danger("You cannot use LOOC (muted)."), MESSAGE_TYPE_WARNING, confidential = TRUE) return if(!msg) diff --git a/code/game/world.dm b/code/game/world.dm index 03cb9b1b7d1..f20f4deb4d1 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -130,7 +130,7 @@ GLOBAL_LIST_EMPTY(world_topic_handlers) log_and_message_admins("attempted to restart the server via the Profiler, without access.") return log_and_message_admins("has requested an immediate world restart via client side debugging tools") - to_chat(world, "Rebooting world immediately due to host request") + to_chat(world, span_boldannounceooc("Rebooting world immediately due to host request")) rustg_log_close_all() // Past this point, no logging procs can be used, at risk of data loss. // Now handle a reboot if(config && CONFIG_GET(flag/shutdown_on_reboot)) @@ -155,7 +155,7 @@ GLOBAL_LIST_EMPTY(world_topic_handlers) // If we had an update or pending TM, set a 60 second timeout if(GLOB.pending_server_update) - to_chat(world, "Reboot will take a little longer, due to pending updates.") + to_chat(world, span_boldannounceooc("Reboot will take a little longer, due to pending updates.")) // Send the reboot banner to all players for(var/client/C in GLOB.clients) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index da4ec637a04..0c85c65c48d 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -7,14 +7,14 @@ GLOBAL_VAR_INIT(nologevent, 0) for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) if(C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_ADMINLOGS)) - to_chat(C, msg) + to_chat(C, msg, MESSAGE_TYPE_ADMINLOG, confidential = TRUE) /proc/msg_admin_attack(var/text, var/loglevel) if(!GLOB.nologevent) var/rendered = "ATTACK: [text]" for(var/client/C in GLOB.admins) if((C.holder.rights & R_ADMIN) && (C.prefs?.atklog <= loglevel)) - to_chat(C, rendered) + to_chat(C, rendered, MESSAGE_TYPE_ATTACKLOG, confidential = TRUE) /** * Sends a message to the staff able to see admin tickets @@ -27,7 +27,7 @@ GLOBAL_VAR_INIT(nologevent, 0) for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) if(important || (C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_TICKETLOGS))) - to_chat(C, msg) + to_chat(C, msg, MESSAGE_TYPE_ADMINPM, confidential = TRUE) if(important) if(C.prefs?.sound & SOUND_ADMINHELP) SEND_SOUND(C, 'sound/effects/adminhelp.ogg') @@ -44,7 +44,7 @@ GLOBAL_VAR_INIT(nologevent, 0) for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN | R_MENTOR | R_MOD, 0, C.mob)) if(important || (C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_TICKETLOGS))) - to_chat(C, msg) + to_chat(C, msg, MESSAGE_TYPE_MENTORCHAT, confidential = TRUE) if(important) if(C.prefs?.sound & SOUND_MENTORHELP) SEND_SOUND(C, 'sound/effects/adminhelp.ogg') @@ -56,12 +56,12 @@ GLOBAL_VAR_INIT(nologevent, 0) for(var/mob/O in GLOB.mob_list) if(O.ckey && O.ckey == ckey_to_find) if(admin_to_notify) - to_chat(admin_to_notify, "admin_ban_mobsearch: Player [ckey_to_find] is now in mob [O]. Pulling data from new mob.") + to_chat(admin_to_notify, span_warning("admin_ban_mobsearch: Player [ckey_to_find] is now in mob [O]. Pulling data from new mob."), MESSAGE_TYPE_ADMINLOG, confidential = TRUE) return O if(admin_to_notify) - to_chat(admin_to_notify, "admin_ban_mobsearch: Player [ckey_to_find] does not seem to have any mob, anywhere. This is probably an error.") + to_chat(admin_to_notify, span_warning("admin_ban_mobsearch: Player [ckey_to_find] does not seem to have any mob, anywhere. This is probably an error."), MESSAGE_TYPE_ADMINLOG, confidential = TRUE) else if(admin_to_notify) - to_chat(admin_to_notify, "admin_ban_mobsearch: No mob or ckey detected.") + to_chat(admin_to_notify, span_warning("admin_ban_mobsearch: No mob or ckey detected."), MESSAGE_TYPE_ADMINLOG, confidential = TRUE) return M ///////////////////////////////////////////////////////////////////////////////////////////////Panels diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index bb01345595b..40c2e61c5a7 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -58,7 +58,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons /proc/load_admins(run_async = FALSE) if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin reload blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Admin reload blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to reload admins via advanced proc-call") return //clear the datums references diff --git a/code/modules/admin/db_ban/functions.dm b/code/modules/admin/db_ban/functions.dm index 06112e16764..52b03d3c385 100644 --- a/code/modules/admin/db_ban/functions.dm +++ b/code/modules/admin/db_ban/functions.dm @@ -5,7 +5,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.IsConnected()) - to_chat(usr, "Database connection failure when attempting to make DB ban. Please freeze them and write their ckey in notepad, so they can be banned when the DB returns.") + to_chat(usr, span_boldannounceooc("Database connection failure when attempting to make DB ban. Please freeze them and write their ckey in notepad, so they can be banned when the DB returns.")) return var/serverip = "[world.internet_address]:[world.port]" @@ -190,7 +190,7 @@ if(!check_rights(R_BAN)) return if(!SSdbcore.IsConnected()) - to_chat(usr, "Database connection failure when attempting to remove DB ban. Please remember to unban them at a later date!.") + to_chat(usr, span_boldannounceooc("Database connection failure when attempting to remove DB ban. Please remember to unban them at a later date!.")) return var/bantype_str @@ -366,7 +366,7 @@ return if(!SSdbcore.IsConnected()) - to_chat(usr, "Database connection failure when attempting to remove DB ban. Please remember to unban them at a later date!.") + to_chat(usr, span_boldannounceooc("Database connection failure when attempting to remove DB ban. Please remember to unban them at a later date!")) return var/ban_number = 0 //failsafe diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 5db4cc5d0d5..c6f7a693c4e 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -17,7 +17,7 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma /datum/admins/New(initial_rank = "Temporary Admin", initial_rights = 0, ckey) if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin rank creation blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Admin rank creation blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to edit feedback a new admin rank via advanced proc-call") return if(!ckey) @@ -31,7 +31,7 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma /datum/admins/Destroy() if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin rank deletion blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Admin rank deletion blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to delete an admin rank via advanced proc-call") return ..() @@ -39,7 +39,7 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma /datum/admins/proc/associate(client/C) if(IsAdminAdvancedProcCall()) - to_chat(usr, "Rank association blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Rank association blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to associate an admin rank to a new client via advanced proc-call") return if(istype(C)) @@ -51,7 +51,7 @@ GLOBAL_PROTECT(admin_datums) // This is protected because we dont want people ma /datum/admins/proc/disassociate() if(IsAdminAdvancedProcCall()) - to_chat(usr, "Rank disassociation blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Rank disassociation blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to disassociate an admin rank from a client via advanced proc-call") return if(owner) @@ -104,7 +104,7 @@ you will have to do something like if(client.holder.rights & R_ADMIN) yourself. /client/proc/deadmin() if(IsAdminAdvancedProcCall()) - to_chat(usr, "Deadmin blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Deadmin blocked: Advanced ProcCall detected.")) log_and_message_admins("attempted to de-admin a client via advanced proc-call") return GLOB.admin_datums -= ckey diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 9a9f180d581..66bf5882ea3 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -142,7 +142,7 @@ /datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission) if(IsAdminAdvancedProcCall()) - to_chat(usr, "Admin edit blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Admin edit blocked: Advanced ProcCall detected.")) message_admins("[key_name(usr)] attempted to edit admin ranks via advanced proc-call") log_admin("[key_name(usr)] attempted to edit admin ranks via advanced proc-call") return diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index af88acd4105..a1423764632 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -3113,7 +3113,7 @@ GLOB.max_ex_flash_range = newBombCap GLOB.max_ex_flame_range = newBombCap - message_admins("[key_name_admin(usr)] changed the bomb cap to [GLOB.max_ex_devastation_range], [GLOB.max_ex_heavy_range], [GLOB.max_ex_light_range]") + message_admins(span_boldannounceooc("[key_name_admin(usr)] changed the bomb cap to [GLOB.max_ex_devastation_range], [GLOB.max_ex_heavy_range], [GLOB.max_ex_light_range]")) log_admin("[key_name(usr)] changed the bomb cap to [GLOB.max_ex_devastation_range], [GLOB.max_ex_heavy_range], [GLOB.max_ex_light_range]") if("flicklights") diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 78b75cdf1eb..89cc6e1eda2 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -7,7 +7,7 @@ GLOBAL_LIST_INIT(adminhelp_ignored_words, list("unknown", "the", "a", "an", "of" //handle muting and automuting if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Admin-PM: You cannot send adminhelps (Muted).") + to_chat(src, "Error: Admin-PM: You cannot send adminhelps (Muted).", MESSAGE_TYPE_ADMINPM, confidential = TRUE) return adminhelped = TRUE //Determines if they get the message to reply by clicking the name. @@ -35,7 +35,7 @@ GLOBAL_LIST_INIT(adminhelp_ignored_words, list("unknown", "the", "a", "an", "of" SStickets.newHelpRequest(src, msg) // Ahelp //show it to the person adminhelping too - to_chat(src, "[selected_type]: [msg]") + to_chat(src, span_boldnotice("[selected_type]: [msg]"), MESSAGE_TYPE_ADMINPM, confidential = TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Adminhelp") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc! switch(selected_type) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 78c31cd8490..3a282d81dcd 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -241,7 +241,7 @@ SSdiscord.send2discord_simple(DISCORD_WEBHOOK_ADMIN, "PM from [key_name(src)]: [html_decode(msg)]") - to_chat(src, "PM to-Discord Admins: [msg]") + to_chat(src, "PM to-Discord Admins: [msg]", MESSAGE_TYPE_ADMINPM, confidential = TRUE) log_admin("PM: [key_name(src)]->Discord: [msg]") for(var/client/X in GLOB.admins) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index a6dff90c813..49dcd70b91a 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -23,7 +23,7 @@ msg = replacetext(msg, "@[C.key]", "@[C.key]") // Same applies here. key and ckey. msg = "[msg]" - to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [msg]") + to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc! @@ -60,7 +60,7 @@ else display_name = holder.fakekey msg = "[msg]" - to_chat(C, "MENTOR: [display_name] ([admin_jump_link(mob)]): [msg]") + to_chat(C, "MENTOR: [display_name] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_MENTORCHAT, confidential = TRUE) SSblackbox.record_feedback("tally", "admin_verb", 1, "Msay") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 027898cbc8e..03a29e70db1 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -170,7 +170,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) else if(target != world) return call(target, procname)(arglist(arguments)) else - to_chat(usr, "Call to world/proc/[procname] blocked: Advanced ProcCall detected.") + to_chat(usr, span_boldannounceooc("Call to world/proc/[procname] blocked: Advanced ProcCall detected.")) message_admins("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]") log_admin("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]l") diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 941491477ea..52869af8f88 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -79,7 +79,7 @@ user.visible_message(span_danger("[user] stabs [target] with the proboscis!"), \ span_notice("You mold the [target]'s mind like clay, [target.p_they()] can now speak in the hivemind!")) - to_chat(target, "[span_boldannounce("You can now communicate in the changeling hivemind, say '[get_language_prefix(LANGUAGE_HIVE_CHANGELING)]' to communicate!")]") + to_chat(target, "[span_boldannounceic("You can now communicate in the changeling hivemind, say '[get_language_prefix(LANGUAGE_HIVE_CHANGELING)]' to communicate!")]") for(var/mob/ling in GLOB.mob_list) if(LAZYIN(ling.languages, GLOB.all_languages[LANGUAGE_HIVE_CHANGELING])) diff --git a/code/modules/antagonists/space_ninja/suit/ninja_equipment_actions/ninja_status_read.dm b/code/modules/antagonists/space_ninja/suit/ninja_equipment_actions/ninja_status_read.dm index 8a25b39c77e..76bdb7a9901 100644 --- a/code/modules/antagonists/space_ninja/suit/ninja_equipment_actions/ninja_status_read.dm +++ b/code/modules/antagonists/space_ninja/suit/ninja_equipment_actions/ninja_status_read.dm @@ -41,7 +41,7 @@ if(ninja.reagents.reagent_list.len) info_list += "[span_info("Обнаружены реагенты:")]\n" for(var/datum/reagent/ninja_reagent in ninja.reagents.reagent_list) - info_list += "[span_info(" [ninja_reagent.volume]u [ninja_reagent.name][ninja_reagent.overdosed ? " - [span_boldannounce("ПЕРЕДОЗИРОВКА")]" : "."]")]\n" + info_list += "[span_info(" [ninja_reagent.volume]u [ninja_reagent.name][ninja_reagent.overdosed ? " - [span_boldannounceic("ПЕРЕДОЗИРОВКА")]" : "."]")]\n" else info_list += "[span_info("Реагенты не обнаружены.")]\n" if(ninja.reagents.addiction_list.len) diff --git a/code/modules/antagonists/space_ninja/suit/suit_SpiderOS.dm b/code/modules/antagonists/space_ninja/suit/suit_SpiderOS.dm index 997fbe6df6c..1787d2b0b08 100644 --- a/code/modules/antagonists/space_ninja/suit/suit_SpiderOS.dm +++ b/code/modules/antagonists/space_ninja/suit/suit_SpiderOS.dm @@ -177,7 +177,7 @@ if("move") var/destination = params["move"] if(!options.Find(destination)) - message_admins("[span_boldannounce("EXPLOIT: [ADMIN_LOOKUPFLW(usr)]")] attempted to move [shuttle_controller.shuttleId] to an invalid location! [ADMIN_COORDJMP(src)]") + message_admins("[span_boldannounceic("EXPLOIT: [ADMIN_LOOKUPFLW(usr)]")] attempted to move [shuttle_controller.shuttleId] to an invalid location! [ADMIN_COORDJMP(src)]") return switch(SSshuttle.moveShuttle(shuttle_controller.shuttleId, destination, TRUE, usr)) if(0) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index e7803b6391a..850ecda5811 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -32,6 +32,17 @@ owner.som.masters += owner return ..() +/datum/antagonist/traitor/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/datum_owner = mob_override || owner.current + datum_owner.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_phrase_regex, "codephrases", src) + datum_owner.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_response_regex, "coderesponses", src) + +/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/datum_owner = mob_override || owner.current + for(var/datum/component/codeword_hearing/component in datum_owner.GetComponents(/datum/component/codeword_hearing)) + component.delete_if_from_source(src) /datum/antagonist/traitor/Destroy(force) // Remove contractor if present diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 1764d055b67..e10b518923e 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -1069,7 +1069,7 @@ if(prefs) prefs.load_preferences(usr) if(prefs && prefs.discord_id && length(prefs.discord_id) < 32) - to_chat(usr, chat_box_red("Аккаунт Discord уже привязан!
Чтобы отвязать используйте команду !отвязать_аккаунт
В канале #дом-бота в Discord-сообществе!
")) + to_chat(usr, chat_box_red("Аккаунт Discord уже привязан!
Чтобы отвязать используйте команду [span_boldannounceooc("!отвязать_аккаунт")]
В канале #дом-бота в Discord-сообществе!
")) return var/token = md5("[world.time+rand(1000,1000000)]") if(SSdbcore.IsConnected()) @@ -1080,7 +1080,7 @@ qdel(query_update_token) return qdel(query_update_token) - to_chat(usr, chat_box_notice("Для завершения привязки используйте команду
!привязать_аккаунт [token]
В канале #дом-бота в Discord-сообществе!
")) + to_chat(usr, chat_box_notice("Для завершения привязки используйте команду
[span_boldannounceooc("!привязать_аккаунт [token]")]
В канале #дом-бота в Discord-сообществе!
")) if(prefs) prefs.load_preferences(usr) diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index fea17865f5e..690cdb068f4 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -84,7 +84,7 @@ /obj/item/grown/nettle/death seed = /obj/item/seeds/nettle/death name = "deathnettle" - desc = "The glowing nettle incites rage in you just from looking at it!" + desc = "The glowing nettle incites rage in you just from looking at it!" icon_state = "deathnettle" force = 30 throwforce = 15 diff --git a/code/modules/martial_arts/adminfu.dm b/code/modules/martial_arts/adminfu.dm index 891b560b65f..31ca6bf9d25 100644 --- a/code/modules/martial_arts/adminfu.dm +++ b/code/modules/martial_arts/adminfu.dm @@ -69,7 +69,7 @@ var/mob/living/carbon/human/H = user var/datum/martial_art/adminfu/F = new/datum/martial_art/adminfu(null) F.teach(H) - to_chat(H, "You have learned the ancient martial art of the Admins.") + to_chat(H, span_boldannounceic("You have learned the ancient martial art of the Admins.")) used = TRUE update_appearance(UPDATE_ICON_STATE|UPDATE_NAME|UPDATE_DESC) diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 70d345e80ee..76463cc85f8 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -376,7 +376,7 @@ var/mob/living/carbon/human/H = user var/datum/martial_art/plasma_fist/F = new/datum/martial_art/plasma_fist(null) F.teach(H) - to_chat(H, "You have learned the ancient martial art of Plasma Fist.") + to_chat(H, span_boldannounceic("You have learned the ancient martial art of Plasma Fist.")) used = TRUE update_appearance(UPDATE_ICON_STATE|UPDATE_NAME|UPDATE_DESC) @@ -430,7 +430,7 @@ to_chat(user, "The mere thought of combat, let alone CQC, makes your head spin!") return - to_chat(user, "You remember the basics of CQC.") + to_chat(user, span_boldannounceic("You remember the basics of CQC.")) var/datum/martial_art/cqc/CQC = new(null) CQC.teach(user) @@ -450,7 +450,7 @@ if(!istype(user)) return if(user.mind && user.mind.assigned_role == JOB_TITLE_CHEF) - to_chat(user, "You completely memorise the basics of CQC.") + to_chat(user, span_boldannounceic(">You completely memorise the basics of CQC.")) var/datum/martial_art/cqc/CQC = new(null) CQC.teach(user) user.temporarily_remove_item_from_inventory(src) @@ -478,7 +478,7 @@ /obj/item/mr_chang_technique/attack_self(mob/living/carbon/human/user) if(!istype(user) || !user) return - to_chat(user, "You remember the basics of Aggressive Marketing Technique.") + to_chat(user, span_boldannounceic("You remember the basics of Aggressive Marketing Technique.")) var/datum/martial_art/mr_chang/mr_chang = new(null) mr_chang.teach(user) @@ -496,7 +496,7 @@ /obj/item/throwing_manual/attack_self(mob/living/carbon/human/user) if(!istype(user) || !user) return - to_chat(user, "You remember the basics of knife throwing.") + to_chat(user, span_boldannounceic("You remember the basics of knife throwing.")) var/datum/martial_art/throwing/MA = new MA.teach(user) diff --git a/code/modules/martial_arts/mimejutsu.dm b/code/modules/martial_arts/mimejutsu.dm index 66fbbeb489d..ea022bb8fa5 100644 --- a/code/modules/martial_arts/mimejutsu.dm +++ b/code/modules/martial_arts/mimejutsu.dm @@ -62,7 +62,7 @@ var/mob/living/carbon/human/H = user var/datum/martial_art/mimejutsu/F = new/datum/martial_art/mimejutsu(null) F.teach(H) - to_chat(H, "...") + to_chat(H, span_boldannounceic("...")) used = TRUE desc = "An old manual of the martial art of mimes. The pages are blank." else diff --git a/code/modules/martial_arts/synthojitsu.dm b/code/modules/martial_arts/synthojitsu.dm index b4e6a55e385..1322a630c8c 100644 --- a/code/modules/martial_arts/synthojitsu.dm +++ b/code/modules/martial_arts/synthojitsu.dm @@ -66,7 +66,7 @@ F.teach(H) H.adjustBrainLoss(50) H.Weaken(10 SECONDS) - to_chat(H, "Melee algorithms installed. Safety disabled.") + to_chat(H, span_boldannounceic("Melee algorithms installed. Safety disabled.")) is_used = TRUE update_appearance(UPDATE_ICON_STATE|UPDATE_DESC) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 1c8e5b35d4f..8c34f0fa85e 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -33,6 +33,19 @@ else piece = "[piece]" msg += (piece + " ") + + if(msg == "") + . = "" + return + + if(isliving(src)) + for(var/datum/component/codeword_hearing/hearing_datum in GetComponents(/datum/component/codeword_hearing)) + var/tmp_msg = hearing_datum.handle_hearing(msg) + if(!tmp_msg) + continue + msg = tmp_msg + log_debug(msg) + return trim(msg) /mob/proc/combine_message_tts(list/message_pieces, mob/speaker, always_stars = FALSE) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 18b7fbde749..529b5dfc071 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -43,9 +43,9 @@ return . . = ..() -/obj/item/holder/proc/show_message(var/message, var/m_type) +/obj/item/holder/proc/show_message(message, m_type, chat_message_type) for(var/mob/living/M in contents) - M.show_message(message,m_type) + M.show_message(message, m_type, chat_message_type) /obj/item/holder/emp_act(var/intensity) for(var/mob/living/M in contents) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index f4b81d468d1..549b81afbd8 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -72,11 +72,11 @@ if(real)//So that giant red text about probisci doesn't show up for fake ones switch(stat) if(DEAD,UNCONSCIOUS) - . += "[src] is not moving." + . += span_boldannounceic("[src] is not moving.") if(CONSCIOUS) - . += "[src] seems to be active!" + . += span_boldannounceic("[src] seems to be active!") if(sterile) - . += "It looks like the proboscis has been removed." + . += span_boldannounceic("It looks like the proboscis has been removed.") /obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 53da6e23b15..7f5f35d8e35 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -316,7 +316,7 @@ to_chat(src, "\t В твоем [bodypart.name] застрял [embedded]!") for(var/t in missing) - to_chat(src, "У вас отсутствует [parse_zone(t)]!") + to_chat(src, span_boldannounceic("У вас отсутствует [parse_zone(t)]!")) if(H.bleed_rate) to_chat(src, "У вас кровотечение!") diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index 6b0436d038a..4ba41176316 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -127,7 +127,7 @@ if(!H.put_in_any_hand_if_possible(internal_tank)) H.drop_item_ground(H.l_hand) H.equip_or_collect(internal_tank, ITEM_SLOT_HAND_LEFT) - to_chat(H, "Could not find an empty slot for internals! Please report this as a bug") + to_chat(H, span_boldannounceooc("Could not find an empty slot for internals! Please report this as a bug!")) H.internal = internal_tank to_chat(H, "Теперь вы живете на азоте из [internal_tank]. Кислород токсичен для вашего вида, поэтому вы должны дышать только азотом.") H.update_action_buttons_icon() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8cb8e4860f1..a9d13948a22 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1873,7 +1873,7 @@ return TRUE face_atom(target) if(!has_vision(information_only = TRUE)) - to_chat(src, span_notice("Здесь что-то есть, но вы не видите — что именно.")) + to_chat(src, chat_box_regular(span_notice("Здесь что-то есть, но вы не видите — что именно.")), MESSAGE_TYPE_INFO, confidential = TRUE) return TRUE return FALSE diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index fc81639a73f..dcb0251b2e7 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -313,7 +313,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( mind.transfer_to(mmi.brainmob) mmi.update_icon() else - to_chat(src, "Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.") + to_chat(src, span_boldannounceooc("Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.")) ghostize() error("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].") mmi = null diff --git a/code/modules/mob/living/silicon/silicon_say.dm b/code/modules/mob/living/silicon/silicon_say.dm index 9ab2217e618..020df53b835 100644 --- a/code/modules/mob/living/silicon/silicon_say.dm +++ b/code/modules/mob/living/silicon/silicon_say.dm @@ -103,7 +103,7 @@ to_chat(src, "Holopad action relayed, [real_name] [message]") for(var/mob/M in viewers(T.loc)) - M.show_message(rendered, EMOTE_VISIBLE) + M.show_message(rendered, EMOTE_VISIBLE, chat_message_type = MESSAGE_TYPE_LOCALCHAT) log_emote("(HPAD) [message]", src) else //This shouldn't occur, but better safe then sorry. diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm index 70c26059996..f6c86c4fee9 100644 --- a/code/modules/mob/living/simple_animal/bot/griefsky.dm +++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm @@ -244,7 +244,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/explode() SSmove_manager.stop_looping(src) - visible_message("[src] lets out a huge cough as it blows apart!") + visible_message(span_boldannounceic("[src] lets out a huge cough as it blows apart!")) var/turf/Tsec = get_turf(src) new /obj/item/assembly/prox_sensor(Tsec) var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 3433e16e7af..22641bbb457 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -309,7 +309,7 @@ /mob/living/simple_animal/bot/honkbot/explode() //doesn't drop cardboard nor its assembly, since its a very frail material. SSmove_manager.stop_looping(src) - visible_message("[src] blows apart!") + visible_message(span_boldannounceic("[src] blows apart!")) var/turf/Tsec = get_turf(src) new /obj/item/bikehorn(Tsec) new /obj/item/assembly/prox_sensor(Tsec) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index af405966c7e..38437b1277f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -409,7 +409,7 @@ Difficulty: Medium return FALSE return ..() -/mob/living/simple_animal/hostile/megafauna/dragon/visible_message(message, self_message, blind_message, list/ignored_mobs) +/mob/living/simple_animal/hostile/megafauna/dragon/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type) if(swooping & SWOOP_INVULNERABLE) //to suppress attack messages without overriding every single proc that could send a message saying we got hit return return ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0091a4b425d..3e2a48a2088 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -101,7 +101,7 @@ usr.show_message(t, 1) -/mob/proc/show_message(msg, type, alt, alt_type) +/mob/proc/show_message(msg, type, alt, alt_type, chat_message_type) if(!client) return @@ -123,9 +123,9 @@ // Added voice muffling for Issue 41. if(stat == UNCONSCIOUS) - to_chat(src, "…Вам почти удаётся расслышать чьи-то слова…") + to_chat(src, "…Вам почти удаётся расслышать чьи-то слова…", MESSAGE_TYPE_LOCALCHAT) else - to_chat(src, msg) + to_chat(src, msg, chat_message_type) // Show a message to all mobs in sight of this one @@ -133,7 +133,7 @@ // message is the message output to anyone who can see e.g. "[src] does something!" // self_message (optional) is what the src mob sees e.g. "You do something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/mob/visible_message(message, self_message, blind_message, list/ignored_mobs) +/mob/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type) if(!isturf(loc)) // mobs inside objects (such as lockers) shouldn't have their actions visible to those outside the object for(var/mob/mob as anything in (get_mobs_in_view(3, src, include_radio = FALSE) - ignored_mobs)) if(mob.see_invisible < invisibility) @@ -145,7 +145,7 @@ if(!blind_message) // for some reason VISIBLE action has blind_message param so if we are not in the same object but next to it, lets show it continue msg = blind_message - mob.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE) + mob.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE, chat_message_type) return for(var/mob/mob as anything in (get_mobs_in_view(7, src, include_radio = FALSE) - ignored_mobs)) @@ -154,7 +154,7 @@ var/msg = message if(self_message && mob == src) msg = self_message - mob.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE) + mob.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE, chat_message_type) // Show a message to all mobs in sight of this atom @@ -353,7 +353,7 @@ /mob/proc/run_examinate(atom/A) var/list/result = A.examine(src) - to_chat(src, chat_box_examine(result.Join("\n"))) + to_chat(src, chat_box_examine(result.Join("\n")), MESSAGE_TYPE_INFO, confidential = TRUE) /mob/verb/mode() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 4c7603a98bf..5f0e864dc18 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -326,7 +326,7 @@ visible_message("[src] is consumed by the singularity!") for(var/mob/M in GLOB.mob_list) M << 'sound/effects/supermatter.ogg' //everyone gunna know bout this - to_chat(M, "A horrible screeching fills your ears, and a wave of dread washes over you...") + to_chat(M, span_boldannounceic("A horrible screeching fills your ears, and a wave of dread washes over you...")) qdel(src) return(gain) diff --git a/code/modules/ruins/lavalandruin_code/sin_ruins.dm b/code/modules/ruins/lavalandruin_code/sin_ruins.dm index 15b89d897e1..4fab1d9a543 100644 --- a/code/modules/ruins/lavalandruin_code/sin_ruins.dm +++ b/code/modules/ruins/lavalandruin_code/sin_ruins.dm @@ -159,7 +159,7 @@ user.real_name = H.dna.real_name H.dna.transfer_identity(user) user.visible_message("[user]'s appearance shifts into [H]'s!", \ - "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.") + span_boldannounceic("[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.")) // Sloth /obj/item/paper/fluff/stations/lavaland/sloth/note diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index a8a5635b9ff..552608d04cf 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -109,7 +109,7 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/structure/necropolis_gate/attack_hand(mob/user) if(locked) - to_chat(user, "Кажется, эта дверь [open ? "навеки открыта":"намертво запечатана"].") + to_chat(user, span_boldannounceic("Кажется, эта дверь [open ? "навеки открыта":"намертво запечатана"].")) return toggle_the_gate(user) return ..() @@ -192,7 +192,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) var/safety = alert(user, "You think this might be a bad idea...", "Knock on the door?", "Proceed", "Abort") if(safety == "Abort" || !in_range(src, user) || !src || open || changing_openness || user.incapacitated()) return - user.visible_message("[user] knocks on [src]...", "You tentatively knock on [src]...") + user.visible_message("[user] knocks on [src]...", span_boldannounceic("You tentatively knock on [src]...")) playsound(user.loc, 'sound/effects/shieldbash.ogg', 100, 1) sleep(50) return ..() diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 0094f1ecd2f..43866092ec0 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -841,7 +841,7 @@ if(action == "move") var/destination = params["shuttle_id"] if(!options.Find(destination))//figure out if this translation works - message_admins("EXPLOIT: [ADMIN_LOOKUPFLW(usr)] attempted to move [src] to an invalid location! [ADMIN_COORDJMP(src)]") + message_admins("[span_boldannounceooc("EXPLOIT:")] [ADMIN_LOOKUPFLW(usr)] attempted to move [src] to an invalid location! [ADMIN_COORDJMP(src)]") return switch(SSshuttle.moveShuttle(shuttleId, destination, TRUE, usr)) if(SHUTTLE_CONSOLE_RECHARGING) diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 999d875564b..27eaab37775 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -26,7 +26,7 @@ var/highscore = 0 for(var/obj/machinery/power/bluespace_tap/T in GLOB.machines) highscore = max(highscore, T.total_points) - to_chat(world, "Bluespace Harvester Highscore: [highscore >= goal ? "": ""][highscore]") + to_chat(world, "Bluespace Harvester Highscore: [highscore >= goal ? "": ""][highscore]") if(highscore >= goal) return TRUE return FALSE diff --git a/code/modules/station_goals/station_goal.dm b/code/modules/station_goals/station_goal.dm index e10b8ee00be..f3c4c3ac37f 100644 --- a/code/modules/station_goals/station_goal.dm +++ b/code/modules/station_goals/station_goal.dm @@ -33,7 +33,7 @@ if(check_completion()) to_chat(world, "Station Goal: [name]: Completed!") else - to_chat(world, "Station Goal: [name]: Failed!") + to_chat(world, "Station Goal: [name]: [span_boldannounceooc("Failed!")]") /datum/station_goal/Destroy() SSticker.mode.station_goals -= src diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index 5cbc9dccb82..b0d7d6ae1b4 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -163,7 +163,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].", - "You start applying medication to the damaged bones in [target]'s [affected.name] with \the [tool]." + "You start applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Something in your [affected.name] is causing you a lot of pain!") return ..() @@ -172,7 +173,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] applies some [tool] to [target]'s bone in [affected.name]"), - span_notice("You apply some [tool] to [target]'s bone in [affected.name] with \the [tool].") + span_notice("You apply some [tool] to [target]'s bone in [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -180,7 +182,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] applies some [tool] to [target]'s bone in [affected.name]. You see the plasma flowing through the bones, reattaching them!"), \ - span_notice("You apply some [tool] to [target]'s bone in [affected.name] with \the [tool]. You see the plasma flowing through the bones, reattaching them!") + span_notice("You apply some [tool] to [target]'s bone in [affected.name] with \the [tool]. You see the plasma flowing through the bones, reattaching them!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.mend_fracture() return SURGERY_STEP_CONTINUE @@ -190,7 +193,8 @@ user.visible_message( span_warning("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"), - span_warning("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!") + span_warning("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(3) return SURGERY_STEP_RETRY @@ -209,7 +213,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] is beginning to set the bone in [target]'s [affected.name] in place with \the [tool].", - "You are beginning to set the bone in [target]'s [affected.name] in place with \the [tool]." + "You are beginning to set the bone in [target]'s [affected.name] in place with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("The pain in your [affected.name] is going to make you pass out!") return ..() @@ -218,7 +223,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] sets the bone in [target]'s [affected.name] in place with \the [tool]."), - span_notice("You set the bone in [target]'s [affected.name] in place with \the [tool].") + span_notice("You set the bone in [target]'s [affected.name] in place with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -226,7 +232,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!"), - span_warning("Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!") + span_warning("Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(5) return SURGERY_STEP_RETRY @@ -237,7 +244,8 @@ /datum/surgery_step/set_bone/mend_skull/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message( "[user] is beginning piece together [target]'s skull with \the [tool].", - "You are beginning piece together [target]'s skull with \the [tool]." + "You are beginning piece together [target]'s skull with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -245,7 +253,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] sets [target]'s [affected.encased] with \the [tool]."), - span_notice("You set [target]'s [affected.encased] with \the [tool].") + span_notice("You set [target]'s [affected.encased] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -254,7 +263,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, damaging [target]'s face with \the [tool]!"), - span_warning(">Your hand slips, damaging [target]'s face with \the [tool]!") + span_warning(">Your hand slips, damaging [target]'s face with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) var/obj/item/organ/external/head/H = affected H.receive_damage(10) diff --git a/code/modules/surgery/core_removal.dm b/code/modules/surgery/core_removal.dm index eb2be007ddb..8d6f976dd26 100644 --- a/code/modules/surgery/core_removal.dm +++ b/code/modules/surgery/core_removal.dm @@ -35,18 +35,18 @@ time = 1.6 SECONDS /datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) - user.visible_message("[user] starts cutting through [target]'s flesh with \the [tool].", "You start cutting through [target]'s flesh with \the [tool].") + user.visible_message("[user] starts cutting through [target]'s flesh with \the [tool].", "You start cutting through [target]'s flesh with \the [tool].", chat_message_type = MESSAGE_TYPE_COMBAT) return ..() /datum/surgery_step/slime/cut_flesh/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message(span_notice("[user] cuts through [target]'s flesh with \the [tool]."), - span_notice(" You cut through [target]'s flesh with \the [tool], revealing its silky innards.")) + span_notice(" You cut through [target]'s flesh with \the [tool], revealing its silky innards."), chat_message_type = MESSAGE_TYPE_COMBAT) return SURGERY_STEP_CONTINUE /datum/surgery_step/slime/cut_flesh/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message( span_warning("[user]'s hand slips, tearing [target]'s flesh with \the [tool]!"), - span_warning("Your hand slips, tearing [target]'s flesh with \the [tool]!") + span_warning("Your hand slips, tearing [target]'s flesh with \the [tool]!"), chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -66,8 +66,11 @@ /datum/surgery_step/slime/extract_core/end_step(mob/user, mob/living/simple_animal/slime/slime, target_zone, obj/item/tool) if(slime.cores > 0) slime.cores-- - user.visible_message(span_notice("[user] successfully extracts a core from [slime]!"), - span_notice("You successfully extract a core from [slime]. [slime.cores] core\s remaining.")) + user.visible_message( + span_notice("[user] successfully extracts a core from [slime]!"), + span_notice("You successfully extract a core from [slime]. [slime.cores] core\s remaining."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) new slime.coretype(slime.loc) @@ -83,6 +86,7 @@ /datum/surgery_step/slime/extract_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) user.visible_message( span_warning("[user]'s hand slips, tearing [target]'s flesh with \the [tool]!"), - span_warning("Your hand slips, tearing [target]'s flesh with \the [tool]!") + span_warning("Your hand slips, tearing [target]'s flesh with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index db926fbaece..272b4e8a27a 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -18,7 +18,8 @@ /datum/surgery_step/insert_pill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( "[user] begins to wedge \the [tool] in [target]'s [parse_zone(target_zone)].", - span_notice("You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]...") + span_notice("You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]..."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -39,7 +40,11 @@ P.name = "Activate Pill ([tool.name])" P.Grant(target) - user.visible_message("[user] wedges \the [tool] into [target]'s [parse_zone(target_zone)]!", span_notice("You wedge [tool] into [target]'s [parse_zone(target_zone)].")) + user.visible_message( + "[user] wedges \the [tool] into [target]'s [parse_zone(target_zone)]!", + span_notice("You wedge [tool] into [target]'s [parse_zone(target_zone)]."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return SURGERY_STEP_CONTINUE /datum/action/item_action/hands_free/activate_pill diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm index 6741b5048f3..c190d5203f2 100644 --- a/code/modules/surgery/encased.dm +++ b/code/modules/surgery/encased.dm @@ -31,7 +31,8 @@ user.visible_message( span_notice("[user] has cut [target]'s [affected.encased] open with \the [tool]."), - span_notice("You have cut [target]'s [affected.encased] open with \the [tool].") + span_notice("You have cut [target]'s [affected.encased] open with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_ORGANIC_ENCASED_OPEN affected.fracture(silent = TRUE) @@ -42,7 +43,8 @@ user.visible_message( span_warning("[user]'s hand slips, cracking [target]'s [affected.encased] with \the [tool]!"), - span_warning("Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!") + span_warning("Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(20) @@ -66,7 +68,8 @@ user.visible_message( "[user] starts to force open the [affected.encased] in [target]'s [affected.name] with \the [tool].", - "You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]." + "You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Something hurts horribly in your [affected.name]!") return ..() @@ -77,7 +80,8 @@ user.visible_message( span_notice("[user] forces open [target]'s [affected.encased] with \the [tool]."), - span_notice("You force open [target]'s [affected.encased] with \the [tool].") + span_notice("You force open [target]'s [affected.encased] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_ORGANIC_ENCASED_OPEN @@ -89,7 +93,8 @@ user.visible_message( span_warning("[user]'s hand slips, cracking [target]'s [affected.encased]!"), - span_warning("Your hand slips, cracking [target]'s [affected.encased]!") + span_warning("Your hand slips, cracking [target]'s [affected.encased]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(20) @@ -112,7 +117,8 @@ user.visible_message( "[user] starts bending [target]'s [affected.encased] back into place with \the [tool].", - "You start bending [target]'s [affected.encased] back into place with \the [tool]." + "You start bending [target]'s [affected.encased] back into place with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Something hurts horribly in your [affected.name]!") return ..() @@ -122,7 +128,8 @@ user.visible_message( span_notice("[user] bends [target]'s [affected.encased] back into place with \the [tool]."), - span_notice("You bend [target]'s [affected.encased] back into place with \the [tool].") + span_notice("You bend [target]'s [affected.encased] back into place with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -132,7 +139,8 @@ user.visible_message( span_warning("[user]'s hand slips, bending [target]'s [affected.encased] the wrong way!"), - span_warning("Your hand slips, bending [target]'s [affected.encased] the wrong way!") + span_warning("Your hand slips, bending [target]'s [affected.encased] the wrong way!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(20) @@ -154,7 +162,8 @@ user.visible_message( "[user] starts applying \the [tool] to [target]'s [affected.encased].", - "You start applying \the [tool] to [target]'s [affected.encased]." + "You start applying \the [tool] to [target]'s [affected.encased].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Something hurts horribly in your [affected.name]!") return ..() @@ -164,7 +173,8 @@ user.visible_message( span_notice("[user] applied \the [tool] to [target]'s [affected.encased]."), - span_notice("You applied \the [tool] to [target]'s [affected.encased].") + span_notice("You applied \the [tool] to [target]'s [affected.encased]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.mend_fracture() diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index ecad13ed6e2..c086bf9aca3 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -26,7 +26,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] starts the incision on [target]'s [affected.name] with \the [tool]."), - span_notice("You start the incision on [target]'s [affected.name] with \the [tool].") + span_notice("You start the incision on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!") return ..() @@ -35,7 +36,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has made an incision on [target]'s [affected.name] with \the [tool]."), - span_notice("You have made an incision on [target]'s [affected.name] with \the [tool].") + span_notice("You have made an incision on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_ORGANIC_OPEN return SURGERY_STEP_CONTINUE @@ -44,7 +46,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, slicing open [target]'s [affected.name] in a wrong spot with \the [tool]!"), - span_warning("Your hand slips, slicing open [target]'s [affected.name] in a wrong spot with \the [tool]!") + span_warning("Your hand slips, slicing open [target]'s [affected.name] in a wrong spot with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(10) return SURGERY_STEP_RETRY @@ -67,7 +70,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts clamping bleeders in [target]'s [affected.name] with \the [tool].", - "You start clamping bleeders in [target]'s [affected.name] with \the [tool]." + "You start clamping bleeders in [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("The pain in your [affected.name] is maddening!") return ..() @@ -76,7 +80,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] clamps bleeders in [target]'s [affected.name] with \the [tool]."), - span_notice("You clamp bleeders in [target]'s [affected.name] with \the [tool].") + span_notice("You clamp bleeders in [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) spread_germs_to_organ(affected, user, tool) return SURGERY_STEP_CONTINUE @@ -85,7 +90,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!"), - span_warning("Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!") + span_warning("Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(10) return SURGERY_STEP_RETRY @@ -113,7 +119,7 @@ if(target_zone == BODY_ZONE_PRECISE_GROIN) msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." - user.visible_message(msg, self_msg) + user.visible_message(msg, self_msg, chat_message_type = MESSAGE_TYPE_COMBAT) target.custom_pain("It feels like the skin on your [affected.name] is on fire!") return ..() @@ -127,7 +133,7 @@ if(target_zone == BODY_ZONE_PRECISE_GROIN) msg = span_notice("[user] keeps the incision open on [target]'s lower abdomen with \the [tool].") self_msg = span_notice("You keep the incision open on [target]'s lower abdomen with \the [tool].") - user.visible_message(msg, self_msg) + user.visible_message(msg, self_msg, chat_message_type = MESSAGE_TYPE_COMBAT) affected.open = ORGAN_ORGANIC_ENCASED_OPEN return SURGERY_STEP_CONTINUE @@ -141,7 +147,7 @@ if(target_zone == BODY_ZONE_PRECISE_GROIN) msg = span_warning("[user]'s hand slips, damaging several organs [target]'s lower abdomen with \the [tool]") self_msg = span_warning("Your hand slips, damaging several organs [target]'s lower abdomen with \the [tool]!") - user.visible_message(msg, self_msg) + user.visible_message(msg, self_msg, chat_message_type = MESSAGE_TYPE_COMBAT) target.apply_damage(12, BRUTE, affected, sharp = TRUE) return SURGERY_STEP_RETRY @@ -164,7 +170,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].", - "You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." + "You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Your [affected.name] is being burned!") return ..() @@ -173,7 +180,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] cauterizes the incision on [target]'s [affected.name] with \the [tool]."), - span_notice("You cauterize the incision on [target]'s [affected.name] with \the [tool].") + span_notice("You cauterize the incision on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_CLOSED affected.germ_level = 0 @@ -183,7 +191,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!"), - span_warning("Your hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!") + span_warning("Your hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(3, BURN, affected) return SURGERY_STEP_RETRY @@ -196,7 +205,8 @@ user.visible_message( "[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].", // give a little heads up to the surgeon that they're stopping the surgery prematurely in case that wasn't the intention. - "[span_warning("You are interrupting the current surgery")], beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." + "[span_warning("You are interrupting the current surgery")], beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Your [affected.name] is being burned!") return ..() @@ -217,19 +227,21 @@ /datum/surgery_step/generic/drill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( "[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)].", - span_notice("You begin to drill into the bone in [target]'s [parse_zone(target_zone)]...") + span_notice("You begin to drill into the bone in [target]'s [parse_zone(target_zone)]..."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() /datum/surgery_step/generic/drill/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] drills into [target]'s [parse_zone(target_zone)]!", span_notice("You drill into [target]'s [parse_zone(target_zone)].")) + user.visible_message("[user] drills into [target]'s [parse_zone(target_zone)]!", span_notice("You drill into [target]'s [parse_zone(target_zone)]."), chat_message_type = MESSAGE_TYPE_COMBAT) return SURGERY_STEP_CONTINUE /datum/surgery_step/generic/drill/fail_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s [tool] doesn't get a firm grip and tears at the bone in [target]'s [parse_zone(target_zone)]!"), - span_warning("Your [tool] doesn't get a firm grip and tears at the bone in [target]'s [parse_zone(target_zone)]!") + span_warning("Your [tool] doesn't get a firm grip and tears at the bone in [target]'s [parse_zone(target_zone)]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(15) @@ -251,7 +263,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] is beginning to amputate [target]'s [affected.name] with \the [tool].", - "You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool]." + "You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Your [affected.amputation_point] is being ripped apart!") return ..() @@ -260,7 +273,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] amputates [target]'s [affected.name] at the [affected.amputation_point] with \the [tool]."), - span_notice("You amputate [target]'s [affected.name] with \the [tool].") + span_notice("You amputate [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) add_attack_logs(user, target, "Surgically removed [affected.name]. INTENT: [uppertext(user.a_intent)]")//log it @@ -280,7 +294,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!"), - span_warning("Your hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!") + span_warning("Your hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(30) affected.fracture() diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index c40b680f5b5..0b967081594 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -77,14 +77,16 @@ if(times_repeated >= max_times_to_check) user.visible_message( span_notice("[user] seems to have had enough and stops checking inside [target]."), - span_notice("There doesn't seem to be anything inside, you've checked enough times.") + span_notice("There doesn't seem to be anything inside, you've checked enough times."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_BEGINSTEP_SKIP I = locate(/obj/item/implant) in target user.visible_message( "[user] starts poking around inside [target]'s [affected.name] with \the [tool].", - "You start poking around inside [target]'s [affected.name] with \the [tool]." + "You start poking around inside [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("The pain in your [affected.name] is living hell!") return ..() @@ -95,7 +97,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user] grips onto [target]'s [affected.name] by mistake, tearing it!"), - span_warning("You think you've found something, but you've grabbed onto [target]'s [affected.name] instead, damaging it!") + span_warning("You think you've found something, but you've grabbed onto [target]'s [affected.name] instead, damaging it!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(20) return SURGERY_STEP_RETRY @@ -106,7 +109,8 @@ if(I && prob(80)) //implant removal only works on the chest. user.visible_message( span_notice("[user] takes something out of [target]'s [affected.name] with \the [tool]."), - span_notice("You take \an [I] out of [target]'s [affected.name]s with \the [tool].") + span_notice("You take \an [I] out of [target]'s [affected.name]s with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) I.removed(target) @@ -130,6 +134,7 @@ else user.visible_message( span_notice("[user] could not find anything inside [target]'s [affected.name], and pulls \the [tool] out."), - span_notice("You could not find anything inside [target]'s [affected.name].") + span_notice("You could not find anything inside [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm index 7b3c78b24fe..a8e588d1ef0 100644 --- a/code/modules/surgery/limb_augmentation.dm +++ b/code/modules/surgery/limb_augmentation.dm @@ -41,7 +41,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts augmenting [affected] with [tool].", - "You start augmenting [affected] with [tool]." + "You start augmenting [affected] with [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -50,7 +51,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has finished augmenting [affected] with [tool]."), - span_notice("You augment [affected] with [tool].") + span_notice("You augment [affected] with [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) if(L.part) diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm index 383e276f545..f1e4464bc55 100644 --- a/code/modules/surgery/limb_reattach.dm +++ b/code/modules/surgery/limb_reattach.dm @@ -180,7 +180,8 @@ user.visible_message( "[user] starts attaching [E.name] to [target]'s [E.amputation_point].", - "You start attaching [E.name] to [target]'s [E.amputation_point]." + "You start attaching [E.name] to [target]'s [E.amputation_point].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -188,7 +189,8 @@ var/obj/item/organ/external/E = tool user.visible_message( span_notice("[user] has attached [target]'s [E.name] to the [E.amputation_point]."), - span_notice("You have attached [target]'s [E.name] to the [E.amputation_point].") + span_notice("You have attached [target]'s [E.name] to the [E.amputation_point]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) attach_limb(user, target, E) return SURGERY_STEP_CONTINUE @@ -197,7 +199,8 @@ var/obj/item/organ/external/E = tool user.visible_message( span_alert("[user]'s hand slips, damaging [target]'s [E.amputation_point]!"), - span_alert("Your hand slips, damaging [target]'s [E.amputation_point]!") + span_alert("Your hand slips, damaging [target]'s [E.amputation_point]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(10, BRUTE, null, sharp = TRUE) return SURGERY_STEP_RETRY @@ -257,7 +260,8 @@ var/obj/item/organ/external/E = target.get_organ(target_zone) user.visible_message( "[user] starts connecting tendons and muscles in [target]'s [E.amputation_point] with [tool].", - "You start connecting tendons and muscle in [target]'s [E.amputation_point]." + "You start connecting tendons and muscle in [target]'s [E.amputation_point].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -265,7 +269,8 @@ var/obj/item/organ/external/E = target.get_organ(target_zone) user.visible_message( span_notice("[user] has connected tendons and muscles in [target]'s [E.amputation_point] with [tool]."), - span_notice("You have connected tendons and muscles in [target]'s [E.amputation_point] with [tool].") + span_notice("You have connected tendons and muscles in [target]'s [E.amputation_point] with [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) E.properly_attached = TRUE target.update_body() @@ -277,7 +282,8 @@ var/obj/item/organ/external/E = target.get_organ(target_zone) user.visible_message( span_alert("[user]'s hand slips, damaging [target]'s [E.amputation_point]!"), - span_alert("Your hand slips, damaging [target]'s [E.amputation_point]!") + span_alert("Your hand slips, damaging [target]'s [E.amputation_point]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(10, BRUTE, null, sharp = TRUE) return SURGERY_STEP_RETRY @@ -298,7 +304,8 @@ user.visible_message( "[user] starts attaching \the [tool] to [target].", - "You start attaching \the [tool] to [target]." + "You start attaching \the [tool] to [target].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -306,7 +313,8 @@ var/obj/item/robot_parts/L = tool user.visible_message( span_notice("[user] has attached \the [tool] to [target]."), - span_notice("You have attached \the [tool] to [target].") + span_notice("You have attached \the [tool] to [target]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) if(L.part) @@ -332,7 +340,8 @@ /datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message( span_alert("[user]'s hand slips, damaging [target]'s flesh!"), - span_alert("Your hand slips, damaging [target]'s flesh!") + span_alert("Your hand slips, damaging [target]'s flesh!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(10, BRUTE, null, sharp = TRUE) return SURGERY_STEP_RETRY diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index e1de65b95c6..9197b2a46f1 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -830,14 +830,17 @@ user.visible_message( "[user] starts the incision on [target]'s [target_zone] with [tool].", - "You start the incision on [target]'s [target_zone] with [tool].") + "You start the incision on [target]'s [target_zone] with [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT + ) return ..() /datum/surgery_step/cut_carapace/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( span_notice("[user] has made an incision on [target]'s [target_zone] with [tool]."), - span_notice("You have made an incision on [target]'s [target_zone] with [tool].") + span_notice("You have made an incision on [target]'s [target_zone] with [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -845,7 +848,8 @@ user.visible_message( span_warning("[user]'s hand slips, slicing open [target]'s [target_zone] in a wrong spot with [tool]!"), - span_warning("Your hand slips, slicing open [target]'s [target_zone] in a wrong spot with [tool]!") + span_warning("Your hand slips, slicing open [target]'s [target_zone] in a wrong spot with [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -870,7 +874,7 @@ if(target_zone == BODY_ZONE_PRECISE_GROIN) msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with [tool]." self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with [tool]." - user.visible_message(msg, self_msg) + user.visible_message(msg, self_msg, chat_message_type = MESSAGE_TYPE_COMBAT) return ..() /datum/surgery_step/retract_carapace/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -882,7 +886,7 @@ if(target_zone == BODY_ZONE_PRECISE_GROIN) msg = span_notice("[user] keeps the incision open on [target]'s lower abdomen with [tool].") self_msg = span_notice("You keep the incision open on [target]'s lower abdomen with [tool].") - user.visible_message(msg, self_msg) + user.visible_message(msg, self_msg, chat_message_type = MESSAGE_TYPE_COMBAT) return SURGERY_STEP_CONTINUE /datum/surgery_step/generic/retract_carapace/fail_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -894,7 +898,7 @@ if(target_zone == BODY_ZONE_PRECISE_GROIN) msg = span_warning("[user]'s hand slips, damaging several organs [target]'s lower abdomen with [tool]") self_msg = span_warning("Your hand slips, damaging several organs [target]'s lower abdomen with [tool]!") - user.visible_message(msg, self_msg) + user.visible_message(msg, self_msg, chat_message_type = MESSAGE_TYPE_COMBAT) return SURGERY_STEP_RETRY // redefine cauterize for every step because of course it relies on get_organ() @@ -925,7 +929,8 @@ var/zone = zone_name(target_zone) user.visible_message( "[user] is beginning to cauterize the incision on [target]'s [zone] with \the [tool].", - "You are beginning to cauterize the incision on [target]'s [zone] with \the [tool]." + "You are beginning to cauterize the incision on [target]'s [zone] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Your [zone] is being burned!") return ..() @@ -934,7 +939,8 @@ var/zone = zone_name(target_zone) user.visible_message( span_notice("[user] cauterizes the incision on [target]'s [zone] with \the [tool]."), - span_notice("You cauterize the incision on [target]'s [zone] with \the [tool].") + span_notice("You cauterize the incision on [target]'s [zone] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -942,7 +948,8 @@ var/zone = zone_name(target_zone) user.visible_message( span_warning("[user]'s hand slips, leaving a small burn on [target]'s [zone] with \the [tool]!"), - span_warning("Your hand slips, leaving a small burn on [target]'s [zone] with \the [tool]!") + span_warning("Your hand slips, leaving a small burn on [target]'s [zone] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(3, BURN, target_zone) return SURGERY_STEP_RETRY diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 1d943400b69..ab4d6c9c6e0 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -179,7 +179,8 @@ user.visible_message( "[user] starts patching the damaged vein in [target]'s [affected.name] with \the [tool].", - "You start patching the damaged vein in [target]'s [affected.name] with \the [tool]." + "You start patching the damaged vein in [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("The pain in your [affected.name] is unbearable!") return ..() @@ -189,7 +190,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has patched the damaged vein in [target]'s [affected.name] with \the [tool]."), - span_notice("You have patched the damaged vein in [target]'s [affected.name] with \the [tool].") + span_notice("You have patched the damaged vein in [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.stop_internal_bleeding() @@ -203,7 +205,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"), - span_warning("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!") + span_warning("Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(5, 0) @@ -226,7 +229,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].", - "You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]." + "You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("The pain in [affected.name] is unbearable!") return ..() @@ -235,7 +239,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has cut away necrotic tissue in [target]'s [affected.name] with \the [tool]."), - span_notice("You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool].") + span_notice("You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_ORGANIC_OPEN @@ -245,7 +250,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!"), - span_warning("Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!") + span_warning("Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.receive_damage(20) @@ -277,7 +283,9 @@ if(!container.reagents.has_reagent("mitocholide")) user.visible_message( "[user] looks at \the [tool] and ponders.", - "You are not sure if \the [tool] contains the mitocholide necessary to treat the necrosis.") + "You are not sure if \the [tool] contains the mitocholide necessary to treat the necrosis.", + chat_message_type = MESSAGE_TYPE_COMBAT + ) return FALSE /datum/surgery_step/treat_necrosis/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -290,7 +298,8 @@ user.visible_message( "[user] starts applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].", - "You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool]." + "You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Something in your [affected.name] is causing you a lot of pain!") return ..() @@ -313,7 +322,8 @@ user.visible_message( span_notice("[user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name]"), - span_notice("You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool].") + span_notice("You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE @@ -331,7 +341,8 @@ user.visible_message( span_warning("[user]'s hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!"), - span_warning("Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!") + span_warning("Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) //no damage or anything, just wastes medicine @@ -397,16 +408,18 @@ var/obj/item/organ/internal/brain = target.get_organ_slot(INTERNAL_ORGAN_BRAIN) user.visible_message( "[user] reaches into [target]'s head with [tool].", - span_notice("You begin aligning [tool]'s light to the tumor on [target]'s brain...") + span_notice("You begin aligning [tool]'s light to the tumor on [target]'s brain..."), + chat_message_type = MESSAGE_TYPE_COMBAT ) - to_chat(target, span_boldannounce("A small part of your [brain.parent_organ_zone] pulses with agony as the light impacts it.")) + to_chat(target, span_boldannounceic("A small part of your [brain.parent_organ_zone] pulses with agony as the light impacts it.")) return ..() /datum/surgery_step/internal/dethrall/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) if(isshadowlinglesser(target)) //Empowered thralls cannot be deconverted to_chat(target, span_shadowling("NOT LIKE THIS!")) user.visible_message(span_warning("[target] suddenly slams upward and knocks down [user]!"), \ - span_userdanger("[target] suddenly bolts up and slams you with tremendous force!")) + span_userdanger("[target] suddenly bolts up and slams you with tremendous force!"), + chat_message_type = MESSAGE_TYPE_COMBAT) user.SetSleeping(0) user.SetStunned(0) user.SetWeakened(0) @@ -426,9 +439,9 @@ return SURGERY_STEP_INCOMPLETE var/obj/item/organ/internal/brain/B = target.get_int_organ(/obj/item/organ/internal/brain) var/obj/item/organ/external/E = target.get_organ(check_zone(B.parent_organ_zone)) - user.visible_message("[user] shines light onto the tumor in [target]'s [E]!", span_notice("You cleanse the contamination from [target]'s brain!")) + user.visible_message("[user] shines light onto the tumor in [target]'s [E]!", span_notice("You cleanse the contamination from [target]'s brain!"), chat_message_type = MESSAGE_TYPE_COMBAT) if(target.vision_type) //Turns off their darksight if it's still active. - to_chat(target, span_boldannounce("Your eyes are suddenly wrought with immense pain as your darksight is forcibly dismissed!")) + to_chat(target, span_boldannounceic("Your eyes are suddenly wrought with immense pain as your darksight is forcibly dismissed!")) target.set_vision_override(null) SSticker.mode.remove_thrall(target.mind, 0) target.visible_message(span_warning("A strange black mass falls from [target]'s [E]!")) diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index e9a05a59ef6..3874b45bee6 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -17,7 +17,11 @@ time = 6.4 SECONDS /datum/surgery_step/reshape_face/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to alter [target]'s appearance.", span_notice("You begin to alter [target]'s appearance...")) + user.visible_message( + "[user] begins to alter [target]'s appearance.", + span_notice("You begin to alter [target]'s appearance..."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return ..() /datum/surgery_step/reshape_face/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -26,7 +30,8 @@ if(head.undisfigure()) user.visible_message( "[user] successfully restores [target]'s appearance!", - span_notice("You successfully restore [target]'s appearance.") + span_notice("You successfully restore [target]'s appearance."), + chat_message_type = MESSAGE_TYPE_COMBAT ) else var/list/names = list() @@ -66,7 +71,11 @@ var/oldname = target.real_name target.real_name = chosen_name var/newname = target.real_name //something about how the code handles names required that I use this instead of target.real_name - user.visible_message("[user] alters [oldname]'s appearance completely, [target.p_they()] [target.p_are()] now [newname]!", span_notice("You alter [oldname]'s appearance completely, [target.p_they()] [target.p_are()] now [newname].")) + user.visible_message( + "[user] alters [oldname]'s appearance completely, [target.p_they()] [target.p_are()] now [newname]!", + span_notice("You alter [oldname]'s appearance completely, [target.p_they()] [target.p_are()] now [newname]."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) target.sec_hud_set_ID() return SURGERY_STEP_CONTINUE @@ -75,7 +84,8 @@ var/obj/item/organ/external/head/head = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s hand slips, tearing skin on [target]'s face with [tool]!"), - span_warning("Your hand slips, tearing skin on [target]'s face with [tool]!") + span_warning("Your hand slips, tearing skin on [target]'s face with [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(10, BRUTE, head, sharp = TRUE) return SURGERY_STEP_RETRY diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index 524ef602d77..3830406125b 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -52,9 +52,17 @@ /datum/surgery_step/remove_object/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) L = surgery.organ_to_manipulate if(L) - user.visible_message("[user] looks for objects embedded in [target]'s [parse_zone(user.zone_selected)].", span_notice("You look for objects embedded in [target]'s [parse_zone(user.zone_selected)]...")) + user.visible_message( + "[user] looks for objects embedded in [target]'s [parse_zone(user.zone_selected)].", + span_notice("You look for objects embedded in [target]'s [parse_zone(user.zone_selected)]..."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) else - user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", span_notice("You look for [target]'s [parse_zone(user.zone_selected)]...")) + user.visible_message( + "[user] looks for [target]'s [parse_zone(user.zone_selected)].", + span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return ..() @@ -62,7 +70,10 @@ if(L) var/objects_removed = L.remove_all_embedded_objects() if(objects_removed) - user.visible_message("[user] sucessfully removes [objects_removed] embedded objects from [target]'s [L.name]!", span_notice("You successfully remove [objects_removed] embedded objects from [target]'s [L.name].")) + user.visible_message( + "[user] sucessfully removes [objects_removed] embedded objects from [target]'s [L.name]!", + span_notice("You successfully remove [objects_removed] embedded objects from [target]'s [L.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT) else to_chat(user, span_warning("You find no objects embedded in [target]'s [L.name]!")) diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 44cd528a0db..95c4fe02c60 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -174,7 +174,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].", - "You start to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool]." + "You start to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -182,7 +183,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has opened the maintenance hatch on [target]'s [affected.name] with \the [tool]."), - span_notice("You have opened the maintenance hatch on [target]'s [affected.name] with \the [tool].") + span_notice("You have opened the maintenance hatch on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_SYNTHETIC_LOOSENED return SURGERY_STEP_CONTINUE @@ -191,7 +193,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s [tool.name] slips, failing to unscrew [target]'s [affected.name]."), - span_warning("Your [tool] slips, failing to unscrew [target]'s [affected.name].") + span_warning("Your [tool] slips, failing to unscrew [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -209,7 +212,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].", - "You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool]." + "You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -217,7 +221,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] opens the maintenance hatch on [target]'s [affected.name] with \the [tool]."), - span_notice("You open the maintenance hatch on [target]'s [affected.name] with \the [tool].") + span_notice("You open the maintenance hatch on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_SYNTHETIC_OPEN return SURGERY_STEP_CONTINUE @@ -226,7 +231,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s [tool.name] slips, failing to open the hatch on [target]'s [affected.name]."), - span_warning("Your [tool] slips, failing to open the hatch on [target]'s [affected.name].") + span_warning("Your [tool] slips, failing to open the hatch on [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -244,7 +250,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] begins to close and secure the hatch on [target]'s [affected.name] with \the [tool].", - "You begin to close and secure the hatch on [target]'s [affected.name] with \the [tool]." + "You begin to close and secure the hatch on [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -252,7 +259,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] closes and secures the hatch on [target]'s [affected.name] with \the [tool]."), - span_notice("You close and secure the hatch on [target]'s [affected.name] with \the [tool].") + span_notice("You close and secure the hatch on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) tool.play_tool_sound(target) affected.open = ORGAN_CLOSED @@ -261,7 +269,9 @@ /datum/surgery_step/robotics/external/close_hatch/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message(span_warning(" [user]'s [tool.name] slips, failing to close the hatch on [target]'s [affected.name]."), - span_warning(" Your [tool.name] slips, failing to close the hatch on [target]'s [affected.name].")) + span_warning(" Your [tool.name] slips, failing to close the hatch on [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return SURGERY_STEP_RETRY /datum/surgery_step/robotics/external/close_hatch/premature @@ -271,7 +281,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] begins to close and secure the hatch on [target]'s [affected.name] with \the [tool].", - span_warning("You are interrupting the current surgery, beginning to close and secure the hatch on [target]'s [affected.name] with \the [tool].") + span_warning("You are interrupting the current surgery, beginning to close and secure the hatch on [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -300,7 +311,8 @@ C.use(3) user.visible_message( "[user] begins to splice new cabling into [target]'s [affected.name].", - "You begin to splice new cabling into [target]'s [affected.name]." + "You begin to splice new cabling into [target]'s [affected.name].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -310,7 +322,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice(" [user] finishes splicing cable into [target]'s [affected.name]."), - span_notice(" You finishes splicing new cable into [target]'s [affected.name].") + span_notice(" You finishes splicing new cable into [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.heal_damage(0, rand(30, 50), 1, 1) if(affected.burn_dam) @@ -322,7 +335,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning(" [user] causes a short circuit in [target]'s [affected.name]!"), - span_warning(" You cause a short circuit in [target]'s [affected.name]!") + span_warning(" You cause a short circuit in [target]'s [affected.name]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(rand(5, 10), BURN, affected) return SURGERY_STEP_RETRY @@ -344,7 +358,8 @@ return SURGERY_BEGINSTEP_SKIP user.visible_message( "[user] begins to patch damage to [target]'s [affected.name]'s support structure with \the [tool].", - "You begin to patch damage to [target]'s [affected.name]'s support structure with \the [tool]." + "You begin to patch damage to [target]'s [affected.name]'s support structure with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -353,7 +368,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice(" [user] finishes patching damage to [target]'s [affected.name] with \the [tool]."), - span_notice(" You finish patching damage to [target]'s [affected.name] with \the [tool].") + span_notice(" You finish patching damage to [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.heal_damage(rand(30, 50), 0, 1, 1) affected.undisfigure() @@ -367,7 +383,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_warning("[user]'s [tool.name] slips, damaging the internal structure of [target]'s [affected.name]."), - span_warning("Your [tool.name] slips, damaging the internal structure of [target]'s [affected.name].") + span_warning("Your [tool.name] slips, damaging the internal structure of [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.apply_damage(rand(5, 10), BURN, affected) return SURGERY_STEP_RETRY @@ -407,7 +424,8 @@ if(organ.has_damage() && organ.is_robotic()) user.visible_message( "[user] starts mending the damage to [target]'s [organ.name]'s mechanisms.", - "You start mending the damage to [target]'s [organ.name]'s mechanisms." + "You start mending the damage to [target]'s [organ.name]'s mechanisms.", + chat_message_type = MESSAGE_TYPE_COMBAT ) found_damaged_organ = TRUE @@ -427,7 +445,8 @@ if(organ.damage && organ.is_robotic()) user.visible_message( span_notice(" [user] repairs [target]'s [organ.name] with [tool]."), - span_notice(" You repair [target]'s [organ.name] with [tool].") + span_notice(" You repair [target]'s [organ.name] with [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) organ.damage = 0 organ.surgeryize() @@ -438,7 +457,8 @@ user.visible_message( span_warning("[user]'s hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!"), - span_warning("Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!") + span_warning("Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) target.adjustToxLoss(5) @@ -477,7 +497,8 @@ user.visible_message( "[user] begins reattaching [target]'s [tool].", - "You start reattaching [target]'s [tool]." + "You start reattaching [target]'s [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) if(affected) target.custom_pain("Someone's rooting around in your [affected.name]!") @@ -494,14 +515,16 @@ I.insert(target) user.visible_message( span_notice("[user] has reattached [target]'s [I]."), - span_notice("You have reattached [target]'s [I].") + span_notice("You have reattached [target]'s [I]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() /datum/surgery_step/robotics/manipulate_robotic_organs/implant/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( span_warning("[user]'s hand slips, disconnecting \the [tool]."), - span_warning("Your hand slips, disconnecting \the [tool].") + span_warning("Your hand slips, disconnecting \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -534,7 +557,8 @@ return SURGERY_BEGINSTEP_SKIP user.visible_message( "[user] starts to decouple [target]'s [I] with \the [tool].", - "You start to decouple [target]'s [I] with \the [tool]." + "You start to decouple [target]'s [I] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("The pain in your [affected.name] is living hell!") @@ -547,13 +571,15 @@ if(!I || I.owner != target) user.visible_message( "[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!", - span_notice("You can't extract anything from [target]'s [parse_zone(target_zone)]!") + span_notice("You can't extract anything from [target]'s [parse_zone(target_zone)]!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_CONTINUE user.visible_message( span_notice(" [user] has decoupled [target]'s [I] with \the [tool]."), - span_notice(" You have decoupled [target]'s [I] with \the [tool].") + span_notice(" You have decoupled [target]'s [I] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) add_attack_logs(user, target, "Surgically removed [I.name]. INTENT: [uppertext(user.a_intent)]") @@ -571,7 +597,8 @@ /datum/surgery_step/robotics/manipulate_robotic_organs/extract/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( span_warning(" [user]'s hand slips, disconnecting \the [tool]."), - span_warning(" Your hand slips, disconnecting \the [tool].") + span_warning(" Your hand slips, disconnecting \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -618,7 +645,8 @@ user.visible_message( "[user] starts installing \the [tool] into [target]'s [affected.name].", - "You start installing \the [tool] into [target]'s [affected.name]." + "You start installing \the [tool] into [target]'s [affected.name].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -627,7 +655,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has installed \the [tool] into [target]'s [affected.name]."), - span_notice("You have installed \the [tool] into [target]'s [affected.name].") + span_notice("You have installed \the [tool] into [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) var/obj/item/mmi/M = tool @@ -639,7 +668,8 @@ /datum/surgery_step/robotics/manipulate_robotic_organs/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( span_warning("[user]'s hand slips!."), - span_warning("Your hand slips!") + span_warning("Your hand slips!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -656,7 +686,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] starts to decouple [target]'s [affected.name] with \the [tool].", - "You start to decouple [target]'s [affected.name] with \the [tool]." + "You start to decouple [target]'s [affected.name] with \the [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) target.custom_pain("Your [affected.amputation_point] is being ripped apart!") @@ -666,7 +697,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( span_notice("[user] has decoupled [target]'s [affected.name] with \the [tool]."), - span_notice("You have decoupled [target]'s [affected.name] with \the [tool].") + span_notice("You have decoupled [target]'s [affected.name] with \the [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) @@ -683,7 +715,8 @@ user.visible_message( span_warning("[user]'s hand slips!"), - span_warning("Your hand slips!") + span_warning("Your hand slips!"), + chat_message_type = MESSAGE_TYPE_COMBAT ) return SURGERY_STEP_RETRY @@ -696,7 +729,8 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( "[user] begins to reprogram the appearance of [target]'s [affected.name] with [tool].", - "You begin to reprogram the appearance of [target]'s [affected.name] with [tool]." + "You begin to reprogram the appearance of [target]'s [affected.name] with [tool].", + chat_message_type = MESSAGE_TYPE_COMBAT ) return ..() @@ -715,13 +749,17 @@ target.UpdateDamageIcon() user.visible_message( span_notice("[user] reprograms the appearance of [target]'s [affected.name] with [tool]."), - span_notice("You reprogram the appearance of [target]'s [affected.name] with [tool].") + span_notice("You reprogram the appearance of [target]'s [affected.name] with [tool]."), + chat_message_type = MESSAGE_TYPE_COMBAT ) affected.open = ORGAN_CLOSED return SURGERY_STEP_CONTINUE /datum/surgery_step/robotics/external/customize_appearance/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message(span_warning(" [user]'s [tool.name] slips, failing to reprogram [target]'s [affected.name]."), - span_warning(" Your [tool.name] slips, failing to reprogram [target]'s [affected.name].")) + user.visible_message( + span_warning(" [user]'s [tool.name] slips, failing to reprogram [target]'s [affected.name]."), + span_warning(" Your [tool.name] slips, failing to reprogram [target]'s [affected.name]."), + chat_message_type = MESSAGE_TYPE_COMBAT + ) return SURGERY_STEP_RETRY diff --git a/code/modules/vote/vote_datum.dm b/code/modules/vote/vote_datum.dm index 7e728bb9b23..126da0db36d 100644 --- a/code/modules/vote/vote_datum.dm +++ b/code/modules/vote/vote_datum.dm @@ -208,7 +208,7 @@ if(params["target"] in choices) voted[usr.ckey] = params["target"] else - message_admins("\[EXPLOIT] User [key_name_admin(usr)] spoofed a vote in the vote panel!") + message_admins("\[EXPLOIT] User [key_name_admin(usr)] spoofed a vote in the vote panel!") if("cancel") if(check_rights(R_ADMIN)) to_chat(world, "The vote has been canceled.") diff --git a/paradise.dme b/paradise.dme index ee0635d6645..55443505da6 100644 --- a/paradise.dme +++ b/paradise.dme @@ -405,6 +405,7 @@ #include "code\datums\components\boss_music.dm" #include "code\datums\components\caltrop.dm" #include "code\datums\components\chasm.dm" +#include "code\datums\components\codeword_hearing.dm" #include "code\datums\components\combo_attacks.dm" #include "code\datums\components\connect_loc_behalf.dm" #include "code\datums\components\connect_mob_behalf.dm"