@Override
  public boolean useItem(Playable playable, ItemInstance item, boolean ctrl) {
    Player player;
    if (playable.isPlayer()) player = (Player) playable;
    else if (playable.isPet()) player = playable.getPlayer();
    else return false;

    GameObject target = player.getTarget();
    if (target == null || !target.isMonster()) {
      player.sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET);
      return false;
    }

    MonsterInstance monster = (MonsterInstance) player.getTarget();

    if (!monster.isDead()) {
      player.sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET);
      return false;
    }

    Skill skill = SkillTable.getInstance().getInfo(HARVESTER_SKILL_ID, 1);
    if (skill != null && skill.checkCondition(player, monster, false, false, true)) {
      player.getAI().Cast(skill, monster);
      return true;
    }
    return false;
  }