From 05fa76963e3a69842ac4dce3a8163d4de84ef8d9 Mon Sep 17 00:00:00 2001 From: "rastaf.zero@gmail.com" Date: Fri, 21 Jan 2011 19:20:17 +0000 Subject: [PATCH] Added primitive optimization to radio code. Lag reduced by approx 30% (0.5 seconds of total 1.5 on my system). Some air alarms on the map copypasted from toxins one, with its special settings. Added list of used frequencies and HOW IT WORKS section to communications.dm. Sorry for some engrish. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@895 316c924e-a436-60f5-8080-3fe189b3f50e --- .../components/binary_devices/dp_vent_pump.dm | 4 +- .../components/binary_devices/pump.dm | 4 +- .../components/binary_devices/volume_pump.dm | 4 +- code/ATMOSPHERICS/components/filter.dm | 4 +- .../components/unary/outlet_injector.dm | 4 +- .../components/unary/vent_pump.dm | 14 +- .../components/unary/vent_scrubber.dm | 11 +- code/ATMOSPHERICS/components/valve.dm | 4 +- code/WorkInProgress/computer2/peripherals.dm | 4 +- code/WorkInProgress/pda2/pda2.dm | 4 +- code/game/communications.dm | 177 +++++++++++++++--- code/game/machinery/airlock_control.dm | 20 +- code/game/machinery/alarm.dm | 10 +- code/game/machinery/atmo_control.dm | 12 +- code/game/machinery/atmoalter/meter.dm | 2 +- code/game/machinery/bots/ed209bot.dm | 6 +- code/game/machinery/bots/mulebot.dm | 6 +- code/game/machinery/bots/secbot.dm | 6 +- .../embedded_controller_base.dm | 4 +- code/game/machinery/navbeacon.dm | 4 +- code/game/machinery/status_display.dm | 2 +- code/game/objects/devices/PDA/cart.dm | 2 +- code/game/objects/devices/PDA/radio.dm | 12 +- code/game/objects/radio/radio.dm | 8 +- code/game/prisonshuttle.dm | 2 +- code/game/supplyshuttle.dm | 2 +- maps/tgstation.2.0.0.dmm | 6 +- 27 files changed, 239 insertions(+), 99 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 790189675b..d2fc8cbed4 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 00fcc47150..8b995faa2f 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 ae3ff008d8..3253168656 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 0d389aa82e..d5a6d28daf 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 98472faca0..d59a96eb60 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 db23bfbcd6..f262f0d879 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 feae5b68ce..e59a32eb4c 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 86b65acccd..6ba11adc6a 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 2f22a2d325..fbbec51a1b 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 96cd01e4bc..f77136d1bf 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 c3a5f24ec3..8534f16eba 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 de5b8d220a..b0805525fd 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 6dda692c47..a7e172e9ad 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 50a16090a0..36e0a4f0c5 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 bea2bcf9ee..7cb79613de 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 8a2af78031..31e2a104e8 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 62d711b353..c14ee1a06d 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 f34c6bcc20..035dabdab8 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 f1b6466796..5032e479b8 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 91813b6ee8..85ac633917 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 b9eecb1122..3a6cdb86f1 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 41aee865a3..ae2e73c36e 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 1ea29cd0ae..5f33c01c5a 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 1915b32949..d63c343707 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 077a508c80..2149051bcb 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 a34a646e84..a09ed6ff1a 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 aa8c49103e..25a62c24d7 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)