diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 9f865aced6..08295836f2 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -691,7 +691,7 @@
return
var/list/speech_bubble_hearers = list()
for(var/mob/M in get_mobs_in_view(7, src))
- M.show_message("[src] [atom_say_verb], \"[message]\"", 2, null, 1)
+ M.show_message("[src] [atom_say_verb], \"[message]\"", 2, null, 1)
if(M.client)
speech_bubble_hearers += M.client
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index 7b8039cb6f..d05d966170 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -41,7 +41,7 @@ var/list/doppler_arrays = list()
var/message = "Explosive disturbance detected - Epicenter at: grid ([x0],[y0]). Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range]. Temporal displacement of tachyons: [took]seconds."
for(var/mob/O in hearers(src, null))
- O.show_message("[src] states coldly, \"[message]\"",2)
+ O.show_message("[src] states coldly, \"[message]\"",2)
/obj/machinery/doppler_array/power_change()
..()
diff --git a/code/modules/casino/casino_prize_vendor.dm b/code/modules/casino/casino_prize_vendor.dm
index 115e51ed48..18ffd62b7d 100644
--- a/code/modules/casino/casino_prize_vendor.dm
+++ b/code/modules/casino/casino_prize_vendor.dm
@@ -344,7 +344,7 @@
return
for(var/mob/O in hearers(src, null))
- O.show_message("\The [src] beeps, \"[message]\"",2)
+ O.show_message("\The [src] beeps, \"[message]\"",2)
return
/obj/machinery/casino_prize_dispenser/process() //Might not need this, but just to be safe for now
diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm
index 9382e8bb0e..b2b793e774 100644
--- a/code/modules/economy/vending.dm
+++ b/code/modules/economy/vending.dm
@@ -737,7 +737,7 @@ GLOBAL_LIST_EMPTY(vending_products)
return
for(var/mob/O in hearers(src, null))
- O.show_message("\The [src] beeps, \"[message]\"",2)
+ O.show_message("\The [src] beeps, \"[message]\"",2)
return
/obj/machinery/vending/power_change()
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index ec732ed787..991ba97fcf 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -38,6 +38,9 @@
raw_msg += (piece + " ")
+ if(!speaker.client)
+ piece = "[piece]"
+
//HTML formatting
if(!SP.speaking) // Catch the most generic case first
piece = "[piece]"
diff --git a/tgui/packages/tgui-panel/chat/constants.ts b/tgui/packages/tgui-panel/chat/constants.ts
index 365bbb1ac9..978e7b72e2 100644
--- a/tgui/packages/tgui-panel/chat/constants.ts
+++ b/tgui/packages/tgui-panel/chat/constants.ts
@@ -57,18 +57,18 @@ export const MESSAGE_TYPES = [
important: true,
},
// Basic types
+ {
+ type: MESSAGE_TYPE_NPCEMOTE, // Needs to be first
+ name: 'NPC Emotes / Says',
+ description: 'In-character emotes and says from NPCs',
+ selector: '.npcemote, .npcsay',
+ },
{
type: MESSAGE_TYPE_LOCALCHAT,
name: 'Local',
description: 'In-character local messages (say, emote, etc)',
selector: '.say, .emote, .emotesubtle',
},
- {
- type: MESSAGE_TYPE_NPCEMOTE,
- name: 'NPC Emotes',
- description: 'In-character emotes from NPCs',
- selector: '.npcemote',
- },
{
type: MESSAGE_TYPE_PLOCALCHAT,
name: 'Local (Pred/Prey)',
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
index 71bfdae0f6..829581874d 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
@@ -371,6 +371,7 @@ img.icon.bigicon {
.emote,
.emotesubtle,
.npcemote,
+.npcsay,
.infoplain,
.oocplain,
.warningplain,
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
index 23b62dcb63..f9147999bb 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
@@ -389,6 +389,7 @@ img.icon.bigicon {
.emote,
.emotesubtle,
.npcemote,
+.npcsay,
.infoplain,
.oocplain,
.warningplain,
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-vchatdark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-vchatdark.scss
index 88c7ad08cb..f766b42a74 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-vchatdark.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-vchatdark.scss
@@ -371,6 +371,7 @@ img.icon.bigicon {
.emote,
.emotesubtle,
.npcemote,
+.npcsay,
.infoplain,
.oocplain,
.warningplain,
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-vchatlight.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-vchatlight.scss
index dd1d02f60a..8aaaf9bec0 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-vchatlight.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-vchatlight.scss
@@ -389,6 +389,7 @@ img.icon.bigicon {
.emote,
.emotesubtle,
.npcemote,
+.npcsay,
.infoplain,
.oocplain,
.warningplain,