Atmos now starts with nitrous oxide in storage tank.

Radio was optimized even more. Still have some reserves.
Restored admin verb "Radio Report". It shows some signs of errors on the map, but I am too tired to fix it now.
Optimized player login (that "400000 calls of new_player/Move" bug).
Various optimizations and fixes in radio code.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1046 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2011-02-15 00:28:00 +00:00
parent 04586604d4
commit 2b96770d61
27 changed files with 341 additions and 254 deletions
@@ -110,7 +110,7 @@
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, filter = RADIO_ATMOSIA)
broadcast_status()
if(!radio_connection)
@@ -129,7 +129,7 @@
signal.data["output"] = output_pressure_max
signal.data["external"] = external_pressure_bound
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
return 1
@@ -143,7 +143,7 @@
set_frequency(frequency)
receive_signal(datum/signal/signal)
if(signal.data["tag"] && (signal.data["tag"] != id))
if(!signal.data["tag"] || (signal.data["tag"] != id))
return 0
switch(signal.data["command"])
@@ -193,6 +193,7 @@
external_pressure_bound = number
if(signal.data["tag"])
spawn(5) broadcast_status()
//if(signal.data["tag"])
spawn(5)
broadcast_status()
update_icon()
@@ -77,7 +77,7 @@ obj/machinery/atmospherics/binary/pump
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, filter = RADIO_ATMOSIA)
broadcast_status()
if(!radio_connection)
@@ -92,7 +92,7 @@ obj/machinery/atmospherics/binary/pump
signal.data["power"] = on
signal.data["target_output"] = target_pressure
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
return 1
interact(mob/user as mob)
@@ -114,7 +114,7 @@ obj/machinery/atmospherics/binary/pump
set_frequency(frequency)
receive_signal(datum/signal/signal)
if(signal.data["tag"] && (signal.data["tag"] != id))
if(!signal.data["tag"] || (signal.data["tag"] != id))
return 0
switch(signal.data["command"])
@@ -132,8 +132,8 @@ obj/machinery/atmospherics/binary/pump
number = min(max(number, 0), ONE_ATMOSPHERE*50)
target_pressure = number
broadcast_status()
spawn(5)
broadcast_status()
update_icon()
return
@@ -89,7 +89,7 @@ obj/machinery/atmospherics/binary/volume_pump
set_frequency(frequency)
receive_signal(datum/signal/signal)
if(signal.data["tag"] && (signal.data["tag"] != id))
if(!signal.data["tag"] || (signal.data["tag"] != id))
return 0
switch(signal.data["command"])
@@ -108,6 +108,6 @@ obj/machinery/atmospherics/binary/volume_pump
transfer_rate = number
if(signal.data["tag"])
spawn(5) broadcast_status()
spawn(5)
broadcast_status()
update_icon()
+1 -1
View File
@@ -45,7 +45,7 @@ Filter types:
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_ATMOSIA)
New()
..()
@@ -95,7 +95,7 @@
set_frequency(frequency)
receive_signal(datum/signal/signal)
if(signal.data["tag"] && (signal.data["tag"] != id))
if(!signal.data["tag"] || (signal.data["tag"] != id) || !signal.data["command"])
return 0
switch(signal.data["command"])
@@ -110,6 +110,7 @@
if("inject")
spawn inject()
return
if("set_volume_rate")
var/number = text2num(signal.data["parameter"])
@@ -117,8 +118,14 @@
volume_rate = number
if(signal.data["tag"])
spawn(5) broadcast_status()
if("status")
//broadcast_status
else
log_admin("DEBUG \[[world.timeofday]\]: outlet_injector/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
return
spawn(5)
broadcast_status()
update_icon()
hide(var/i) //to make the little pipe section invisible, the icon changes.
+27 -16
View File
@@ -7,7 +7,7 @@
level = 1
var/area_uid
var/id = null
var/id_tag = null
var/on = 0
var/pump_direction = 1 //0 = siphoning, 1 = releasing
@@ -33,7 +33,9 @@
if (A.master)
A = A.master
area_uid = A.uid
id = "\ref[src]"
if (!id_tag)
assign_uid()
id_tag = num2text(uid)
..()
high_volume
@@ -127,15 +129,17 @@
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["area"] = src.area_uid
signal.data["tag"] = src.id
signal.data["device"] = "AVP"
signal.data["power"] = on?("on"):("off")
signal.data["direction"] = pump_direction?("release"):("siphon")
signal.data["checks"] = pressure_checks
signal.data["internal"] = internal_pressure_bound
signal.data["external"] = external_pressure_bound
signal.data["timestamp"] = air_master.current_cycle
signal.data = list(
"area" = src.area_uid,
"tag" = src.id_tag,
"device" = "AVP",
"power" = on?("on"):("off"),
"direction" = pump_direction?("release"):("siphon"),
"checks" = pressure_checks,
"internal" = internal_pressure_bound,
"external" = external_pressure_bound,
"timestamp" = air_master.current_cycle,
)
radio_connection.post_signal(src, signal, radio_filter_out)
@@ -153,7 +157,8 @@
update_icon()
receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id))
//log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/atmospherics/unary/vent_pump/receive_signal([signal.debug_print()])")
if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || !signal.data["command"])
return 0
switch(signal.data["command"])
@@ -203,11 +208,17 @@
if("init")
name = signal.data["parameter"]
return
if(signal.data["tag"])
spawn(2)
broadcast_status()
update_icon()
if("status")
//broadcast_status
else
log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
return
spawn(2)
broadcast_status()
update_icon()
return
hide(var/i) //to make the little pipe section invisible, the icon changes.
@@ -28,7 +28,9 @@
if (A.master)
A = A.master
area_uid = A.uid
id_tag = "\ref[src]"
if (!id_tag)
assign_uid()
id_tag = num2text(uid)
..()
update_icon()
@@ -54,16 +56,18 @@
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["area"] = area_uid
signal.data["tag"] = id_tag
signal.data["device"] = "AScr"
signal.data["timestamp"] = air_master.current_cycle
signal.data["on"] = on
signal.data["scrubbing"] = scrubbing
signal.data["panic"] = panic
signal.data["filter_co2"] = scrub_CO2
signal.data["filter_toxins"] = scrub_Toxins
signal.data["filter_n2o"] = scrub_N2O
signal.data = list(
"area" = area_uid,
"tag" = id_tag,
"device" = "AScr",
"timestamp" = air_master.current_cycle,
"on" = on,
"scrubbing" = scrubbing,
"panic" = panic,
"filter_co2" = scrub_CO2,
"filter_toxins" = scrub_Toxins,
"filter_n2o" = scrub_N2O,
)
radio_connection.post_signal(src, signal, radio_filter_out)
return 1
@@ -154,8 +158,8 @@
*/
receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id_tag))
return ..()
if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || !signal.data["command"])
return 0
switch(signal.data["command"])
if("toggle_power")
@@ -179,10 +183,17 @@
volume_rate = initial(volume_rate)
if("init")
name = signal.data["parameter"]
if(signal.data["tag"])
spawn(2)
broadcast_status()
update_icon()
return
if("status")
//broadcast_status
else
log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
return
spawn(2)
broadcast_status()
update_icon()
return
power_change()
+2 -2
View File
@@ -265,7 +265,7 @@ obj/machinery/atmospherics/valve
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_ATMOSIA)
var/frequency = 0
var/id = null
@@ -277,7 +277,7 @@ obj/machinery/atmospherics/valve
set_frequency(frequency)
receive_signal(datum/signal/signal)
if(signal.data["tag"] && (signal.data["tag"] != id))
if(!signal.data["tag"] || (signal.data["tag"] != id))
return 0
switch(signal.data["command"])
+3
View File
@@ -12,6 +12,9 @@
active_power_usage = 0
power_channel = EQUIP
//EQUIP,ENVIRON or LIGHT
uid
global
gl_uid = 1
/obj/machinery/alarm
name = "alarm"
+2 -6
View File
@@ -215,17 +215,13 @@
// called when power status changes
/area/proc/power_change()
for(var/area/RA in related)
for(var/obj/machinery/M in RA) // for each machine in the area
M.power_change() // reverify power status (to update icons etc.)
RA.updateicon()
if (fire || eject || party)
RA.updateicon()
/area/proc/usage(var/chan)
var/used = 0
switch(chan)
if(LIGHT)
+53 -20
View File
@@ -5,7 +5,7 @@
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)
add_object(obj/device as obj, var/new_frequency as num, var/filter as text|null = null)
Adds listening object.
parameters:
device - device receiving signals, must have proc receive_signal (see description below).
@@ -30,7 +30,7 @@
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)
post_signal(obj/source as obj|null, datum/signal/signal, var/filter as text|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.
@@ -114,16 +114,21 @@ var/const/SYND_FREQ = 1213
#define TRANSMISSION_RADIO 1
/* filters */
var/const/RADIO_TO_AIRALARM = 1
var/const/RADIO_FROM_AIRALARM = 2
var/const/RADIO_CHAT = 3
var/const/RADIO_TO_AIRALARM = "1"
var/const/RADIO_FROM_AIRALARM = "2"
var/const/RADIO_CHAT = "3"
var/const/RADIO_ATMOSIA = "4"
var/const/RADIO_NAVBEACONS = "5"
var/const/RADIO_AIRLOCK = "6"
var/const/RADIO_SECBOT = "7"
var/const/RADIO_MULEBOT = "8"
var/global/datum/controller/radio/radio_controller
datum/controller/radio
var/list/datum/radio_frequency/frequencies = list()
proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as num|null)
proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null)
var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text]
@@ -157,19 +162,19 @@ datum/radio_frequency
var/list/list/obj/devices = list()
proc
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
post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as text|null, var/range = null as num|null)
//log_admin("DEBUG \[[world.timeofday]\]: post_signal {source=\"[source]\", [signal.debug_print()], filter=[filter]}")
// var/N_f=0
// var/N_nf=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
if (filter)
var/list/obj/devices_line = devices[filter_str]
for(var/obj/device in devices_line)
if (filter) //here goes some copypasta. It is for optimisation. -rastaf0
for(var/obj/device in devices[filter])
if(device == source)
continue
if(range)
@@ -180,6 +185,18 @@ datum/radio_frequency
if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range)
continue
device.receive_signal(signal, TRANSMISSION_RADIO, frequency)
for(var/obj/device in devices["_default"])
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_f++
else
for (var/next_filter in devices)
// var/list/obj/DDD = devices[next_filter]
@@ -195,20 +212,21 @@ datum/radio_frequency
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]")
// N_nf++
// log_admin("DEBUG: post_signal(source=[source] ([source.x], [source.y], [source.z]),filter=[filter]) frequency=[frequency], N_f=[N_f], N_nf=[N_nf]")
del(signal)
add_listener(obj/device as obj, var/filter as num|null)
add_listener(obj/device as obj, var/filter as text|null)
if (!filter)
filter = "_default"
//log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]")
var/filter_str = num2text(filter)
var/list/obj/devices_line = devices[filter_str]
var/list/obj/devices_line = devices[filter]
if (!devices_line)
devices_line = new
devices[filter_str] = devices_line
devices[filter] = devices_line
devices_line+=device
// var/list/obj/devices_line___ = devices[filter_str]
// var/l = devices_line___.len
@@ -217,7 +235,14 @@ datum/radio_frequency
remove_listener(obj/device)
for (var/devices_filter in devices)
devices[devices_filter]-=device
var/list/devices_line = devices[devices_filter]
devices_line-=device
while (null in devices_line)
devices_line -= null
if (devices_line.len==0)
devices -= devices_filter
del(devices_line)
obj/proc
receive_signal(datum/signal/signal, receive_method, receive_param)
@@ -237,4 +262,12 @@ datum/signal
source = model.source
transmission_method = model.transmission_method
data = model.data
encryption = model.encryption
encryption = model.encryption
proc/debug_print()
if (source)
. = "signal = {source = '[source]' ([source:x],[source:y],[source:z])\n"
else
. = "signal = {source = '[source]' ()\n"
for (var/i in data)
. += "data\[\"[i]\"\] = \"[data[i]]\"\n"
+7 -7
View File
@@ -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, range = AIRLOCK_CONTROL_RANGE)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
open(surpress_send)
. = ..()
@@ -74,7 +74,7 @@ obj/machinery/door/airlock
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, RADIO_AIRLOCK)
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, range = AIRLOCK_CONTROL_RANGE)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("airlock_sensor_cycle", src)
process()
@@ -136,7 +136,7 @@ obj/machinery/airlock_sensor
signal.data["pressure"] = num2text(pressure)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
update_icon()
@@ -144,7 +144,7 @@ obj/machinery/airlock_sensor
set_frequency(new_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_AIRLOCK)
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, range = AIRLOCK_CONTROL_RANGE)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("access_button_cycle", src)
proc
set_frequency(new_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_AIRLOCK)
initialize()
set_frequency(frequency)
+1 -1
View File
@@ -43,7 +43,7 @@
return
if (signal.data["area"] != area_uid)
return
if((!sensors[id_tag] && !vents[id_tag]))
if(!(id_tag in sensors) && !(id_tag in vents))
register_env_machine(id_tag, signal.data["device"])
if(signal.data["device"] == "AScr")
sensor_information[id_tag] = signal.data
+16 -16
View File
@@ -55,14 +55,14 @@ obj/machinery/air_sensor
signal.data["toxins"] = 0
signal.data["nitrogen"] = 0
signal.data["carbon_dioxide"] = 0
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
proc
set_frequency(new_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_ATMOSIA)
initialize()
set_frequency(frequency)
@@ -178,7 +178,7 @@ obj/machinery/computer/general_air_control
set_frequency(new_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_ATMOSIA)
initialize()
set_frequency(frequency)
@@ -254,9 +254,9 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
signal.source = src
signal.data["tag"] = input_tag
signal.data["status"] = 1
signal.data["command"] = "status"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["in_toggle_injector"])
input_info = null
@@ -270,7 +270,7 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
signal.data["tag"] = input_tag
signal.data["command"] = "power_toggle"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["out_refresh_status"])
output_info = null
@@ -282,9 +282,9 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
signal.source = src
signal.data["tag"] = output_tag
signal.data["status"] = 1
signal.data["command"] = "status"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["out_toggle_power"])
output_info = null
@@ -298,7 +298,7 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
signal.data["tag"] = output_tag
signal.data["command"] = "power_toggle"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["out_set_pressure"])
output_info = null
@@ -313,7 +313,7 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
signal.data["command"] = "set_internal_pressure"
signal.data["parameter"] = "[pressure_setting]"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["adj_pressure"])
var/change = text2num(href_list["adj_pressure"])
@@ -393,7 +393,7 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
else
signal.data["command"] = "power_off"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
..()
@@ -443,9 +443,9 @@ Rate: [volume_rate] L/sec<BR>"}
signal.source = src
signal.data["tag"] = device_tag
signal.data["status"] = 1
signal.data["command"] = "status"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["toggle_automation"])
automation = !automation
@@ -462,7 +462,7 @@ Rate: [volume_rate] L/sec<BR>"}
signal.data["tag"] = device_tag
signal.data["command"] = "power_toggle"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["injection"])
if(!radio_connection)
@@ -475,7 +475,7 @@ Rate: [volume_rate] L/sec<BR>"}
signal.data["tag"] = device_tag
signal.data["command"] = "inject"
radio_connection.post_signal(src, signal)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
/obj/machinery/computer/atmos_alert
var/datum/radio_frequency/radio_connection
@@ -504,7 +504,7 @@ Rate: [volume_rate] L/sec<BR>"}
set_frequency(new_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, RADIO_ATMOSIA)
attack_hand(mob/user)
+14
View File
@@ -277,6 +277,20 @@ Release Pressure: <A href='?src=\ref[src];pressure_adj=-1000'>-</A> <A href='?sr
src.update_icon()
return 1
//Dirty way to fill room with gas. However it is a bit easier to do than creating some floor/engine/n2o -rastaf0
/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller/New()
..()
var/datum/gas/sleeping_agent/trace_gas = air_contents.trace_gases[1]
trace_gas.moles = 9*4000
spawn(10)
var/turf/simulated/location = src.loc
if (istype(src.loc))
while (!location.air)
sleep(10)
location.assume_air(air_contents)
air_contents = new
return 1
/obj/machinery/portable_atmospherics/canister/nitrogen/New()
..()
+13 -12
View File
@@ -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, filter = RADIO_SECBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
examine()
set src in view()
@@ -553,24 +553,25 @@ Auto Patrol: []"},
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
for(var/key in keyval)
signal.data[key] = keyval[key]
//for(var/key in keyval)
// signal.data[key] = keyval[key]
//world << "sent [key],[keyval[key]] on [freq]"
signal.data = keyval
if (signal.data["findbeacon"])
frequency.post_signal(src, signal, null)
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if (signal.data["type"] == "secbot")
frequency.post_signal(src, signal, null)
frequency.post_signal(src, signal, filter = RADIO_SECBOT)
else
frequency.post_signal(src, signal)
// signals bot status etc. to controller
proc/send_status()
var/list/kv = new()
kv["type"] = "secbot"
kv["name"] = name
kv["loca"] = loc.loc // area
kv["mode"] = mode
var/list/kv = list(
"type" = "secbot",
"name" = name,
"loca" = loc.loc, // area
"mode" = mode,
)
post_signal_multiple(control_freq, kv)
+23 -16
View File
@@ -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, filter = RADIO_MULEBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
var/count = 0
for(var/obj/machinery/bot/mulebot/other in world)
@@ -890,24 +890,31 @@
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
for(var/key in keyval)
signal.data[key] = keyval[key]
//for(var/key in keyval)
// signal.data[key] = keyval[key]
signal.data = keyval
//world << "sent [key],[keyval[key]] on [freq]"
frequency.post_signal(src, signal)
if (signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if (signal.data["type"] == "mulebot")
frequency.post_signal(src, signal, filter = RADIO_MULEBOT)
else
frequency.post_signal(src, signal)
// signals bot status etc. to controller
proc/send_status()
var/list/kv = new()
kv["type"] = "mulebot"
kv["name"] = suffix
kv["loca"] = loc.loc // area
kv["mode"] = mode
kv["powr"] = cell ? cell.percent() : 0
kv["dest"] = destination
kv["home"] = home_destination
kv["load"] = load
kv["retn"] = auto_return
kv["pick"] = auto_pickup
var/list/kv = list(
"type" = "mulebot",
"name" = suffix,
"loca" = loc.loc, // area
"mode" = mode,
"powr" = (cell ? cell.percent() : 0),
"dest" = destination,
"home" = home_destination,
"load" = load,
"retn" = auto_return,
"pick" = auto_pickup,
)
post_signal_multiple(control_freq, kv)
+12 -6
View File
@@ -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, filter = RADIO_SECBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
examine()
set src in view()
@@ -445,7 +445,7 @@ Auto Patrol: []"},
// used for beacon reception
receive_signal(datum/signal/signal)
//log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/bot/secbot/receive_signal([signal.debug_print()])")
if(!on)
return
@@ -532,10 +532,16 @@ Auto Patrol: []"},
var/datum/signal/signal = new()
signal.source = src
signal.transmission_method = 1
for(var/key in keyval)
signal.data[key] = keyval[key]
//for(var/key in keyval)
// signal.data[key] = keyval[key]
signal.data = keyval
//world << "sent [key],[keyval[key]] on [freq]"
frequency.post_signal(src, signal)
if (signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if (signal.data["type"] == "secbot")
frequency.post_signal(src, signal, filter = RADIO_SECBOT)
else
frequency.post_signal(src, signal)
// signals bot status etc. to controller
proc/send_status()
+5 -1
View File
@@ -97,4 +97,8 @@
return 1
src.add_fingerprint(user)
return 0
return 0
/obj/machinery/proc/assign_uid()
uid = gl_uid
gl_uid++
+2 -2
View File
@@ -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, RADIO_NAVBEACONS)
// set the transponder codes assoc list from codes_txt
proc/set_codes()
@@ -96,7 +96,7 @@
for(var/key in codes)
signal.data[key] = codes[key]
frequency.post_signal(src, signal)
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
attackby(var/obj/item/I, var/mob/user)
+28 -28
View File
@@ -13,7 +13,7 @@
if (istype(loc.loc, /obj/item/device/pda))
hostpda = loc.loc
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, s_filter)
//world << "Post: [freq]: [key]=[value], [key2]=[value2]"
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
@@ -29,7 +29,7 @@
if(key3)
signal.data[key3] = value3
frequency.post_signal(src, signal)
frequency.post_signal(src, signal, filter = s_filter)
proc/print_to_host(var/text)
if (isnull(src.hostpda))
@@ -56,7 +56,7 @@
..()
spawn(5)
if(radio_controller)
radio_controller.add_object(src, control_freq)
radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT)
// receive radio signals
// can detect bot status signals
@@ -91,23 +91,23 @@
if("control")
active = locate(href_list["bot"])
post_signal(control_freq, "command", "bot_status", "active", active)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
if("scanbots") // find all bots
botlist = null
post_signal(control_freq, "command", "bot_status")
post_signal(control_freq, "command", "bot_status", s_filter = RADIO_SECBOT)
if("botlist")
active = null
if("stop", "go")
post_signal(control_freq, "command", href_list["op"], "active", active)
post_signal(control_freq, "command", "bot_status", "active", active)
post_signal(control_freq, "command", href_list["op"], "active", active, s_filter = RADIO_SECBOT)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
if("summon")
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) )
post_signal(control_freq, "command", "bot_status", "active", active)
post_signal(control_freq, "command", "summon", "active", active, "target", get_turf(PDA) , s_filter = RADIO_SECBOT)
post_signal(control_freq, "command", "bot_status", "active", active, s_filter = RADIO_SECBOT)
PDA.cartridge.unlock()
/obj/item/radio/integrated/mule
@@ -124,10 +124,10 @@
..()
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, filter = RADIO_MULEBOT)
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
spawn(10)
post_signal(beacon_freq, "findbeacon", "delivery")
post_signal(beacon_freq, "findbeacon", "delivery", filter = RADIO_NAVBEACONS)
// receive radio signals
// can detect bot status signals
@@ -172,43 +172,43 @@
if("control")
active = locate(href_list["bot"])
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("scanbots") // find all bots
botlist = null
post_signal(control_freq, "command", "bot_status")
post_signal(control_freq, "command", "bot_status", s_filter = RADIO_MULEBOT)
if("botlist")
active = null
if("unload")
post_signal(control_freq, cmd, "unload")
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "unload", s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("setdest")
if(beacons)
var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in beacons
if(dest)
post_signal(control_freq, cmd, "target", "destination", dest)
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "target", "destination", dest, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("retoff")
post_signal(control_freq, cmd, "autoret", "value", 0)
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "autoret", "value", 0, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("reton")
post_signal(control_freq, cmd, "autoret", "value", 1)
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "autoret", "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("pickoff")
post_signal(control_freq, cmd, "autopick", "value", 0)
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "autopick", "value", 0, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("pickon")
post_signal(control_freq, cmd, "autopick", "value", 1)
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, "autopick", "value", 1, s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
if("stop", "go", "home")
post_signal(control_freq, cmd, href_list["op"])
post_signal(control_freq, cmd, "bot_status")
post_signal(control_freq, cmd, href_list["op"], s_filter = RADIO_MULEBOT)
post_signal(control_freq, cmd, "bot_status", s_filter = RADIO_MULEBOT)
PDA.cartridge.unlock()
-22
View File
@@ -15,33 +15,11 @@
for (var/ch_name in channels)
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
/*
if(src.secure_frequency)
secure_radio_connection = radio_controller.add_object(src, secure_frequency, RADIO_CHAT)
if(src.channels.Find("Medical"))
med_connection = radio_controller.add_object(src, med_freq, RADIO_CHAT)
if(src.channels.Find("Science"))
sci_connection = radio_controller.add_object(src, sci_freq, RADIO_CHAT)
if(src.channels.Find("Security"))
sec_connection = radio_controller.add_object(src, sec_freq, RADIO_CHAT)
if(src.channels.Find("Command"))
com_connection = radio_controller.add_object(src, com_freq, RADIO_CHAT)
if(src.channels.Find("Engineer"))
eng_connection = radio_controller.add_object(src, eng_freq, RADIO_CHAT)*/
/obj/item/device/radio
var
datum/radio_frequency/radio_connection
list/datum/radio_frequency/secure_radio_connections = new
/*
datum/radio_frequency/secure_radio_connection // Shared by Mport2004 for the security headsets -- TLE
datum/radio_frequency/med_connection
datum/radio_frequency/sci_connection
datum/radio_frequency/com_connection
datum/radio_frequency/eng_connection
datum/radio_frequency/sec_connection*/
proc
set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
+27 -11
View File
@@ -116,18 +116,34 @@
set category = "Debug"
set name = "Radio report"
var/output = "<b>Radio Report</b><hr>"/*
var/filters = list(
"1" = "RADIO_TO_AIRALARM",
"2" = "RADIO_FROM_AIRALARM",
"3" = "RADIO_CHAT",
"4" = "RADIO_ATMOSIA",
"5" = "RADIO_NAVBEACONS",
"6" = "RADIO_AIRLOCK",
"7" = "RADIO_SECBOT",
"8" = "RADIO_MULEBOT",
"_default" = "NO_FILTER"
)
var/output = "<b>Radio Report</b><hr>"
for (var/fq in radio_controller.frequencies)
output += "<b>Freq: [fq]</b><br>"
var/list/datum/radio_frequency/fqs = radio_controller.frequencies[fq]
output += "&nbsp;&nbsp;Voice: [fqs.voice.len]<br>"
output += "&nbsp;&nbsp;Broadcast: [fqs.broadcast.len]<br>"
output += "&nbsp;&nbsp;Tags: <br>"
for (var/tag in fqs.tags)
var/list/ctag = fqs.tags[tag]
output += "&nbsp;&nbsp;&nbsp;&nbsp;[tag]: [ctag.len]<br>"
output += "&nbsp;&nbsp;Groups: <br>"
for (var/group in fqs.groups)
var/list/cgroup = fqs.groups[group]
output += "&nbsp;&nbsp;&nbsp;&nbsp;[group]: [cgroup.len]<br>"*/
if (!fqs)
output += "&nbsp;&nbsp;<b>ERROR</b><br>"
continue
for (var/filter in fqs.devices)
var/list/f = fqs.devices[filter]
if (!f)
output += "&nbsp;&nbsp;[filters[filter]]: ERROR<br>"
continue
output += "&nbsp;&nbsp;[filters[filter]]: [f.len]<br>"
for (var/device in f)
if (isobj(device))
output += "&nbsp;&nbsp;&nbsp;&nbsp;[device] ([device:x],[device:y],[device:z] in area [get_area(device:loc)])<br>"
else
output += "&nbsp;&nbsp;&nbsp;&nbsp;[device]<br>"
usr << browse(output,"window=radioreport")
+2 -3
View File
@@ -1,6 +1,4 @@
mob/new_player
anchored = 1
var/datum/preferences/preferences
var/ready = 0
var/spawning = 0
@@ -14,7 +12,8 @@ mob/new_player
anchored = 1 // don't get pushed around
Login()
..()
//Next line is commented out because seem it does nothing helpful and on the other hand it calls mob/new_player/Move() to EACH turf in the world. --rastaf0
//..()
if(!preferences)
preferences = new