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
This commit is contained in:
rastaf.zero@gmail.com
2011-01-21 19:20:17 +00:00
parent a63ea22e7c
commit 05fa76963e
27 changed files with 239 additions and 99 deletions

View File

@@ -107,10 +107,10 @@
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
broadcast_status() broadcast_status()
if(!radio_connection) if(!radio_connection)

View File

@@ -76,10 +76,10 @@ obj/machinery/atmospherics/binary/pump
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
broadcast_status() broadcast_status()
if(!radio_connection) if(!radio_connection)

View File

@@ -61,10 +61,10 @@ obj/machinery/atmospherics/binary/volume_pump
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
broadcast_status() broadcast_status()
if(!radio_connection) if(!radio_connection)

View File

@@ -42,10 +42,10 @@ Filter types:
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
New() New()
..() ..()

View File

@@ -67,10 +67,10 @@
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
broadcast_status() broadcast_status()
if(!radio_connection) if(!radio_connection)

View File

@@ -26,6 +26,8 @@
var/frequency = 1439 var/frequency = 1439
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
var/radio_filter_out
var/radio_filter_in
New() New()
var/area/A = get_area(loc) var/area/A = get_area(loc)
@@ -119,10 +121,10 @@
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency,radio_filter_in)
broadcast_status() broadcast_status()
if(!radio_connection) if(!radio_connection)
@@ -142,13 +144,17 @@
signal.data["external"] = external_pressure_bound signal.data["external"] = external_pressure_bound
signal.data["timestamp"] = air_master.current_cycle signal.data["timestamp"] = air_master.current_cycle
radio_connection.post_signal(src, signal) radio_connection.post_signal(src, signal, radio_filter_out)
return 1 return 1
initialize() 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) if(frequency)
set_frequency(frequency) set_frequency(frequency)
update_icon() update_icon()
@@ -227,7 +233,7 @@
if(istype(W, /obj/item/weapon/weldingtool) && W:welding) if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
if (W:get_fuel() < 1) if (W:get_fuel() < 1)
user << "\blue You need more welding fuel to complete this task." user << "\blue You need more welding fuel to complete this task."
return return 1
W:use_fuel(1) W:use_fuel(1)
playsound(src.loc, 'Welder2.ogg', 50, 1) playsound(src.loc, 'Welder2.ogg', 50, 1)

View File

@@ -21,7 +21,8 @@
var/panic = 0 //is this scrubber panicked? var/panic = 0 //is this scrubber panicked?
var/area_uid var/area_uid
var/radio_filter_out
var/radio_filter_in
New() New()
var/area/A = get_area(loc) var/area/A = get_area(loc)
if (A.master) if (A.master)
@@ -42,9 +43,9 @@
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_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() broadcast_status()
if(!radio_connection) if(!radio_connection)
@@ -63,12 +64,14 @@
signal.data["filter_co2"] = scrub_CO2 signal.data["filter_co2"] = scrub_CO2
signal.data["filter_toxins"] = scrub_Toxins signal.data["filter_toxins"] = scrub_Toxins
signal.data["filter_n2o"] = scrub_N2O signal.data["filter_n2o"] = scrub_N2O
radio_connection.post_signal(src, signal) radio_connection.post_signal(src, signal, radio_filter_out)
return 1 return 1
initialize() initialize()
..() ..()
radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null
radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null
if (frequency) if (frequency)
set_frequency(frequency) set_frequency(frequency)

View File

@@ -251,10 +251,10 @@ obj/machinery/atmospherics/valve
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
if(frequency) if(frequency)
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
var/frequency = 0 var/frequency = 0
var/id = null var/id = null

View File

@@ -56,9 +56,9 @@
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_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) receive_command(obj/source, command, datum/signal/signal)
if(..()) if(..())

View File

