And how does the "im_on_fire()" function look like?

Also:
what is the set(my,INVISIBLE | PASSABLE); line supposed to do?
Who calls change_elem() ?