diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm
index 82a80822e6..171a7271a8 100644
--- a/code/game/machinery/telecomms/logbrowser.dm
+++ b/code/game/machinery/telecomms/logbrowser.dm
@@ -63,64 +63,37 @@
// If the log is a speech file
if(C.input_type == "Speech File")
- dat += "
[C.name] \[X\]
"
+ dat += "[C.name] \[X\]
"
// -- Determine race of orator --
- var/race // The actual race of the mob
- var/language = "Human" // MMIs, pAIs, Cyborgs and humans all speak Human
- var/mobtype = C.parameters["mobtype"]
- var/mob/M = new mobtype
-
- if(ishuman(M) || isbrain(M))
- var/mob/living/carbon/human/H = M
- race = "[H.species.name]"
-
-
- else if(ismonkey(M))
- race = "Monkey"
- language = race
-
- else if(issilicon(M) || C.parameters["job"] == "AI") // sometimes M gets deleted prematurely for AIs... just check the job
- race = "Artificial Life"
-
- else if(isslime(M)) // NT knows a lot about slimes, but not aliens. Can identify slimes
- race = "slime"
- language = race
-
- else if(isanimal(M))
- race = "Domestic Animal"
- language = race
-
- else
- race = "Unidentifiable"
- language = race
-
- del(M)
+ var/race = C.parameters["race"] // The actual race of the mob
+ var/language = C.parameters["language"] // The language spoken, or null/""
// -- If the orator is a human, or universal translate is active, OR mob has universal speech on --
- if(language == "Human" || universal_translate || C.parameters["uspeech"])
- dat += "Data type: [C.input_type]
"
- dat += "Source: [C.parameters["name"]] (Job: [C.parameters["job"]])
"
- dat += "Class: [race]
"
- dat += "Contents: \"[C.parameters["message"]]\"
"
-
+ if(universal_translate || C.parameters["uspeech"] || C.parameters["intelligible"])
+ dat += "Data type: [C.input_type]
"
+ dat += "Source: [C.parameters["name"]] (Job: [C.parameters["job"]])
"
+ dat += "Class: [race]
"
+ dat += "Contents: \"[C.parameters["message"]]\"
"
+ if(language)
+ dat += "Language: [language]
"
// -- Orator is not human and universal translate not active --
else
- dat += "Data type: Audio File
"
- dat += "Source: Unidentifiable
"
- dat += "Class: [race]
"
- dat += "Contents: Unintelligble
"
+ dat += "Data type: Audio File
"
+ dat += "Source: Unidentifiable
"
+ dat += "Class: [race]
"
+ dat += "Contents: Unintelligble
"
dat += "
"
else if(C.input_type == "Execution Error")
- dat += "[C.name] \[X\]
"
- dat += "Output: \"[C.parameters["message"]]\"
"
+ dat += "[C.name] \[X\]
"
+ dat += "Output: \"[C.parameters["message"]]\"
"
dat += "
"
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index fe638408fc..0b75343169 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -535,6 +535,28 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
log.parameters["message"] = signal.data["message"]
log.parameters["name"] = signal.data["name"]
log.parameters["realname"] = signal.data["realname"]
+ log.parameters["language"] = signal.data["language"]
+
+ var/race = "unknown"
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ race = "[H.species.name]"
+ log.parameters["intelligible"] = 1
+ else if(isbrain(M))
+ var/mob/living/carbon/brain/B = M
+ race = "[B.species.name]"
+ log.parameters["intelligible"] = 1
+ else if(ismonkey(M))
+ race = "Monkey"
+ else if(issilicon(M))
+ race = "Artificial Life"
+ log.parameters["intelligible"] = 1
+ else if(isslime(M))
+ race = "Slime"
+ else if(isanimal(M))
+ race = "Domestic Animal"
+
+ log.parameters["race"] = race
if(!istype(M, /mob/new_player) && M)
log.parameters["uspeech"] = M.universal_speak