diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index aa848a1b097..520f2ff4fb7 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -123,6 +123,13 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ rendered = "Holopad received, [name_used] [verb], \"[text]\"" master.show_message(rendered, 2) return + +/obj/machinery/hologram/holopad/hear_message(mob/living/M, text) + if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something. + var/name_used = M.GetVoice() + var/rendered = "Holopad received, [name_used] [text]" + master.show_message(rendered, 2) + return /obj/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc) hologram = new(T)//Spawn a blank effect at the location. diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 11f706f01ba..6d7c7a26ed6 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -25,28 +25,34 @@ if(spamcheck) user << "\red \The [src] needs to recharge!" return - - var/message = sanitize(copytext(input(user, "Shout a message?", "Megaphone", null) as text,1,MAX_MESSAGE_LEN)) + + var/message = input(user, "Shout a message:", "Megaphone") as text|null + if(!message) + return + message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN)) if(!message) return message = capitalize(message) if ((src.loc == user && usr.stat == 0)) if(emagged) if(insults) - for(var/mob/O in (viewers(user))) - O.show_message("[user] broadcasts, \"[pick(insultmsg)]\"",2) // 2 stands for hearable message + saymsg(user, pick(insultmsg)) insults-- else user << "\red *BZZZZzzzzzt*" else - for(var/mob/O in (viewers(user))) - O.show_message("[user] broadcasts, \"[message]\"",2) // 2 stands for hearable message + saymsg(user, message) spamcheck = 1 spawn(20) spamcheck = 0 return +/obj/item/device/megaphone/proc/saymsg(mob/living/user as mob, message) + audible_message("[user] broadcasts, \"[message]\"", hearing_distance = 14) + for(var/obj/O in oview(14, get_turf(src))) + O.hear_talk(user, "[message]") + /obj/item/device/megaphone/emag_act(user as mob) if(!emagged) user << "\red You overload \the [src]'s voice synthesizer." diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 2ee3d7e88ac..448af414628 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -478,6 +478,11 @@ var/global/list/default_medbay_channels = list( if(get_dist(src, M) <= canhear_range) talk_into(M, msg,null,verb,speaking) +/obj/item/device/radio/hear_message(mob/M as mob, msg) + if (broadcasting) + if(get_dist(src, M) <= canhear_range) + talk_into(M, msg, speaking = new /datum/language/noise) + /* /obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 89fe2a24232..ebaff840df5 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -93,7 +93,11 @@ mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] exclaims, \"[msg]\"" return mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] says, \"[msg]\"" - + +/obj/item/device/taperecorder/hear_message(mob/living/M as mob, msg) + if(mytape && recording) + mytape.timestamp += mytape.used_capacity + mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [M.name] [msg]" /obj/item/device/taperecorder/verb/record() set name = "Start Recording"