@@ -83,7 +83,7 @@
src.host_program.transfer_holder(src.hd) src.host_program.transfer_holder(src.hd)
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[frequency]") radio_controller.add_object(src, frequency)
if (src.default_cartridge) if (src.default_cartridge)
@@ -207,7 +207,7 @@
signal.source = src 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 signal.transmission_method = TRANSMISSION_RADIO
if(frequency) if(frequency)

View File

@@ -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: On the map:
1311 for prison shuttle console (in fact, it is not used)
1435 for status displays 1435 for status displays
1437 for atmospherics/fire alerts 1437 for atmospherics/fire alerts
1439 for engine components 1439 for engine components
1439 for air pumps, air scrubbers, atmo control
1441 for atmospherics - supply tanks 1441 for atmospherics - supply tanks
1443 for atmospherics - distribution loop/mixed air tank 1443 for atmospherics - distribution loop/mixed air tank
1445 for bot nav beacons 1445 for bot nav beacons
1447 for mulebot control 1447 for mulebot, secbot and ed209 control
1449 for airlock controls 1449 for airlock controls, electropack
1451 for toxin lab access 1451 for toxin lab access
1453 for engineering access 1453 for engineering access
1455 for AI access 1455 for AI access
*/ */
#define TRANSMISSION_WIRE 0 #define TRANSMISSION_WIRE 0
#define TRANSMISSION_RADIO 1 #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 var/global/datum/controller/radio/radio_controller
datum/controller/radio datum/controller/radio
var/list/datum/radio_frequency/frequencies = list() var/list/datum/radio_frequency/frequencies = list()
proc/add_object(obj/device, new_frequency) proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as num|null)
var/datum/radio_frequency/frequency = frequencies[new_frequency] var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text]
if(!frequency) if(!frequency)
frequency = new frequency = new
frequency.frequency = new_frequency frequency.frequency = new_frequency
frequencies[new_frequency] = frequency frequencies[f_text] = frequency
frequency.devices += device frequency.add_listener(device, filter)
return frequency return frequency
proc/remove_object(obj/device, old_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) if(frequency)
frequency.devices -= device frequency.remove_listener(device)
if(frequency.devices.len < 1) if(frequency.devices.len == 0)
del(frequency) del(frequency)
frequencies -= old_frequency frequencies -= f_text
return 1 return 1
proc/return_frequency(frequency) proc/return_frequency(var/frequency as num)
return frequencies[frequency] var/f_text = num2text(frequency)
return frequencies[f_text]
datum/radio_frequency datum/radio_frequency
var/frequency var/frequency as num
var/list/obj/devices = list() var/list/list/obj/devices = list()
proc 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 var/turf/start_point
if(range) if(range)
start_point = get_turf(source) start_point = get_turf(source)
if(!start_point) if(!start_point)
del(signal) del(signal)
return 0 return 0
if (filter && ooc_allowed)//HACK, remove ooc_allowed
for(var/obj/device in devices) var/list/obj/devices_line = devices[filter_str]
if(device != source) for(var/obj/device in devices_line)
if(device == source)
continue
if(range) if(range)
var/turf/end_point = get_turf(device) var/turf/end_point = get_turf(device)
if(end_point) if(!end_point)
if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) 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) device.receive_signal(signal, TRANSMISSION_RADIO, frequency)
else 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) 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) 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 obj/proc
receive_signal(datum/signal/signal, receive_method, receive_param) receive_signal(datum/signal/signal, receive_method, receive_param)
return null return null

View File

@@ -59,7 +59,7 @@ obj/machinery/door/airlock
signal.data["door_status"] = density?("closed"):("open") signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked") 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) open(surpress_send)
. = ..() . = ..()
@@ -71,10 +71,10 @@ obj/machinery/door/airlock
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
if(new_frequency) if(new_frequency)
frequency = new_frequency frequency = new_frequency
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
initialize() initialize()
if(frequency) if(frequency)
@@ -119,7 +119,7 @@ obj/machinery/airlock_sensor
signal.data["tag"] = master_tag signal.data["tag"] = master_tag
signal.data["command"] = "cycle" 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) flick("airlock_sensor_cycle", src)
process() process()
@@ -136,15 +136,15 @@ obj/machinery/airlock_sensor
signal.data["pressure"] = num2text(pressure) 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() update_icon()
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
initialize() initialize()
set_frequency(frequency) set_frequency(frequency)
@@ -183,14 +183,14 @@ obj/machinery/access_button
signal.data["tag"] = master_tag signal.data["tag"] = master_tag
signal.data["command"] = command 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) flick("access_button_cycle", src)
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
initialize() initialize()
set_frequency(frequency) set_frequency(frequency)

