Air alarms improved. New functions are:

- mass control all air machines in area (5 modes)
 - adjustable alarm thresholds
 - air alarm in server room now is preset to treat temperature 80 K as okay.
EMP now affects bots internal cameras.
Fixed problem with AI clicking on mulebot.
Some fixes for welding with unlit welder, mostly cosmetic.
Airlock controller (as in EVA) now react to commands faster.
Access controller (was in engineering and virology in past) was speeded up too. One is installed into Incinerator to demonstrate that now it isn't fucking slow.
Airlock in toxin mixing room now have pump, so airlock can work properly.
Added some intercoms to medbay lobby.
Doors now won't lag due do mapmakers mistakes.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1187 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2011-03-14 19:21:02 +00:00
parent b1a5289490
commit 2530b5b995
28 changed files with 7619 additions and 7320 deletions

View File

@@ -120,15 +120,17 @@
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = id
signal.data["device"] = "ADVP"
signal.data["power"] = on?("on"):("off")
signal.data["direction"] = pump_direction?("release"):("siphon")
signal.data["checks"] = pressure_checks
signal.data["input"] = input_pressure_min
signal.data["output"] = output_pressure_max
signal.data["external"] = external_pressure_bound
signal.data = list(
"tag" = id,
"device" = "ADVP",
"power" = on,
"direction" = pump_direction?("release"):("siphon"),
"checks" = pressure_checks,
"input" = input_pressure_min,
"output" = output_pressure_max,
"external" = external_pressure_bound,
"sigtype" = "status"
)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
return 1
@@ -143,57 +145,55 @@
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["sigtype"]!="command"))
return 0
switch(signal.data["command"])
if("power_on")
on = 1
if("power" in signal.data)
on = text2num(signal.data["power"])
if("power_off")
on = 0
if("power_toggle")
if("power_toggle" in signal.data)
on = !on
if("set_direction")
var/number = text2num(signal.data["parameter"])
if(number > 0.5)
pump_direction = 1
else
pump_direction = 0
if("set_direction" in signal.data)
pump_direction = text2num(signal.data["set_direction"])
if("set_checks")
var/number = round(text2num(signal.data["parameter"]),1)
pressure_checks = number
if("checks" in signal.data)
pressure_checks = text2num(signal.data["checks"])
if("purge")
if("purge" in signal.data)
pressure_checks &= ~1
pump_direction = 0
if("stabalize")
if("stabalize" in signal.data)
pressure_checks |= 1
pump_direction = 1
if("set_input_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
if("set_input_pressure" in signal.data)
input_pressure_min = between(
0,
text2num(signal.data["set_input_pressure"]),
ONE_ATMOSPHERE*50
)
input_pressure_min = number
if("set_output_pressure" in signal.data)
output_pressure_max = between(
0,
text2num(signal.data["set_output_pressure"]),
ONE_ATMOSPHERE*50
)
if("set_output_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
output_pressure_max = number
if("set_external_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
external_pressure_bound = number
if("set_external_pressure" in signal.data)
external_pressure_bound = between(
0,
text2num(signal.data["set_external_pressure"]),
ONE_ATMOSPHERE*50
)
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
//if(signal.data["tag"])
spawn(5)
spawn(2)
broadcast_status()
update_icon()

View File

@@ -22,6 +22,10 @@ obj/machinery/atmospherics/binary/pump
var/on = 0
var/target_pressure = ONE_ATMOSPHERE
var/frequency = 0
var/id = null
var/datum/radio_frequency/radio_connection
/*
attack_hand(mob/user)
on = !on
@@ -87,14 +91,18 @@ obj/machinery/atmospherics/binary/pump
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = id
signal.data["device"] = "AGP"
signal.data["power"] = on
signal.data["target_output"] = target_pressure
signal.data = list(
"tag" = id,
"device" = "AGP",
"power" = on,
"target_output" = target_pressure,
"sigtype" = "status"
)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
return 1
interact(mob/user as mob)
var/dat = {"<b>Power: </b><a href='?src=\ref[src];power=1'>[on?"On":"Off"]</a><br>
<b>Desirable output pressure: </b>
@@ -104,35 +112,34 @@ obj/machinery/atmospherics/binary/pump
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmo_pump")
onclose(user, "atmo_pump")
var/frequency = 0
var/id = null
var/datum/radio_frequency/radio_connection
initialize()
..()
if(frequency)
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["sigtype"]!="command"))
return 0
switch(signal.data["command"])
if("power_on")
on = 1
if("power" in signal.data)
on = text2num(signal.data["power"])
if("power_off")
on = 0
if("power_toggle")
if("power_toggle" in signal.data)
on = !on
if("set_output_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
if("set_output_pressure" in signal.data)
target_pressure = between(
0,
text2num(signal.data["set_output_pressure"]),
ONE_ATMOSPHERE*50
)
target_pressure = number
spawn(5)
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
spawn(2)
broadcast_status()
update_icon()
return

View File

@@ -74,11 +74,13 @@ obj/machinery/atmospherics/binary/volume_pump
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = id
signal.data["device"] = "APV"
signal.data["power"] = on
signal.data["transfer_rate"] = transfer_rate
signal.data = list(
"tag" = id,
"device" = "APV",
"power" = on,
"transfer_rate" = transfer_rate,
"sigtype" = "status"
)
radio_connection.post_signal(src, signal)
return 1
@@ -89,25 +91,27 @@ 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) || (signal.data["sigtype"]!="command"))
return 0
switch(signal.data["command"])
if("power_on")
on = 1
if("power" in signal.data)
on = text2num(signal.data["power"])
if("power_off")
on = 0
if("power_toggle")
if("power_toggle" in signal.data)
on = !on
if("set_transfer_rate")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), air1.volume)
if("set_transfer_rate" in signal.data)
transfer_rate = between(
0,
text2num(signal.data["set_transfer_rate"]),
air1.volume
)
transfer_rate = number
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
spawn(5)
spawn(2)
broadcast_status()
update_icon()

View File

@@ -80,10 +80,14 @@
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = id
signal.data["device"] = "AO"
signal.data["power"] = on
signal.data["volume_rate"] = volume_rate
signal.data = list(
"tag" = id,
"device" = "AO",
"power" = on,
"volume_rate" = volume_rate,
//"timestamp" = world.time,
"sigtype" = "status"
)
radio_connection.post_signal(src, signal)
@@ -95,36 +99,31 @@
set_frequency(frequency)
receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || !signal.data["command"])
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0
switch(signal.data["command"])
if("power_on")
on = 1
if("power" in signal.data)
on = text2num(signal.data["power"])
if("power_off")
on = 0
if("power_toggle")
if("power_toggle" in signal.data)
on = !on
if("inject")
if("inject" in signal.data)
spawn inject()
return
if("set_volume_rate")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), air_contents.volume)
if("set_volume_rate" in signal.data)
var/number = text2num(signal.data["set_volume_rate"])
volume_rate = between(0, number, air_contents.volume)
volume_rate = number
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
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)
//log_admin("DEBUG \[[world.timeofday]\]: outlet_injector/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
//return
spawn(2)
broadcast_status()
update_icon()

View File

@@ -64,7 +64,7 @@
return
if (!node)
on = 0
//broadcast_status()
//broadcast_status() // from now air alarm/control computer should request update purposely --rastaf0
if(!on)
return 0
@@ -136,12 +136,13 @@
"area" = src.area_uid,
"tag" = src.id_tag,
"device" = "AVP",
"power" = on?("on"):("off"),
"power" = on,
"direction" = pump_direction?("release"):("siphon"),
"checks" = pressure_checks,
"internal" = internal_pressure_bound,
"external" = external_pressure_bound,
"timestamp" = air_master.current_cycle,
"timestamp" = world.time,
"sigtype" = "status"
)
radio_connection.post_signal(src, signal, radio_filter_out)
@@ -153,71 +154,79 @@
..()
//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
radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null
radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null
if(frequency)
set_frequency(frequency)
update_icon()
receive_signal(datum/signal/signal)
if(stat & (NOPOWER|BROKEN))
return
//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"])
if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command"))
return 0
switch(signal.data["command"])
if("power_on")
on = 1
if("power_off")
on = 0
if("power_toggle")
on = !on
if("toggle_checks")
pressure_checks = (pressure_checks?0:3)
if("set_direction")
var/number = text2num(signal.data["parameter"])
if(number > 0.5)
pump_direction = 1
else
pump_direction = 0
if("purge")
if("purge" in signal.data)
pressure_checks &= ~1
pump_direction = 0
if("stabalize")
if("stabalize" in signal.data)
pressure_checks |= 1
pump_direction = 1
if("set_checks")
var/number = round(text2num(signal.data["parameter"]),1)
pressure_checks = number
if("power" in signal.data)
on = text2num(signal.data["power"])
if("set_internal_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
if("power_toggle" in signal.data)
on = !on
internal_pressure_bound = number
if("checks" in signal.data)
pressure_checks = text2num(signal.data["checks"])
if("set_external_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
if("checks_toggle" in signal.data)
pressure_checks = (pressure_checks?0:3)
external_pressure_bound = number
if("direction" in signal.data)
pump_direction = text2num(signal.data["direction"])
if("init")
name = signal.data["parameter"]
if("set_internal_pressure" in signal.data)
internal_pressure_bound = between(
0,
text2num(signal.data["set_internal_pressure"]),
ONE_ATMOSPHERE*50
)
if("set_external_pressure" in signal.data)
external_pressure_bound = between(
0,
text2num(signal.data["set_external_pressure"]),
ONE_ATMOSPHERE*50
)
if("adjust_internal_pressure" in signal.data)
internal_pressure_bound = between(
0,
internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]),
ONE_ATMOSPHERE*50
)
if("adjust_external_pressure" in signal.data)
external_pressure_bound = between(
0,
external_pressure_bound + text2num(signal.data["adjust_external_pressure"]),
ONE_ATMOSPHERE*50
)
if("init" in signal.data)
name = signal.data["init"]
return
if("status")
//broadcast_status
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
else
log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
return
//log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
spawn(2)
broadcast_status()
update_icon()
@@ -235,7 +244,7 @@
return
attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/weldingtool))
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
if (W:remove_fuel(2,user))
user << "\blue Now welding the vent."
if(do_after(user, 20))

View File

@@ -63,13 +63,14 @@
"area" = area_uid,
"tag" = id_tag,
"device" = "AScr",
"timestamp" = air_master.current_cycle,
"on" = on,
"timestamp" = world.time,
"power" = on,
"scrubbing" = scrubbing,
"panic" = panic,
"filter_co2" = scrub_CO2,
"filter_toxins" = scrub_Toxins,
"filter_n2o" = scrub_N2O,
"sigtype" = "status"
)
radio_connection.post_signal(src, signal, radio_filter_out)
@@ -160,21 +161,26 @@
*/
receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || !signal.data["command"])
if(stat & (NOPOWER|BROKEN))
return
if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command"))
return 0
switch(signal.data["command"])
if("toggle_power")
if("power" in signal.data)
on = text2num(signal.data["power"])
if("power_toggle" in signal.data)
on = !on
if("toggle_scrubbing")
scrubbing = !scrubbing
if("toggle_co2_scrub")
scrub_CO2 = !scrub_CO2
if("toggle_tox_scrub")
scrub_Toxins = !scrub_Toxins
if("toggle_n2o_scrub")
scrub_N2O = !scrub_N2O
if("toggle_panic_siphon")
if("panic_siphon" in signal.data) //must be before if("scrubbing" thing
panic = text2num(signal.data["panic_siphon"])
if(panic)
on = 1
scrubbing = 0
volume_rate = 2000
else
scrubbing = 1
volume_rate = initial(volume_rate)
if("toggle_panic_siphon" in signal.data)
panic = !panic
if(panic)
on = 1
@@ -183,16 +189,37 @@
else
scrubbing = 1
volume_rate = initial(volume_rate)
if("init")
name = signal.data["parameter"]
if("scrubbing" in signal.data)
scrubbing = text2num(signal.data["scrubbing"])
if("toggle_scrubbing" in signal.data)
scrubbing = !scrubbing
if("co2_scrub" in signal.data)
scrub_CO2 = text2num(signal.data["co2_scrub"])
if("toggle_co2_scrub" in signal.data)
scrub_CO2 = !scrub_CO2
if("tox_scrub" in signal.data)
scrub_Toxins = text2num(signal.data["tox_scrub"])
if("toggle_tox_scrub" in signal.data)
scrub_Toxins = !scrub_Toxins
if("n2o_scrub" in signal.data)
scrub_N2O = text2num(signal.data["n2o_scrub"])
if("toggle_n2o_scrub" in signal.data)
scrub_N2O = !scrub_N2O
if("init" in signal.data)
name = signal.data["init"]
return
if("status")
//broadcast_status
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
else
log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
return
// log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
spawn(2)
broadcast_status()
update_icon()

View File

@@ -63,7 +63,7 @@
icon_state = "alert:0"
var/list/priority_alarms = list()
var/list/minor_alarms = list()
var/receive_frequency = "1437"
var/receive_frequency = 1437
/obj/machinery/computer/atmosphere/siphonswitch

View File

@@ -18,17 +18,6 @@
global
gl_uid = 1
/obj/machinery/alarm
name = "alarm"
icon = 'monitors.dmi'
icon_state = "alarm0"
anchored = 1.0
var/skipprocess = 0 //Experimenting
var/alarm_frequency = "1437"
use_power = 1
idle_power_usage = 5
active_power_usage = 0
/obj/machinery/autolathe
name = "Autolathe"
icon_state = "autolathe"

View File

@@ -32,7 +32,7 @@
heat_capacity = 700000
/turf/space/New()
icon = 'space.dmi'
// icon = 'space.dmi'
icon_state = "[pick(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)]"
/turf/simulated

View File

@@ -83,33 +83,30 @@
a.triggerAlarm("Power", src, source)
return
/area/proc/atmosalert()
if(src.name == "Space") //No atmos alarms in space
return
if(!(src.atmosalm))
src.atmosalm = 1
/area/proc/atmosalert(danger_level)
// if(src.type==/area) //No atmos alarms in space
// return 0 //redudant
if(danger_level != src.atmosalm)
//src.updateicon()
src.mouse_opacity = 0
//src.mouse_opacity = 0
if (danger_level==2)
var/list/cameras = list()
for(var/obj/machinery/camera/C in src)
for(var/area/RA in src.related)
//src.updateicon()
for(var/obj/machinery/camera/C in RA)
cameras += C
for(var/mob/living/silicon/aiPlayer in world)
aiPlayer.triggerAlarm("Atmosphere", src, cameras, src)
for(var/obj/machinery/computer/station_alert/a in world)
a.triggerAlarm("Atmosphere", src, cameras, src)
return
/area/proc/atmosreset()
if(src.atmosalm)
src.atmosalm = 0
src.mouse_opacity = 0
//src.updateicon()
else if (src.atmosalm == 2)
for(var/mob/living/silicon/aiPlayer in world)
aiPlayer.cancelAlarm("Atmosphere", src, src)
for(var/obj/machinery/computer/station_alert/a in world)
a.cancelAlarm("Atmosphere", src, src)
return
src.atmosalm = danger_level
return 1
return 0
/area/proc/firealert()
if(src.name == "Space") //no fire alarms in space

View File

@@ -10,7 +10,7 @@ obj/machinery/door/airlock
receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
if(id_tag != signal.data["tag"]) return
if(id_tag != signal.data["tag"] || !signal.data["command"]) return
switch(signal.data["command"])
if("open")
@@ -32,7 +32,7 @@ obj/machinery/door/airlock
locked = 0
update_icon()
sleep(5)
sleep(2)
open(1)
locked = 1
@@ -44,7 +44,7 @@ obj/machinery/door/airlock
close(1)
locked = 1
sleep(5)
sleep(2)
update_icon()
send_status()
@@ -54,7 +54,7 @@ obj/machinery/door/airlock
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = air_master.current_cycle
signal.data["timestamp"] = world.time
signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked")
@@ -127,7 +127,7 @@ obj/machinery/airlock_sensor
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = air_master.current_cycle
signal.data["timestamp"] = world.time
var/datum/gas_mixture/air_sample = return_air()

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,7 @@ obj/machinery/air_sensor
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = air_master.current_cycle
signal.data["timestamp"] = world.time
var/datum/gas_mixture/air_sample = return_air()
@@ -55,6 +55,7 @@ obj/machinery/air_sensor
signal.data["toxins"] = 0
signal.data["nitrogen"] = 0
signal.data["carbon_dioxide"] = 0
signal.data["sigtype"]="status"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
@@ -215,7 +216,7 @@ Rate: [volume_rate] L/sec<BR>"}
output += "<BR>"
if(output_info)
var/power = (output_info["power"] == "on")
var/power = (output_info["power"])
var/output_pressure = output_info["internal"]
output += {"<B>Output</B>: [power?("Open"):("On Hold")] <A href='?src=\ref[src];out_refresh_status=1'>Refresh</A><BR>
Max Output Pressure: [output_pressure] kPa<BR>"}
@@ -244,83 +245,43 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
if(..())
return
if(href_list["in_refresh_status"])
input_info = null
if(href_list["adj_pressure"])
var/change = text2num(href_list["adj_pressure"])
pressure_setting = between(0, pressure_setting + change, 50*ONE_ATMOSPHERE)
spawn(1)
src.updateDialog()
return
if(!radio_connection)
return 0
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = input_tag
signal.data["command"] = "status"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["in_refresh_status"])
input_info = null
signal.data = list ("tag" = input_tag, "status")
if(href_list["in_toggle_injector"])
input_info = null
if(!radio_connection)
return 0
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = input_tag
signal.data["command"] = "power_toggle"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
signal.data = list ("tag" = input_tag, "power_toggle")
if(href_list["out_refresh_status"])
output_info = null
if(!radio_connection)
return 0
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = output_tag
signal.data["command"] = "status"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
signal.data = list ("tag" = output_tag, "status")
if(href_list["out_toggle_power"])
output_info = null
if(!radio_connection)
return 0
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = output_tag
signal.data["command"] = "power_toggle"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
signal.data = list ("tag" = output_tag, "power_toggle")
if(href_list["out_set_pressure"])
output_info = null
if(!radio_connection)
return 0
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = output_tag
signal.data["command"] = "set_internal_pressure"
signal.data["parameter"] = "[pressure_setting]"
signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]")
signal.data["sigtype"]="command"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["adj_pressure"])
var/change = text2num(href_list["adj_pressure"])
pressure_setting = min(max(0, pressure_setting + change), 50*ONE_ATMOSPHERE)
spawn(7)
attack_hand(usr)
spawn(5)
src.updateDialog()
fuel_injection
icon = 'computer.dmi'
@@ -386,12 +347,11 @@ Max Output Pressure: [output_pressure] kPa<BR>"}
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = device_tag
if(injecting)
signal.data["command"] = "power_on"
else
signal.data["command"] = "power_off"
signal.data = list(
"tag" = device_tag,
"power" = injecting,
"sigtype"="command"
)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
@@ -441,10 +401,11 @@ Rate: [volume_rate] L/sec<BR>"}
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = device_tag
signal.data["command"] = "status"
signal.data = list(
"tag" = device_tag,
"status",
"sigtype"="command"
)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
if(href_list["toggle_automation"])
@@ -458,9 +419,11 @@ Rate: [volume_rate] L/sec<BR>"}
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = device_tag
signal.data["command"] = "power_toggle"
signal.data = list(
"tag" = device_tag,
"power_toggle",
"sigtype"="command"
)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
@@ -471,19 +434,21 @@ Rate: [volume_rate] L/sec<BR>"}
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = device_tag
signal.data["command"] = "inject"
signal.data = list(
"tag" = device_tag,
"inject",
"sigtype"="command"
)
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
/obj/machinery/computer/atmos_alert
var/datum/radio_frequency/radio_connection
initialize()
/obj/machinery/computer/atmos_alert/initialize()
set_frequency(receive_frequency)
receive_signal(datum/signal/signal)
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
var/zone = signal.data["zone"]
@@ -497,23 +462,25 @@ Rate: [volume_rate] L/sec<BR>"}
priority_alarms += zone
else if (severity=="minor")
minor_alarms += zone
else /*"clear"*/
/*else "clear"*/
//do nothing
update_icon()
proc
set_frequency(new_frequency)
/obj/machinery/computer/atmos_alert/proc/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_ATMOSIA)
attack_hand(mob/user)
/obj/machinery/computer/atmos_alert/attack_hand(mob/user)
user << browse(return_text(),"window=computer")
user.machine = src
onclose(user, "computer")
process()
/obj/machinery/computer/atmos_alert/process()
..()
src.updateDialog()
/obj/machinery/computer/atmos_alert/update_icon()
if(priority_alarms.len)
icon_state = "alert:2"
@@ -523,11 +490,7 @@ Rate: [volume_rate] L/sec<BR>"}
else
icon_state = "alert:0"
..()
src.updateDialog()
proc/return_text()
/obj/machinery/computer/atmos_alert/proc/return_text()
var/priority_text
var/minor_text
@@ -554,7 +517,7 @@ Rate: [volume_rate] L/sec<BR>"}
return output
Topic(href, href_list)
/obj/machinery/computer/atmos_alert/Topic(href, href_list)
if(..())
return
@@ -569,3 +532,4 @@ Rate: [volume_rate] L/sec<BR>"}
for(var/zone in minor_alarms)
if(ckey(zone) == removing_zone)
minor_alarms -= zone
update_icon()

