diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 790189675b4..d2fc8cbed43 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -107,10 +107,10 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 00fcc471504..8b995faa2fe 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -76,10 +76,10 @@ obj/machinery/atmospherics/binary/pump proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index ae3ff008d8e..32531686567 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -61,10 +61,10 @@ obj/machinery/atmospherics/binary/volume_pump proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/filter.dm b/code/ATMOSPHERICS/components/filter.dm index 0d389aa82eb..d5a6d28daf9 100644 --- a/code/ATMOSPHERICS/components/filter.dm +++ b/code/ATMOSPHERICS/components/filter.dm @@ -42,10 +42,10 @@ Filter types: proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) New() ..() diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 98472faca0e..d59a96eb60b 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -67,10 +67,10 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) broadcast_status() if(!radio_connection) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index db23bfbcd62..f262f0d8793 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -26,6 +26,8 @@ var/frequency = 1439 var/datum/radio_frequency/radio_connection + var/radio_filter_out + var/radio_filter_in New() var/area/A = get_area(loc) @@ -119,10 +121,10 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency,radio_filter_in) broadcast_status() if(!radio_connection) @@ -142,13 +144,17 @@ signal.data["external"] = external_pressure_bound signal.data["timestamp"] = air_master.current_cycle - radio_connection.post_signal(src, signal) + radio_connection.post_signal(src, signal, radio_filter_out) return 1 initialize() ..() + + //some vents work his own spesial way + radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null if(frequency) set_frequency(frequency) update_icon() @@ -227,7 +233,7 @@ if(istype(W, /obj/item/weapon/weldingtool) && W:welding) if (W:get_fuel() < 1) user << "\blue You need more welding fuel to complete this task." - return + return 1 W:use_fuel(1) playsound(src.loc, 'Welder2.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index feae5b68ce5..e59a32eb4ce 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -21,7 +21,8 @@ var/panic = 0 //is this scrubber panicked? var/area_uid - + var/radio_filter_out + var/radio_filter_in New() var/area/A = get_area(loc) if (A.master) @@ -42,9 +43,9 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency, radio_filter_in) broadcast_status() if(!radio_connection) @@ -63,12 +64,14 @@ signal.data["filter_co2"] = scrub_CO2 signal.data["filter_toxins"] = scrub_Toxins signal.data["filter_n2o"] = scrub_N2O - radio_connection.post_signal(src, signal) + radio_connection.post_signal(src, signal, radio_filter_out) return 1 initialize() ..() + radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null if (frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 86b65acccd2..6ba11adc6a6 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -251,10 +251,10 @@ obj/machinery/atmospherics/valve proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) var/frequency = 0 var/id = null diff --git a/code/WorkInProgress/computer2/peripherals.dm b/code/WorkInProgress/computer2/peripherals.dm index 2f22a2d3255..fbbec51a1bd 100644 --- a/code/WorkInProgress/computer2/peripherals.dm +++ b/code/WorkInProgress/computer2/peripherals.dm @@ -56,9 +56,9 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) receive_command(obj/source, command, datum/signal/signal) if(..()) diff --git a/code/WorkInProgress/pda2/pda2.dm b/code/WorkInProgress/pda2/pda2.dm index 96cd01e4bcf..f77136d1bfe 100644 --- a/code/WorkInProgress/pda2/pda2.dm +++ b/code/WorkInProgress/pda2/pda2.dm @@ -83,7 +83,7 @@ src.host_program.transfer_holder(src.hd) if(radio_controller) - radio_controller.add_object(src, "[frequency]") + radio_controller.add_object(src, frequency) if (src.default_cartridge) @@ -207,7 +207,7 @@ signal.source = src - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) signal.transmission_method = TRANSMISSION_RADIO if(frequency) diff --git a/code/game/communications.dm b/code/game/communications.dm index c3a5f24ec39..8534f16ebac 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -1,77 +1,208 @@ /* -Special frequency list: + HOW IT WORKS + + The radio_controller is a global object maintaining all radio transmissions, think about it as about "ether". + Note that /obj/item/device/radio handles transmission using nonstandard way. + procs: + + add_object(obj/device as obj, var/new_frequency as num, var/filter as num|null = null) + Adds listening object. + parameters: + device - device receiving signals, must have proc receive_signal (see description below). + one device may listen several frequencies, but not same frequency twice. + new_frequency - see possibly frequencies below; + filter - thing for optimization. Optional, but recommended. + All filters should be consolidated in this file, see defines later. + Device without listening filter will receive all signals (on specified frequency). + Device with filter will receive any signals sent without filter. + Device with filter will not receive any signals sent with different filter. + returns: + Reference to frequency object. + + remove_object (obj/device, old_frequency) + Obliviously, after calling this proc, device will not receive any signals on old_frequency. + Other frequencies will left unaffected. + + return_frequency(var/frequency as num) + returns: + Reference to frequency object. Use it if you need to send and do not need to listen. + + radio_frequency is a global object maintaining list of devices that listening specific frequency. + procs: + + post_signal(obj/source as obj|null, datum/signal/signal, var/filter as num|null = null, var/range as num|null = null) + Sends signal to all devices that wants such signal. + parameters: + source - object, emitted signal. Usually, devices will not receive their own signals. + signal - see description below. + filter - described above. + range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels. + + obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param) + Handler from received signals. By default does nothing. Define your own for your object. + Avoid of sending signals directly from this proc, use spawn(-1). Do not use sleep() here please. + parameters: + signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return! + receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO. + TRANSMISSION_WIRE is currently unused. + receive_param - for TRANSMISSION_RADIO here comes frequency. + + datum/signal + vars: + source + an object that emitted signal. Used for debug and bearing. + data + list with transmitting data. Usual use pattern: + data["msg"] = "hello world" + encryption + Some number symbolizing "encryption key". + Note that game actually do not use any cryptography here. + If receiving object don't know right key, it must ignore encrypted signal in its receive_signal. + +*/ + +/* +Frequency range: 1200 to 1600 +Radiochat range: 1441 to 1489 + +Radio: +1459 - standard radio chat +1353 - Command +1355 - Medical +1357 - Engineering +1359 - Security +1441 - death squad +1443 - Confession Intercom + +Devices: +1457 - RSD default +1451 - tracking implant + On the map: +1311 for prison shuttle console (in fact, it is not used) 1435 for status displays 1437 for atmospherics/fire alerts 1439 for engine components +1439 for air pumps, air scrubbers, atmo control 1441 for atmospherics - supply tanks 1443 for atmospherics - distribution loop/mixed air tank 1445 for bot nav beacons -1447 for mulebot control -1449 for airlock controls +1447 for mulebot, secbot and ed209 control +1449 for airlock controls, electropack 1451 for toxin lab access 1453 for engineering access 1455 for AI access */ + #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 +/* filters */ +var/const/RADIO_TO_AIRALARM = 1 +var/const/RADIO_FROM_AIRALARM = 2 +var/const/RADIO_CHAT = 3 + var/global/datum/controller/radio/radio_controller datum/controller/radio var/list/datum/radio_frequency/frequencies = list() - proc/add_object(obj/device, new_frequency) - var/datum/radio_frequency/frequency = frequencies[new_frequency] + proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as num|null) + var/f_text = num2text(new_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] if(!frequency) frequency = new frequency.frequency = new_frequency - frequencies[new_frequency] = frequency + frequencies[f_text] = frequency - frequency.devices += device + frequency.add_listener(device, filter) return frequency proc/remove_object(obj/device, old_frequency) - var/datum/radio_frequency/frequency = frequencies[old_frequency] + var/f_text = num2text(old_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] if(frequency) - frequency.devices -= device + frequency.remove_listener(device) - if(frequency.devices.len < 1) + if(frequency.devices.len == 0) del(frequency) - frequencies -= old_frequency + frequencies -= f_text return 1 - proc/return_frequency(frequency) - return frequencies[frequency] + proc/return_frequency(var/frequency as num) + var/f_text = num2text(frequency) + return frequencies[f_text] datum/radio_frequency - var/frequency - var/list/obj/devices = list() + var/frequency as num + var/list/list/obj/devices = list() proc - post_signal(obj/source, datum/signal/signal, range) + post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as num|null, var/range = null as num|null) +// var/N=0 +// var/Nt=0 + var/filter_str = num2text(filter) var/turf/start_point if(range) start_point = get_turf(source) if(!start_point) del(signal) return 0 - - for(var/obj/device in devices) - if(device != source) + if (filter && ooc_allowed)//HACK, remove ooc_allowed + var/list/obj/devices_line = devices[filter_str] + for(var/obj/device in devices_line) + if(device == source) + continue if(range) var/turf/end_point = get_turf(device) - if(end_point) - if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) - else + if(!end_point) + continue + //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) + if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) + continue + device.receive_signal(signal, TRANSMISSION_RADIO, frequency) + else + for (var/next_filter in devices) +// var/list/obj/DDD = devices[next_filter] +// Nt+=DDD.len + for(var/obj/device in devices[next_filter]) + if(device == source) + continue + if(range) + var/turf/end_point = get_turf(device) + if(!end_point) + continue + //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) + if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) + continue device.receive_signal(signal, TRANSMISSION_RADIO, frequency) +// N++ +// log_admin("DEBUG: post_signal(source=[source] ([source.x], [source.y]),filter=[filter]) frequency=[frequency], N=[N],Nt=[Nt]") + + del(signal) + add_listener(obj/device as obj, var/filter as num|null) + //log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]") + var/filter_str = num2text(filter) + var/list/obj/devices_line = devices[filter_str] + if (!devices_line) + devices_line = new + devices[filter_str] = devices_line + devices_line+=device +// var/list/obj/devices_line___ = devices[filter_str] +// var/l = devices_line___.len + //log_admin("DEBUG: devices_line.len=[devices_line.len]") + //log_admin("DEBUG: devices(filter_str).len=[l]") + + remove_listener(obj/device) + for (var/devices_filter in devices) + devices[devices_filter]-=device + obj/proc receive_signal(datum/signal/signal, receive_method, receive_param) return null diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index de5b8d220a5..b0805525fd8 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -59,7 +59,7 @@ obj/machinery/door/airlock signal.data["door_status"] = density?("closed"):("open") signal.data["lock_status"] = locked?("locked"):("unlocked") - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) open(surpress_send) . = ..() @@ -71,10 +71,10 @@ obj/machinery/door/airlock proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) if(new_frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() if(frequency) @@ -119,7 +119,7 @@ obj/machinery/airlock_sensor signal.data["tag"] = master_tag signal.data["command"] = "cycle" - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) flick("airlock_sensor_cycle", src) process() @@ -136,15 +136,15 @@ obj/machinery/airlock_sensor signal.data["pressure"] = num2text(pressure) - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) update_icon() proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) @@ -183,14 +183,14 @@ obj/machinery/access_button signal.data["tag"] = master_tag signal.data["command"] = command - radio_connection.post_signal(src, signal, AIRLOCK_CONTROL_RANGE) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE) flick("access_button_cycle", src) proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 6dda692c475..a7e172e9ada 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -38,9 +38,9 @@ var/id_tag = signal.data["tag"] if (!id_tag) return - if (!signal.data["area"] || signal.data["area"] != area_uid) + if (signal.data["area"] != area_uid) return - if((!sensors.Find(id_tag) && !vents.Find(id_tag))) + if((!sensors[id_tag] && !vents[id_tag])) register_env_machine(id_tag, signal.data["device"]) if(signal.data["device"] == "AScr") sensor_information[id_tag] = signal.data @@ -63,9 +63,9 @@ send_signal(m_id, "init", new_name ) set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency, RADIO_TO_AIRALARM) send_signal(var/target, var/command, var/parameter = null)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise @@ -81,7 +81,7 @@ if (parameter) signal.data["parameter"] = parameter - radio_connection.post_signal(src, signal) + radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) // world << text("Signal [] Broadcasted to []", command, target) return 1 diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 50a16090a02..36e0a4f0c56 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -60,9 +60,9 @@ obj/machinery/air_sensor proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) @@ -176,9 +176,9 @@ obj/machinery/computer/general_air_control proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) initialize() set_frequency(frequency) @@ -502,9 +502,9 @@ Rate: [volume_rate] L/sec
"} proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[receive_frequency]") + radio_controller.remove_object(src, receive_frequency) receive_frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[receive_frequency]") + radio_connection = radio_controller.add_object(src, receive_frequency) attack_hand(mob/user) diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index bea2bcf9ee2..7cb79613de3 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -37,7 +37,7 @@ icon_state = "meter4" if(frequency) - var/datum/radio_frequency/radio_connection = radio_controller.return_frequency("[frequency]") + var/datum/radio_frequency/radio_connection = radio_controller.return_frequency(frequency) if(!radio_connection) return diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 8a2af780311..31e2a104e8a 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -80,8 +80,8 @@ src.cam.c_tag = src.name src.cam.network = "SS13" if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) examine() set src in view() @@ -546,7 +546,7 @@ Auto Patrol: []"}, // send a radio signal with multiple data key/values proc/post_signal_multiple(var/freq, var/list/keyval) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 62d711b3539..c14ee1a06d5 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -80,8 +80,8 @@ spawn(5) // must wait for map loading to finish if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) var/count = 0 for(var/obj/machinery/bot/mulebot/other in world) @@ -881,7 +881,7 @@ if(freq == control_freq && !(wires & wire_remote_tx)) return - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index f34c6bcc208..035dabdab89 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -80,8 +80,8 @@ src.cam.c_tag = src.name src.cam.network = "SS13" if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) examine() set src in view() @@ -525,7 +525,7 @@ Auto Patrol: []"}, // send a radio signal with multiple data key/values proc/post_signal_multiple(var/freq, var/list/keyval) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index f1b6466796c..5032e479b86 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -77,6 +77,6 @@ obj/machinery/embedded_controller proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") \ No newline at end of file + radio_connection = radio_controller.add_object(src, frequency) \ No newline at end of file diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 91813b6ee8b..85ac6339178 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -30,7 +30,7 @@ spawn(5) // must wait for map loading to finish if(radio_controller) - radio_controller.add_object(src, "[freq]") + radio_controller.add_object(src, freq) // set the transponder codes assoc list from codes_txt proc/set_codes() @@ -84,7 +84,7 @@ proc/post_signal() - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index b9eecb11227..3a6cdb86f1e 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -39,7 +39,7 @@ ..() spawn(5) // must wait for map loading to finish if(radio_controller) - radio_controller.add_object(src, "[frequency]") + radio_controller.add_object(src, frequency) // timed process diff --git a/code/game/objects/devices/PDA/cart.dm b/code/game/objects/devices/PDA/cart.dm index 41aee865a3a..ae2e73c36ea 100644 --- a/code/game/objects/devices/PDA/cart.dm +++ b/code/game/objects/devices/PDA/cart.dm @@ -145,7 +145,7 @@ proc/post_status(var/command, var/data1, var/data2) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("1435") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) if(!frequency) return diff --git a/code/game/objects/devices/PDA/radio.dm b/code/game/objects/devices/PDA/radio.dm index 1ea29cd0ae2..5f33c01c5a7 100644 --- a/code/game/objects/devices/PDA/radio.dm +++ b/code/game/objects/devices/PDA/radio.dm @@ -16,7 +16,7 @@ proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3) //world << "Post: [freq]: [key]=[value], [key2]=[value2]" - var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) if(!frequency) return @@ -56,7 +56,7 @@ ..() spawn(5) if(radio_controller) - radio_controller.add_object(src, "[control_freq]") + radio_controller.add_object(src, control_freq) // receive radio signals // can detect bot status signals @@ -124,8 +124,8 @@ ..() spawn(5) if(radio_controller) - radio_controller.add_object(src, "[control_freq]") - radio_controller.add_object(src, "[beacon_freq]") + radio_controller.add_object(src, control_freq) + radio_controller.add_object(src, beacon_freq) spawn(10) post_signal(beacon_freq, "findbeacon", "delivery") @@ -236,9 +236,9 @@ set_frequency(frequency) proc/set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency) proc/send_signal(message="ACTIVATE") diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/radio/radio.dm index 1915b329490..d63c3437079 100644 --- a/code/game/objects/radio/radio.dm +++ b/code/game/objects/radio/radio.dm @@ -13,7 +13,7 @@ set_frequency(frequency) if(src.secure_frequency) - secure_radio_connection = radio_controller.add_object(src, "[secure_frequency]") + secure_radio_connection = radio_controller.add_object(src, secure_frequency, RADIO_CHAT) /obj/item/device/radio var/datum/radio_frequency/radio_connection @@ -21,9 +21,9 @@ proc set_frequency(new_frequency) - radio_controller.remove_object(src, "[frequency]") + radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, "[frequency]") + radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) /obj/item/device/radio/attack_self(mob/user as mob) user.machine = src @@ -170,7 +170,7 @@ Frequency: var/list/receive = list() //for (var/obj/item/device/radio/R in radio_connection.devices) - for (var/obj/item/device/radio/R in connection.devices) // Modified for security headset code -- TLE + for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) // Modified for security headset code -- TLE if(R.accept_rad(src, message)) for (var/i in R.send_hear()) if (!(i in receive)) diff --git a/code/game/prisonshuttle.dm b/code/game/prisonshuttle.dm index 077a508c803..2149051bcbf 100644 --- a/code/game/prisonshuttle.dm +++ b/code/game/prisonshuttle.dm @@ -215,7 +215,7 @@ var/prison_shuttle_timeleft = 0 /obj/machinery/computer/prison_shuttle/proc/post_signal(var/command) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("1311") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1311) if(!frequency) return diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index a34a646e84d..a09ed6ff1a0 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -488,7 +488,7 @@ var/ordernum=0 /obj/machinery/computer/supplycomp/proc/post_signal(var/command) - var/datum/radio_frequency/frequency = radio_controller.return_frequency("1435") + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) if(!frequency) return diff --git a/maps/tgstation.2.0.0.dmm b/maps/tgstation.2.0.0.dmm index aa8c49103e7..25a62c24d7e 100644 --- a/maps/tgstation.2.0.0.dmm +++ b/maps/tgstation.2.0.0.dmm @@ -397,7 +397,7 @@ "ahG" = (/obj/landmark{name = "carpspawn"},/turf/space,/area) "ahH" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact-f"; layer = 3},/obj/lattice,/turf/space,/area) "ahI" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/turf/simulated/wall/r_wall,/area/security/warden) -"ahJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/deployable/barrier,/obj/machinery/alarm{icon_state = "alarm0"; dir = 4; pixel_x = -23; pixel_y = 0; frequency = 1445; sensors = list("tox_main_scrub_1" = "Toxin Lab Scrubber #1", "tox_main_scrub_2" = "Toxin Lab Scrubber #2", "tox_storage_scrub" = "Toxin Storage Scrubber", "tox_chem_scrub" = "Toxin Chemical Lab Scrubber")},/turf/simulated/floor,/area/security/warden) +"ahJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/deployable/barrier,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/security/warden) "ahK" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor,/area/security/hos) "ahL" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/clothing/glasses/thermal,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/security/hos) "ahM" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/stamp/hos,/turf/simulated/floor,/area/security/hos) @@ -2599,7 +2599,7 @@ "aXY" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aXZ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYa" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/camera{c_tag = "Bar North"; dir = 2; network = "SS13"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) -"aYb" = (/obj/machinery/alarm{dir = 2; frequency = 1445; icon_state = "alarm0"; pixel_y = 24; sensors = list("tox_main_scrub_1" = "Toxin Lab Scrubber #1", "tox_main_scrub_2" = "Toxin Lab Scrubber #2", "tox_storage_scrub" = "Toxin Storage Scrubber", "tox_chem_scrub" = "Toxin Chemical Lab Scrubber")},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) +"aYb" = (/obj/machinery/alarm{dir = 2; pixel_y = 24},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYc" = (/obj/noticeboard{pixel_y = 27},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYd" = (/obj/machinery/power/apc{dir = 4; name = "Bar APC"; pixel_x = 25; pixel_y = 0},/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar) "aYe" = (/turf/simulated/wall,/area/crew_quarters/bar) @@ -2674,7 +2674,7 @@ "aZv" = (/turf/space,/area/supply/station) "aZw" = (/obj/grille,/obj/window/reinforced/east,/obj/window/reinforced/west,/obj/window/reinforced/north,/turf/simulated/floor/plating,/area/quartermaster/storage) "aZx" = (/turf/simulated/floor{tag = "icon-caution_west"; icon_state = "caution_west"},/area/quartermaster/storage) -"aZy" = (/obj/machinery/alarm{dir = 2; frequency = 1445; icon_state = "alarm0"; pixel_y = 24; sensors = list("tox_main_scrub_1" = "Toxin Lab Scrubber #1", "tox_main_scrub_2" = "Toxin Lab Scrubber #2", "tox_storage_scrub" = "Toxin Storage Scrubber", "tox_chem_scrub" = "Toxin Chemical Lab Scrubber")},/turf/simulated/floor,/area/quartermaster/storage) +"aZy" = (/obj/machinery/alarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/quartermaster/storage) "aZz" = (/obj/machinery/light{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "aZA" = (/obj/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/quartermaster/storage) "aZB" = (/obj/table{icon_state = "tabledir"; dir = 5},/turf/simulated/floor,/area/quartermaster/office)