View File

@@ -38,9 +38,9 @@
var/id_tag = signal.data["tag"] var/id_tag = signal.data["tag"]
if (!id_tag) if (!id_tag)
return return
if (!signal.data["area"] || signal.data["area"] != area_uid) if (signal.data["area"] != area_uid)
return 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"]) register_env_machine(id_tag, signal.data["device"])
if(signal.data["device"] == "AScr") if(signal.data["device"] == "AScr")
sensor_information[id_tag] = signal.data sensor_information[id_tag] = signal.data
@@ -63,9 +63,9 @@
send_signal(m_id, "init", new_name ) send_signal(m_id, "init", new_name )
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_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 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) if (parameter)
signal.data["parameter"] = 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) // world << text("Signal [] Broadcasted to []", command, target)
return 1 return 1

View File

@@ -60,9 +60,9 @@ obj/machinery/air_sensor
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
initialize() initialize()
set_frequency(frequency) set_frequency(frequency)
@@ -176,9 +176,9 @@ obj/machinery/computer/general_air_control
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)
initialize() initialize()
set_frequency(frequency) set_frequency(frequency)
@@ -502,9 +502,9 @@ Rate: [volume_rate] L/sec<BR>"}
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[receive_frequency]") radio_controller.remove_object(src, receive_frequency)
receive_frequency = new_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) attack_hand(mob/user)

View File

@@ -37,7 +37,7 @@
icon_state = "meter4" icon_state = "meter4"
if(frequency) 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 if(!radio_connection) return

View File

@@ -80,8 +80,8 @@
src.cam.c_tag = src.name src.cam.c_tag = src.name
src.cam.network = "SS13" src.cam.network = "SS13"
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[control_freq]") radio_controller.add_object(src, control_freq)
radio_controller.add_object(src, "[beacon_freq]") radio_controller.add_object(src, beacon_freq)
examine() examine()
set src in view() set src in view()
@@ -546,7 +546,7 @@ Auto Patrol: []"},
// send a radio signal with multiple data key/values // send a radio signal with multiple data key/values
proc/post_signal_multiple(var/freq, var/list/keyval) 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 if(!frequency) return

View File

@@ -80,8 +80,8 @@
spawn(5) // must wait for map loading to finish spawn(5) // must wait for map loading to finish
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[control_freq]") radio_controller.add_object(src, control_freq)
radio_controller.add_object(src, "[beacon_freq]") radio_controller.add_object(src, beacon_freq)
var/count = 0 var/count = 0
for(var/obj/machinery/bot/mulebot/other in world) for(var/obj/machinery/bot/mulebot/other in world)
@@ -881,7 +881,7 @@
if(freq == control_freq && !(wires & wire_remote_tx)) if(freq == control_freq && !(wires & wire_remote_tx))
return return
var/datum/radio_frequency/frequency = radio_controller.return_frequency("[freq]") var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
if(!frequency) return if(!frequency) return

View File

@@ -80,8 +80,8 @@
src.cam.c_tag = src.name src.cam.c_tag = src.name
src.cam.network = "SS13" src.cam.network = "SS13"
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[control_freq]") radio_controller.add_object(src, control_freq)
radio_controller.add_object(src, "[beacon_freq]") radio_controller.add_object(src, beacon_freq)
examine() examine()
set src in view() set src in view()
@@ -525,7 +525,7 @@ Auto Patrol: []"},
// send a radio signal with multiple data key/values // send a radio signal with multiple data key/values
proc/post_signal_multiple(var/freq, var/list/keyval) 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 if(!frequency) return

