class XORDetonator : XORFaller { override fun moved( movement : Movement ) { super.moved( movement ) if (movement.direction == dir) { val next = look(dir).item() // Don't explode a bomb if it hasn't finished falling. // This prevents a bomb being exploded while in free-fall from a faller // also in free fall. if (next is Explodes && !next.isMoving()) { actor.die() (next as Explodes).explode() } } } }