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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -18,17 +18,6 @@
global global
gl_uid = 1 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 /obj/machinery/autolathe
name = "Autolathe" name = "Autolathe"
icon_state = "autolathe" icon_state = "autolathe"

View File

@@ -32,7 +32,7 @@
heat_capacity = 700000 heat_capacity = 700000
/turf/space/New() /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)]" 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 /turf/simulated

View File

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

View File

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

View File

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

View File

@@ -130,6 +130,14 @@
stat &= ~EMPED stat &= ~EMPED
if (was_on) if (was_on)
turn_on() turn_on()
/obj/machinery/bot/attack_ai(mob/user as mob)
if (src.on)
turn_off()
else
turn_on()
/******************************************************************/ /******************************************************************/
// Navigation procs // Navigation procs
// Used for A-star pathfinding // 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." usr << "You press the weird button."
src.updateUsrDialog() 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) /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 (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(src.allowed(usr)) if(src.allowed(usr))

View File

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

View File

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

View File

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

View File

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

View File

@@ -160,12 +160,6 @@ Auto Patrol: []"},
mode = SECBOT_IDLE mode = SECBOT_IDLE
updateUsrDialog() 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) /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)) if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged))
user << "\red You short out [src]'s target assessment circuits." user << "\red You short out [src]'s target assessment circuits."
@@ -696,6 +690,11 @@ Auto Patrol: []"},
src.target = user src.target = user
src.mode = SECBOT_HUNT src.mode = SECBOT_HUNT
/obj/machinery/bot/secbot/emp_act(severity)
if (cam)
cam.emp_act(severity)
..()
//Secbot Construction //Secbot Construction
/obj/item/clothing/head/helmet/attackby(var/obj/item/device/radio/signaler/S, mob/user as mob) /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) /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)) if(W:remove_fuel(1,user))
src.build_step++ src.build_step++
src.overlays += image('aibots.dmi', "hs_hole") 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 target_state = ACCESS_STATE_INTERNAL
process() process()
var/process_again = 1
while(process_again)
process_again = 0
switch(state) switch(state)
if(ACCESS_STATE_INTERNAL) // state -1 if(ACCESS_STATE_INTERNAL) // state -1
if(target_state > state) if(target_state > state)
if(memory["interior_status"] == "locked") if(memory["interior_status"] == "locked")
state = ACCESS_STATE_LOCKED state = ACCESS_STATE_LOCKED
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag signal.data["tag"] = interior_door_tag
@@ -82,10 +86,11 @@ datum/computer/file/embedded_program/access_controller
else else
if(memory["interior_status"] == "closed" || memory["interior_status"] == "open") if(memory["interior_status"] == "closed" || memory["interior_status"] == "open")
state = ACCESS_STATE_INTERNAL state = ACCESS_STATE_INTERNAL
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag signal.data["tag"] = interior_door_tag
signal.data["command"] = "unlock" signal.data["command"] = "secure_open"
post_signal(signal) post_signal(signal)
else if(target_state > state) else if(target_state > state)
if(memory["interior_status"] != "locked") if(memory["interior_status"] != "locked")
@@ -99,10 +104,11 @@ datum/computer/file/embedded_program/access_controller
else else
if(memory["exterior_status"] == "closed" || memory["exterior_status"] == "open") if(memory["exterior_status"] == "closed" || memory["exterior_status"] == "open")
state = ACCESS_STATE_EXTERNAL state = ACCESS_STATE_EXTERNAL
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag signal.data["tag"] = exterior_door_tag
signal.data["command"] = "unlock" signal.data["command"] = "secure_open"
post_signal(signal) post_signal(signal)
else else
if(memory["interior_status"] != "locked") if(memory["interior_status"] != "locked")
@@ -126,6 +132,7 @@ datum/computer/file/embedded_program/access_controller
if(target_state < state) if(target_state < state)
if(memory["exterior_status"] == "locked") if(memory["exterior_status"] == "locked")
state = ACCESS_STATE_LOCKED state = ACCESS_STATE_LOCKED
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag 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"] memory["interior_status"] = signal.data["door_status"]
else if(receive_tag==airpump_tag) else if(receive_tag==airpump_tag)
if(signal.data["power"]=="on") if(signal.data["power"])
memory["pump_status"] = signal.data["direction"] memory["pump_status"] = signal.data["direction"]
else else
memory["pump_status"] = "off" memory["pump_status"] = "off"
@@ -57,11 +57,15 @@ datum/computer/file/embedded_program/airlock_controller
target_state = AIRLOCK_STATE_CLOSED target_state = AIRLOCK_STATE_CLOSED
process() process()
var/process_again = 1
while(process_again)
process_again = 0
switch(state) switch(state)
if(AIRLOCK_STATE_INOPEN) // state -2 if(AIRLOCK_STATE_INOPEN) // state -2
if(target_state > state) if(target_state > state)
if(memory["interior_status"] == "closed") if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_CLOSED state = AIRLOCK_STATE_CLOSED
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag signal.data["tag"] = interior_door_tag
@@ -70,8 +74,11 @@ datum/computer/file/embedded_program/airlock_controller
else else
if(memory["pump_status"] != "off") if(memory["pump_status"] != "off")
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = airpump_tag signal.data = list(
signal.data["command"] = "power_off" "tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal) post_signal(signal)
if(AIRLOCK_STATE_PRESSURIZE) if(AIRLOCK_STATE_PRESSURIZE)
@@ -79,6 +86,7 @@ datum/computer/file/embedded_program/airlock_controller
if(sensor_pressure >= ONE_ATMOSPHERE*0.95) if(sensor_pressure >= ONE_ATMOSPHERE*0.95)
if(memory["interior_status"] == "open") if(memory["interior_status"] == "open")
state = AIRLOCK_STATE_INOPEN state = AIRLOCK_STATE_INOPEN
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag signal.data["tag"] = interior_door_tag
@@ -86,19 +94,24 @@ datum/computer/file/embedded_program/airlock_controller
post_signal(signal) post_signal(signal)
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = airpump_tag signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "siphon") if(memory["pump_status"] == "siphon")
signal.data["command"] = "stabalize" signal.data["stabalize"] = 1
else if(memory["pump_status"] != "release") else if(memory["pump_status"] != "release")
signal.data["command"] = "power_on" signal.data["power"] = 1
post_signal(signal) post_signal(signal)
else if(target_state > state) else if(target_state > state)
state = AIRLOCK_STATE_CLOSED state = AIRLOCK_STATE_CLOSED
process_again = 1
if(AIRLOCK_STATE_CLOSED) if(AIRLOCK_STATE_CLOSED)
if(target_state > state) if(target_state > state)
if(memory["interior_status"] == "closed") if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_DEPRESSURIZE state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag signal.data["tag"] = interior_door_tag
@@ -107,6 +120,7 @@ datum/computer/file/embedded_program/airlock_controller
else if(target_state < state) else if(target_state < state)
if(memory["exterior_status"] == "closed") if(memory["exterior_status"] == "closed")
state = AIRLOCK_STATE_PRESSURIZE state = AIRLOCK_STATE_PRESSURIZE
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag signal.data["tag"] = exterior_door_tag
@@ -116,8 +130,11 @@ datum/computer/file/embedded_program/airlock_controller
else else
if(memory["pump_status"] != "off") if(memory["pump_status"] != "off")
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = airpump_tag signal.data = list(
signal.data["command"] = "power_off" "tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal) post_signal(signal)
if(AIRLOCK_STATE_DEPRESSURIZE) if(AIRLOCK_STATE_DEPRESSURIZE)
@@ -136,16 +153,21 @@ datum/computer/file/embedded_program/airlock_controller
post_signal(signal) post_signal(signal)
else if(target_state < state) else if(target_state < state)
state = AIRLOCK_STATE_CLOSED state = AIRLOCK_STATE_CLOSED
process_again = 1
else if((target_state < state) && !sanitize_external) else if((target_state < state) && !sanitize_external)
state = AIRLOCK_STATE_CLOSED state = AIRLOCK_STATE_CLOSED
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal signal.transmission_method = 1 //radio signal
signal.data["tag"] = airpump_tag signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "release") if(memory["pump_status"] == "release")
signal.data["command"] = "purge" signal.data["purge"] = 1
else if(memory["pump_status"] != "siphon") else if(memory["pump_status"] != "siphon")
signal.data["command"] = "power_on" signal.data["power"] = 1
post_signal(signal) post_signal(signal)
if(AIRLOCK_STATE_OUTOPEN) //state 2 if(AIRLOCK_STATE_OUTOPEN) //state 2
@@ -153,8 +175,10 @@ datum/computer/file/embedded_program/airlock_controller
if(memory["exterior_status"] == "closed") if(memory["exterior_status"] == "closed")
if(sanitize_external) if(sanitize_external)
state = AIRLOCK_STATE_DEPRESSURIZE state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else else
state = AIRLOCK_STATE_CLOSED state = AIRLOCK_STATE_CLOSED
process_again = 1
else else
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag signal.data["tag"] = exterior_door_tag
@@ -163,13 +187,16 @@ datum/computer/file/embedded_program/airlock_controller
else else
if(memory["pump_status"] != "off") if(memory["pump_status"] != "off")
var/datum/signal/signal = new var/datum/signal/signal = new
signal.data["tag"] = airpump_tag signal.data = list(
signal.data["command"] = "power_off" "tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal) post_signal(signal)
memory["sensor_pressure"] = sensor_pressure memory["sensor_pressure"] = sensor_pressure
memory["processing"] = state != target_state 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 return 1

View File

@@ -42,7 +42,8 @@ obj/machinery/embedded_controller
if(!signal || signal.encryption) return if(!signal || signal.encryption) return
if(program) 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) Topic(href, href_list)
if(..()) if(..())
@@ -50,8 +51,10 @@ obj/machinery/embedded_controller
if(program) if(program)
program.receive_user_command(href_list["command"]) program.receive_user_command(href_list["command"])
spawn(5) program.process()
usr.machine = src usr.machine = src
spawn(5) src.updateDialog()
process() process()
if(program) if(program)

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff