/obj/item/weapon/pinpointer name = "pinpointer" icon = 'device.dmi' icon_state = "pinoff" flags = FPRINT | TABLEPASS| CONDUCT | ONBELT w_class = 2.0 item_state = "electronic" throw_speed = 4 throw_range = 20 m_amt = 500 var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 attack_self() if(!active) active = 1 work() usr << "\blue You activate the pinpointer" else active = 0 icon_state = "pinoff" usr << "\blue You deactivate the pinpointer" proc/work() if(!active) return if(!the_disk) the_disk = locate() if(!the_disk) active = 0 icon_state = "pinonnull" return src.dir = get_dir(src,the_disk) switch(get_dist(src,the_disk)) if(0) icon_state = "pinondirect" if(1 to 8) icon_state = "pinonclose" if(9 to 16) icon_state = "pinonmedium" if(16 to INFINITY) icon_state = "pinonfar" spawn(5) .() /*/obj/item/weapon/pinpointer/New() . = ..() processing_items.Add(src) /obj/item/weapon/pinpointer/Del() processing_items.Remove(src) . = ..() /obj/item/weapon/pinpointer/attack_self(mob/user as mob) user.machine = src var/dat if (src.temp) dat = "[src.temp]

Clear" else dat = "Nuclear Disk Pinpointer
" dat += "Refresh" user << browse(dat, "window=radio") onclose(user, "radio") /obj/item/weapon/pinpointer/process() /* //TODO: REWRITE set background = 1 var/turf/sr = get_turf(src) if (sr) for(var/obj/item/weapon/disk/nuclear/W in world) var/turf/tr = get_turf(W) if (tr && tr.z == sr.z) src.dir = get_dir(sr, tr) break */ /obj/item/weapon/pinpointer/Topic(href, href_list) ..() if (usr.stat || usr.restrained()) return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) usr.machine = src if (href_list["refresh"]) src.temp = "Nuclear Disk Pinpointer
" var/turf/sr = get_turf(src) if (sr) src.temp += "Located Disks:
" for(var/obj/item/weapon/disk/nuclear/W in world) var/turf/tr = get_turf(W) if (tr && tr.z == sr.z) var/distance = max(abs(tr.x - sr.x), abs(tr.y - sr.y)) var/strength = "unknown" var/directional = dir2text(get_dir(sr, tr)); if (distance < 5) strength = "very strong" else if (distance < 10) strength = "strong" else if (distance < 15) strength = "weak" else if (distance < 20) strength = "very weak" directional = "unknown" else continue if (!directional) directional = "right on top of it" src.temp += "[directional]-[strength]
" src.temp += "You are at \[[sr.x],[sr.y],[sr.z]\] in orbital coordinates.

Refresh
" else src.temp += "Processing Error: Unable to locate orbital position.
" else if (href_list["temp"]) src.temp = null if (istype(src.loc, /mob)) attack_self(src.loc) else for (var/mob/M in viewers(1, src)) if (M.client) src.attack_self(M) */