View File

@@ -44,15 +44,16 @@
var/datum/signal/signal = new
signal.source = src
signal.transmission_method = 1
signal.data["tag"] = id
signal.data["device"] = "AM"
signal.data["pressure"] = round(env_pressure)
signal.data = list(
"tag" = id,
"device" = "AM",
"pressure" = round(env_pressure),
"sigtype" = "status"
)
radio_connection.post_signal(src, signal)
/obj/machinery/meter/examine()
set src in oview(1)
set src in view(3)
var/t = "A gas flow meter. "
if (src.target)
@@ -71,10 +72,10 @@
/obj/machinery/meter/Click()
if(stat & (NOPOWER|BROKEN))
return
return 1
var/t = null
if (get_dist(usr, src) <= 3 || istype(usr, /mob/living/silicon/ai))
if (get_dist(usr, src) <= 3 || istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/dead))
if (src.target)
var/datum/gas_mixture/environment = target.return_air()
if(environment)
@@ -87,7 +88,7 @@
usr << "\blue <B>You are too far away.</B>"
usr << t
return
return 1
/obj/machinery/meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if (!istype(W, /obj/item/weapon/wrench))

View File

@@ -130,6 +130,14 @@
stat &= ~EMPED
if (was_on)
turn_on()
/obj/machinery/bot/attack_ai(mob/user as mob)
if (src.on)
turn_off()
else
turn_on()
/******************************************************************/
// Navigation procs
// Used for A-star pathfinding

