From 8015693e1489f27ec4222381a1e1a6f55d9900d4 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Fri, 26 Aug 2016 15:29:54 -0400 Subject: [PATCH] Being in front of the particle accelerator is now actually dangerous --- .../particle_accelerator/particle.dm | 38 ++++++++++--------- .../particle_accelerator/particle_emitter.dm | 12 +++--- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index b522d235aa2..d4490de81e7 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -4,9 +4,10 @@ icon = 'icons/obj/machines/particle_accelerator.dmi' icon_state = "particle" anchored = 1 - density = 1 + density = 0 var/movement_range = 10 var/energy = 10 + var/speed = 1 /obj/effect/accelerated_particle/weak movement_range = 8 @@ -21,24 +22,27 @@ energy = 50 -/obj/effect/accelerated_particle/New(loc, dir = 2) - src.setDir(dir) +/obj/effect/accelerated_particle/New(loc) + ..() - spawn(0) - move(1) + addtimer(src, "move", 1) /obj/effect/accelerated_particle/Bump(atom/A) - if (A) - if(ismob(A)) + if(A) + if(isliving(A)) toxmob(A) - if((istype(A,/obj/machinery/the_singularitygen))||(istype(A,/obj/singularity/))) - A:energy += energy + else if(istype(A, /obj/machinery/the_singularitygen)) + var/obj/machinery/the_singularitygen/S = A + S.energy += energy + else if(istype(A, /obj/singularity)) + var/obj/singularity/S = A + S.energy += energy -/obj/effect/accelerated_particle/Bumped(atom/A) - if(ismob(A)) - Bump(A) +/obj/effect/accelerated_particle/Crossed(atom/A) + if(isliving(A)) + toxmob(A) /obj/effect/accelerated_particle/ex_act(severity, target) @@ -46,15 +50,13 @@ /obj/effect/accelerated_particle/proc/toxmob(mob/living/M) M.rad_act(energy*6) - M.updatehealth() - -/obj/effect/accelerated_particle/proc/move(lag) +/obj/effect/accelerated_particle/proc/move() if(!step(src,dir)) - loc = get_step(src,dir) + forceMove(get_step(src,dir)) movement_range-- if(movement_range == 0) qdel(src) else - sleep(lag) - move(lag) + sleep(speed) + move() diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index 7c6ca75d305..de653f50679 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -27,15 +27,17 @@ /obj/structure/particle_accelerator/particle_emitter/proc/emit_particle(strength = 0) if((last_shot + fire_delay) <= world.time) last_shot = world.time - var/turf/T = get_step(src,dir) + var/turf/T = get_turf(src) + var/obj/effect/accelerated_particle/P switch(strength) if(0) - new/obj/effect/accelerated_particle/weak(T, dir) + P = new/obj/effect/accelerated_particle/weak(T) if(1) - new/obj/effect/accelerated_particle(T, dir) + P = new/obj/effect/accelerated_particle(T) if(2) - new/obj/effect/accelerated_particle/strong(T, dir) + P = new/obj/effect/accelerated_particle/strong(T) if(3) - new/obj/effect/accelerated_particle/powerful(T, dir) + P = new/obj/effect/accelerated_particle/powerful(T) + P.setDir(dir) return 1 return 0