Hmm. Could you bypass the two-checks thing by rendering the entity as being passable during your ent_move()?

=thomas