View File

@@ -111,12 +111,6 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
usr << "You press the weird button."
src.updateUsrDialog()
/obj/machinery/bot/cleanbot/attack_ai()
if (src.on)
turn_off()
else
turn_on()
/obj/machinery/bot/cleanbot/attackby(obj/item/weapon/W, mob/user as mob)
if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(src.allowed(usr))

View File

@@ -156,12 +156,6 @@ Auto Patrol: []"},
mode = SECBOT_IDLE
updateUsrDialog()
/obj/machinery/bot/ed209/attack_ai(mob/user as mob)
if (src.on)
turn_off()
else
turn_on()
/obj/machinery/bot/ed209/attackby(obj/item/weapon/W as obj, mob/user as mob)
if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged))
user << "\red You short out [src]'s target assessment circuits."
@@ -750,6 +744,8 @@ Auto Patrol: []"},
/obj/machinery/bot/ed209/emp_act(severity)
if (cam)
cam.emp_act(severity)
if (severity > 2)
..(severity-1)
else if (severity==2 && prob(70))
@@ -809,7 +805,7 @@ Auto Patrol: []"},
src.item_state = "ed209_shell"
src.icon_state = "ed209_shell"
del(W)
else if ((istype(W, /obj/item/weapon/weldingtool)) && (src.build_step == 3))
else if ((istype(W, /obj/item/weapon/weldingtool) && W:welding) && (src.build_step == 3))
if (W:remove_fuel(1,user))
src.build_step++
src.name = "shielded frame assembly"

View File

@@ -155,13 +155,6 @@
targetdirection = null
src.updateUsrDialog()
/obj/machinery/bot/floorbot/attack_ai()
if (src.on)
turn_off()
else
turn_on()
/obj/machinery/bot/floorbot/process()
set background = 1

View File

@@ -95,10 +95,6 @@
src.icon_state = "medibot[src.on]"
src.updateUsrDialog()
/obj/machinery/bot/medbot/attack_ai(mob/user as mob)
return toggle_power()
/obj/machinery/bot/medbot/attack_paw(mob/user as mob)
return attack_hand(user)
@@ -143,7 +139,10 @@
usr.machine = src
src.add_fingerprint(usr)
if ((href_list["power"]) && (src.allowed(usr)))
src.toggle_power()
if (src.on)
turn_off()
else
turn_on()
else if((href_list["adj_threshold"]) && (!src.locked))
var/adjust_num = text2num(href_list["adj_threshold"])
@@ -310,14 +309,6 @@
return
/obj/machinery/bot/medbot/proc/toggle_power()
if (src.on)
turn_off()
else
turn_on()
return
/obj/machinery/bot/medbot/proc/assess_patient(mob/living/carbon/C as mob)
//Time to see if they need medical help!
if(C.stat == 2)
@@ -447,6 +438,11 @@
src.stunned = min(stunned+10,20)
..()
/obj/machinery/bot/medbot/emp_act(severity)
if (cam)
cam.emp_act(severity)
..()
/obj/machinery/bot/medbot/explode()
src.on = 0
for(var/mob/O in hearers(src, null))

