diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index b55a354945..cd65fb9f91 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -250,7 +250,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) - if(istype(R, /obj/item/device/radio/headset)) + if(istype(R, /obj/item/device/radio/headset) && !R.adhoc_fallback) continue if(R.receive_range(display_freq, level) > -1) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 842fb09816..260c32cd57 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -39,6 +39,7 @@ var/global/list/default_medbay_channels = list( var/listening = 1 var/list/channels = list() //see communications.dm for full list. First channel is a "default" for :h var/subspace_transmission = 0 + var/adhoc_fallback = FALSE //Falls back to 'radio' mode if subspace not available var/syndie = 0//Holder to see if it's a syndicate encrypted radio var/centComm = 0//Holder to see if it's a CentCom encrypted radio flags = CONDUCT @@ -414,9 +415,15 @@ var/global/list/default_medbay_channels = list( for(var/obj/machinery/telecomms/allinone/R in telecomms_list) R.receive_signal(signal) - // Receiving code can be located in Telecommunications.dm - return signal.data["done"] && position.z in signal.data["level"] + if(signal.data["done"] && position.z in signal.data["level"]) + return TRUE //Huzzah, sent via subspace + else if(adhoc_fallback) //Less huzzah, we have to fallback + to_chat(loc,"\The [src] pings as it falls back to local radio transmission.") + subspace_transmission = FALSE + return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), + src, message, displayname, jobname, real_name, M.voice_name, + signal.transmission_method, signal.data["compression"], list(position.z), connection.frequency,verb,speaking) /* ###### Intercoms and station-bounced radios ###### */ @@ -463,10 +470,10 @@ var/global/list/default_medbay_channels = list( for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) - - sleep(rand(10,25)) // wait a little... - if(signal.data["done"] && position.z in signal.data["level"]) + if(adhoc_fallback) + to_chat(loc,"\The [src] pings as it reestablishes subspace communications.") + subspace_transmission = TRUE // we're done here. return 1