Doors now retry if they fail to complete commands

This commit is contained in:
mwerezak
2014-07-11 10:49:41 -04:00
committed by ZomgPonies
parent 25c2fb2519
commit 3aaff9126d
+39 -2
View File
@@ -6,12 +6,16 @@ obj/machinery/door/airlock
var/frequency
var/shockedby = list()
var/datum/radio_frequency/radio_connection
var/cur_command = null //the command the door is currently attempting to complete
obj/machinery/door/airlock/proc/can_radio()
if( !arePowerSystemsOn() || (stat & NOPOWER) || isWireCut(AIRLOCK_WIRE_AI_CONTROL) )
return 0
return 1
obj/machinery/door/airlock/process()
..()
execute_current_command()
obj/machinery/door/airlock/receive_signal(datum/signal/signal)
if (!can_radio()) return
@@ -20,7 +24,19 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal)
if(id_tag != signal.data["tag"] || !signal.data["command"]) return
switch(signal.data["command"])
cur_command = signal.data["command"]
execute_current_command()
obj/machinery/door/airlock/proc/execute_current_command()
if (!cur_command)
return
do_command(cur_command)
if (command_completed(cur_command))
cur_command = null
obj/machinery/door/airlock/proc/do_command(var/command)
switch(command)
if("open")
open()
@@ -47,9 +63,30 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal)
lock()
sleep(2)
send_status()
obj/machinery/door/airlock/proc/command_completed(var/command)
switch(command)
if("open")
return (!density)
if("close")
return density
if("unlock")
return !locked
if("lock")
return locked
if("secure_open")
return (locked && !density)
if("secure_close")
return (locked && density)
return 1 //Unknown command. Just assume it's completed.
obj/machinery/door/airlock/proc/send_status()
if(radio_connection)