View File

@@ -195,14 +195,14 @@
/obj/machinery/bot/mulebot/attack_ai(var/mob/user)
usr.machine = src
user.machine = src
interact(user, 1)
/obj/machinery/bot/mulebot/attack_hand(var/mob/user)
. = ..()
if (.)
return
usr.machine = src
user.machine = src
interact(user, 0)
/obj/machinery/bot/mulebot/proc/interact(var/mob/user, var/ai=0)

View File

@@ -160,12 +160,6 @@ Auto Patrol: []"},
mode = SECBOT_IDLE
updateUsrDialog()
/obj/machinery/bot/secbot/attack_ai(mob/user as mob)
if (src.on)
turn_off()
else
turn_on()
/obj/machinery/bot/secbot/attackby(obj/item/weapon/W as obj, mob/user as mob)
if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged))
user << "\red You short out [src]'s target assessment circuits."
@@ -696,6 +690,11 @@ Auto Patrol: []"},
src.target = user
src.mode = SECBOT_HUNT
/obj/machinery/bot/secbot/emp_act(severity)
if (cam)
cam.emp_act(severity)
..()
//Secbot Construction
/obj/item/clothing/head/helmet/attackby(var/obj/item/device/radio/signaler/S, mob/user as mob)
@@ -726,7 +725,7 @@ Auto Patrol: []"},
/obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step))
if ((istype(W, /obj/item/weapon/weldingtool) && W:welding) && (!src.build_step))
if(W:remove_fuel(1,user))
src.build_step++
src.overlays += image('aibots.dmi', "hs_hole")

