JNetHack TNG Patch 用 Patch の Version 1.20 です. 以下の修正を行います.
1. reject された噂を追加
2. ショッカーの効果が機能するように
3. ショッカー使用時のメッセージを追加
4. 力の杖の SPFX_TOUCH が機能するように
5. 力の杖に SPFX_NOGEN フラグを追加
6. ムーマクベーンが巨大ムーマクにも効くように
7. ムーマク, 巨大ムーマクの色を白に変更
ムーマクベーンが, TNG で追加された巨大ムーマクに効果が無いのはあんまりだと思ったので.
ファイル ダウンロード
使い方は, JNetHack3.4.3-0.11 に TNG 最新安定版 Patch を当てた後,
$ bzcat ../jnh3.4.3-0.11-tng-fix-v120.patch.bz2 | patch -p1
と入力するだけです. テスト版に適用できるかどうかはわかりません.
2019年08月22日
2019年08月09日
JNetHack TNG Patch 用 Patch を作製しました
2019年07月31日
JNetHack TNG Patch を当てた後に
JNetHack TNG (3.4.3 対応版, 最新安定版) で気になることがあったので, 少し変更してみました. パッチを当てた後に以下の変更を行い, コンパイルします.
1. 追加された属性武器が効果を発揮しない
ムーマクベーンは炎, ショッカーは電撃属性攻撃武器ですが, SPFX_ATTK フラグがついていません. これによりダメージ増加効果が発生しないことをショッカーで確認したので, これを解決します.
include/artilist.h
Mumakbane, Shocker に SPFX_ATTK flag を追加
2. ショッカーの攻撃時メッセージ
ショッカーで攻撃した際, 巨大なハンマーは, と形容されます. ミョルニール以外の電撃武器は考慮されていないようです. というわけで, ショッカー用のメッセージを追加します.
src/artifact.c
if (attacks(AD_ELEC, otmp)) {
if (realizes_damage)
の下のメッセージを
に変更する.
3. 力の杖
力の杖の効果は, コメントやコードを読むと, 他属性, 他クラスのアーティファクトに触れてもペナルティを受けずに使用できるようになる, という意図があるようですが, 実際にはうまく動いていないようです. そこで, 力の杖を wield 所持している場合, そういう風に動作するように変更しました.
include/prop.h
#define SECOND_CHANCE
の下に
を追加. その下の LAST_PROP の値を (ART_TOUCHABLE) に変更する.
include/youprop.h
#define Lifesaved
の下に
を追加
include/artilist.h
Wand of Might の
(SPFX_RESTR|SPFX_TOUCH), 0
を
SPFX_RESTR, SPFX_TOUCH
に置換
src/artifact.c
set_artifact_intrinsic の後半,
SPFX_REFLECT の on/off の下に
を追加. また,
if (oart->spfx & SPFX_TOUCH) return 1;
をコメントアウトし, その下に,
を追加.
間違いがある可能性があります. とりあえず, 期待したように動作することを, Wizard モードで確認しました.
2019年07月27日
JNetHack スクリーンショット
最近はネットハックばかり.
Geek の故郷へやってきた. ゲイツはマインドフレアと同じ吸い取り攻撃をしてきたと思うので, もっと武器が強くなるまで放っておくつもり.
願いを三回引いたであろうとわかる画像. ランプから二回, 泉から一回. 他クラスのクエストアーティファクトは, 後半になると手に入れづらくなるので, どうしても願ってしまう. 命の魔除けとかの方が安定するとは思う. PYEC は, 確か 3.2 から充填の効果が弱くなったが, 魔法のマーカは 50 まで充填できるし, まだ十分使える. アルゴルの太陽虎の歯は d20/d20 の威力がある. 3.4 では二刀流できるので, オリジナルの TNG よりも役に立つだろう.


2019年07月20日
JNetHack 3.4.3-0.11 に複数のパッチを当ててコンパイル
JNetHack 3.4.3-0.11 に, Random Quest Patch, TNG Patch, Fighter Patch, UTF-8 Patch
を追加して, コンパイルしました. 未来の自分が読んでも理解できるように, 手順をなるべく丁寧に書きました. 必要ないことや余計なことをしている可能性があります. OS は Linux Mint 18.3 xfce です.
1. 必要なファイルを用意
nethack-343-src.tgz
jnethack-3.4.3-0.11.diff.gz
(url https://osdn.net/projects/jnethack/releases/)
Random_Quest-J343-v2.0.2_for_jnethack34311_diff.zip
Fighter-J343-v2.0.0.lzh
(url http://sakusha.s26.xrea.com/x/FHS/others.html)
jnethack-3.4.3-0.10-tng-0.7.9.5.patch.bz2
(url http://www.phys98.homeip.net/~ide/jnethack.html)
jnethack-3.4.3-0.10-utf8-2.patch.bz2
(url http://elbereth.seesaa.net/article/242387348.html)
nhreplace.py
(url http://yahny.tm.land.to/game/install_jnh_ubuntu.html)
以上のファイルを
/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
と入力するだけで良いです.
2019年07月15日
JNethack TNG をコンパイル
JSlash'EM に続いて, JNethack TNG もコンパイルしました. 初 Nethack は PC-98 の TNG だったので, もう一度やってみたくなったのです. 今回は, JNethack 3.4.3-0.11 のソースに TNG 最新安定版 のパッチを当てます. 少し対象バージョンが違いますが, 大丈夫だろうと判断しました.
nethack-343-src.tgz
jnethack-3.4.3-0.11.diff.gz
を,
jnethack-3.4.3-0.10-tng-0.7.9.5.patch.bz2
nhreplace.py
をダウンロードして,
/home/ユーザー名/
に用意し, 端末で下記を入力
$ cd $HOME
$ sudo apt install build-essential flex bison libncurses-dev
$ tar zxvf nethack-343-src.tgz
$ cd nethack-3.4.3
$ zcat ../jnethack-3.4.3-0.11.diff.gz | patch -p1
$ bzcat ../jnethack-3.4.3-0.10-tng-0.7.9.5.patch.bz2 | patch -p1
テキストエディタで, dat/jrumors.tru.rej の 7 行目 の 2 文字目から行末までコピーし, dat/jrumors.tru の 76 行目に挿入する.
$ sh sys/unix/setup.sh
$ python ../nhreplace.py
$ make all
$ sudo make install
ここまで入力.
/home/ユーザー名/ に
OPTIONS=color
OPTIONS=windowtype:tty
OPTIONS=kcode:jis
を記述した .jnethackrc という名のテキストファイルを作成
端末から, jnethack で起動. mlterm から起動すると, 文字化けしませんでした.
mlterm のインストール方法
mlterm の設定
参考サイト
2019年06月21日
JSlash'EM スクリーンショット
JSlash'EM にジェダイパッチを適用してインストール
久々に JSlash'EM を起動しようとしたら失敗しました. 以前, OS を再インストールしたのですが, その際に HOME ディレクトリ以外のファイルは消えたようです. というわけで, もう一度インストールしました. OS は Linux Mint 18.3 Xfce です. 前回の記事は, 今読むと少しわかりづらいので, 今回はもう少し丁寧に書きました.
se007e7f3.tar.gz
jslashem-0.0.7E7F3-J0.2.1.diff.gz
jslashem_jedi_0.5.patch
nhreplace.py
をダウンロードして,
/home/ユーザー名/
に用意し, 端末で下記を入力
cd $HOME
sudo apt install build-essential flex bison libncurses-dev
tar zxvf se007e7f3.tar.gz
cd slashem-0.0.7E7F3
zcat ../jslashem-0.0.7E7F3-J0.2.1.diff.gz | nkf -e | patch -p1
patch -p1 < ../jslashem_jedi_0.5.patch | nkf -e
sh sys/unix/setup.sh
python ../nhreplace.py
make all
sudo make install
ここまで入力.
/home/ユーザー名/ に
OPTIONS=color
OPTIONS=windowtype:tty
OPTIONS=kcode:jis
を記述した .jslashemrc という名のテキストファイルを作成
起動時は,
[ターミナル > 文字エンコーディング > 日本語 > ISO-2022-JP]
を選択し,
jslashem
と入力すると起動する.
ISO-2022-JP 以外だと文字化けする. 起動時に文字化けしている場合は, あわてずにエンコーディングを変更し, インベントリでも表示すれば直る.
操作メモ. よく忘れる, というか忘れていたので.
[Shift + アイテムの記号] でその種類の全てのアイテムを選択&選択解除できる
~ で全てのアイテム
参考サイト
2019年04月15日
2019年04月12日
kivy ListView のアイテムが選択された時の処理を追加 続き
前回の続きです.
listadapter2.py
main.py
main.kv
main.py
main.kv
ListAdapter を継承したクラス, ListAdapter2 を別ファイルに記述し, 引数を関数にして, 使い回せるようにしました. いいクラス名が浮かばなかった. SelectableListAdapter にしようかと思ったけど, 元々選択はできるわけだし. callback という単語はよく見るけど, 意味はよくわかっていません. こういう使い方でいいんだろうか.