diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index 40b917b40970..26021eb3e5b5 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -231,12 +231,7 @@
to_chat(src, span_warning("Ваша гарнитура вибрирует, но вы не слышите ни звука!"))
else
if(track)
- // The track already contains a name, so we don't print speaker_name
- // But we need part_a before the name, which already exists in the track
- // We split the track into a label and a name
- var/prefix = copytext(track, 1, findtext(track, speaker_name))
- var/rest = copytext(track, findtext(track, speaker_name))
- to_chat(src, "[prefix][part_a][rest][part_b][message]")
+ to_chat(src, "[part_a][track][message]")
else
to_chat(src, "[part_a][speaker_name][part_b][message]")
diff --git a/code/modules/mob/living/silicon/ai/ai_say.dm b/code/modules/mob/living/silicon/ai/ai_say.dm
index 70ad6eaa2bbb..aebb963001b6 100644
--- a/code/modules/mob/living/silicon/ai/ai_say.dm
+++ b/code/modules/mob/living/silicon/ai/ai_say.dm
@@ -40,21 +40,18 @@
var/track = ""
var/mob/mob_to_track = null
- if(changed_voice)
- if(impersonating)
- mob_to_track = impersonating
- else
- track = "[speaker_name] ([jobname])"
+ speaker_name = html_encode(speaker_name)
+ jobname = html_encode(jobname)
+ if(changed_voice && impersonating)
+ mob_to_track = impersonating
+ else if(isbot(follow_target))
+ track = "[speaker_name] ([jobname])"
else
- if(isbot(follow_target))
- track = "[speaker_name] ([jobname])"
- else
- mob_to_track = speaker
+ mob_to_track = speaker
if(mob_to_track)
track = "[speaker_name] ([jobname])"
track += " \[Open\]"
-
return track
// MARK: AI VOX Announcements