/obj/item/device/assembly/timer name = "timer" desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." icon_state = "timer" origin_tech = list(TECH_MAGNET = 1) matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10) wires = WIRE_PULSE secured = 0 var/timing = 0 var/time = 10 /obj/item/device/assembly/timer/activate() if(!..()) return FALSE set_state(!timing) update_icon() return 0 /obj/item/device/assembly/timer/toggle_secure() secured = !secured if(secured) START_PROCESSING(SSobj, src) else timing = 0 STOP_PROCESSING(SSobj, src) update_icon() return secured /obj/item/device/assembly/timer/proc/set_state(var/state) if(state && !timing) //Not running, starting though START_PROCESSING(SSobj, src) else if(timing && !state) //Running, stopping though STOP_PROCESSING(SSobj, src) timing = state /obj/item/device/assembly/timer/proc/timer_end() if(!secured) return 0 pulse(0) if(!holder) visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") /obj/item/device/assembly/timer/process() if(timing && time-- <= 0) set_state(0) timer_end() time = 10 /obj/item/device/assembly/timer/update_icon() overlays.Cut() attached_overlays = list() if(timing) overlays += "timer_timing" attached_overlays += "timer_timing" if(holder) holder.update_icon() return /obj/item/device/assembly/timer/interact(mob/user as mob)//TODO: Have this use the wires if(!secured) user.show_message("The [name] is unsecured!") return 0 var/second = time % 60 var/minute = (time - second) / 60 var/dat = text("Timing Unit\n[] []:[]\n- - + +\n", (timing ? text("Timing", src) : text("Not Timing", src)), minute, second, src, src, src, src) dat += "

Refresh" dat += "

Close" user << browse(dat, "window=timer") onclose(user, "timer") return /obj/item/device/assembly/timer/Topic(href, href_list, state = deep_inventory_state) if(..()) return 1 if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) usr << browse(null, "window=timer") onclose(usr, "timer") return if(href_list["time"]) var/new_timing = text2num(href_list["time"]) set_state(new_timing) update_icon() if(href_list["tp"]) var/tp = text2num(href_list["tp"]) time += tp time = min(max(round(time), 0), 600) if(href_list["close"]) usr << browse(null, "window=timer") return if(usr) attack_self(usr) return