diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 60bbefb7fc..f518612223 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -38,11 +38,9 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event if(max_i<=0) return var/Me = pickweight(meteortypes) - var/obj/effect/meteor/M = new Me(pickedstart) + var/obj/effect/meteor/M = new Me(pickedstart, pickedgoal) M.dest = pickedgoal M.z_original = M.z - spawn(0) - walk_towards(M, M.dest, 1) /proc/spaceDebrisStartLoc(startSide, Z) var/starty @@ -124,12 +122,13 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event walk(src,0) //this cancels the walk_towards() proc . = ..() -/obj/effect/meteor/New() - ..() +/obj/effect/meteor/Initialize(mapload, target) + . = ..() GLOB.meteor_list += src SSaugury.register_doom(src, threat) SpinAnimation() QDEL_IN(src, lifetime) + chase_target(target) /obj/effect/meteor/Collide(atom/A) if(A) @@ -184,6 +183,11 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event var/thing_to_spawn = pick(meteordrop) new thing_to_spawn(get_turf(src)) +/obj/effect/meteor/proc/chase_target(atom/chasing, delay = 1) + set waitfor = FALSE + if(chasing) + walk_towards(src, chasing, delay) + /obj/effect/meteor/proc/meteor_effect() if(heavy) var/sound/meteor_sound = sound(meteorsound)