@Override
  public boolean onDialogEvent(QuestEnv env) {
    final Player player = env.getPlayer();
    final QuestState qs = player.getQuestStateList().getQuestState(questId);

    int targetId = 0;
    if (env.getVisibleObject() instanceof Npc) targetId = ((Npc) env.getVisibleObject()).getNpcId();

    if (qs == null || qs.getStatus() == QuestStatus.NONE) {
      if (targetId == 203711) // Miriya
      {
        if (env.getDialog() == DialogAction.QUEST_SELECT) return sendQuestDialog(env, 4762);
        else return sendQuestStartDialog(env);
      }
      return false;
    }

    int var = qs.getQuestVarById(0);

    if (qs.getStatus() == QuestStatus.REWARD) {

      if (targetId == 203711
          && player.getInventory().getItemCountByItemId(182206081) == 1) // Miriya
      {
        if (env.getDialog() == DialogAction.USE_OBJECT) return sendQuestDialog(env, 10002);
        else if (env.getDialogId() == DialogAction.SELECT_QUEST_REWARD.id())
          return sendQuestDialog(env, 5);
        else return sendQuestEndDialog(env);
      }
      return false;
    } else if (qs.getStatus() == QuestStatus.START) {
      if (targetId == 798321) // Koruchinerk
      {
        switch (env.getDialog()) {
          case QUEST_SELECT:
            if (var == 0) return sendQuestDialog(env, 1011);
            if (var == 1) return sendQuestDialog(env, 1352);
          case CHECK_USER_HAS_QUEST_ITEM:
            if (var == 1) {
              if (QuestService.collectItemCheck(env, true)) {
                if (!giveQuestItem(env, 182206080, 1)) return true;
                qs.setQuestVarById(0, var + 1);
                updateQuestStatus(env);
                return sendQuestDialog(env, 10000);
              } else return sendQuestDialog(env, 10001);
            }
          case SETPRO1:
            if (var == 0) qs.setQuestVarById(0, var + 1);
            updateQuestStatus(env);
            PacketSendUtility.sendPacket(
                player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
            return true;
        }
        return false;
      } else if (targetId == 279005
          && player.getInventory().getItemCountByItemId(182206080) == 1) // Kohrunerk
      {
        switch (env.getDialog()) {
          case QUEST_SELECT:
            if (var == 2) return sendQuestDialog(env, 1693);
          case SET_SUCCEED:
            if (var == 2) removeQuestItem(env, 182206080, 1);
            if (!giveQuestItem(env, 182206081, 1)) return true;
            PacketSendUtility.sendPacket(
                player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
            qs.setStatus(QuestStatus.REWARD);
            updateQuestStatus(env);
            return true;
        }
      }
      return false;
    }
    return false;
  }