private boolean interact(final SceneObject location, final String action, final boolean open) {
        final Point center = location.getCentralPoint();
        if (centralPoint == null || distanceBetween(Mouse.getLocation(), center) > 4) {
            centralPoint = center;
            if (!Calculations.isOnScreen(centralPoint)) {
                status = "Resetting yaw...";
                Camera.setAngle(Random.nextBoolean() ? Random.nextInt(320, 335) : Random.nextInt(285, 300));
            }
            Mouse.move(center.x, center.y, 4, 4);
        }

        if (open) {
            Mouse.click(true);
            return false;
        }
        return Menu.contains(action) && Menu.select(action);
    }