ID:264488
 
Code:
        Fall()
var/atom/below=get_step(src,SOUTH)
//if the below atom isn't dense
if(!src.Enter(below))
sleep(3)
step(src,SOUTH)
Fall() //this is my problem, it keeps calling Fall()
//even after you hit a dense turf, why is that?
else return


Problem description:
Fall() will keep calling itself even after the below turf is confirmed to be dense.

Although, I'm curious, Enter() will only work if it's returns 1 but, if I remove the ! in the if(src.Enter(below)) line, it ceases to work. O_o


The Enter() proc should be called on the turf, not the atom entering.
Besides, you can just check the step(). If you checked the reference, it returns 1 on success.