View File

@@ -77,6 +77,6 @@ obj/machinery/embedded_controller
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_frequency frequency = new_frequency
radio_connection = radio_controller.add_object(src, "[frequency]") radio_connection = radio_controller.add_object(src, frequency)

View File

@@ -30,7 +30,7 @@
spawn(5) // must wait for map loading to finish spawn(5) // must wait for map loading to finish
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[freq]") radio_controller.add_object(src, freq)
// set the transponder codes assoc list from codes_txt // set the transponder codes assoc list from codes_txt
proc/set_codes() proc/set_codes()
@@ -84,7 +84,7 @@
proc/post_signal() 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 if(!frequency) return

View File

@@ -39,7 +39,7 @@
..() ..()
spawn(5) // must wait for map loading to finish spawn(5) // must wait for map loading to finish
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[frequency]") radio_controller.add_object(src, frequency)
// timed process // timed process

View File

@@ -145,7 +145,7 @@
proc/post_status(var/command, var/data1, var/data2) 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 if(!frequency) return

View File

@@ -16,7 +16,7 @@
proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3) proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3)
//world << "Post: [freq]: [key]=[value], [key2]=[value2]" //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 if(!frequency) return
@@ -56,7 +56,7 @@
..() ..()
spawn(5) spawn(5)
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[control_freq]") radio_controller.add_object(src, control_freq)
// receive radio signals // receive radio signals
// can detect bot status signals // can detect bot status signals
@@ -124,8 +124,8 @@
..() ..()
spawn(5) spawn(5)
if(radio_controller) if(radio_controller)
radio_controller.add_object(src, "[control_freq]") radio_controller.add_object(src, control_freq)
radio_controller.add_object(src, "[beacon_freq]") radio_controller.add_object(src, beacon_freq)
spawn(10) spawn(10)
post_signal(beacon_freq, "findbeacon", "delivery") post_signal(beacon_freq, "findbeacon", "delivery")
@@ -236,9 +236,9 @@
set_frequency(frequency) set_frequency(frequency)
proc/set_frequency(new_frequency) proc/set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_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") proc/send_signal(message="ACTIVATE")

View File

@@ -13,7 +13,7 @@
set_frequency(frequency) set_frequency(frequency)
if(src.secure_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 /obj/item/device/radio
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
@@ -21,9 +21,9 @@
proc proc
set_frequency(new_frequency) set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]") radio_controller.remove_object(src, frequency)
frequency = new_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) /obj/item/device/radio/attack_self(mob/user as mob)
user.machine = src user.machine = src
@@ -170,7 +170,7 @@ Frequency:
var/list/receive = list() var/list/receive = list()
//for (var/obj/item/device/radio/R in radio_connection.devices) //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)) if(R.accept_rad(src, message))
for (var/i in R.send_hear()) for (var/i in R.send_hear())
if (!(i in receive)) if (!(i in receive))

View File

@@ -215,7 +215,7 @@ var/prison_shuttle_timeleft = 0
/obj/machinery/computer/prison_shuttle/proc/post_signal(var/command) /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 if(!frequency) return

View File

@@ -488,7 +488,7 @@ var/ordernum=0
/obj/machinery/computer/supplycomp/proc/post_signal(var/command) /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 if(!frequency) return

View File

@@ -397,7 +397,7 @@
"ahG" = (/obj/landmark{name = "carpspawn"},/turf/space,/area) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "aYe" = (/turf/simulated/wall,/area/crew_quarters/bar)
@@ -2674,7 +2674,7 @@
"aZv" = (/turf/space,/area/supply/station) "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) "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) "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) "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) "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) "aZB" = (/obj/table{icon_state = "tabledir"; dir = 5},/turf/simulated/floor,/area/quartermaster/office)