Fixes two runtimes in reagent reaction code (caused by my recent changes)

Fixes timer device not showing its countdown overlay when not attached (sprite was removed by accident probably).
Fixes timer/infrared beam/proximity sensor not being usable when freshly spawned because they weren't being processed.

Fixes infrared beam runtime (when the device is deleted the beam itself isn't, causing runtimes when crossing it).
This commit is contained in:
phil235
2015-08-23 17:29:57 +02:00
parent 1f1e539279
commit ed39df47f7
7 changed files with 42 additions and 34 deletions
-6
View File
@@ -103,12 +103,6 @@
user << "<span class='notice'>\The [src] can now be attached!</span>"
return
..()
return
/obj/item/device/assembly/process()
SSobj.processing.Remove(src)
return
/obj/item/device/assembly/examine(mob/user)
+16 -5
View File
@@ -10,6 +10,16 @@
var/obj/effect/beam/i_beam/first = null
var/obj/effect/beam/i_beam/last = null
/obj/item/device/assembly/infra/New()
..()
SSobj.processing |= src
/obj/item/device/assembly/infra/Destroy()
if(first)
qdel(first)
return ..()
/obj/item/device/assembly/infra/describe()
return "The infrared trigger is [on?"on":"off"]."
@@ -25,7 +35,8 @@
SSobj.processing |= src
else
on = 0
if(first) qdel(first)
if(first)
qdel(first)
SSobj.processing.Remove(src)
update_icon()
return secured
@@ -45,7 +56,7 @@
if(!on)
if(first)
qdel(first)
return
return
if(!secured)
return
if(first && last)
@@ -96,7 +107,7 @@
/obj/item/device/assembly/infra/interact(mob/user)//TODO: change this this to the wire control panel
if(is_secured(user))
user.set_machine(src)
var/dat = text("<TT><B>Infrared Laser</B>\n<B>Status</B>: []<BR>\n<B>Visibility</B>: []<BR>\n</TT>", (on ? text("<A href='?src=\ref[];state=0'>On</A>", src) : text("<A href='?src=\ref[];state=1'>Off</A>", src)), (src.visible ? text("<A href='?src=\ref[];visible=0'>Visible</A>", src) : text("<A href='?src=\ref[];visible=1'>Invisible</A>", src)))
var/dat = "<TT><B>Infrared Laser</B>\n<B>Status</B>: [on ? "<A href='?src=\ref[src];state=0'>On</A>" : "<A href='?src=\ref[src];state=1'>Off</A>"]<BR>\n<B>Visibility</B>: [visible ? "<A href='?src=\ref[src];visible=0'>Visible</A>" : "<A href='?src=\ref[src];visible=1'>Invisible</A>"]<BR>\n</TT>"
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
user << browse(dat, "window=infra")
@@ -105,7 +116,7 @@
/obj/item/device/assembly/infra/Topic(href, href_list)
..()
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
if(usr.incapacitated() || !in_range(loc, usr))
usr << browse(null, "window=infra")
onclose(usr, "infra")
return
@@ -127,7 +138,7 @@
set category = "Object"
set src in usr
if(usr.stat || !usr.canmove || usr.restrained())
if(usr.incapacitated())
return
dir = turn(dir, 90)
+12 -10
View File
@@ -15,6 +15,11 @@
/obj/item/device/assembly/prox_sensor/proc/sense()
/obj/item/device/assembly/prox_sensor/New()
..()
SSobj.processing |= src
/obj/item/device/assembly/prox_sensor/describe()
if(timing)
return "<span class='notice'>The proximity sensor is arming.</span>"
@@ -24,7 +29,7 @@
if(!..()) return 0//Cooldown check
timing = !timing
update_icon()
return 0
return 1
/obj/item/device/assembly/prox_sensor/toggle_secure()
@@ -55,13 +60,12 @@
/obj/item/device/assembly/prox_sensor/process()
if(timing && (time >= 0))
if(timing)
time--
if(timing && time <= 0)
timing = 0
toggle_scan()
time = 10
return
if(time <= 0)
timing = 0
toggle_scan()
time = initial(time)
/obj/item/device/assembly/prox_sensor/dropped()
@@ -113,7 +117,7 @@
/obj/item/device/assembly/prox_sensor/Topic(href, href_list)
..()
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
if(usr.incapacitated() || !in_range(loc, usr))
usr << browse(null, "window=prox")
onclose(usr, "prox")
return
@@ -137,5 +141,3 @@
if(usr)
attack_self(usr)
return
+11 -11
View File
@@ -10,6 +10,10 @@
var/time = 5
/obj/item/device/assembly/timer/New()
..()
SSobj.processing |= src
/obj/item/device/assembly/timer/describe()
if(timing)
return "The timer is counting down from [time]!"
@@ -20,7 +24,7 @@
if(!..()) return 0//Cooldown check
timing = !timing
update_icon()
return 0
return 1
/obj/item/device/assembly/timer/toggle_secure()
@@ -42,17 +46,16 @@
cooldown = 2
spawn(10)
process_cooldown()
return
update_icon()
/obj/item/device/assembly/timer/process()
if(timing && (time > 0))
if(timing)
time--
if(timing && time <= 0)
timing = 0
timer_end()
time = initial(time)
return
if(time <= 0)
timing = 0
timer_end()
time = initial(time)
/obj/item/device/assembly/timer/update_icon()
@@ -63,7 +66,6 @@
attached_overlays += "timer_timing"
if(holder)
holder.update_icon()
return
/obj/item/device/assembly/timer/interact(mob/user)//TODO: Have this use the wires
@@ -76,7 +78,6 @@
var/datum/browser/popup = new(user, "timer", name)
popup.set_content(dat)
popup.open()
return
/obj/item/device/assembly/timer/Topic(href, href_list)
@@ -107,4 +108,3 @@
if(usr)
attack_self(usr)
return