View File

@@ -55,11 +55,15 @@ datum/computer/file/embedded_program/access_controller
target_state = ACCESS_STATE_INTERNAL
process()
var/process_again = 1
while(process_again)
process_again = 0
switch(state)
if(ACCESS_STATE_INTERNAL) // state -1
if(target_state > state)
if(memory["interior_status"] == "locked")
state = ACCESS_STATE_LOCKED
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
@@ -82,10 +86,11 @@ datum/computer/file/embedded_program/access_controller
else
if(memory["interior_status"] == "closed" || memory["interior_status"] == "open")
state = ACCESS_STATE_INTERNAL
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "unlock"
signal.data["command"] = "secure_open"
post_signal(signal)
else if(target_state > state)
if(memory["interior_status"] != "locked")
@@ -99,10 +104,11 @@ datum/computer/file/embedded_program/access_controller
else
if(memory["exterior_status"] == "closed" || memory["exterior_status"] == "open")
state = ACCESS_STATE_EXTERNAL
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
signal.data["command"] = "unlock"
signal.data["command"] = "secure_open"
post_signal(signal)
else
if(memory["interior_status"] != "locked")
@@ -126,6 +132,7 @@ datum/computer/file/embedded_program/access_controller
if(target_state < state)
if(memory["exterior_status"] == "locked")
state = ACCESS_STATE_LOCKED
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag

