ID:147862
 
//When I call this proc, it freezes or locks up

mob/proc/shoot()
var/obj/projectile/fireball/F = new(src.loc)
F.startloc = src.loc
F.dir = src.dir
while(F)
var/turf/T = get_step(F,F.dir)
if(!T) del (F)
By the looks of it, that will freeze everything untill it reaches the edge of the map. I am assuming that you want to actually see the thing move, so I suggest you put a sleep(1) inside of that while-loop. This would let other procedures execute while this one stays in action and would also allow you to view the projectile.
In response to Loduwijk
By the looks of it, that will freeze everything untill it reaches the edge of the map. I am assuming that you want to actually see the thing move, so I suggest you put a sleep(1) inside of that while-loop. This would let other procedures execute while this one stays in action and would also allow you to view the projectile.

That and the fact that he never actually moves F so he's just getting the same tile over and over which just doesn't happin to be null.