@Override
	protected void enter() {
		final GameObject armour = ctx.objects.select().select(new Filter<GameObject>() {
			@Override
			public boolean accept(GameObject gameObject) {
				return gameObject.type() == GameObject.Type.INTERACTIVE;
			}
		}).select(ObjectDefinition.name(ctx, "Suit of armour")).poll();

		if (!armour.valid()) {
			log.info("Suit of armour not found!");
		}

		final GameObject door = ctx.objects.select().select(ObjectDefinition.name(ctx, "Door")).nearest(armour).poll();
		if (door.tile().distanceTo(ctx.players.local()) > 10) {
			final Tile tile = armour.tile().derive(0, 7).derive(Random.nextInt(-2, 5), Random.nextInt(-2, 5));
			final double distanceTo = tile.distanceTo(ctx.players.local());
			if (distanceTo > 4) {
				ctx.movement.myWalk(tile);
				return;
			}
			// Possible to get trapped with chef?
			return;
		}

		if (ctx.camera.prepare(door) && door.interact("Open")) {
			Condition.wait(new Callable<Boolean>() {
				@Override
				public Boolean call() throws Exception {
					return npc().valid();
				}
			}, 200, 50);
		}
	}