JNetHack 3.4.3-0.11 に, Random Quest Patch, TNG Patch, Fighter Patch, UTF-8 Patch
を追加して, コンパイルしました. 未来の自分が読んでも理解できるように, 手順をなるべく丁寧に書きました. 必要ないことや余計なことをしている可能性があります. OS は Linux Mint 18.3 xfce です.
1. 必要なファイルを用意
以上のファイルを
/home/ユーザー名/
に用意する
2. 必要なものをインストール
$ sudo apt install build-essential flex bison libncurses-dev jlha-utils
3. パッチの展開および文字コード, 改行文字変換
$ cd $HOME
$ unzip Random_Quest-J343-v2.0.2_for_jnethack34311_diff.zip
$ nkf -e -Lu --overwrite Random_Quest-J343-v2.0.2_for_jnethack34311.diff
$ lha xi Fighter-J343-v2.0.0.lzh
$ nkf -e -Lu --overwrite Fighter-J343-v2.0.0-jnethack34310-080504[Release]-SJIS-LF.diff
4. ソースを展開
$ tar zxvf nethack-343-src.tgz
$ cd nethack-3.4.3
5. 日本語化
$ zcat ../jnethack-3.4.3-0.11.diff.gz | patch -p1
6. 差分用の元ディレクトリを作製
$ cd ..
$ cp -a -r nethack-3.4.3 nethack-3.4.3-orig
$ cd nethack-3.4.3
7. Random Quest, TNG, Fighter Patch を当てる. reject された場合, その都度 rej ファイルを参考に手動で当てる.
$ patch -p1 < ../Random_Quest-J343-v2.0.2_for_jnethack34311.diff
sys/winnt/Makefile.gcc
fighter.des を gnome.des に書き換え
$ bzcat ../jnethack-3.4.3-0.10-tng-0.7.9.5.patch.bz2 | patch -p1
src/role.c.rej は無視する
src/role.c
# ifdef TNG_ROLE で囲まれた 3 箇所を, healer の定義の上にカット & ペースト
PM_SOFTWARE_BUG を PM_GRID_BUG に書き換え
ART_NETHACK_SOURCE の末尾に S を追加
ifdef TNG_ROLE と, それに対応する endif を削除
include/you.h
#define Q_GEEK を #define Q_HEALER の上にカット & ペースト
Q_GEEK の値を (Q_FENCER+1) に, Q_HEALER の値を (Q_GEEK+1) にする
#define QR_GEEK を QR_HEALER の上にカット & ペースト
win/tty/wintty.c
630 行目 (healer の上) に
case 'g': flags.initrole = Q_GEEK; break;
を追加. 列を合わせる.
$ patch -p1 < ../Fighter-J343-v2.0.0-jnethack34310-080504[Release]-SJIS-LF.diff
src/role.c.rej は無視する
include/artifact.c.rej
copyright 表記の追加だけにする
include/artifact.c
artifact の生成数を抑制している部分 (260 行あたり),
#ifdef RANDOM_QUEST
を
#if defined(RANDOM_QUEST) || defined(FIGHTER)
に書き換える
win/share/objects.txt.rej, monsters.txt.rej はとりあえず無視.
src/u_init.c
Fighter のスキルに P_CHEMISTRY を P_SKILLED で追加.
他のクラスの, tng patch で追加された錬金術スキルと比較して, あってもいいと判断した.
include/qtext.h
N_HDR に上から +4, +2 する. これでいいか不安.
8. ここまでの差分を作製しておく.
$ cd ..
$ diff -urN nethack-3.4.3-orig nethack-3.4.3 > jnh3.4.3-0.11-rq-tng-fig.patch
$ bzip2 -f jnh3.4.3-0.11-rq-tng-fig.patch
$ cd nethack-3.4.3
9. utf-8 パッチを当てる
$ bzcat ../jnethack-3.4.3-0.10-utf8-2.patch.bz2 | patch -p1
sys/unix/unixmain.c の 22 行目に
#include <locale.h>
を追加.
10.インストール
$ sh sys/unix/setup.sh
$ python ../nhreplace.py
$ make all
$ sudo make install
11.設定ファイル
/home/ユーザー名/ に
OPTIONS=color
OPTIONS=windowtype:tty
を記述した .jnethackrc という名のテキストファイルを作成
12.起動
$ jnethack
utf-8 patch のおかげで, デフォルトの端末からでも文字化けせずに起動しました. 戦士とギークが追加されています.
13.補足
次にコンパイルする際は, 6, 7, 8 の過程を飛ばす代わりに,
$ bzcat ../jnh3.4.3-0.11-rq-tng-fig.patch.bz2 | patch -p1
と入力するだけで良いです.