RADIO CODE WORKS NOW HOLY SHIT

(warning, contains tons of debug messages that still need removal)
This commit is contained in:
Miauw
2014-08-16 20:33:50 +02:00
parent fa4d21980a
commit 1fef6effc3
10 changed files with 179 additions and 127 deletions
+1
View File
@@ -283,6 +283,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
//Turns 1479 into 147.9
/proc/format_frequency(var/f)
f = text2num(f)
return "[round(f / 10)].[f % 10]"
+30
View File
@@ -60,6 +60,36 @@
If receiving object don't know right key, it must ignore encrypted signal in its receive_signal.
*/
/* WELCOME TO MIAUW'S EMPORIUM OF "FUCK THIS FUCKING SHITCODE HOLY SHIT HOW DID ANYONE THINK UP SOMETHING THIS FUCKING AWFUL"
TODAY'S SPECIAL: FUCKING RADIO CODE. IT SIMPLY DOESNT WORK, AND I HAVE NO FUCKING IDEA WHY.
THAT IS WHY I REPLACED IT WITH A LIST, WHICH DOES WORK. THANK ME LATER.
*/
var/list/all_radios = list()
/proc/add_radio(var/obj/item/radio, freq)
var/converttest = radiochannels["[freq]"]
if(converttest)
freq = converttest
if(!all_radios["[freq]"])
all_radios["[freq]"] = list(radio)
return freq
all_radios["[freq]"] |= radio
return freq
/proc/remove_radio(var/obj/item/radio, freq)
var/converttest = radiochannels["[freq]"]
if(converttest)
freq = converttest
if(!all_radios["[freq]"])
return
all_radios["[freq]"] -= radio
/proc/remove_radio_all(var/obj/item/radio)
for(var/freq in all_radios)
all_radios["[freq]"] -= radio
/*
Frequency range: 1200 to 1600
+63 -43
View File
@@ -26,7 +26,9 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
// Don't broadcast rejected signals
world << "[src] received signal"
if(signal.data["reject"])
world << "[src] signal rejected"
return
if(signal.data["message"])
@@ -56,11 +58,12 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
if(signal.data["type"] == 0)
/* ###### Broadcast a message using signal.data ###### */
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
world << "broadcaster normal broadcast"
Broadcast_Message(signal.data["mob"],
signal.data["vmask"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"],, signal.data["compression"], signal.data["level"], signal.frequency)
signal.data["realname"], 0, signal.data["compression"], signal.data["level"], signal.frequency)
/** #### - Simple Broadcast - #### **/
@@ -80,8 +83,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/* ###### Broadcast a message using signal.data ###### */
// Parameter "data" as 4: AI can't track this person/mob
Broadcast_Message(signal.data["connection"], signal.data["mob"],
world << "broadcaster artifical boradcast"
Broadcast_Message(signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
@@ -140,22 +143,23 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
sleep(signal.data["slow"]) // simulate the network lag if necessary
/* ###### Broadcast a message using signal.data ###### */
var/datum/radio_frequency/connection = signal.data["connection"]
if(connection.frequency == SYND_FREQ) // if syndicate broadcast, just
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
world << "frequency:"
world << signal.frequency
if(signal.frequency == SYND_FREQ) // if syndicate broadcast, just
world << "syndicate broadcast from tcomms allinone"
Broadcast_Message(signal.data["mob"],
signal.data["vmask"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency)
signal.data["realname"],, signal.data["compression"], list(0), signal.frequency)
else
if(intercept)
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
world << "normal broadcast from allinone"
Broadcast_Message(signal.data["mob"],
signal.data["vmask"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency)
signal.data["realname"], 3, signal.data["compression"], list(0), signal.frequency)
@@ -164,9 +168,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
Here is the big, bad function that broadcasts a message given the appropriate
parameters.
@param connection:
The datum generated in radio.dm, stored in signal.data["connection"].
@param M:
Reference to the mob/speaker, stored in signal.data["mob"]
@@ -216,26 +217,44 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
**/
/proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M,
var/vmask, var/vmessage, var/obj/item/device/radio/radio,
var/message, var/name, var/job, var/realname, var/vname,
//this proc is cursed. save yourself while you still can.
/proc/Broadcast_Message(var/atom/movable/AM,
var/vmask, var/obj/item/device/radio/radio,
var/message, var/name, var/job, var/realname,
var/data, var/compression, var/list/level, var/freq)
/* ###### Prepare the radio connection ###### */
var/display_freq = freq
world << "am = [AM]"
world << "vmask = [vmask]"
world << "radio = [radio]"
world << "message = [message]"
world << "name = [name]"
world << "job = [job]"
world << "realname = [realname]"
world << "data = [data]"
world << "compression = [compression]"
world << "freq = [freq]"
world << "level = [level]"
for(var/ASSHOLE in level)
world << ASSHOLE
var/list/obj/item/device/radio/radios = list()
// Cut down on the message sizes.
world << "broadcast_message() called"
message = copytext(message, 1, MAX_BROADCAST_LEN)
vmessage = copytext(vmessage, 1, MAX_BROADCAST_LEN)
world << "<font size='10'>STUPID BULLSHIT:</font>"
var/i = 0
var/j = 0
for(var/list/FUCK in all_radios)
i++
for(var/atom/SHIT in FUCK)
j++
world << "[i].[j]"
world << SHIT
var/atom/movable/virtualspeaker/virt = new(null) //fuck this code.
virt.name = name
virt.job = job
virt.languages = M.languages
virt.languages = AM.languages
if(compression > 0)
message = Gibberish(message, compression + 50)
@@ -243,42 +262,38 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
if(data == 1)
for (var/obj/item/device/radio/intercom/R in connection.devices["[RADIO_CHAT]"])
if(R.receive_range(display_freq, level) > -1)
for (var/obj/item/device/radio/intercom/R in all_radios["[freq]"])
if(R.receive_range(freq, level) > -1)
radios += R
// --- Broadcast only to intercoms and station-bounced radios ---
else if(data == 2)
for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"])
for (var/obj/item/device/radio/R in all_radios["[freq]"])
if(istype(R, /obj/item/device/radio/headset))
continue
if(R.receive_range(display_freq, level) > -1)
if(R.receive_range(freq, level) > -1)
radios += R
// --- Broadcast to syndicate radio! ---
else if(data == 3)
var/datum/radio_frequency/syndicateconnection = radio_controller.return_frequency(SYND_FREQ)
for (var/obj/item/device/radio/R in syndicateconnection.devices["[RADIO_CHAT]"])
for (var/obj/item/device/radio/R in all_radios["[freq]"])
if(R.receive_range(SYND_FREQ, level) > -1)
radios += R
if(data == 4) //whoever added this argument to the data function was an idiot.
else if(data == 4) //whoever added this argument to the data key instead of a new one was an idiot.
virt.faketrack = 1
// --- Broadcast to ALL radio devices ---
else
for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"])
if(R.receive_range(display_freq, level) > -1)
for (var/obj/item/device/radio/R in all_radios["[freq]"])
if(R.receive_range(freq, level) > -1)
radios += R
// Get a list of mobs who can hear from the radios we collected.
@@ -291,8 +306,13 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes.
receive -= R
world << "<b>Radios ([radios.len]):</b>"
for(var/atom/movable/df in radios)
world << df.name
world << "<b>Hearers ([receive.len]):</b>"
for(var/atom/movable/hearer in receive)
hearer.Hear(message, virt, M.languages, message, freq)
world << hearer.name
hearer.Hear(message, virt, AM.languages, message, freq)
/* // ###### Organize the receivers into categories for displaying the message ######
@@ -309,12 +329,12 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
if(length(receive))
// --- This following recording is intended for research and feedback in the use of department radio channels ---
var/blackbox_msg = M.compose_message("", virt, M.languages, message, freq)
var/blackbox_msg = "[AM] [AM.say_quote(message)]"
//var/blackbox_admin_msg = "[part_a][M.name] (Real name: [M.real_name])[part_blackbox_b][quotedmsg][part_c]"
//BR.messages_admin += blackbox_admin_msg
if(istype(blackbox))
switch(display_freq)
switch(freq)
if(1459)
blackbox.msg_common += blackbox_msg
if(1351)
@@ -79,12 +79,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
"name" = signal.data["name"],
"job" = signal.data["job"],
"key" = signal.data["key"],
"vmessage" = signal.data["vmessage"],
"vname" = signal.data["vname"],
"vmask" = signal.data["vmask"],
"compression" = signal.data["compression"],
"message" = signal.data["message"],
"connection" = signal.data["connection"],
"radio" = signal.data["radio"],
"slow" = signal.data["slow"],
"traffic" = signal.data["traffic"],
@@ -131,7 +128,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
// return 1 if found, 0 if not found
if(!signal)
return 0
if((signal.frequency in freq_listening) || (!freq_listening.len))
if((text2num(signal.frequency) in freq_listening) || (!freq_listening.len))
return 1
else
return 0
@@ -281,7 +278,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
return
if(!check_receive_level(signal))
return
world << "[src] received signal]"
if(signal.transmission_method == 2)
if(is_freq_listening(signal)) // detect subspace signals
@@ -290,7 +287,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
signal.data["level"] = list()
var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub") // ideally relay the copied information to relays
world << "[src] attempting bus relay..."
if(!can_send)
world << "could not relay to hub, relaying to bus..."
relay_information(signal, "/obj/machinery/telecomms/bus") // Send it to a bus instead, if it's linked to one
/obj/machinery/telecomms/receiver/proc/check_receive_level(datum/signal/signal)
@@ -334,11 +333,14 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
/obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
world << "[src] received signal"
if(is_freq_listening(signal))
if(istype(machine_from, /obj/machinery/telecomms/receiver))
world << "[src] compressed signal, relaying to bus"
//If the signal is compressed, send it to the bus.
relay_information(signal, "/obj/machinery/telecomms/bus", 1) // ideally relay the copied information to bus units
else
world << "[src] uncompressed signal, relaying to broadcaster and relay"
// Get a list of relays that we're linked to, then send the signal to their levels.
relay_information(signal, "/obj/machinery/telecomms/relay", 1)
relay_information(signal, "/obj/machinery/telecomms/broadcaster", 1) // Send it to a broadcaster.
@@ -370,9 +372,10 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
var/receiving = 1
/obj/machinery/telecomms/relay/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
world << "[src] received signal"
// Add our level and send it back
if(can_send(signal))
world << "[src]: signal sent, level added"
signal.data["level"] |= listening_level
// Checks to see if it can send/receive.
@@ -422,21 +425,25 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
/obj/machinery/telecomms/bus/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(is_freq_listening(signal))
world << "[src] received signal"
if(change_frequency)
signal.frequency = change_frequency
if(!istype(machine_from, /obj/machinery/telecomms/processor) && machine_from != src) // Signal must be ready (stupid assuming machine), let's send it
// send to one linked processor unit
world << "[src] sending machine not a processor, sending signal"
var/send_to_processor = relay_information(signal, "/obj/machinery/telecomms/processor")
if(send_to_processor)
world << "[src] sending to processor succeeded, cancelling"
return
// failed to send to a processor, relay information anyway
world << "[src] sending to processor failed, relaying anyway"
signal.data["slow"] += rand(1, 5) // slow the signal down only slightly
src.receive_information(signal, src)
// Try sending it!
world << "[src] attempting to send signal"
var/list/try_send = list("/obj/machinery/telecomms/server", "/obj/machinery/telecomms/hub", "/obj/machinery/telecomms/broadcaster", "/obj/machinery/telecomms/bus")
var/i = 0
for(var/send in try_send)
@@ -445,6 +452,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
i++
var/can_send = relay_information(signal, send)
if(can_send)
world << "[src] sending signal succeeded, breaking"
break
@@ -541,7 +549,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
..()
/obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
world << "[src] received signal"
if(signal.data["message"])
if(is_freq_listening(signal))
@@ -557,22 +565,16 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
update_logs()
var/datum/comm_log_entry/log = new
var/mob/M = signal.data["mob"]
// Copy the signal.data entries we want
log.parameters["mobtype"] = signal.data["mobtype"]
log.parameters["job"] = signal.data["job"]
log.parameters["key"] = signal.data["key"]
log.parameters["vmessage"] = signal.data["message"]
log.parameters["vname"] = signal.data["vname"]
log.parameters["message"] = signal.data["message"]
log.parameters["name"] = signal.data["name"]
log.parameters["realname"] = signal.data["realname"]
if(!istype(M, /mob/new_player) && M)
log.parameters["uspeech"] = M.universal_speak
else
log.parameters["uspeech"] = 0
log.parameters["uspeech"] = 1 //*whistles*
// If the signal is still compressed, make the log entry gibberish
if(signal.data["compression"] > 0)
@@ -580,7 +582,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
log.parameters["job"] = Gibberish(signal.data["job"], signal.data["compression"] + 50)
log.parameters["name"] = Gibberish(signal.data["name"], signal.data["compression"] + 50)
log.parameters["realname"] = Gibberish(signal.data["realname"], signal.data["compression"] + 50)
log.parameters["vname"] = Gibberish(signal.data["vname"], signal.data["compression"] + 50)
log.input_type = "Corrupt File"
// Log and store everything that needs to be logged
@@ -597,8 +598,10 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
if(Compiler && autoruncode)
Compiler.Run(signal) // execute the code
world << "[src] attempting to relay signal to hub"
var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub")
if(!can_send)
world << "[src] relaying to hub failed, attempting to relay to broadcaster"
relay_information(signal, "/obj/machinery/telecomms/broadcaster")
+1 -1
View File
@@ -230,7 +230,7 @@
initialize()
if (src.frequency < 1441 || src.frequency > 1489)
src.frequency = sanitize_frequency(src.frequency)
src.frequency = num2text(sanitize_frequency(src.frequency))
set_frequency(frequency)
@@ -256,13 +256,16 @@
src.syndie = 1
for (var/ch_name in channels)
for(var/ch_name in channels)
//this is the most hilarious piece of code i have seen this week, so im not going to remove it
/*
if(!radio_controller)
sleep(30) // Waiting for the radio_controller to be created.
if(!radio_controller)
src.name = "broken radio headset"
return
*/
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
secure_radio_connections[ch_name] = add_radio(src, ch_name)
return
+44 -55
View File
@@ -16,6 +16,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
var/canhear_range = 3 // the range which mobs can hear this radio from
var/obj/item/device/radio/patch_link = null
var/datum/wires/radio/wires = null
var/radio_connection = 0
var/list/secure_radio_connections
var/prison_radio = 0
var/b_stat = 0
var/broadcasting = 0
@@ -40,14 +42,10 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
var/const/FREQ_LISTENING = 1
//FREQ_BROADCASTING = 2
/obj/item/device/radio
var/datum/radio_frequency/radio_connection
var/list/datum/radio_frequency/secure_radio_connections
proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
/obj/item/device/radio/proc/set_frequency(new_frequency)
new_frequency = num2text(new_frequency)
remove_radio(src, radio_connection)
radio_connection = add_radio(src, new_frequency)
/obj/item/device/radio/New()
wires = new(src)
@@ -67,19 +65,19 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
/obj/item/device/radio/initialize()
var/frequency_num = text2num(frequency)
if(freerange)
if(frequency < 1200 || frequency > 1600)
frequency = sanitize_frequency(frequency, maxf)
if(frequency_num < 1200 || frequency_num > 1600)
frequency = num2text(sanitize_frequency(frequency_num, maxf))
// The max freq is higher than a regular headset to decrease the chance of people listening in, if you use the higher channels.
else if (frequency < 1441 || frequency > maxf)
else if (frequency_num < 1441 || frequency_num > maxf)
//world.log << "[src] ([type]) has a frequency of [frequency], sanitizing."
frequency = sanitize_frequency(frequency, maxf)
frequency = num2text(sanitize_frequency(frequency_num, maxf))
set_frequency(frequency)
for (var/ch_name in channels)
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
secure_radio_connections[ch_name] = add_radio(src, ch_name)
/obj/item/device/radio/attack_self(mob/user as mob)
@@ -170,7 +168,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
else if (href_list["freq"])
var/new_frequency = (frequency + text2num(href_list["freq"]))
if (!freerange || (frequency < 1200 || frequency > 1600))
new_frequency = sanitize_frequency(new_frequency, maxf)
new_frequency = num2text(sanitize_frequency(new_frequency, maxf))
set_frequency(new_frequency)
if(hidden_uplink)
if(hidden_uplink.check_trigger(usr, frequency, traitor_frequency))
@@ -203,8 +201,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
/obj/item/device/radio/proc/isWireCut(var/index)
return wires.IsIndexCut(index)
/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel)
/obj/item/device/radio/talk_into(atom/movable/M, message, channel)
if(!on) return // the device has to be on
// Fix for permacell radios, but kinda eh about actually fixing them.
if(!M || !message) return
@@ -218,7 +215,6 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
return
if(GLOBAL_RADIO_TYPE == 1) // NEW RADIO SYSTEMS: By Doohl
/* Quick introduction:
This new radio system uses a very robust FTL signaling technology unoriginally
dubbed "subspace" which is somewhat similar to 'blue-space' but can't
@@ -229,23 +225,22 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
the signal gets processed and logged, and an audible transmission gets sent
to each individual headset.
*/
/*
be prepared to disregard any comments in all of tcomms code. i tried my best to keep them somewhat up-to-date, but eh
*/
//#### Grab the connection datum ####//
var/datum/radio_frequency/connection = null
//get the frequency you buttface. radios no longer use the radio_controller. confusing for future generations, convenient for me.
var/freq
if(channel && channels && channels.len > 0)
if (channel == "department")
//world << "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\""
channel = channels[1]
connection = secure_radio_connections[channel]
freq = secure_radio_connections[channel]
if (!channels[channel]) // if the channel is turned off, don't broadcast
return
else
connection = radio_connection
freq = radio_connection
channel = null
if (!istype(connection))
return
if (!connection)
return
var/turf/position = get_turf(src)
@@ -253,11 +248,14 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
// ||-- The mob's name identity --||
var/displayname = M.name // grab the display name (name you get when you hover over someone's icon)
var/real_name = M.real_name // mob's real name
var/real_name = M.name // mob's real name
var/mobkey = "none" // player key associated with mob
var/voicemask = 0 // the speaker is wearing a voice mask
if(M.client)
mobkey = M.key // assign the mob's key
if(ismob(M))
var/mob/speaker = M
real_name = speaker.real_name
if(speaker.client)
mobkey = speaker.key // assign the mob's key
var/jobname // the mob's "job"
@@ -293,12 +291,14 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
else if (istype(M, /mob/living/silicon/pai))
jobname = "Personal AI"
// --- Cold, emotionless machines. ---
else if(isobj(M))
jobname = "Machine"
// --- Unidentifiable mob ---
else
jobname = "Unknown"
/* ###### Radio headsets can only broadcast through subspace ###### */
if(subspace_transmission)
@@ -316,17 +316,14 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
"name" = displayname, // the mob's display name
"job" = jobname, // the mob's job
"key" = mobkey, // the mob's key
"vmessage" = M.voice_message, // the message to display if the voice wasn't understood
"vname" = M.voice_name, // the name to display if the voice wasn't understood
"vmask" = voicemask, // 1 if the mob is using a voice gas mask
// We store things that would otherwise be kept in the actual mob
// so that they can be logged even AFTER the mob is deleted or something
// Other tags:
"compression" = rand(45,50), // compressed radio signal
"compression" = rand(35,65), // compressed radio signal
"message" = message, // the actual sent message
"connection" = connection, // the radio connection to use
"radio" = src, // stores the radio used for transmission
"slow" = 0, // how much to sleep() before broadcasting - simulates net lag
"traffic" = 0, // dictates the total traffic sum that the signal went through
@@ -335,7 +332,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
"reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery
"level" = position.z // The source's z level
)
signal.frequency = connection.frequency // Quick frequency set
signal.frequency = freq
//#### Sending the signal to all subspace receivers ####//
@@ -373,13 +370,10 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
"name" = displayname, // the mob's display name
"job" = jobname, // the mob's job
"key" = mobkey, // the mob's key
"vmessage" = M.voice_message, // the message to display if the voice wasn't understood
"vname" = M.voice_name, // the name to display if the voice wasn't understood
"vmask" = voicemask, // 1 if the mob is using a voice gas mas
"compression" = 0, // uncompressed radio signal
"message" = message, // the actual sent message
"connection" = connection, // the radio connection to use
"radio" = src, // stores the radio used for transmission
"slow" = 0,
"traffic" = 0,
@@ -388,8 +382,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
"reject" = 0,
"level" = position.z
)
signal.frequency = connection.frequency // Quick frequency set
signal.frequency = text2num(freq) // Quick frequency set
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
R.receive_signal(signal)
@@ -402,17 +395,14 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
// Oh my god; the comms are down or something because the signal hasn't been broadcasted yet in our level.
// Send a mundane broadcast with limited targets:
//THIS IS TEMPORARY.
if(!connection) return //~Carn
Broadcast_Message(connection, M, voicemask, M.voice_message,
src, message, displayname, jobname, real_name, M.voice_name,
filter_type, signal.data["compression"], list(position.z), connection.frequency)
world << "radio mundane broadcast"
Broadcast_Message(M, voicemask,
src, message, displayname, jobname, real_name,
filter_type, signal.data["compression"], list(position.z), freq)
else // OLD RADIO SYSTEMS: By Goons?
/*else // OLD RADIO SYSTEMS: By Goons?
var/datum/radio_frequency/connection = null
if(channel && channels && channels.len > 0)
@@ -599,7 +589,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
if(istype(R, /mob/living/silicon/ai))
R.show_message("[part_a]<a href='byond://?src=\ref[src];track2=\ref[R];track=\ref[M]'>[M.voice_name]</a>[part_b][quotedmsg][part_c]", 2)
else
R.show_message(rendered, 2)
R.show_message(rendered, 2) */
/obj/item/device/radio/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq)
if(radio_freq)
@@ -644,9 +634,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
else
var/accept = (freq==frequency && listening)
if (!accept)
for (var/ch_name in channels)
var/datum/radio_frequency/RF = secure_radio_connections[ch_name]
if (RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING))
for(var/ch_name in channels)
if(channels[ch_name] & FREQ_LISTENING)
accept = 1
break
if (!accept)
@@ -783,7 +772,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
src.name = "broken radio"
return
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
secure_radio_connections[ch_name] = add_radio(src, ch_name)
return
+16 -4
View File
@@ -33,15 +33,23 @@
/atom/movable/proc/lang_treat(message, atom/movable/speaker, message_langs, raw_message)
if(languages & message_langs)
return speaker.say_quote(raw_message)
var/atom/movable/AM = speaker.GetSource()
if(AM)
return AM.say_quote(raw_message)
else
return speaker.say_quote(raw_message)
else if(message_langs & HUMAN)
return speaker.say_quote(stars(raw_message))
var/atom/movable/AM = speaker.GetSource()
if(AM)
return AM.say_quote(stars(raw_message))
else
return speaker.say_quote(stars(raw_message))
else if(message_langs & MONKEY)
return "chimpers."
else if(message_langs & ALIEN)
return "hisses."
else if(message_langs & ROBOT)
return "<beeps rapidly."
return "beeps rapidly."
else
return "makes a strange sound."
@@ -94,6 +102,9 @@
/atom/movable/proc/GetVoice()
return name
/atom/movable/proc/IsVocal()
return 1
/atom/movable/proc/get_alt_name()
return
@@ -105,11 +116,12 @@
return
/atom/movable/proc/GetSource()
return
/atom/movable/virtualspeaker
var/job
var/faketrack
var/mob/source
var/atom/movable/source
/atom/movable/virtualspeaker/GetJob()
return job
-3
View File
@@ -204,9 +204,6 @@ var/list/department_radio_keys = list(
return message
/mob/living/proc/IsVocal()
return 1
/mob/living/proc/radio(message, message_mode, steps)
switch(message_mode)
if("right hand")
@@ -314,9 +314,6 @@ datum/signal
freq = text2num(freq)
newsign.frequency = freq
var/datum/radio_frequency/connection = radio_controller.return_frequency(freq)
newsign.data["connection"] = connection
newsign.data["radio"] = hradio
newsign.data["vmessage"] = message