diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 104fbf1cdb..09911abf2c 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -49,9 +49,12 @@ rcd light flash thingy on matter drain
set category = "Malfunction"
set name = "Upgrade Turrets"
usr.verbs -= /client/proc/upgrade_turrets
- for(var/obj/machinery/turret/turret in player_list)
- turret.health += 30
- turret.shot_delay = 20
+ for(var/obj/machinery/porta_turret/turret in machines)
+ var/turf/T = get_turf(turret)
+ if(T.z in config.station_levels)
+ // Increase health by 37.5% of original max, decrease delays between shots to 66%
+ turret.health += initial(turret.health) * 3 / 8
+ turret.shot_delay = initial(turret.shot_delay) * 2 / 3
/datum/AI_Module/large/disable_rcd
module_name = "RCD disable"
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index dc74f0272c..1e9405cbeb 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -20,26 +20,14 @@
throw_speed = 4
throw_range = 20
-/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says")
+/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says", datum/language/speaking=null)
if(recording)
- //var/ending = copytext(msg, length(msg))
- timestamp+= timerecorded
- /*
- if(M.stuttering)
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] stammers, \"[msg]\""
- return
- if(M.getBrainLoss() >= 60)
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] gibbers, \"[msg]\""
- return
- if(ending == "?")
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] asks, \"[msg]\""
- return
- else if(ending == "!")
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] exclaims, \"[msg]\""
- return
- */
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\""
- return
+ timestamp += timerecorded
+
+ if(speaking)
+ storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [speaking.format_message_plain(msg, verb)]"
+ else
+ storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\""
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 51a2306082..c51ffbff82 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -186,12 +186,13 @@ var/global/floorIsLava = 0
var/f = 1
for(var/k in all_languages)
var/datum/language/L = all_languages[k]
- if(!f) body += " | "
- else f = 0
- if(L in M.languages)
- body += "[k]"
- else
- body += "[k]"
+ if(!(L.flags & INNATE))
+ if(!f) body += " | "
+ else f = 0
+ if(L in M.languages)
+ body += "[k]"
+ else
+ body += "[k]"
body += {"