View File

@@ -32,7 +32,7 @@ datum/computer/file/embedded_program/airlock_controller
memory["interior_status"] = signal.data["door_status"]
else if(receive_tag==airpump_tag)
if(signal.data["power"]=="on")
if(signal.data["power"])
memory["pump_status"] = signal.data["direction"]
else
memory["pump_status"] = "off"
@@ -57,11 +57,15 @@ datum/computer/file/embedded_program/airlock_controller
target_state = AIRLOCK_STATE_CLOSED
process()
var/process_again = 1
while(process_again)
process_again = 0
switch(state)
if(AIRLOCK_STATE_INOPEN) // state -2
if(target_state > state)
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
@@ -70,8 +74,11 @@ datum/computer/file/embedded_program/airlock_controller
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data["command"] = "power_off"
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
if(AIRLOCK_STATE_PRESSURIZE)
@@ -79,6 +86,7 @@ datum/computer/file/embedded_program/airlock_controller
if(sensor_pressure >= ONE_ATMOSPHERE*0.95)
if(memory["interior_status"] == "open")
state = AIRLOCK_STATE_INOPEN
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
@@ -86,19 +94,24 @@ datum/computer/file/embedded_program/airlock_controller
post_signal(signal)
else
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "siphon")
signal.data["command"] = "stabalize"
signal.data["stabalize"] = 1
else if(memory["pump_status"] != "release")
signal.data["command"] = "power_on"
signal.data["power"] = 1
post_signal(signal)
else if(target_state > state)
state = AIRLOCK_STATE_CLOSED
process_again = 1
if(AIRLOCK_STATE_CLOSED)
if(target_state > state)
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
@@ -107,6 +120,7 @@ datum/computer/file/embedded_program/airlock_controller
else if(target_state < state)
if(memory["exterior_status"] == "closed")
state = AIRLOCK_STATE_PRESSURIZE
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
@@ -116,8 +130,11 @@ datum/computer/file/embedded_program/airlock_controller
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data["command"] = "power_off"
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
if(AIRLOCK_STATE_DEPRESSURIZE)
@@ -136,16 +153,21 @@ datum/computer/file/embedded_program/airlock_controller
post_signal(signal)
else if(target_state < state)
state = AIRLOCK_STATE_CLOSED
process_again = 1
else if((target_state < state) && !sanitize_external)
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = airpump_tag
signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "release")
signal.data["command"] = "purge"
signal.data["purge"] = 1
else if(memory["pump_status"] != "siphon")
signal.data["command"] = "power_on"
signal.data["power"] = 1
post_signal(signal)
if(AIRLOCK_STATE_OUTOPEN) //state 2
@@ -153,8 +175,10 @@ datum/computer/file/embedded_program/airlock_controller
if(memory["exterior_status"] == "closed")
if(sanitize_external)
state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
@@ -163,13 +187,16 @@ datum/computer/file/embedded_program/airlock_controller
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data["command"] = "power_off"
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
memory["sensor_pressure"] = sensor_pressure
memory["processing"] = state != target_state
sensor_pressure = null
//sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0
return 1

