------------------------------------------------------------
FHS patch (Funny-Honey-Spit patch) 蛇足メモ
作成者:Shiganai Sakusha
------------------------------------------------------------
------------------------------------------------------------
雑記
[にうきゃら掲示板(補助用)と連動している内容もあります。(こちらで書かれた内容が掲示板で解決とか)]
------------------------------------------------------------
-2016/12/29 (JNetHack3.6.3-0.7, 変愚蛮怒)
JNetHack公式に幾つかバグ報告。
パッチ作成/調整の傍らで気づいたものをまとめているので、
中にはスポイラー的な解析に片足突っ込んでるような代物も。
#なので、実際にソースをいじった箇所の周辺くらいにしか目が行き届きません。
#あとは動作試験中に気づいた点を調べていく程度。
ついでに、変愚蛮怒公式にも投下。
以前にkoka氏にkokabandで採用頂いた、rumors_j.txtの和訳箇所です。
#ずっと後に変愚蛮怒では未だに未訳のままだったのに気づいたものの、
#今まで投稿が延び延びになっていました。
まあ私は音楽関係からっきしなので、*band界隈に関しては門外漢もいいところですが。
*band系の内容に沿うよう、当時koka氏に添削頂いたのもいい思い出。
それにしても、2005年か…
それだけ時が経ったということもですが、
それよりもその間、*band界隈で訳そうという人がいなかった(ぽい)ことの方が驚きですだよ。
------------------------------------------------------------
-2016/12/27 (Special Hallucination patch 1.0.3)
久しぶりにNetHackをいじってみました。
Special Hallucination patchを
JNetHack3.6.0-0.7に対応。
…じつはbugfixの方がメインだったり(汗)。
> ■bugfix: 特定の見え方をする幻覚において,
> 一部の怪物名が日本語化されていなかったのを修正
それと同時に、vanilla日本語版周りでおかしな点が幾つか見つかったので
現在状況整理中。
主にいじっているのが自分で手を加えた改変品なので、
自分で手を加えたせいなのか、vanilla日本語版が原因なのかを切り分ける必要がありますし
場合によっては英語版本家とも突き合わせなきゃならんのです =□○_
------------------------------------------------------------
-2016/10/16 (FHS patch 0.8.28[Re])
あわわ、今更ながらに
FHSパッチのバイナリィファイルへのリンクミス修正しました。
#掲示板でご指摘頂いて初めて気がついた(汗)
ファイル自体はUpローダーに正常にUp済みだったのですが
紹介ページの方でリンク間違えてました。
申し訳ございません。
------------------------------------------------------------
-2016/09/29 (HTML dump patch 0.961)
…えー、先月公開しましたHTML dump patch(JNH3.6用)ですが、
コンパイル時に不具合が出ることが判明したため、
その箇所を修正してUpしました。
(統合ソース作成中にようやく気づいた)
修正が遅れてしまい申し訳ございません。
修正内容は以下の通り。
> ■ver0.96で生じていた以下の問題を修正
> ・コンパイルが途中で止まってしまう
> ・無効なNetHackW.exeが生成される
> #上記の修正に伴い、直前のメッセージ出力機能は再び無効化されています
具体的な修正としては
「cmd.cにあるset_last_message_to_html()の内容を(再び)無効化した」
といったところです。
なぜそんなことをしているのか、説明すると長くなりますが…
・元々このset_last_message_to_html()の処理の内容は、テキスト版(TTY)限定になっている。
# So-Miyaさんの作成された元版の時点で、既に
# 内容が丸ごと#ifdef TTY_GRAPHICS で規定されている。
#つまり初めからタイル版には対応していない。
これは、おそらく以下の定義等がTTY専用であるため。(win/tty/wintty.c等参照)
> struct WinDesc *cw = wins[WIN_MESSAGE];
・ちなみに、3.4まではTTY版とタイル版とでコンパイル時の処理が完全に分けられていた為、
これで問題なかった。
(TTY版とタイル版のどちらか一方しかコンパイルできない)
・しかし、3.6ではTTY版とタイル版を「同時にコンパイルする」ようになった為。
#ifdef TTY_GRAPHICS で区切ろうが何しようが、タイル版でも該当箇所が
コンパイル対象にされてしまうようになった。
この為、以下のような不具合が起きるようになった。
TTY版用exeコンパイル->成功->タイル版用exeコンパイル->失敗
TTY版では問題ないため、何とか生かせないかと色々と試してはみたものの、
ことごとく失敗。
結局、該当箇所を英語版3.6でのver0.951の状態に戻す(再封印)ことになりました。
直すあて? 無いです。
私の手に負えるものではなさそう。
#wintty.c等を駆使して、TTY版とタイル版との各コンパイル処理用ファイル内で
#それぞれ処理されるように分ければ何とかなるのかもしれませんが…
------------------------------------------------------------
-2016/09/24 (Random Quest patch 3.0.0)
Random Quest patchも
JNetHack3.6.0-0.6に対応。
以前に作った英語版も3.6には対応してなかったので
desファイルの仕様変更等、えらく苦労しましたが
既存のdesファイルとあれこれ突き合わせながら移植していき
何とかなりました。
これでとりあえず、パッチ類の整備は一段落(FHSパッチ以外)。
------------------------------------------------------------
-2016/09/15 (Random Quest patch(作業中))
3.6では3.4の時よりも処理が複雑化(選択切り替えの選択肢が増加)しているので、
3.4で専用に組んでいた職業選択画面の表示(2列表示で1ページに収める)を
流用することが出来ず、ページ送りもやむなしと考えながら
処理方法を模索していたのですが…
キャラ作成時の画面で、職業が特定数あった時に
ページ送りが効かなくなることがあって、
何日も悩んであれこれ試行錯誤した末、ようやく解決。
理由が判ればなんてことも無いのですが、
判るまでは他ヴァリアントの動作を確認したり、色々とやって、
本気で悩みましたよ。
#ページ送りにスペースキーを使うのに、
#行開け用の空き行にて、スペースが選択肢に設定されていた。
閑話休題。
----
掲示板より。
>まだ全自動になっていないのでまとめてから公開しようと思っていたのですが
>(中略)
>他にもソースを作るのに使っているツールとか色々あるのでいずれ公開しないと
なるほど、補助ツールあってのものだったのですね。 >JNetHack3.6
私なぞは個々の箇所を読み解いたり模倣したりは出来ても
「その先」が出来ないですから、頭が上がりません。
ツール類含めて、新規の処理を構築する技能も無いですし。
前回の公開品を「開発環境」と銘打っているのも、そのためです。
原理をほとんど理解せずに丸ごと叩き込んでいるような状態なので、
これ以上のメンテナンスは絶望的。
あくまで間に合わせ品なのです。
上記を踏まえてご利用ください。
------------------------------------------------------------
-2016/09/11 (開発環境 for JNetHack 3.6.0-0.6)
前回は、JNetHack 3.6.0の問題について書きました。
このソース自体をUpするかどうかは悩みましたが、一応公開しておきます。
JNetHack 3.6.0用のパッチを作成するための足がかりとしてご利用ください。
内容は単純です。
JNetHack3.4.3の和訳システムをJNetHack3.6に強引に組み込んだだけです。
・基本ソース:
基本: JNetHack3.6.0-0.6
和訳処理周り: JNetHack3.4.3-0.11
・追加ファイル:
dat/jtrnsmon.dat :怪物名の英日対比一覧
dat/jtrnsobj.dat :アイテム名/聖器名の英日対比一覧
japanese/jtrns.c :jtrns_mon()等の処理を行う
・使わなくなるファイル:
monstj.c :怪物のデータ(日本語名使用)
objectsj.c :アイテムのデータ(日本語名使用)
artilistj.h :聖器のデータ(日本語名使用)
・この環境下でも英日変換しないもの
地形名
罠名
神名
#※罠名に関してはjtrns_trap()という処理が追加されていますが、
#実際には機能していません。
#罠名の登録は地形名と一体化しており、地形名に引きずられて
#罠名も日本語登録されているためです。
*注意
・あまりテストしていないため、不具合があるかもしれません。各自、自分で修正して下さい。
基本的にメンテナンスや機能追加は行いません。行う能力もありません。
・これは、JNethack3.6用のパッチ開発の手助けを意図して作成したものです。
単品でも動きますが、一応、意図している使い方は以下の通り。
1) 当ソースを基本として独自パッチを組んでみる
#おそらく、JNetHack3.6よりも構造を理解しやすいかと思います。
2) パッチの動作等を確認したら、出来たものをJNetHack3.6に移植
#場合によっては当ソース独自の処理を幾つか置き換える必要が
#あるかもしれませんが、おそらく1)の作業の間に
#その辺りの対応法は多少なりとも身につくのではないかと。
3) 2)をもとにJNetHack3.6用のパッチとして公開
・参考までに、私個人では以下のように使う予定。
・単品バッチ: 製作の際にこれを使うか、JNetHack3.6にそのまま組み込むかは状況による
#それなりに「作り慣れている」からであり、真似はお勧めしません。
・FHSパッチ(予定): これを標準装備
それでは皆様、よきNetHackライフを。
------------------------------------------------------------
-2016/09/10 (Fighter patch for 3.6 :3.0.0)
…。
な、なんとかFighter patchをJNetHack3.6に対応…
地形用の*.desファイルの書式にも結構手が加わっているんですね。
randomの指定個数が減ったり、一部は括弧で囲むようになったり。
他の*.desファイルを覗いてみた所、どうやら配置する怪物等も
確率で変更可能になったみたいです。
まだまだ読み解けていない記述も見つかるし、やはり実物は良い教材ですね。
閑話休題。
----
ああ、前回ちょっと触れた
>以前(2016/02/08)、「アイテムや怪物の実装は比較的楽」と書きましたが、
>あれはあくまで3.4.3での話。
>残念ながらJNetHack3.6.0だと、これらの追加は滅茶苦茶困難な部類に入ると思われます。
>少なくともNetHackの改造初心者が見て理解できるものではなさそう。
これ、やっぱり結構響きますわ。
具体的には、JNetHack 3.6.0で、怪物やアイテム等の日本語処理が変わったのが原因。
・従来(JNetHack3.4.3まで)は、一部の要素は英語基準で処理し、
メッセージを出力する際に日本語に変換する処理を追加していた。
#怪物、アイテム、聖器、地形と罠、スキル、職業、神の名など。
#具体的にはjtrnsmon.datとjtrnsobj.datに記載されているもの全て。
・しかし、JNetHack3.6.0-0.6だと、これらの要素は全て各ファイル内のデータベースを
直接日本語に差し替える方式に変更。
…この新方式ですが、NetHackだとかなり問題です。
いえ、「NetHackだからこそ」大問題になります。
*bandとかCrawl等、Nethack以外であれば珍しくもない方式なのでしょうが…。
NetHackの独自仕様が問題に絡んでくるので、順番に解説します。
#私自身もさほど詳しいわけではないので(特に他のゲーム)、間違ったことを書いている
#可能性もあります。ご了承ください。
1) NetHackのソース上の特色として、
「怪物やアイテムのコード上での番号割り振りが、コンパイル時に自動で行われる」
というものがあります。
怪物だと"little dog"が PM_LITTLE_DOG = **番 とか、
アイテムだと"spear"が SPEAR = **番 とか、
一覧から自動的に生成してくれるんですね。
#具体的には monst.c、objects.c、artilist.h をもとに生成
他のローグライク(*bandとかCrawl等)ではあまり見たことないかも。
2) 一方、先ほどの一覧が出来ることを想定した上で、
ソースのあちこちにこれらを使った記述が書き込まれています。
例えば「ペットはPM_LITTLE_DOGとPM_KITTENのどちらか一方にする」とか
「この怪物にはSPEARを持たせる」等。
こちらは自動生成とは連動しないので、ソース内で記述は固定です。
…つまり、1)と2)で食い違いが出てしまっては困ります。
その為には、1)の基準になる怪物名/アイテム名の一覧は、「英語でなくてはなりません」。
この辺は3.6でもそれ以前でも変わり無いです。
なのですが、JNetHack3.6.0では、それらの一覧を「日本語に置き換えて」います。
…「日本語を追加して」ではないですよ。「置き換えて」いるんです。
それで1)が成り立つのかって?
無論、対処されてはいるのですが…
JNetHack3.6.0-0.6では、一覧の方を2種類に増やす事によって。
a)英語記述のmonst.c、objects.c、artilist.h。
これらは、おそらく 1)用の処理を行うため「だけ」に用います。
b)日本語記述のmonstj.c、objectsj.c、artilistj.h。
それ以降の処理では、おそらくこちらを用います。
ファイルは日本独自のもの。
内容は、a)における英語名(怪物名/アイテム名/聖器名)を日本語に置き換えただけ。
…済みません、素人目に見ても、無駄に複雑化しているようにしか見えないです…。
これによる問題? そりゃもう色々と。
A) a)とb)が食い違っていてもコンパイルは問題なく行われてしまう。
極端な話、a)にだけアイテムを追加しb)に追加しなくても、そのままコンパイル出来てしまう。
無論、そのままゲームを実行すると変なところでエラーに。
もちろん、英語版(3.6含む)とかJNetHackの従来版(3.4以前)用のパッチなどでは
b)は考慮されていないため、それらのパッチを適用した場合に
この点でトラブルになるおそれ高し。
B) ソース上やパッチファイル上で、a)とb)を直感的に対比させる方法が無い。
そのため、a)とb)の細かい数値が食い違っていても、一目では気づけない恐れ高し。
これはa)の書き換えが(ほとんど)無く、一方でb)は全面的に新規作成している為。
C) 上のB)とも関連するが、ソースやパッチファイルが、
英語名と日本語名の「対比表」として機能しなくなってしまった。
従来方式ならjtrnsmon.datとjtrnsobj.datが対比表としての役割を持っていたのですが…。
この為、
・未知の怪物やアイテムに対して、ソース内の2) の記述がどこにあるかを探すのが
難しくなってしまった
#対象の英語名が何であるか、a)とb)のファイルの同じ箇所を並べて
#見比べてみないとわからない
・願いの際にも日本語を強要され、柔軟性が無くなってしまった
#はてkittenって小猫だっけ子猫だっけ仔猫だっけ…
特に、パッチ等を新たに作る際には、
一目で確認や対比ができないというのは大問題です。
今までNetHack用のパッチを色々と作ってきた私でさえ難しいと感じる状態ですから、
はじめて手を出すような方にとっては尚更困難でしょう。
…さすがに、まずいのでは…。
------------------------------------------------------------
-2016/08/28 (HTML dump patch 0.96)
HTML dump patchも
JNetHack3.6.0-0.6に対応。
JNetHack3.6.0用の開発環境もなんとか整備できたし、
これで色々といじれそう。
気が向いたら、ですが(汗)。
------------------------------------------------------------
-2016/08/20 (Special Hallucination patch 1.0.2、Cloister generator patch 1.0.2)
間が開いてしまいましたが、
Special Hallucination patch と Cloister generator patch を
JNetHack3.6.0-0.6に対応。
中味も更に少し手を加えています。
特殊な幻覚が更に増えたり。
■幻覚追加: 時計仕掛けの幻覚、黄泉の幻覚
----
他のパッチもJNetHack3.6.0に対応させていきたくはありますが…
#Dungeon Map Overview 日本語版は除く。3.6.0で本家に組み込まれた為、
#パッチで追加する必要が無くなりました。
ここで大きな問題が。
以前(2016/02/08)、「アイテムや怪物の実装は比較的楽」と書きましたが、
あれはあくまで3.4.3での話。
残念ながらJNetHack3.6.0だと、これらの追加は滅茶苦茶困難な部類に入ると思われます。
少なくともNetHackの改造初心者が見て理解できるものではなさそう。
・HTML出力機能追加パッチ
これは問題なさそう。
・戦士パッチ
・ランダムクエスト
…う、新規アイテムや新規怪物の追加があるのか。
対応見送ろうかな…
ちなみに、
・FHSパッチ
最終的にはこれを丸ごと、ということになりますが、
新規に変更が必要な点や、重複機能の確認など、
ひとつひとつ確認しながら実装していくしかありません。
3.4.3で何年もかけて実装していった代物なので、
3.6.0に組み込むにも結構な時間がかかりそうです。
------------------------------------------------------------
-2016/07/28 (JNetHack 3.6.0-0.6)
よ、ようやくGCCコンパイル成功…
今まではまともにコンパイルできなかったのですよ。
英語版の方は問題なかったのに。
一応、JNetHack 3.6.0-0.6入手時からあれこれ試してはいました。
エラーメッセージからして日本語SHIFT-JISの文字コードが引っかかっているような雰囲気だったので、
(そういえばCGIでも同じような問題を以前に聞いたなあと思いながら)
該当の症状関係のページ等を参考に試行錯誤していたのですが…
ファイルの文字コードをあれこれ変換しても
charset=CP932何とかかんとかを付け足しても
ろくに変化が無く、とりあえず和訳を優先して途中で見送り。
前回の和訳作業の前半辺りまでのことです。
----
で、コンパイル出来ない状態で動作確認やら独自パッチやらに手をつけられるはずも無いので
前回の和訳完了後もずっと放置していた訳ですが…
ようやくやる気が出てきたので再挑戦。
以下のURLを再確認していると…
http://blog.livedoor.jp/tek_nishi/archives/9268074.html
>sys/unix/hints/macosx10.10 を修正
>CC=gcc-5
>CFLAGSに-finput-charset=CP932 -fexec-charset=CP932をつけたす
…うわ、Makefile.gccそのものを起動する時にオプション指定するんじゃなかったのか =□○_
という訳で、とりあえずコンパイルは成功。
でもjapaneseフォルダが丸ごと認識されていないっぽい。
なので、Makefile.mscやら3.4.3でのMakefile.gccやらを参考に色々組み込み、
ようやくまともにコンパイル可能になりました。
…疲れた。
------------------------------------------------------------
-2016/07/08 (JNetHack 3.6.0-0.6)
3.6.0のdata.base和訳、私の手に負えそうな箇所は完了。
まだ30項目ほど残ってますが、他の方にお任せしようかと。
------------------------------------------------------------
-2016/06/29 (JNetHack 3.6.0-0.6 / FHS patch 0.8.28)
現在なおも3.6.0のdata.base和訳中。
手に負えそうな部分は頑張ってみます。
あ、前回の和訳方針からちょっと変更/追加した箇所が。
(「新規部分」以降)
・新規部分:
一部は正確な訳ではなく、Wikipedia(日本語版)から引用し再構築
(引用元がWikipedia(EN)のものと、Encyclopedia(百科事典)やDictionary(辞典)系のものが該当)
#訳注:原典違い
・引用表記:
[ (邦題), (訳者), (出版社) ] の順で統一
従来訳で(邦題)(出版社)のいずれかが欠けていたものを調査、可能なら補完
一部の従来訳にあった(原作者)の表記は削除
青空文庫とプロジェクト杉田玄白についてはURLも記載
・未訳分
2016/06/29: 残43項目
#(**未**):
ざっとこんな感じです。
閑話休題。
----
FHSパッチでとっくに実装済みなのに、どうも検索にかかってない要素があるようなので。
試験的に、FHSパッチ用のjtrnsmon.datとjtrnsobj.datをそのままUpしてみました。
とりあえず、これだけですが。
ではでは。
------------------------------------------------------------
-2016/06/25 (JNetHack 3.6.0-0.6)
え、えーと…
いつの間にかNetHack 3.6.0の和訳化も進んでいたようで、
遅ればせながらここ数日は和訳作業に勤しんでおりました。
なお現在も継続中。
で、今はdata.baseの和訳にかかっております。
[JNetHack 3.6.0のdata.baseの和訳方針]
・タブ1つ(半角8マス分)加えて、半角70文字程度の幅に収まるよう文字数調整
70以上のものについてはほぼ変更なし
・題字部分は「英語->日本語」の順に並ぶように統一
・既存部分(3.4.3和訳済みの箇所を移植)
英文との食い違いに気づいた部分は文章改定
・新規部分
一部は正確な訳ではなく、Wikipedia(日本語版)から引用し再構築
(引用元がWikipedia(EN)のものと、一部の宝石類(素材に関する内容しか無いもの)が該当)
----
で、上記の最中に気づいたこと。
侍クエストのクエストガーディアンの"roshi"って…
https://en.wikipedia.org/wiki/R%C5%8Dshi
※リンク先はWikipedia(英語版)です
※英語が読めなくても構いませんが、日本語は読めるようにしておいて下さい
主君(クエストリーダー)が「大名佐藤」で、
宿敵(クエストネメシス)が「足利尊氏」な所にこれは…
3.6.0での追加説明を和訳していて一番の衝撃でしたよ、ええ(- -;)。
(なお2番目はraijin)
…あー、後で3.6.0のページに項目作ってまとめないと。
------------------------------------------------------------
-2016/02/25 (FHS patch 0.8.28)
FHSパッチ、正式版リリース。
前回の試験版の後もパッチ分離処理が続いていたんで、
結局中味も色々と変更することになってしまいました。
あと、パッチ化していない新たな変更点はこんなところかな:
-運命の大迷宮に出来得る割れ目(Chasm)の地形を変更
--割れ目の床部の地形をCORR(通路と同じ床面)->GROUND(地面)に変更
--割れ目の周囲に鉱山と同様の壁が出来る事があるようにした
-地獄の地形を一部変更
--ジョウビレックスの領域での侵食された町のマップにおいて,
水たまり/沼地/浅い水たまりが壁を侵食して生成され易いようにした
[要SHALLOW_WATER]
-隠れた水たまり/隠れた沼の生成処理を一部変更[WEBB_ENVIRONMENT]
-ウィルオーウィスプの処理の一部がWEBB_ENVIRONMENTで定義されていたのをWEBB_WISPに統一
-シャツの文章や柄を追加
--Tシャツの文章を追加: 今年の漢字2種ほか
--プリントシャツの柄を追加: 十二支,錬金術シンボル
--プリントシャツの一部の柄は「柄(がら)」と「印(シンボル)」の両方が出るようにした
-赤竜王の鱗鎧の追加機能を調整
--(旧)ダメージボーナスが((強化値/2)+α)上昇 -> (新)ダメージボーナスが(強化値+α)上昇
あと、これ。
-松明の挙動を改善[HONEY_TORCH]
--装備から外さない限り,予備武器との切り替えをしても松明が消えないようにした
これにより、松明を主武器にしなくても光源として使えるようになりました。
最初から左手に持たせられれば…とも思ったけど、実装に手間がかかりそうだったのでそちらは断念。
ライトセイバーも同じ箇所で処理していたので、これでライトセイバー二刀流を
…と思ったら、そちらは他の場所で消灯処理が入っているのか、結局消えてしまいますが。
----
といったところで、今年初めから手がけてきた作業も一段落。
次は3.6.0の日本語版が出てからかな。
それでは皆様、よきNetHackライフを。
------------------------------------------------------------
-2016/02/12 (Special hallucination patch 1.0.1 / HTML dump patch 0.951)
…ふう、ようやく一段落。
Special hallucinationと、HTML dumpの新版を公開しました。
どちらもJNetHack3.4.3用とNetHack3.6.0用があります。
ちなみにSpecial hallucinationは色々と処理を組み替えたんで、
現在公開中のFHSパッチ(0.8.28tes)の処理とはかなり造りが違うものになってます。
----
ここまで幾つか3.6対応パッチを作ってみて判った事:
うん、やっぱり一筋縄ではいきませんわ。
・以前にも述べた通り、3.4以前のパッチを自動であてるのは難しい。
かなりの部分を手作業であてることになるかと。
・処理によってはパラメータが増えたり、
処理そのものがごっそり削除されたり変更されたりしていることもあるため、
パッチ側も該当処理を手直ししていかないとコンパイル時にエラーに。
まあ、今回のバッチ類は3.6への移植の見本にでもして頂ければ。
日本語版が出来た後でも応用は効くでしょうし。
------------------------------------------------------------
-2016/02/08 (Special hallucination patch 1.00(作業中))
まずは色々お教え頂いた分をこちらにも。
> "patch -l <パッチファイル名" とすると、パッチ位置の
> 判別時に空白文字を無視してくれます。なのでインデント
> 以外の変更点がなければパッチが当たってくれます。
> ただ、それ以外の変更点(折り返しとか#ifdefとか)は
> 当然追随してくれないので、このオプションを付けても
> 当たってくれるのはせいぜい2割というところですが…。
> MinGWのようなunix風の環境でエラーメッセージをファイルに
> リダイレクトするには、
> "make install >& 000_makefilemsg.txt"というように
> ">"ではなく">&"を指定します。
argrathさん、有難うございます(_ _)。
----
その一方で進めていたのが、Special hallucination patchの分離処理。
「○○の幻覚」というように、色んなタイプの特殊な幻覚を追加するものです。
ただ、一部にはL氏のColoured Walls and Floorパッチも併用しており、
幻覚時の描画色を反映させるのに四苦八苦。
更にはFHSパッチ特有の怪物などに依存する幻覚もあるので、
vanillaに対応させるのも一苦労。
○ヴァ関連の幻覚は除外せざるを得ませんでした。
(今の所)幻覚で出すだけのダミーキャラを追加している状態なので…
#現在のFHSパッチでは、マコトの眼鏡やマヤのコンタクトレンズの効果も
#特殊な幻覚の一種として扱っています。
地形もそうですけど、さすがにvanilla用の単体パッチに
あれもこれもと一度に入れるわけにも行きませんしね。
FHSパッチ側の処理も同時に組みなおしつつ、
それでもなんとかメドはつきそうです。
これとHTML出力機能追加パッチ(HTML dump patch)とを3.6対応にしたら
今回の作業は一段落、かな…
----
そうそう、ついでに地形に関する話でも。
NetHackだと、新規地形の追加は結構手間がかかります。
他の色々な要素を新規追加する時と比べても、
怪物:
とりあえずmonst.cに追加すれば可能。
新たな特殊効果を持たない怪物なら、上記だけでも最低限は機能するでしょう。
#日本語名で登場させたいならjtrnsmon.datの方にも手を加えます。
アイテム:
とりあえずobjects.cに追加すれば可能。
実際には、特殊な効果を発揮させたいならその処理も追加しなければなりませんが。
#日本語名で登場させたいならjtrnsobjn.datの方にも手を加えます。
職業:
とりあえずrole.cに追加…だけでは済まないです。
srcフォルダ内の他のファイルをはじめ、includeやdatフォルダにも手を伸ばしていく
必要があります。
種族:
これも職業と同じく手間がかかるかと。
特殊階:
datフォルダにdesファイルを追加するのに始まり、
dungeon.defへの登録など、これも手間です。
これらに対し、
地形:
上記のsrc・include・datフォルダに留まらず、
sysやutil等のフォルダにも手を伸ばす必要があるでしょう。
yaccやlec(flex)等も扱う必要が出てきます。
ね、簡単でしょう?
…まあそんな訳で、特に地形に関しては
追加するのがえらく大変なのです。
ものによっては処理もあちこちに分散しているし。
なので、FHSからの分離処理でも、追加地形の移植は見送っています。
ご了承下さい。
------------------------------------------------------------
-2016/02/03 (--)
前回の
> HTML出力機能追加パッチ(HTML dump patch)
ですが、NH3.6への移植はとりあえず断念。
とりあえず3.6にも移植はしてみたのですが、
MinGWでコンパイルを開始したら、エラーメッセージが大量に流れ始めて
止まらない状態に。
エラー箇所を特定しようにも、一気に流れてしまって最初の方のメッセージが消えてしまい、
どのファイルがエラーの原因なのかも分からない有様。
BCCコンパイルの時にはこのようなbatファイルを使って
エラーメッセージもtxtファイルに書き込んでくれたんだけどなあ。
make /f Makefile.bcc install > 000_makefilemsg.txt
if ERRORLEVEL 1 pause
このbatファイルをGCC用に置き換えても、エラーメッセージがtxtファイルではなく
画面に直接出力されてしまうから駄目ですわ。
むう、次はどれにかかるべきか。
------------------------------------------------------------
-2016/02/02 (HTML出力機能追加パッチ ver0.95[for JNetHack3.4.3])
続けてHTML出力機能追加パッチ(HTML dump patch)を分離可能に。
So-Miyaさんの作られたパッチに手を加えたものです。
併せて今回、3.6の書式をもとに、パッチ全体の書式を調整しました。
#NetHackの書式から外れた独特の書き方が多かったのですよ。
このように色々分離しているのは、主に
・他の方にも扱い易くする為
・3.6用のパッチを作ってみたい為
という理由からです。
素人の腕でどこまで通用するかは分かりませんが。
------------------------------------------------------------
-2016/01/30 (Cloister generator patch 1.0.1[for JNetHack3.4.3/for NetHack 3.6])
Cloister generator patch、VerUpしました。
■NetHack3.6.0用を作成、公開
■タイルデータを追加
■一部のkoboldの色や能力、装備を調整
あと、前回の記事を少し整理して、単独ページにまとめました。
http://sakusha.s26.xrea.com/x/FHS/NH36patch_making.html
実際にはこれ以外にも、本家の処理の方でパラメータが増えていたりしているので
移植の際にそれらにも対処していく必要あり。
うーむ、一部を移植するだけでこれだけ手間がかかるとなると、
FHSパッチ全体の移植にはどれだけかかる事やら。
内容を3.6に合わせて手直しする必要もあるし。
まあ、そちらはおいおい。
------------------------------------------------------------
-2016/01/28 (Cloister generator patch 1.0.1[for NetHack 3.6](作業中))
前回作ったCloister generator patch[for 3.4]を
NetHack3.6.0に移植してみたのですが、
移植の際の注意点が色々と…
・まずコードの記述の際のルールががらりと変わっているので注意。
コードの書式(見栄え)に関するものなので絶対ではないとは思いますが、
3.4とはかなり造りが違います。
DEVELフォルダの内容辺りに目を通しておくと良いでしょう。
・まずは「横幅は半角78文字分までに制限」されています。
#…ifdefの行に入れていたpatchの注釈、短くしないとなあ。
・また「段落付けが半角スペース4つを基準として」います。
3.4では「タブ(半角8つ分)」を用いたり「タブ+半角4つ」で段落付けしたり
するのが主流だったので、3.6の書式にはことごとく合わないことに。
#…つまり、3.4用のパッチは
#3.6に対して単純にpatchコマンドで組み込むことがほぼ不可能かと。
#(前後の数行から挿入箇所を判断しており、
# 違いがあるとその箇所を飛ばすため)
#手作業で移植しなければなりません。…これの回避方法、無いですよね?
・他にもif () 等の造り(スペースの入れ方や行変え等)やmonst.cの書式なども
3.4から色々と変わっているので注意。
・3.4にはあったけど3.6ではdefineが削られているものが幾つかあるので
移植コードからもそれらを取り除く必要がある(ifdef等を削って直接記述にする)
・例えば WIZARD とか REINCARNATION とか。
・ちなみにGOLDOBJも含まれます。
・そして、3.4ではGOLDOBJはデフォルトでは無効になっていたけれど
3.6では直接組み込み、つまり「デフォルトで有効」。
…おそらく、レプラコーンが金の杖や燭台等を盗んでくるように
なるのではないかと。ご注意を。
#となると、MATERIALSパッチでの取り扱いも更なる注意が必要だな…
・3.6では聴覚障害(Deaf)を正式採用した為か、
3.4にあったflags.soundokは削除されている模様。
・また、メッセージ出力の際の各種コード(You_hear()やpline()等)の使い分けを
更に厳密に行う必要があるかと。
(聞こえなくなるメッセージや、耳が聞こえずとも表示すべきメッセージを
使い分ける必要がある)
・他にも色々とコード内容に変更があるでしょうが、ここでは割愛。
・タイル用ファイルの図柄の書式も変わっています。(win/share内)
3.4まではMが透過色扱いでしたが、3.6では「.(ピリオド)」が透過色扱いに。
また、色も増えています。
・3.4まで:色設定はA〜Tまで
・3.6:新たにU〜Zと0と1が追加。またMにも別色が割り振られています
・上記により、今までのタイル図柄もMをピリオドに変換すれば
その他は従来どおり(つまり、えらく手間)の感覚で組み込めそうです。
#なお、新色がどのようなものかは未確認。
そして、
・BCCコンパイルが公式サポートから削られた
#sys/winntフォルダから、Makefile.bcc自体が無くなっています。
#(2015/12/16版ソースファイル)
ぐはっ! (> <;)
組み込んだパッチがうまくいくかコンパイルして確認しようとしたらこれだよ…
むう、GCC(MinGWとか)辺りを導入しないといけないか…
------------------------------------------------------------
-2016/01/26 (Cloister generator patch 1.0.0)
…ふう。
Cloister generator、ようやく分離完了。
久々の新規パッチです。
単独配布品はこんな感じになりました。
-[CLOISTER_MAIN]
--部屋の外周が堀/溶岩で囲まれることがある処理(ver0.8.24〜)
--部屋の外周に床の回廊が作られることがある処理(ver0.8.24〜)
---部屋の内壁が鉄格子になっていたり,内壁が取り払われたりしている事もあります.
-[CLOISTER_ISLAND](old: TEST_ISLANDROOM)
--追加部屋:島(ISLAND)
--追加部屋:暗い森(DARKWOOD)(ver0.8.25〜)
--追加部屋:遊歩道(BOARDWALK)(ver0.8.27〜)
-[CLOISTER_KINGS](old: TEST_KINGSROOM)
--追加部屋:王の間(KINGSROOM)(ver0.8.25〜)
--追加怪物:洞窟コボルド,泥コボルド,山コボルド,汚染コボルド(Original)
--追加怪物:コボルドの鉱夫(from Nicholas Webb's Biodiversity Patch)
--追加怪物:沼コボルド,岩コボルド,コボルドの戦士(from JSLASH'EM)
--追加怪物:コボルドの王クルー(from JSLASH'EM)
--追加怪物:コボルドの女王クルーエラ(from NetHack--)
--コボルド系怪物の初期装備を充実させる処理
それほど特殊な処理はしていないはずだから、分離は素直に出来るだろうと思っていたら
実際にはFHSパッチ独自の特殊処理があちこちに。
vanillaでも通用するよう、あれやこれやと組みなおしてました。
ちなみに分離で手一杯だったので、JNetHack3.4.3用のままです。
3.6.0で通用するかどうかは不明。
------------------------------------------------------------
-2016/01/22 (FHS patch ver0.8.28tes20160123)
FHSパッチも試験版ですがVerUp。
まあ主な変更内容は後日公開する正式版と変わりない(予定)です。
-SCP/Dクラスナンバーの表示を廃止し,実験/被験者ナンバーに差し替え
-bogusgodsからワンダーテインメント博士を削除
-COLOURED_WALLS(一部の階層(地獄等)における描画色変更処理)を刷新した
-特殊な幻覚時の描画色変更処理を,COLOURED_WALLSの変更に合わせて一部統合した
-特殊な幻覚に「焦熱地獄(Gehennum)」と「酷寒地獄(Cocyutus)」を追加
変わるとすれば、この点ですね。
-Cloister generator patch(#define CLOISTER)の定義作業(途中)
ver0.8.24で追加した、部屋の周囲に回廊を作る処理を
まとめて独立パッチにしようかと。
別口でも配布できるように分離できたら、FHSパッチの正式版にも反映して配布予定。
それにしても、この処理を最初に作成したのは2010年か…
蛇足メモではdasoku_FHS_patch14.txtからdasoku_FHS_patch15.txtの時ですな。
時の流れを感じまする。
------------------------------------------------------------
-2016/01/22 (Random Quest v2.0.2)
Random Quest、久々にVerUpしました。
JNetHack3.4.3-0.11に対応させたのと、
FHSパッチでの細部調整を反映。
それと、英語版も作成しました。
これでようやく、Nethack patch databaseにも投稿できそう。
#FHSパッチと違ってpline()周りの不具合も起きていないですし。
長かった…
英語の紹介文書いて投稿したら、
次はFHSパッチの投稿ですな。
…と、思ってたけど、
Nethack patch databaseに投稿できないというトラブルが(T T)。
メール報告だけしておきました。
何とかなれば良いのですが…
先方がUnicodeしか受け付けない設定の場合、当方の環境では対処できない可能性あり。
場合によっては、FHS patch本体や現在未分離のpatch(cloister generator 等)の投稿は
見合わせる事も考えておいた方がいいかも。
------------------------------------------------------------
-2016/01/14 (--)
…ふう。
fix36.0の翻訳直後はもう限界でへろへろになっていたのですが、
なんとか持ち直してきてます。
それまでに結構削れていた精神を限界近くまで削りながら作業してたもので
NH3.6.0のページの記述もちと無味乾燥な状態ですが、
まあ内容はどうにか伝わると思うので…
再び余裕が出来たら追記したいこと:
・IBM Graphicsとかの表示形式を、ゲーム中にオプションで自在に切替できるようになったよ
(従来はコンパイル時に固定されていた)
・↑のお陰で、英語公式サイトからバイナリィをDLしても、まともにプレイできるようになったよ!
(従来は壁などの地形が文字化けしてしまい、まともに遊ぶのが難しかった)
閑話休題。
----
で、FHSパッチの方は、
解説用の資料を少しずつまとめ始めました。
具体的には、fhs_doc/FHS_composition.txt を再整備。
使用している他の方のパッチ類等の一覧をまとめている所です。
想定している作業の流れとしては:
1. include/config.hをもとに、組み込みパッチの一覧を作成
2. 更新履歴(fhs_doc/FHS_history***.txt等)をもとに1.を補完
(直接組み込んでいてconfig.hのdefineに含まれていないパッチもあるのですよ)
3. それらをもとに、自作した要素の紹介を別口でまとめていく
現在は1.が完了し、2.にかかっているところです。
まだ本調子とはいえませんが、ゆっくりと、ゆっくりと。
------------------------------------------------------------
-2016/01/01 (FHSパッチver0.8.27c[Release])
明けましておめでとうございます。
今年もよろしくお願いします。
なんか色々と年末ぎりぎりまでトラぶってましたが、どうにか一段落。
ようやくNetHackに本腰を入れられそうです。
とりあえず、NetHack3.6.0のページを作成し、和訳の際に参考になりそうな資料を(一部中途ながら)載せてみました。
・和訳時の横書きの句読点の扱いについて(完了)(2016/01/01)
・fix36.0の翻訳(作業中)
おそらく項目はこれ以上は増えません(ぇ)。
----
あと、FHSパッチを0.8.27cにVerUp。
変更点は…ゲーム内容としてはほとんど無いも同然ですが。
-井出氏のクレジットをフルネーム表記に変更 -> Kiyotomo Ide
-幻覚時限定の怪物名を一部置き換え ->缶娘(Can-musu)
あとはクレジットの年を2016に書き換え。今回はRandom Questの方も書き換え。
これは、Random Questの方も再整備したい為です。
再整備といっても、現在のFHSパッチ内で追加された修正点をRandom Quest単体パッチの方に反映していく程度ですけどね。
そして一方では紹介文(英語)の作成も必要な訳で…頭が痛くなりそうですが、頑張ってみます。
----
(01/01 23時頃追記)
私の方の記事は、思い切りネタバレに踏み込んでいるものとあまり関係ないものとの
両極端になっているので、
概略などはdplusplus氏のblog記事の方が判り易いかと。
#DCSS等、色々と活発に活動されているようで。お疲れ様です。
------------------------------------------------------------
-2015/12/16 (NetHack3.6.0)
お久しぶりです。
兵共が夢のあと、
どれだけの方がJNethack関連で今なお活動されているやら。
まあローグライクってのは、
どれだけ倒れても誰か一人が突破できればまずは勝ち、というものなので
生き残った者が後世に託していくのが筋でありましょう。
という訳で、半分隠居状態ではありましたが
FHSパッチをAli氏のPatch Databaseに投稿するために
年末はのんびり紹介文(英文)の内容でも練ろうかと思ってたら…
http://www.nethack.org/
> New Version
>
>Click here for information on version 3.6.0
…え?
うおぉぉぉぉっ!!
ちょ、本当に出たよ! 早いよ! 後数年はかかるかと思ってたのに!(マッテ)
まだあまり内容を把握できていないしコンパイルも何もしていないのですが、
どうやらbugfixやインターフェースの改善などに重点を置いている模様?
またDungeon Map Overviewなど幾つかのパッチを、正式に取り込んでいるようです。
#ちなみに改変内容を網羅した fixes36.0 に直接目を通している所ですが、
#これ1200行以上ある…(汗)
さてと…
こうなったら、当時の生き残りとしてもうひと頑張りしないと。
まあ、とりあえずはPatch Databaseへの投稿を優先したくはありますが。
------------------------------------------------------------
-2015/06/16 (FHSパッチver0.8.27b[Release])
あわわわわ (> <;);;;
> bug 0517 墓場の墓石の銘文が「あなたの墓」で埋め尽くされる際にゲームが異常終了する
> -> -墓場の墓石の銘文が「あなたの墓」で埋め尽くされる際に,現在の日時を入れていたのを廃止 [bug 0517対策]
済みません、読み解ききれていないコード(日時関連)を流用するのはちと無茶でした(; ;)
直してUpしましたよ、ええ (_ _;);;;
#さて、Shallow waterパッチのあの処理を読み解ければ
#マップ作成時の水地形での侵食処理をもっと改善できそうだけど…
#いやいや、今は安定版を出すのが先決だ。
------------------------------------------------------------
-2015/06/01 (FHSパッチver0.8.27a[Release])
うぎゃ (> <;)
> bug 0516 文章の冒頭で「あなた」となるべき箇所が「You 」になってしまう
英語対応試験であれこれいじくってた箇所がそのままになってた;
今頃気づくとは…
直してUpしました (_ _;)
------------------------------------------------------------
-2015/01/12 (FHSパッチver0.8.27[Release])
ver0.8.27正式版、公開しました。
> 現在はパッチの簡易説明文をVerUpに対応して書き直している所。
だったのですが、あまりに筆が進まないため方針転換。
説明文周りは以前のままの状態で、とりあえず公開ということに。
英語どうのこうのは、説明文周りをきっちり作ってからにしようと思います。
------------------------------------------------------------
-2015/01/09 (FHSパッチver0.8.26a+試験版[継続中])
放置状態で御免なさい。
どうにかこうにか今なお生きてます。
正月なんぞとうに過ぎてしまいましたが、今年も宜しくです。
で、今現在の状況:
・英語対応しようとあれこれいじってました。
Makefileも専用のもの(Makefile_EN.bcc)を別口で用意したので、
コンパイル時に#define JPを無効化しておいてから
上記のMakefileでコンパイルすればOK
…Okなのでしょう。通常なら。
ですが、表示Mapの文字化けはともかく
英語版だと * pline()が機能しない *
という不具合は結局直らなかったため、これ以上の英語対応は諦めました。
#1行メッセージが全く表示されない状態…こんなのどうしろと。
・で、ある意味気が楽になったので゜
今度こそver0.8.27正式版の公開に向けて準備中。
現在はパッチの簡易説明文をVerUpに対応して書き直している所。
…面倒だけど、しゃあないです。
ある程度体裁を整え、英語版の簡易説明も作ったら
公開と同時に NetHack Patch Database にも投げ込んでみようかと。
遅れに遅れたものの、目標の一つではありましたから。
…まあ投げ込むだけで、英語版のサポートは行う気ゼロ(になった)ですが。
#メッセージが出ないのではさすがにサポートしようが無いので。
…あ、Random Quest単体の整備も必要か。
------------------------------------------------------------
-2014/11/13 (FHSパッチver0.8.26a+試験版[継続中])
覚え書き。
新地形をdesファイルで扱いたい時は
what_map_char() [util/lev_main.c] の設定をしておくこと。
閑話休題。
---
------------------------------------------------------------
-2014/04/12 (FHSパッチver0.8.26a+試験版[継続中])
はうっ! (> <;)
昨日の試験版に酷いバグがあったので、昨日の今日ですが試験版VerUp(_ _;)。
・喫茶店・花屋以外の店主の挨拶において店名が(null)になっている
・雪女郎(の刀)が生成された時に迷宮が崩壊する
#怪物のインベントリ内の刀に対しmpickobj()を使ったのが問題。
一応、試験的なもの(店の追加、全面迷路で出来る空間に小部屋追加)も実用化しています。
------------------------------------------------------------
-2014/04/11 (FHSパッチver0.8.26a+試験版[継続中])
ごっちゃり色々な箇所を書き直し。
…内部処理に関する改変の比率が多いような気もするけど。
Dungeon CrawlやらUnNethackやら、AceHackとかいうものなどを
色々と(断片的に)読み解いては、少しなりとも取り入れようとしてみたり。
まあアイデアを多少拝借する程度のものなので、
あまり大々的には手を入れていませんが。
その過程で、本家バグ修正を(まともに)取り入れたり、
以前作った自作コードをごっそり手直ししたり、
増築で処理があまりにごちゃついていた箇所を分離したり、
といったものの方が多いかもです。(これが内部処理に関する改変)
その影響で、今回の試験版のソースはコメントアウトが滅茶苦茶多いですがご容赦を。
yzhさんが巫女クエストの英語版のメモを用意していたことに今更気づき、
英語のquest.txtもFHSパッチの追加クエストに対応させようとしたけれど…
そのメモ自体も抜けが多いし、各メッセージに仮番号表示を割り振るだけでも
結構な手間がかかりそうだったので中断。
そういえば、一応ランダムクエスト英語版には対応できるようにしていたんだっけ。
#別個配布のランダムクエストは、各種族クエスト(英語版有り)だけ組み込んでいて
#新職業(日本独自のもの多し)は対応させていない。
後で差し戻すかな…
------------------------------------------------------------
-2014/03/11 (FHSパッチver0.8.26a+試験版[継続中])
> darkgray patch
なんとか解決。(多分)
まずは
#ifndef MSDOS
の部分を
#ifdef UNIX
に変更。
そしてconfig.hでのVIDEOSHADESの定義を変更。
頂いたパッチでは以下の通りですが:
#ifdef TTY_GRAPHICS
# define VIDEOSHADES /* try to use slashem like colors including
* dark-gray to represent black object
* from UnNetHack [dplusplus]
*/
#endif
これを以下のように変更。
#if (defined (TTY_GRAPHICS) && defined (UNIX))
# define VIDEOSHADES /* try to use slashem like colors including
* dark-gray to represent black object
* from UnNetHack [dplusplus]
*/
#endif
これでrn2(0)エラーは出なくなりました。
多分問題ないかなと。
------------------------------------------------------------
-2014/03/10[追記] (FHSパッチver0.8.26a+試験版[継続中])
とりあえず、試験版の2/13版でも2/5版でも
同じ症状が出る(そのままではコンパイル通らないしrn2(0)も出る)ことは確認。
今まで覚えのない症状ですし、再現性もそこそこ高し。
場合によっては本家のVIDEOSHADES周りの不具合を疑う必要もあるかも。
------------------------------------------------------------
-2014/03/09 (FHSパッチver0.8.26a+試験版[継続中])
うーむ、dplusplusさんに頂いたdarkgray patchが
どうもうまく適用できてないっぽい…
とりあえず、パッチあて自体は出来たものの
まずはコンパイル時にエラーで進まず。
これはwin/tty/termcap.cのコードをごっそりoptions.cに移すという力技で一応解決したものの、
今度は開始時にrn2(0)エラーが。
wizardモードで開始時に職業/種族/属性全てランダムで開始するとこんな感じに。
----
Message History
rn2(0) attempted プログラムに障害発生 - #quitしたほうがよさそうだ.
role init()
[wizard]force choosing to race quest? [yn] (n)
disparse_pos->(36,9)
よくぞ参ったwizardよ,NetHackの世界へ!このゲームではあなたは人間の騎士(秩序の
女性)だ.
[wizard]force putting "Ain's tokimeki fortune-telling"? [yn] (n)
[wizard]or choose week message? (normal:5, sp:6) [yn] (n)
季節は春,今日は金曜日,今日のあなたのラッキーアイテムは食料.
--More--
----
ちなみに、まずいのがメッセージ一行目のエラーメッセージ「rn2(0) attempted」。
出たり出なかったり、一度に2回も出たりと安定しません。
本来、rn2()に0を送ってはいけないのですが…
#それ以外のメッセージで英語のものは、wizardモード限定のデバッグ用メッセージ。
試験版以降もrole_init()をいじった覚えがあるので、そのせいかなとも思ったのですが、
実際にrole_init()の冒頭で確認メッセージを追加してみるとご覧の通り。
…role_init()より前の段階で起きてるやん =□○_
公開中の試験版なりもっと原典に遡った状態では出るのかとか、
色々切り分けて確認する必要がありそう。
------------------------------------------------------------
-2014/02/13 (FHSパッチver0.8.26a)
しばらく色々いじってましたが、落ちるバグが見つかったので
正式版を0.8.26aにup。
同時に試験版もUp。
この試験版をそのまま正式版にしなかった理由は幾つかありまして:
・試行錯誤中なのでこれからも大幅に変わる可能性有り
・その割には変更点があまり無く中途半端
・一部実装が半端(新規怪物タイル未対応とか)
----
以下、試験版でやっていたこと。
メッセージの変更はコンパイルへの影響が少なめなので、
気が向いた時やネタを思いついた時にちょこちょこやっております。
あと、ソースを眺めていて目に付いた箇所を基点とし、
コンパイルにあまり影響しない範囲内で内部処理を整理してみたり。
この「コンパイルにあまり影響しない」というのは
気軽な変更を試せるという点ではやり易いですね。
そういう意味では、怪物の追加は(独自処理のないものは特に)やり易い部類です。
アイテムの追加も、出現率に気を使う必要がありますが、結構やり易い。
逆に、気軽に出来ないものとしては、例えばdesファイルでのMap追加があります。
これやろうとすると、該当のdesファイル内に書き加えるだけでなく
dat/dungeon.def とかMakefile周りとか、場合によってはその他あちこちも
該当箇所を探して書き換える必要が出てきますから、かなり面倒。
気がのっている時にまとめて手をつけるようでないとやってられません。
なので、最近はdesファイルに頼らずに地形を自動作成できないものかと
あれこれ試行錯誤しております。
今回、なんとか小さめの迷路である遊歩道(BOARDWALK)をつくることが出来ました。
処理方法はかなり不恰好だとは思いますが、とりあえず動けば御の字。
調子に乗ってゲヘナのMapのバリエーションの方も増やせないかと
手をつけてみたものの、こちらはさほど成果上がらず。
全面迷路の一部に空間を作ることは出来ましたが、
その空間内に一部屋作ろうという試みは失敗に次ぐ失敗でとりあえず中断。
youkanさんの域に達するにはまだまだか。
それ以外に「大悪魔の支配階層」を4階層程度にしてランダム差し替え出現させるというのも
考えてはみましたが、結局これも断念。
(処理が煩雑になりそうなのと、七つの大罪も出現数が減ることになる為)
うーん、今は大抵の支配階層に全面迷路が出現し得るようにしてるけど、
もっと個性を出すために出現する階層を絞るかなあ。
------------------------------------------------------------
-2014/02/05 (FHSパッチver0.8.26+試験版)
お久しぶりです。
気づいてみれば絶賛放置中だった訳ですが、私は一応げんきです。
他の方のサイト等もあちらこちらと閉鎖/放置されていて、
旧式NetHackerの生き残り(ヘボですが)としてはちょっと寂しかったり。
公式バグリストの翻訳ページまで消えていたのには参りました。
UnNetHackからのバグ修正部移植の際にちょっと手間取ったり。
#JUnNetHackのWikiに一部が引用されていたので、ある程度何とかなりましたが。
…うーむ、手元に古めの各種ヴァリアントやパッチなどがある訳ですが
資料として公開した方が良いのだろうか。
ほしい方いらっしゃいます?
公開を引き継いで下さるならなお良し。
閑話休題。
----
試験版公開。
ちまりちまりと手直し+UnNethack5.1.0からバグ修正を主体に移植してます。
あ、あとこれも。
> -Nicholas Webb's Biodiversity Patchから以下を移植
> --[WEBB_ENGR_LIGHT] 光る文字を描けるようにした
移植当時はうまく動かず、ずーっと放置していたのですが、
今回ようやく成功しました。
長かった…
他にもWebb PatchからFHSパッチに移植したものは幾つかありますが、
それでもなお、他の方のヴァリアントやパッチ等でも見かけないような
独自の要素がまだ残ってるんですよね。
ぜんまい仕掛けのAutomatonとか。
こうしたものも遺していく必要があるのかな…
----
さてと、放置中にもぽつぽつ考えていた案をメモ書き。
[銃実装案]
ようやく方針が決まりました。
//が冒頭についているのはボツ案です。
・brass方式基準
・銃に弾を入れる(可能なら容器のように保管)
・銃器一覧(予定)
*マスケット銃(brass) :単発、装弾1
#古式銃、コマンダーetc
#弾丸選ばず、射程長め?
*拳銃(SLASH'EM) :単発、装弾2
#古式銃、上級軍人etc
#弾丸選ばず
*リボルバー(brass) :単発(連射も可?)、装弾6
#新式銃、ほぼウェアベーン専用(自然生成無し)
#銃弾専用
*散弾銃(SLASH'EM) :単発、装弾2
#新式銃、店主用
#散弾専用
*パレットガン(RJNH) :連射、装弾30
#未来銃、(公務員etc)
#パレットガンは弾を混ぜても連射可能にする?
*(仮)携帯投石器orバリスタor巨大パチンコ :単発、装弾1
#スキル:クロスボゥ(復活)
#何でも弾丸代わりに装填可能
#(実装は未定)
*第七聖典 :単発、装弾(数未定)
#クロスボゥボルトについては通常のクロスボゥと同
#ソードショット機能を銃方式にする?
#(装填した剣類を黒鍵に変換して保管)
//*軽機関銃(SLASH'EM) :連射、装弾30、(自然生成無し)
// #実装は未定。パレットガンで間に合わせるか?
*銃弾(bullet)
#
*散弾(shotshell)
#
//*曳光弾
// #銃弾扱い
// #威力小
// #実装は未定。
//*信号弾
// #銃弾扱い
// #威力ほぼ無し、命中地点を明るくする
// #実装は未定。
----
[怪物用PC魔法]
怪物用、PC魔法を覚えさせる領域をintで設定
(PC魔法を使わせる機構は一部実装済み、PET_RANGED_ATTACKS2参照)
(更に整備すれば開錠/施錠、浮遊魔法なども実装可)
怪物が拾った魔法書のotypを1種類だけ登録し、状況に応じて自由に使わせる
#怪物生成時に覚えていることもある?
もしかしたらSLASH'EMの怪物MP方式処理が必要になるのかもしれない。
----
メモ書き終わり。
案ができた以上、いつかは実装するとは思いますが時期未定。
------------------------------------------------------------
-2013.06.24 (FHSパッチver0.8.26)
> …装備由来のはずの耐性が解除されてない (- -;)。
どうにか修正完了 =□○_
Armor_off()やその先の処理に幾ら手を加えても反映されなかったのが不思議だったのですが、
まさかその前段階から処理がすっぽかされてたとは…
#脱ぐ時にdelayの無い防具だと、Armor_off()等の処理が行われないぽい。
あれこれ変更しまくる等すったもんだの末、結局は変更部分をばっさり切り捨てて、
前段階の処理部分をbrassから丸ごと移植。
あと、HPcolor plusも組み込みました。
但しplusのうち、荷重関係の箇所は色変え処理をオミットしています。
それと、タイル版コンパイルの際にterm_start_***()やらterm_end_***()やらが
コンパイルエラーを起こしたので、慌てて#ifndef USE_TILESで分離。
うーむ、MATERIALパッチの時には引っかかった覚えはなかったのに。気をつけないと。
という訳でver0.8.26公開。
今回は0.8.25/25aとのセーブファイル互換性あり。
…次回は多分互換性無くなるので(氷室を有効にする)、
その際にはシャツの文章なども増やしたいところ。
#アイテムのIDで文章管理しているので、文章のバリエーションを増やすと
#シャツの文字が切り替わってしまうのです。
------------------------------------------------------------
-2013.06.22 (FHSパッチver0.8.26[未公開])
うーむ、色々直し中ですがまだ公開できそうにない…
まずはJNHのベースを3.4.3-0.11に。
といっても、以前にもちょこちょこ修正を取り入れていた為、実際に直した箇所は少ないですが。
コマンドヘルプ周りは、FHSパッチ特有の操作が分かり易いように書き換え。
dplusplus様よりご指摘のあった磁力の罠のバグを修正。
また、プレイ感想も拝見してバナナの皮の罠の処理など色々控えめに調整。
…そういえばダメージ軽減に関する更新はいつだったかと探してみたのですが、
0.8.23の更新履歴に幾つか記載漏れがあったことに気づく =□○_
#dasoku_FHS_patch14.txtの「09.11.11-09.12.23」辺りの修正内容がすっぽ抜けてた。
久しぶりにNetHack Patch Database (http://bilious.alt.org/)を訪ねて
細かい修正用パッチを幾つか見繕って組み込んだり。
ついでに幻覚時の神の名前に関するパッチがあったので、
既存の表に更に追加。未訳も混じってるけど。
#基本部分はbrassを参考にrnd_gname()等で組込み済み。
また、ランダムな神名の処理で,追加クエストの神も含まれるように改定。
で、wizardモードで確認しようとしたのですが…
いざ幻覚の薬を飲んでも幻覚にならない。
良く見るとキャラが薬師の女性(看護帽/看護服装備)だったので
それらを脱いで再度挑戦。
…装備由来のはずの耐性が解除されてない (- -;)。
現在の状況はこんな所です。
とりあえずrefresh_ladies_wear()の処理をbrass(081221)と突き合わせてみましたが
違いは分からず。
brassのバイナリィ(但し080325)ではきちんと解除されるようなのですが。
またFHSパッチの方でも古いバイナリィ(binary0821eFHSmin+090608)で既にバグ状態。
ちなみにメイド服+エプロンの場合はきちんとセット効果が発動し解除もされるので、
refresh_ladies_wear()自体は一応機能している模様。
なんで看護服と看護帽は…
複数耐性の処理や条件付き耐性の処理はドラゴン防具用に独自に組んだものもあるので
(uwear_drgn()等)、これにladies_wear関係も組み込むか?
うーん…
------------------------------------------------------------
→これ以前は別Fileにて。