mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
The various assemblies should be working now.
Old style bombs and suicide vests temporarily removed. Players can now be job banned from being a pAI. Added null checks to explosion() due to runtime errors. Changelog updated git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1980 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -585,9 +585,6 @@ Code:
|
||||
active3 = S
|
||||
|
||||
if("Send Signal")
|
||||
for(var/obj/item/assembly/r_i_ptank/R in world) //Bomblist stuff
|
||||
if((R.part1.code == src/radio:code) && (R.part1.frequency == radio:frequency))
|
||||
bombers += "[key_name(usr)] has activated a radio bomb (Freq: [format_frequency(radio:frequency)], Code: [radio:code]). Temp = [R.part3.air_contents.temperature-T0C]."
|
||||
spawn( 0 )
|
||||
radio:send_signal("ACTIVATE")
|
||||
return
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
|
||||
/obj/item/device/igniter/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if ((istype(W, /obj/item/device/radio/signaler) && !( src.status )))
|
||||
var/obj/item/device/radio/signaler/S = W
|
||||
if (!( S.b_stat ))
|
||||
return
|
||||
var/obj/item/assembly/rad_ignite/R = new /obj/item/assembly/rad_ignite( 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
|
||||
src.add_fingerprint(user)
|
||||
|
||||
else if ((istype(W, /obj/item/device/prox_sensor) && !( src.status )))
|
||||
|
||||
var/obj/item/assembly/prox_ignite/R = new /obj/item/assembly/prox_ignite( user )
|
||||
W.loc = R
|
||||
R.part1 = W
|
||||
W.layer = initial(W.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (user.r_hand == W)
|
||||
user.u_equip(W)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(W)
|
||||
user.l_hand = R
|
||||
W.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
|
||||
src.add_fingerprint(user)
|
||||
|
||||
else if ((istype(W, /obj/item/device/timer) && !( src.status )))
|
||||
|
||||
var/obj/item/assembly/time_ignite/R = new /obj/item/assembly/time_ignite( user )
|
||||
W.loc = R
|
||||
R.part1 = W
|
||||
W.layer = initial(W.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (user.r_hand == W)
|
||||
user.u_equip(W)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(W)
|
||||
user.l_hand = R
|
||||
W.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
|
||||
src.add_fingerprint(user)
|
||||
else if ((istype(W, /obj/item/device/healthanalyzer) && !( src.status )))
|
||||
|
||||
var/obj/item/assembly/anal_ignite/R = new /obj/item/assembly/anal_ignite( user ) // Hehehe anal
|
||||
W.loc = R
|
||||
R.part1 = W
|
||||
W.layer = initial(W.layer)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (user.r_hand == W)
|
||||
user.u_equip(W)
|
||||
user.r_hand = R
|
||||
else
|
||||
user.u_equip(W)
|
||||
user.l_hand = R
|
||||
W.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
|
||||
src.add_fingerprint(user)
|
||||
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
return
|
||||
src.status = !( src.status )
|
||||
if (src.status)
|
||||
user.show_message("\blue The igniter is ready!")
|
||||
else
|
||||
user.show_message("\blue The igniter can now be attached!")
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/device/igniter/attack_self(mob/user as mob)
|
||||
|
||||
src.add_fingerprint(user)
|
||||
spawn( 5 )
|
||||
ignite()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/device/igniter/proc/ignite()
|
||||
if (src.status)
|
||||
var/turf/location = src.loc
|
||||
|
||||
if (src.master)
|
||||
location = src.master.loc
|
||||
|
||||
location = get_turf(location)
|
||||
if(location)
|
||||
location.hotspot_expose(1000,1000)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/igniter/examine()
|
||||
set src in view()
|
||||
|
||||
..()
|
||||
if ((in_range(src, usr) || src.loc == usr))
|
||||
if (src.status)
|
||||
usr.show_message("The igniter is ready!")
|
||||
else
|
||||
usr.show_message("The igniter can be attached!")
|
||||
return
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
/obj/item/device/infra_sensor/proc/burst()
|
||||
for(var/obj/beam/i_beam/I in range(src.loc))
|
||||
I.left = 10
|
||||
for(var/obj/item/device/infra/I in range(src.loc))
|
||||
I.left = 8
|
||||
/* for(var/obj/item/device/infra/I in range(src.loc))ugh will have to fix this
|
||||
I.visible = 1
|
||||
spawn( 0 )
|
||||
if ((I && I.first))
|
||||
@@ -22,7 +22,7 @@
|
||||
spawn( 0 )
|
||||
if ((I.part2 && I.part2.first))
|
||||
I.part2.first.vis_spread(1)
|
||||
return
|
||||
return*/
|
||||
return
|
||||
|
||||
/obj/item/device/infra_sensor/attack_self(mob/user as mob)
|
||||
@@ -67,148 +67,4 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/device/infra/proc/hit()
|
||||
if (src.master)
|
||||
spawn()
|
||||
var/datum/signal/signal = new
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
src.master.receive_signal(signal)
|
||||
del(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/infra/process()
|
||||
if(!state)
|
||||
processing_items.Remove(src)
|
||||
return null
|
||||
|
||||
if ((!( src.first ) && (src.state && (istype(src.loc, /turf) || (src.master && istype(src.master.loc, /turf))))))
|
||||
var/obj/beam/i_beam/I = new /obj/beam/i_beam( (src.master ? src.master.loc : src.loc) )
|
||||
//world << "infra spawning beam : \ref[I]"
|
||||
I.master = src
|
||||
I.density = 1
|
||||
I.dir = src.dir
|
||||
step(I, I.dir)
|
||||
if (I)
|
||||
//world << "infra: beam at [I.x] [I.y] [I.z]"
|
||||
I.density = 0
|
||||
src.first = I
|
||||
//world << "infra : vis_spread"
|
||||
I.vis_spread(src.visible)
|
||||
spawn( 0 )
|
||||
if (I)
|
||||
//world << "infra: setting limit"
|
||||
I.limit = 20
|
||||
//world << "infra: processing beam \ref[I]"
|
||||
I.process()
|
||||
return
|
||||
if (!( src.state ))
|
||||
//src.first = null
|
||||
del(src.first)
|
||||
return
|
||||
|
||||
/obj/item/device/infra/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_infra/R = new /obj/item/assembly/rad_infra( 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/infra/attack_self(mob/user as mob)
|
||||
user.machine = src
|
||||
var/dat = text("<TT><B>Infrared Laser</B>\n<B>Status</B>: []<BR>\n<B>Visibility</B>: []<BR>\n</TT>", (src.state ? 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)))
|
||||
user << browse(dat, "window=infra")
|
||||
onclose(user, "infra")
|
||||
return
|
||||
|
||||
/obj/item/device/infra/Topic(href, href_list)
|
||||
..()
|
||||
if (usr.stat || usr.restrained())
|
||||
return
|
||||
if ((usr.contents.Find(src) || usr.contents.Find(src.master) || in_range(src, usr) && istype(src.loc, /turf)))
|
||||
usr.machine = src
|
||||
if (href_list["state"])
|
||||
src.state = !( src.state )
|
||||
src.icon_state = text("infrared[]", src.state)
|
||||
if (src.master)
|
||||
src.master:c_state(src.state, src)
|
||||
if(state)
|
||||
processing_items.Add(src)
|
||||
if (href_list["visible"])
|
||||
src.visible = !( src.visible )
|
||||
spawn( 0 )
|
||||
if (src.first)
|
||||
src.first.vis_spread(src.visible)
|
||||
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)
|
||||
src.attack_self(M)
|
||||
//Foreach goto(211)
|
||||
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)
|
||||
src.attack_self(M)
|
||||
//Foreach goto(287)
|
||||
else
|
||||
usr << browse(null, "window=infra")
|
||||
onclose(usr, "infra")
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/device/infra/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/item/device/infra/attack_hand()
|
||||
//src.first = null
|
||||
del(src.first)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/device/infra/Move()
|
||||
var/t = src.dir
|
||||
..()
|
||||
src.dir = t
|
||||
//src.first = null
|
||||
del(src.first)
|
||||
return
|
||||
|
||||
/obj/item/device/infra/verb/rotate()
|
||||
set name = "Rotate Infrared Laser"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
src.dir = turn(src.dir, 90)
|
||||
return
|
||||
@@ -1,171 +0,0 @@
|
||||
/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("<TT><B>Proximity Sensor</B>\n[] []:[]\n<A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>\n</TT>", (src.timing ? text("<A href='?src=\ref[];time=0'>Arming</A>", src) : text("<A href='?src=\ref[];time=1'>Not Arming</A>", src)), minute, second, src, src, src, src)
|
||||
dat += "<BR><A href='?src=\ref[src];state=1'>[state?"Armed":"Unarmed"]</A> (Movement sensor active when armed!)"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
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
|
||||
@@ -9,6 +9,16 @@ PLANT ANALYZER
|
||||
MASS SPECTROMETER
|
||||
|
||||
*/
|
||||
/obj/item/device/t_scanner
|
||||
name = "T-ray scanner"
|
||||
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
||||
icon_state = "t-ray0"
|
||||
var/on = 0
|
||||
flags = FPRINT|ONBELT|TABLEPASS
|
||||
w_class = 2
|
||||
item_state = "electronic"
|
||||
m_amt = 150
|
||||
origin_tech = "magnets=1;engineering=1"
|
||||
|
||||
/obj/item/device/t_scanner/attack_self(mob/user)
|
||||
|
||||
@@ -49,6 +59,17 @@ MASS SPECTROMETER
|
||||
if(M)
|
||||
M.invisibility = 2
|
||||
|
||||
/obj/item/device/detective_scanner
|
||||
name = "Scanner"
|
||||
desc = "Used to scan objects for DNA and fingerprints."
|
||||
icon_state = "forensic0"
|
||||
var/amount = 20.0
|
||||
var/printing = 0.0
|
||||
w_class = 3.0
|
||||
item_state = "electronic"
|
||||
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
|
||||
|
||||
|
||||
/obj/item/device/detective_scanner/attackby(obj/item/weapon/f_card/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -142,6 +163,20 @@ MASS SPECTROMETER
|
||||
//Foreach goto(186)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/healthanalyzer
|
||||
name = "Health Analyzer"
|
||||
icon_state = "health"
|
||||
item_state = "analyzer"
|
||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
||||
flags = FPRINT | ONBELT | TABLEPASS | CONDUCT
|
||||
throwforce = 3
|
||||
w_class = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 10
|
||||
m_amt = 200
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
|
||||
if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50))
|
||||
user << text("\red You try to analyze the floor's vitals!")
|
||||
@@ -187,6 +222,21 @@ MASS SPECTROMETER
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/analyzer
|
||||
desc = "A hand-held environmental scanner which reports current gas levels."
|
||||
name = "analyzer"
|
||||
icon_state = "atmos"
|
||||
item_state = "analyzer"
|
||||
w_class = 2.0
|
||||
flags = FPRINT | TABLEPASS| CONDUCT | ONBELT
|
||||
throwforce = 5
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
m_amt = 30
|
||||
g_amt = 20
|
||||
origin_tech = "magnets=1;engineering=1"
|
||||
|
||||
/obj/item/device/analyzer/attack_self(mob/user as mob)
|
||||
|
||||
if (user.stat)
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
/obj/item/device/timer/proc/time()
|
||||
src.c_state(0)
|
||||
|
||||
if (src.master)
|
||||
spawn( 0 )
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
src.master.receive_signal(signal)
|
||||
del(signal)
|
||||
return
|
||||
else
|
||||
for(var/mob/O in hearers(null, null))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
return
|
||||
|
||||
//*****RM
|
||||
|
||||
|
||||
/obj/item/device/timer/proc/c_state(n)
|
||||
src.icon_state = text("timer[]", n)
|
||||
|
||||
if(src.master)
|
||||
src.master:c_state(n)
|
||||
|
||||
return
|
||||
|
||||
//*****
|
||||
|
||||
/obj/item/device/timer/process()
|
||||
if (src.timing)
|
||||
if (src.time > 0)
|
||||
src.time = round(src.time) - 1
|
||||
if(time<5)
|
||||
src.c_state(2)
|
||||
else
|
||||
// they might increase the time while it is timing
|
||||
src.c_state(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
|
||||
// If it's not timing, reset the icon so it doesn't look like it's still about to go off.
|
||||
src.c_state(0)
|
||||
processing_items.Remove(src)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/timer/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/device/radio/signaler) )
|
||||
var/obj/item/device/radio/signaler/S = W
|
||||
if(!S.b_stat)
|
||||
return
|
||||
|
||||
var/obj/item/assembly/rad_time/R = new /obj/item/assembly/rad_time( 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)
|
||||
R.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/device/timer/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("<TT><B>Timing Unit</B>\n[] []:[]\n<A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>\n</TT>", (src.timing ? text("<A href='?src=\ref[];time=0'>Timing</A>", src) : text("<A href='?src=\ref[];time=1'>Not Timing</A>", src)), minute, second, src, src, src, src)
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=timer")
|
||||
onclose(user, "timer")
|
||||
else
|
||||
user << browse(null, "window=timer")
|
||||
user.machine = null
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/timer/Topic(href, href_list)
|
||||
..()
|
||||
if (usr.stat || usr.restrained() || usr.lying)
|
||||
return
|
||||
if ((usr.contents.Find(src) || usr.contents.Find(src.master) || in_range(src, usr) && istype(src.loc, /turf)))
|
||||
usr.machine = src
|
||||
if (href_list["time"])
|
||||
src.timing = text2num(href_list["time"])
|
||||
if(timing)
|
||||
src.c_state(1)
|
||||
processing_items.Add(src)
|
||||
|
||||
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=timer")
|
||||
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)
|
||||
src.add_fingerprint(usr)
|
||||
else
|
||||
usr << browse(null, "window=timer")
|
||||
return
|
||||
return
|
||||
Reference in New Issue
Block a user