Particle accelerator will irradiate mobs again; adds COMSIG_CROSSED_MOVABLE signal

This commit is contained in:
Citinited
2019-10-25 00:50:42 +01:00
parent 22078ace9a
commit a0f7c9cacb
5 changed files with 31 additions and 40 deletions
@@ -22,30 +22,29 @@
energy = 50
/obj/effect/accelerated_particle/New(loc)
..()
/obj/effect/accelerated_particle/Initialize(loc)
. = ..()
addtimer(CALLBACK(src, .proc/propagate), 1)
RegisterSignal(src, COMSIG_CROSSED_MOVABLE, .proc/try_irradiate)
RegisterSignal(src, COMSIG_MOVABLE_CROSSED, .proc/try_irradiate)
QDEL_IN(src, movement_range)
addtimer(CALLBACK(src, .proc/move), 1)
/obj/effect/accelerated_particle/Bump(atom/A)
if(A)
if(isliving(A))
toxmob(A)
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
else if(istype(A, /obj/structure/blob))
var/obj/structure/blob/B = A
B.take_damage(energy * 0.6)
movement_range = 0
/obj/effect/accelerated_particle/Crossed(atom/A, oldloc)
/obj/effect/accelerated_particle/proc/try_irradiate(src, atom/A)
if(isliving(A))
toxmob(A)
var/mob/living/L = A
L.apply_effect((energy * 6), IRRADIATE, 0)
else if(istype(A, /obj/machinery/the_singularitygen))
var/obj/machinery/the_singularitygen/S = A
S.energy += energy
else if(istype(A, /obj/structure/blob))
var/obj/structure/blob/B = A
B.take_damage(energy * 0.6)
movement_range = 0
/obj/effect/accelerated_particle/Bump(obj/singularity/S)
if(!istype(S))
return ..()
S.energy += energy
/obj/effect/accelerated_particle/ex_act(severity)
@@ -54,17 +53,7 @@
/obj/effect/accelerated_particle/singularity_pull()
return
/obj/effect/accelerated_particle/proc/toxmob(mob/living/M)
M.apply_effect((energy * 6), IRRADIATE, 0)
/obj/effect/accelerated_particle/proc/move()
/obj/effect/accelerated_particle/proc/propagate()
addtimer(CALLBACK(src, .proc/propagate), 1)
if(!step(src,dir))
forceMove(get_step(src, dir))
movement_range--
if(movement_range == 0)
qdel(src)
else
sleep(speed)
move()