@Override
	public boolean branch() {
		Player player = ctx.players.local();

		if (ctx.game.clientState() != Constants.GAME_MAP_LOADED) {
			return false;
		}

		if (player == null || !script.options.getAreaSmall().contains(player)) {
			return false;
		}

		if (!ctx.backpack.isFull()) {
			return false;
		}

		if (ctx.skillingInterface.opened() && ctx.skillingInterface.getAction().equals("Smith")) {
			return true;
		}

		if (!script.options.isSmithing) {
			//ctx.log.info("SmithTrack branch not smithing");
			return true;
		}

		if (AnimationMonitor.timeSinceAnimation(LogArtisanWorkshop.ANIMATION_SMITHING) > animationTimelimit) {
			animationTimelimit = Random.nextInt(2000, 4000);
			if (Random.nextBoolean()) {
				animationTimelimit *= 2;
			}
			return true;
		}

		return false;
	}