tr_do_fall zmo Content: th [setq(p,secure(%0))];@while falling(%qp)= { th[setq(d,val(if(hasattr(loc(%qp),fall_delay),get(loc(%qp)/fall_delay),1)))] [setq(l,objeval(%qp,u(loc(%qp)/fall_destination)))] [setq(m,objeval(%qp,u(loc(%qp)/fall_message)))];@wait %qd= { @if isdbref(%ql)= { @tel %qp=%ql;@pemit %qp=%qm } } }, th falling(%qp,,false) One line version: th [setq(p,secure(%0))];@while falling(%qp)={th[setq(d,val(if(hasattr(loc(%qp),fall_delay),get(loc(%qp)/fall_delay),1)))][setq(l,objeval(%qp,u(loc(%qp)/fall_destination)))][setq(m,objeval(%qp,u(loc(%qp)/fall_message)))];@wait %qd={@if isdbref(%ql)={@tel %qp=%ql;@pemit %qp=%qm}}},th falling(%qp,,false)