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" in signal.data)
on = !on
if("power_toggle")
on = !on
if("set_direction" in signal.data)
pump_direction = text2num(signal.data["set_direction"])
if("set_direction")
var/number = text2num(signal.data["parameter"])
if(number > 0.5)
pump_direction = 1
else
pump_direction = 0
if("checks" in signal.data)
pressure_checks = text2num(signal.data["checks"])
if("set_checks")
var/number = round(text2num(signal.data["parameter"]),1)
pressure_checks = number
if("purge" in signal.data)
pressure_checks &= ~1
pump_direction = 0
if("purge")
pressure_checks &= ~1
pump_direction = 0
if("stabalize" in signal.data)
pressure_checks |= 1
pump_direction = 1
if("stabalize")
pressure_checks |= 1
pump_direction = 1
if("set_input_pressure" in signal.data)
input_pressure_min = between(
0,
text2num(signal.data["set_input_pressure"]),
ONE_ATMOSPHERE*50
)
if("set_input_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
if("set_output_pressure" in signal.data)
output_pressure_max = between(
0,
text2num(signal.data["set_output_pressure"]),
ONE_ATMOSPHERE*50
)
input_pressure_min = number
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" in signal.data)
on = !on
if("power_toggle")
on = !on
if("set_output_pressure" in signal.data)
target_pressure = 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)
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
target_pressure = number
spawn(5)
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" in signal.data)
on = !on
if("power_toggle")
on = !on
if("set_transfer_rate" in signal.data)
transfer_rate = between(
0,
text2num(signal.data["set_transfer_rate"]),
air1.volume
)
if("set_transfer_rate")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), air1.volume)
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
transfer_rate = number
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" in signal.data)
on = !on
if("power_toggle")
on = !on
if("inject" in signal.data)
spawn inject()
return
if("inject")
spawn inject()
return
if("set_volume_rate" in signal.data)
var/number = text2num(signal.data["set_volume_rate"])
volume_rate = between(0, number, air_contents.volume)
if("set_volume_rate")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), air_contents.volume)
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
volume_rate = number
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,74 +154,82 @@
..()
//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("purge" in signal.data)
pressure_checks &= ~1
pump_direction = 0
if("power_off")
on = 0
if("stabalize" in signal.data)
pressure_checks |= 1
pump_direction = 1
if("power_toggle")
on = !on
if("power" in signal.data)
on = text2num(signal.data["power"])
if("toggle_checks")
pressure_checks = (pressure_checks?0:3)
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("checks" in signal.data)
pressure_checks = text2num(signal.data["checks"])
if("purge")
pressure_checks &= ~1
pump_direction = 0
if("checks_toggle" in signal.data)
pressure_checks = (pressure_checks?0:3)
if("stabalize")
pressure_checks |= 1
pump_direction = 1
if("direction" in signal.data)
pump_direction = text2num(signal.data["direction"])
if("set_checks")
var/number = round(text2num(signal.data["parameter"]),1)
pressure_checks = number
if("set_internal_pressure" in signal.data)
internal_pressure_bound = between(
0,
text2num(signal.data["set_internal_pressure"]),
ONE_ATMOSPHERE*50
)
if("set_internal_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), ONE_ATMOSPHERE*50)
if("set_external_pressure" in signal.data)
external_pressure_bound = between(
0,
text2num(signal.data["set_external_pressure"]),
ONE_ATMOSPHERE*50
)
internal_pressure_bound = number
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("set_external_pressure")
var/number = text2num(signal.data["parameter"])
number = min(max(number, 0), 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
)
external_pressure_bound = number
if("init" in signal.data)
name = signal.data["init"]
return
if("init")
name = signal.data["parameter"]
return
if("status" in signal.data)
spawn(2)
broadcast_status()
return //do not 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
//log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
spawn(2)
broadcast_status()
update_icon()
update_icon()
return
hide(var/i) //to make the little pipe section invisible, the icon changes.
@@ -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,42 +161,68 @@
*/
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")
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")
panic = !panic
if(panic)
on = 1
scrubbing = 0
volume_rate = 2000
else
scrubbing = 1
volume_rate = initial(volume_rate)
if("init")
name = signal.data["parameter"]
return
if("status")
//broadcast_status
if("power" in signal.data)
on = text2num(signal.data["power"])
if("power_toggle" in signal.data)
on = !on
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
log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
return
scrubbing = 1
volume_rate = initial(volume_rate)
if("toggle_panic_siphon" in signal.data)
panic = !panic
if(panic)
on = 1
scrubbing = 0
volume_rate = 2000
else
scrubbing = 1
volume_rate = initial(volume_rate)
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" in signal.data)
spawn(2)
broadcast_status()
return //do not update_icon
// log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
spawn(2)
broadcast_status()
update_icon()
update_icon()
return
power_change()

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
var/list/cameras = list()
for(var/obj/machinery/camera/C in src)
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()
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.mouse_opacity = 0
if (danger_level==2)
var/list/cameras = list()
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)
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)
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["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
if(href_list["in_refresh_status"])
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"] = "status"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
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
signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]")
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["sigtype"]="command"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
signal.data["tag"] = output_tag
signal.data["command"] = "set_internal_pressure"
signal.data["parameter"] = "[pressure_setting]"
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,79 +434,79 @@ 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()
set_frequency(receive_frequency)
/obj/machinery/computer/atmos_alert/initialize()
set_frequency(receive_frequency)
receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
var/zone = signal.data["zone"]
var/severity = signal.data["alert"]
var/zone = signal.data["zone"]
var/severity = signal.data["alert"]
if(!zone || !severity) return
if(!zone || !severity) return
minor_alarms -= zone
priority_alarms -= zone
if(severity=="severe")
priority_alarms += zone
else if (severity=="minor")
minor_alarms += zone
else /*"clear"*/
//do nothing
minor_alarms -= zone
priority_alarms -= zone
if(severity=="severe")
priority_alarms += zone
else if (severity=="minor")
minor_alarms += zone
/*else "clear"*/
//do nothing
update_icon()
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)
/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)
/obj/machinery/computer/atmos_alert/attack_hand(mob/user)
user << browse(return_text(),"window=computer")
user.machine = src
onclose(user, "computer")
attack_hand(mob/user)
user << browse(return_text(),"window=computer")
user.machine = src
onclose(user, "computer")
/obj/machinery/computer/atmos_alert/process()
..()
src.updateDialog()
process()
/obj/machinery/computer/atmos_alert/update_icon()
if(priority_alarms.len)
icon_state = "alert:2"
if(priority_alarms.len)
icon_state = "alert:2"
else if(minor_alarms.len)
icon_state = "alert:1"
else if(minor_alarms.len)
icon_state = "alert:1"
else
icon_state = "alert:0"
else
icon_state = "alert:0"
/obj/machinery/computer/atmos_alert/proc/return_text()
var/priority_text
var/minor_text
..()
if(priority_alarms.len)
for(var/zone in priority_alarms)
priority_text += "<FONT color='red'><B>[zone]</B></FONT> <A href='?src=\ref[src];priority_clear=[ckey(zone)]'>X</A><BR>"
else
priority_text = "No priority alerts detected.<BR>"
src.updateDialog()
if(minor_alarms.len)
for(var/zone in minor_alarms)
minor_text += "<B>[zone]</B> <A href='?src=\ref[src];minor_clear=[ckey(zone)]'>X</A><BR>"
else
minor_text = "No minor alerts detected.<BR>"
proc/return_text()
var/priority_text
var/minor_text
if(priority_alarms.len)
for(var/zone in priority_alarms)
priority_text += "<FONT color='red'><B>[zone]</B></FONT> <A href='?src=\ref[src];priority_clear=[ckey(zone)]'>X</A><BR>"
else
priority_text = "No priority alerts detected.<BR>"
if(minor_alarms.len)
for(var/zone in minor_alarms)
minor_text += "<B>[zone]</B> <A href='?src=\ref[src];minor_clear=[ckey(zone)]'>X</A><BR>"
else
minor_text = "No minor alerts detected.<BR>"
var/output = {"<B>[name]</B><HR>
var/output = {"<B>[name]</B><HR>
<B>Priority Alerts:</B><BR>
[priority_text]
<BR>
@@ -552,20 +515,21 @@ Rate: [volume_rate] L/sec<BR>"}
[minor_text]
<BR>"}
return output
return output
Topic(href, href_list)
if(..())
return
/obj/machinery/computer/atmos_alert/Topic(href, href_list)
if(..())
return
if(href_list["priority_clear"])
var/removing_zone = href_list["priority_clear"]
for(var/zone in priority_alarms)
if(ckey(zone) == removing_zone)
priority_alarms -= zone
if(href_list["priority_clear"])
var/removing_zone = href_list["priority_clear"]
for(var/zone in priority_alarms)
if(ckey(zone) == removing_zone)
priority_alarms -= zone
if(href_list["minor_clear"])
var/removing_zone = href_list["minor_clear"]
for(var/zone in minor_alarms)
if(ckey(zone) == removing_zone)
minor_alarms -= zone
if(href_list["minor_clear"])
var/removing_zone = href_list["minor_clear"]
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,85 +55,92 @@ datum/computer/file/embedded_program/access_controller
target_state = ACCESS_STATE_INTERNAL
process()
switch(state)
if(ACCESS_STATE_INTERNAL) // state -1
if(target_state > state)
if(memory["interior_status"] == "locked")
state = ACCESS_STATE_LOCKED
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
if(memory["interior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
if(ACCESS_STATE_LOCKED)
if(target_state < state)
if(memory["exterior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
if(memory["exterior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["interior_status"] == "closed" || memory["interior_status"] == "open")
state = ACCESS_STATE_INTERNAL
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
signal.data["command"] = "unlock"
if(memory["interior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
if(ACCESS_STATE_LOCKED)
if(target_state < state)
if(memory["exterior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
if(memory["exterior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
else if(target_state > state)
if(memory["interior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
if(memory["interior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
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"] = "secure_open"
post_signal(signal)
else if(target_state > state)
if(memory["interior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
if(memory["interior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
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"] = "secure_open"
post_signal(signal)
else
if(memory["exterior_status"] == "closed" || memory["exterior_status"] == "open")
state = ACCESS_STATE_EXTERNAL
if(memory["interior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
if(memory["interior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
else if(memory["exterior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
if(memory["exterior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
if(ACCESS_STATE_EXTERNAL) //state 1
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
signal.data["command"] = "unlock"
if(memory["exterior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["interior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
if(memory["interior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
else if(memory["exterior_status"] != "locked")
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
if(memory["exterior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
if(ACCESS_STATE_EXTERNAL) //state 1
if(target_state < state)
if(memory["exterior_status"] == "locked")
state = ACCESS_STATE_LOCKED
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
if(memory["exterior_status"] == "closed")
signal.data["command"] = "lock"
else
signal.data["command"] = "secure_close"
post_signal(signal)
return 1

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,119 +57,146 @@ datum/computer/file/embedded_program/airlock_controller
target_state = AIRLOCK_STATE_CLOSED
process()
switch(state)
if(AIRLOCK_STATE_INOPEN) // state -2
if(target_state > state)
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_CLOSED
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data["command"] = "power_off"
post_signal(signal)
if(AIRLOCK_STATE_PRESSURIZE)
if(target_state < state)
if(sensor_pressure >= ONE_ATMOSPHERE*0.95)
if(memory["interior_status"] == "open")
state = AIRLOCK_STATE_INOPEN
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
signal.data["command"] = "secure_open"
signal.data["command"] = "secure_close"
post_signal(signal)
else
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
if(memory["pump_status"] == "siphon")
signal.data["command"] = "stabalize"
else if(memory["pump_status"] != "release")
signal.data["command"] = "power_on"
post_signal(signal)
else if(target_state > state)
state = AIRLOCK_STATE_CLOSED
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
if(AIRLOCK_STATE_CLOSED)
if(target_state > state)
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_DEPRESSURIZE
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else if(target_state < state)
if(memory["exterior_status"] == "closed")
state = AIRLOCK_STATE_PRESSURIZE
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
if(AIRLOCK_STATE_PRESSURIZE)
if(target_state < state)
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
signal.data["command"] = "secure_open"
post_signal(signal)
else
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "siphon")
signal.data["stabalize"] = 1
else if(memory["pump_status"] != "release")
signal.data["power"] = 1
post_signal(signal)
else if(target_state > state)
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data["command"] = "power_off"
post_signal(signal)
if(AIRLOCK_STATE_DEPRESSURIZE)
var/target_pressure = ONE_ATMOSPHERE*0.05
if(sanitize_external)
target_pressure = ONE_ATMOSPHERE*0.01
if(sensor_pressure <= target_pressure)
if(AIRLOCK_STATE_CLOSED)
if(target_state > state)
if(memory["exterior_status"] == "open")
state = AIRLOCK_STATE_OUTOPEN
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
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
signal.data["command"] = "secure_open"
signal.data["command"] = "secure_close"
post_signal(signal)
else if(target_state < state)
state = AIRLOCK_STATE_CLOSED
else if((target_state < state) && !sanitize_external)
state = AIRLOCK_STATE_CLOSED
else
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = airpump_tag
if(memory["pump_status"] == "release")
signal.data["command"] = "purge"
else if(memory["pump_status"] != "siphon")
signal.data["command"] = "power_on"
post_signal(signal)
if(AIRLOCK_STATE_OUTOPEN) //state 2
if(target_state < state)
if(memory["exterior_status"] == "closed")
if(sanitize_external)
state = AIRLOCK_STATE_DEPRESSURIZE
else
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
if(AIRLOCK_STATE_DEPRESSURIZE)
var/target_pressure = ONE_ATMOSPHERE*0.05
if(sanitize_external)
target_pressure = ONE_ATMOSPHERE*0.01
if(sensor_pressure <= target_pressure)
if(target_state > state)
if(memory["exterior_status"] == "open")
state = AIRLOCK_STATE_OUTOPEN
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
signal.data["command"] = "secure_open"
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.data["tag"] = exterior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data["tag"] = airpump_tag
signal.data["command"] = "power_off"
signal.transmission_method = 1 //radio signal
signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "release")
signal.data["purge"] = 1
else if(memory["pump_status"] != "siphon")
signal.data["power"] = 1
post_signal(signal)
if(AIRLOCK_STATE_OUTOPEN) //state 2
if(target_state < state)
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
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
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