mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
RADIO CODE WORKS NOW HOLY SHIT
(warning, contains tons of debug messages that still need removal)
This commit is contained in:
@@ -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]"
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user