Files
Polaris/code/game/gamemodes/nuclear/pinpointer.dm
mport2004@gmail.com c612827472 Singularity absorption explosion range lowered and is now dependent on singularity size.
BoH is no longer an instakill on a singularity, the chance the singularity will die from bombs now 25% from 10%.
Finished removing Metabslow from the game because delaying Interface rebuilds is a bad idea.
Sadly THE SUN is gone due to lighting lag issues, the current mob max luminosity is set to 7.
Damage and stun from doors shocking people has been lowered.
process() is now an obj level proc as it was already used by several procs and they can now jump onto the ticker if needed. 


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2199 316c924e-a436-60f5-8080-3fe189b3f50e
2011-09-14 07:24:19 +00:00

129 lines
3.2 KiB
Plaintext

/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_objects.Add(src)
/obj/item/weapon/pinpointer/Del()
processing_objects.Remove(src)
. = ..()
/obj/item/weapon/pinpointer/attack_self(mob/user as mob)
user.machine = src
var/dat
if (src.temp)
dat = "[src.temp]<BR><BR><A href='byond://?src=\ref[src];temp=1'>Clear</A>"
else
dat = "<B>Nuclear Disk Pinpointer</B><HR>"
dat += "<A href='byond://?src=\ref[src];refresh=1'>Refresh</A>"
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 = "<B>Nuclear Disk Pinpointer</B><HR>"
var/turf/sr = get_turf(src)
if (sr)
src.temp += "<B>Located Disks:</B><BR>"
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]<BR>"
src.temp += "<B>You are at \[[sr.x],[sr.y],[sr.z]\]</B> in orbital coordinates.<BR><BR><A href='byond://?src=\ref[src];refresh=1'>Refresh</A><BR>"
else
src.temp += "<B><FONT color='red'>Processing Error:</FONT></B> Unable to locate orbital position.<BR>"
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)
*/