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"