/obj/item/device/prox_sensor/dropped()
spawn(0)
src.sense()
return
return
/obj/item/device/prox_sensor/proc/c_state(n)
src.icon_state = text("motion[]", n)
if(src.master)
src.master:c_state(n)
return
/obj/item/device/prox_sensor/proc/sense()
if (src.state)
if (src.master)
spawn(0)
src.master.receive_signal()
return
else
for(var/mob/O in hearers(null, null))
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
return
/obj/item/device/prox_sensor/process()
if (src.timing)
if (src.time > 0)
if(!src.state)
src.c_state(2)
src.time = round(src.time) - 1
else
time()
src.time = 0
src.timing = 0
if (!src.master)
if (istype(src.loc, /mob))
attack_self(src.loc)
else
for(var/mob/M in viewers(1, src))
if (M.client && (M.machine == src.master || M.machine == src))
src.attack_self(M)
else
if (istype(src.master.loc, /mob))
src.attack_self(src.master.loc)
else
for(var/mob/M in viewers(1, src.master))
if (M.client && (M.machine == src.master || M.machine == src))
src.attack_self(M)
else
processing_items.Remove(src)
return
return
/obj/item/device/prox_sensor/proc/time()
if (src.state == 0)
src.state = !( src.state )
src.icon_state = text("motion[]", src.state)
if (src.master)
src.master:c_state(src.state, src)
return
/obj/item/device/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
if (istype(AM, /obj/beam))
return
if (AM.move_speed < 12)
src.sense()
return
/obj/item/device/prox_sensor/attackby(obj/item/device/radio/signaler/S as obj, mob/user as mob)
if ((!( istype(S, /obj/item/device/radio/signaler) ) || !( S.b_stat )))
return
var/obj/item/assembly/rad_prox/R = new /obj/item/assembly/rad_prox( user )
S.loc = R
R.part1 = S
S.layer = initial(S.layer)
if (user.client)
user.client.screen -= S
if (user.r_hand == S)
user.u_equip(S)
user.r_hand = R
else
user.u_equip(S)
user.l_hand = R
S.master = R
src.master = R
src.layer = initial(src.layer)
user.u_equip(src)
if (user.client)
user.client.screen -= src
src.loc = R
R.part2 = src
R.layer = 20
R.loc = user
R.dir = src.dir
src.add_fingerprint(user)
return
/obj/item/device/prox_sensor/attack_self(mob/user as mob)
if (user.stat || user.restrained() || user.lying)
return
if ((user.contents.Find(src) || user.contents.Find(src.master) || get_dist(src, user) <= 1 && istype(src.loc, /turf)))
user.machine = src
var/second = src.time % 60
var/minute = (src.time - second) / 60
var/dat = text("Proximity Sensor\n[] []:[]\n- - + +\n", (src.timing ? text("Arming", src) : text("Not Arming", src)), minute, second, src, src, src, src)
dat += "
[state?"Armed":"Unarmed"] (Movement sensor active when armed!)"
dat += "
Close"
user << browse(dat, "window=prox")
onclose(user, "prox")
else
user << browse(null, "window=prox")
user.machine = null
return
/obj/item/device/prox_sensor/Topic(href, href_list)
..()
if (usr.stat || usr.restrained() || usr.lying)
return
if ((usr.contents.Find(src) || usr.contents.Find(src.master) || (get_dist(src, usr) <= 1) && istype(src.loc, /turf)))
usr.machine = src
if (href_list["state"])
src.state = !( src.state )
src.icon_state = text("motion[]", src.state)
if (src.master)
src.master:c_state(src.state, src)
if(state)
processing_items.Add(src)
if (href_list["time"])
src.timing = text2num(href_list["time"])
if(timing)
src.c_state(1)
if (href_list["tp"])
var/tp = text2num(href_list["tp"])
src.time += tp
src.time = min(max(round(src.time), 0), 600)
if (href_list["close"])
usr << browse(null, "window=prox")
usr.machine = null
return
if (!src.master)
if (istype(src.loc, /mob))
attack_self(src.loc)
else
for(var/mob/M in viewers(1, src))
if (M.client && (M.machine == src.master || M.machine == src))
src.attack_self(M)
else
if (istype(src.master.loc, /mob))
src.attack_self(src.master.loc)
else
for(var/mob/M in viewers(1, src.master))
if (M.client && (M.machine == src.master || M.machine == src))
src.attack_self(M)
else
usr << browse(null, "window=prox")
return
return
/obj/item/device/prox_sensor/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/item/device/prox_sensor/Move()
..()
src.sense()
return