@Override
	protected void enter() {
		if (!ctx.players.local().inMotion() || ctx.movement.distance(ctx.movement.destination(), ctx.players.local()) < Random.nextInt(2, 5)) {
			final GameObject door = ctx.objects.select().select(ObjectDefinition.name(ctx, "Door")).each(Interactive.doSetBounds(new int[]{0, 32, -240, 0, 0, 120})).nearest().poll();
			if (door.valid() && ctx.camera.prepare(door) && !npc().valid() && door.interact("Open", "Door")) {
				LoopCondition.wait(new LoopCondition(new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return npc().valid();
					}
				}, new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return ctx.players.local().inMotion();
					}
				}), 200, 10);
				Condition.sleep(200);
			}
		} else {
			Condition.sleep(400);
		}
	}