diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index ae8c888831d..415f604758a 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -234,7 +234,7 @@ var/global/list/default_medbay_channels = list( add_fingerprint(usr) -/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = config.contact_levels) //BS12 EDIT +/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = config.contact_levels, var/role = "Unknown") //BS12 EDIT var/datum/radio_frequency/connection = null if(channel && channels && channels.len > 0) if (channel == "department") @@ -248,9 +248,9 @@ var/global/list/default_medbay_channels = list( return if (!connection) return - - var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(src, null, null, 1) - A.rename_character(A.real_name, from) + var/mob/living/automatedannouncer/A = new /mob/living/automatedannouncer(src) + A.name = from + A.role = role Broadcast_Message(connection, A, 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", @@ -258,6 +258,12 @@ var/global/list/default_medbay_channels = list( qdel(A) return +// Just a dummy mob used for making announcements, so we don't create AIs to do this +// I'm not sure who thought that was a good idea. -- Crazylemon +/mob/living/automatedannouncer + var/role = "" + universal_speak = 1 + // Interprets the message mode when talking into a radio, possibly returning a connection datum /obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode) // If a channel isn't specified, send to common. diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index c3ca5a602c9..47004016a2b 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -151,6 +151,9 @@ jobname = "Cyborg" else if (ispAI(speaker)) jobname = "Personal AI" + else if (isAutoAnnouncer(speaker)) + var/mob/living/automatedannouncer/AA = speaker + jobname = AA.role else jobname = "Unknown" diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 468a6cfe9df..de246f0f667 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -179,6 +179,11 @@ proc/isovermind(A) return 1 return 0 +/proc/isAutoAnnouncer(A) + if(istype(A, /mob/living/automatedannouncer)) + return 1 + return 0 + /proc/isorgan(A) if(istype(A, /obj/item/organ/external)) return 1