View File

@@ -42,7 +42,8 @@ obj/machinery/embedded_controller
if(!signal || signal.encryption) return
if(program)
return program.receive_signal(signal, receive_method, receive_param)
program.receive_signal(signal, receive_method, receive_param)
//spawn(5) program.process() //no, program.process sends some signals and machines respond and we here again and we lag -rastaf0
Topic(href, href_list)
if(..())
@@ -50,8 +51,10 @@ obj/machinery/embedded_controller
if(program)
program.receive_user_command(href_list["command"])
spawn(5) program.process()
usr.machine = src
spawn(5) src.updateDialog()
process()
if(program)

View File

@@ -783,7 +783,7 @@
//SN src = null
del(src)
return
if (!( istype(W, /obj/item/weapon/weldingtool) ))
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding))
return
if (!( src.status ))
src.status = 1
@@ -875,7 +875,7 @@
//SN src = null
del(src)
return
if (!( istype(W, /obj/item/weapon/weldingtool) ))
if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding ))
return
if (!( src.status ))
src.status = 1
@@ -935,7 +935,7 @@
//SN src = null
del(src)
return
if (( istype(W, /obj/item/weapon/weldingtool) ))
if (( istype(W, /obj/item/weapon/weldingtool) && W:welding))
return
if (!( src.status ))
src.status = 1

View File

@@ -135,7 +135,7 @@
user << "\red The [src.name] needs to be unwelded from the floor."
return
else if(istype(W, /obj/item/weapon/weldingtool))
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
if(active)
user << "Turn off the [src] first."
return

View File

@@ -102,7 +102,7 @@
if(2)
user << "\red The [src.name] needs to be unwelded from the floor."
return
else if(istype(W, /obj/item/weapon/weldingtool))
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
switch(state)
if(0)
user << "\red The [src.name] needs to be wrenched to the floor."

File diff suppressed because it is too large Load Diff