2025年12月24日

NetHack 3.6.7 -> 3.7.0 でのアーティファクトの差異のスポイラー

この記事は、Roguelike Advent Calendar 2025 12/21 の記事です。

NetHack 3.6.7 から、3.7.0 になって追加及び変更されたアーティファクトの特徴についての記事になります。3.7 は日々更新されているため、今後の追加や削除、変更があるかもしれません。また、私がソースコードを読んで書いたため、見落としや間違いがある可能性があります。

クエストアーティファクトを除くアーティファクト

<エクスカリバー>
gift_value = 10
騎士ではない場合、長剣を浸して泉から得られる確率が 1/30 に減少。

<ストームブリンガー>
gift_value = 9

<ミョルニル>
gift_value = 8

<クリーバー>
gift_value = 8

<グリムトゥース>
gift_value = 5
発動: FLING_POISON
装備時に毒耐性を得る。
常に毒が塗られた状態として判定される。
投擲時、25% の確率で毒が塗られた状態として判定される。

<オークリスト>
gift_value = 4

<スティング>
gen_spe = 3
gift_value = 1
蜘蛛の巣を #untrap する際、判定が有利になる。

<マジックベーン>
gift_value = 7

<フロストブランド>
gift_value = 9
発動: SNOWSTORM

<ファイアブランド>
gift_value = 5
発動: FIRESTORM

<ドラゴンベーン>
gift_value = 5
gen_spe = 2

<デーモンベーン>
gen_spe = 1
gift_value = 3
発動: BANISH
ベース武器が長剣から銀のメイスに変更された。
エクスカリバーと同じように、悪魔の王子が友好的にならなくなった。

<ウェアベーン>
gen_spe = 1
gift_value = 4

<グレイスワンダー>
gift_value = 10

<ジャイアントスレイヤー>
gen_spe = 2
gift_value = 4
装備中、開錠の魔法によるノックバックを防ぐ。
開錠の杖ではノックバックは発生しない。

<オーガスマッシャー>
gen_spe = 2
gift_value = 1

<トロルスベーン>
gen_spe = 2
gift_value = 1
装備中、再生能力を得る。
装備時にトロルの復活を防ぐ効果が、トロルスベーンで倒したトロルが
復活しない効果に変更された。

<ボーパルブレード>
gen_spe = 1
gift_value = 5

<スニッカーズニー>
gift_value = 8
長斧のように使用し、遠距離攻撃できる。その際はターン経過しないが、
同一ターン内には使用できなくなる。長剣スキルによって攻撃可能な
範囲は変化する。二刀流時は二刀流スキルが代わりに参照されるが、
もう片方の武器による攻撃は発生しない。
また、隣接した敵を攻撃してもペナルティは無い。

<サンソード>
gift_value = 6
発動: BLINDING_RAY

発動効果

*FLING_POISON*
使用時に魔力を 25 消費する。
盲目か酸の毒液を飛ばす。

*SNOWSTORM*
冷気(cone of cold)と同じ。

*FIRESTORM*
火の玉(fireball)と同じ。

*BANISH*
視界内の悪魔をゲヘナにテレポートさせる。
ゲヘナ内で使用した場合は同一フロアにテレポートさせる。
いずれも、対象となった悪魔とは敵対する。

*BLINDING_RAY*
使用時に魔力を 25 消費する。
高価なカメラとほぼ同じ効果だが、写真を撮る機能?は無い。

gen_spe

クエストアーティファクト含め、この項目が上記リストに無い
アーティファクトは、全て
gen_spe = 0 です。
アーティファクト生成時、9 >= (強化値 + gen_spe) >= -9
となる場合、
強化値 = 強化値 + gen_spe
に修正されます。
この処理は、天界の冒険者の持つアーティファクトと、
ユニークなオブジェクトがアーティファクトになった場合?
には行われません。

gift_value

祭壇で捧げものをした際に下賜されるアーティファクトは、
プレイヤーの優先アーティファクトで無い場合に
gift_value > 供物の難度(difficulty) + 1
となる場合、別のアーティファクトが選択されます。よって、
ジャッカルを捧げ続けても、優先アーティファクトの後で
得られるのはトロルスベーンとオーガスマッシャー、混沌だと
それに加えてスティングのみです。
クエストアーティファクトは、全て
gift_value = 12
ですが、祭壇で得られる事は無いはずなので、意味の無い
値と思われます。

雑感

スニッカーズニーの強化が目を引きます。以前は弱くは無いものの、
エクスカリバーのほぼ下位互換でしたが、攻撃面がかなり強力に
なっています。ゲーム内データベースの知識しかありませんが、
元々こういう武器なんでしょうか。
あとは、序盤に祭壇から強力なアーティファクトを得るのが難しく
なったのは、外れアーティファクトも使って欲しいという意図
なのかもしれません。

posted by Takenoko at 00:00| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2025年12月21日

NetHack 3.7 ビルド手順及びダウンロード(Windows)

25/12/21 21:47 追記: "nethack-370-win-x86.zip"と記事を更新しました。この時刻以前にダウンロードされた方は、更新をお勧めします。

この記事は、Roguelike Advent Calendar 2025 12/21 の記事です。

目次

ダウンロード

下記リンクからダウンロードしてください。

25/12/21 21:47 追記: "TTY_PERM_INVENT"を有効にしたファイルに差し替えました。

https://www.mediafire.com/file/5yrp9e9284j8qyw/nethack-370-win-x86.zip/file

以下はビルドに使用したソースファイルです。最新版をビルドしたい場合、Github からダウンロードしてください。

https://www.mediafire.com/file/0iijgevtw80gyj2/NetHack-NetHack-3.7.zip/file

起動する前に

"nethack-370-win-x86.zip"を展開してください。 同一ディレクトリに設定ファイルやセーブデータを置きたい場合、 以下の手順を実行してください。

1."sysconf.template"を、同一ディレクトリに拡張子を消してコピーする
2."sysconf"をテキストエディタで開き、
  #PORTABLE_DEVICE_PATHS=0
  を
  PORTABLE_DEVICE_PATHS=1
  に書き換え、上書き保存する。

起動方法

tty

nh37-tty.png

"NetHack.exe"を実行してください。

mswin

2025-12-21 00_32_18-NetHack for Windows - Graphical Interface.png

"NetHackW.exe"を実行してください。

curses

2025-12-21 20_49_20-NetHack 3.7.0-132.png

".nethackrc"をテキストエディタで開き、
#OPTIONS=windowtype:curses
の先頭のシャープを消して上書き保存し、
"NetHack.exe"または"NetHackW.exe"を実行してください。

".nethackrc"は、"sysconf"がゲームと同一ディレクトリに無い場合、
一度"NetHack(W).exe"を起動すると
C:\Users\ユーザー名\NetHack
に作成されます。

オプション

".nethackrc"で変更できます。https://nethackwiki.com/wiki/Options に、
英語ですが各項目の解説があります。
Curses Interfaceの場合、瀕死になるとバーが点滅して目に悪いので、
OPTIONS=hitpointbar
を
OPTIONS=!hitpointbar
に書き換えた方がいいかもしれません。

ゲーム開始時のチュートリアルが不要な場合、
OPTIONS=!tutorial
を追加する事で飛ばす事ができます。

Curses Interface使用時、右側にインベントリを常時表示したい場合、
"TTY_PERM_INVENT"が有効になっていれば、
OPTIONS=term_cols:138
OPTIONS=term_rows:32
OPTIONS=perm_invent
のように追加すると表示できます。"term_cols"は横の文字数、
"term_rows"は縦の文字数なので、コンソールに合わせて適当な値を
入力してください。小さすぎると表示に問題が出ます。

Windows 11 におけるビルド手順

1.https://github.com/NetHack/NetHack からzipをダウンロードし、展開する

2.展開したファイル、"sys/windows/fetch.cmd"をこのファイルに差し替え

差し替える理由は、バッチファイルのif文の中で変数をsetして使うことはできないため

3.msvcが無ければ用意する。例として、Visual Studio Community 2026を使用する場合、 ここからダウンロードし、"C++によるデスクトップ開発"にチェックを入れインストールし、念のため再起動することで準備が完了です。NetHack のビルドだけが目的であれば、それ以外はチェックを外して大丈夫なはずです。

4.スタートメニューから、"Visual Studio" > "Developer PowerShell for VS 2026"を起動。 以下はこのプロンプトに入力する

5.zipを展開したディレクトリに移動する

6.以下のコマンドを入力し、Luaをダウンロード

  sys\windows\fetch.cmd lua

7.Curses Interfaceを使う場合、以下のコマンドを入力し、PDCursesをダウンロード

  sys\windows\fetch.cmd pdcursesmod
  
  さらに、インベントリを常に右側に表示したい場合、"include/config.ini"をテキストエディタで開き、
  /* #define TTY_PERM_INVENT */
  を
  #define TTY_PERM_INVENT
  に書き換えて上書き保存する

8.Dump Logを保存したい場合、"include/config.ini"をテキストエディタで開き、

  /* #define DUMPLOG */  /* End-of-game dump logs */
  を
  #define DUMPLOG  /* End-of-game dump logs */
  に書き換えて上書き保存する

9.以下のコマンドを順に入力

  cd sys\windows
  .\nhsetup.bat
  cd ..\..\src

A.Curses Interfaceを使わない場合、"Makefile"をテキストエディタで開き、

  CURSES_CONSOLE = Y
  CURSES_GRAPHICAL = Y
  の末尾を"N"に書き換え、上書き保存する

B.以下のコマンドを入力

  nmake package

C.ビルド完了

binary\ には実行ファイル一式が、 package\ にはそれを圧縮したファイルが作成される。


3.7 をダウンロードできるページが見当たらなかったのでビルドしました。もっと探せばあるのかもしれませんが、自力でビルドするのもいいものです。

fetch.cmdが上手く動かない理由がわからず混乱しましたが、 理由を説明している記事を発見できたので直せました。 私が英語でのやり取りができれば、コミットするのですが。

posted by Takenoko at 00:53| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2025年08月17日

WOLF RPGエディター コンテスト 第17&16回 投票したゲーム、途中で放棄したゲームの評価とコメント

第17回ウディタコンテストに投票したので、ここにも投票時のコメントを残しておきます。文章を書くのは苦手なので、そんなに大した事は書いていません。ただ匿名投票が性に合わないだけです。
その他加点以外は、特に問題が無ければ 6点としています。
私は照れ屋なので、物語性に関してはコメントでほとんど触れませんが、点数で察していただきたいです。
次回は、私も参加したいです。

<重視度>

【熱中度】100%
【斬新さ】80%
【物語性】60%
【画像/音声】40%
【遊びやすさ】100%

私の、ウディコンに限らない評価基準はこんな感じだと思います。前回のウディコンでは、特定のゲームのために値を調整しました。

<投票したゲーム>

【12】ワイたちはどうイキるか

<公式紹介コメントの一部抜粋>

ワイ(MV)はクソザコ兵士
として過ごしていた
イキり返すための物語

一直線で敵を倒すRPGです
引換券を使用してくじ引きができます
くじ引きで得た装備などを駆使して攻略します
戦闘や買い物などの回数が制限されているため戦略性があります
また戦闘スタイルを選択することでワイの成長を自由に変更できます

ver2.00にてフルボイス、オンラインランキング実装しました

ScreenShot_17_12.png

<評価>

【熱中度】9
【斬新さ】6
【物語性】6
【画像/音声】7
【遊びやすさ】8
【その他加点】0

<投票コメント>

敵味方ともにインフレが激しく、あっという間に強くなりますが、初見だとそれ以上の力で潰されます。 それを、ロードで乱数が変化しない仕様を最大限活用し、戦う順番やガチャを引く順番などを調整して なんとかなるパターンを見つけるのは、詰め将棋的な?楽しさがありました。 このような、システムで勝負しているRPGは楽しいです。

【17】ウルファール5分生き残れゲーム

<公式紹介コメントの一部抜粋>

3日もの長き歳月をかけて創り上げたサバイバーライクのゲームです。
5分生き延びるという壮大かつ感動的な偉業を貴方の手で果たしてください。

ScreenShot_17_17.png

<評価>

【熱中度】10
【斬新さ】7
【物語性】6
【画像/音声】6
【遊びやすさ】8
【その他加点】5

<投票コメント>

とにかく面白い。自分なりの武器やスキルの組み合わせを試行錯誤するのが 楽しいです。選択肢がランダムなので思うように行かない事も多いですが、 思い通りになるととても気持ちいいです。

<投票後追記>

Xにポスト した所、あっという間に対応して頂けて嬉しかったです。

【38】ガレキノシップ

<公式紹介コメントの一部抜粋>

ジャンル:宇宙航海シミュレーションカードゲーム
難易度:3種類
エンディング:3種類(グッドかビターのほぼ2種類)
基本操作:マウス

カードをパズル思考で順番に使用して
前編では宇宙船を建造して
後編では宇宙を航行する
ボードゲームにも近い感触のゲームです。

ScreenShot_17_38.png

<評価>

【熱中度】8
【斬新さ】8
【物語性】8
【画像/音声】8
【遊びやすさ】8
【その他加点】0

<投票コメント>

最初は建造の仕様がよくわからず戸惑いましたが、プレイしている間に なんとか理解できました。パーツの属性の違いは、航行中でもあまり 影響がわかりませんでしたが。ヘルプが充実しているのがいいです。 ベーシックとアビサルで中道派エンドでした。

【58】夕五千兆

<公式紹介コメントの一部抜粋>

夕一が敵をなぎ倒す、ながらプレイ系一本道RPG。
放置系ともいうのかも。

ScreenShot_17_58.png

<評価>

【熱中度】3
【斬新さ】9
【物語性】6
【画像/音声】6
【遊びやすさ】7
【その他加点】0

<投票コメント>

プレイ時間は7:30ですが、ほぼ放置しており、面白さがよくわからないまま、 気付いたらクリアしていました。 ゲームにおいて、数値が上がる楽しさというのはあると思うのですが、 そのペースが速すぎたのか、放置するだけで自身がほぼ介入しないからか、 それを楽しいと思えませんでした。 たまに自分で操作して、宝箱が何度も連続で爆発するのは結構なストレスですね。

<あとがき>

本当は、もういくつかのゲームもプレイして投票したかったのですが、期間中にコロナに感染してしまい、それどころではなくなりました。

"夕五千兆"に関しては、自分に合わないゲームを選んでしまったのかなと思っています。基本的に、ホラーゲーム等、趣味でないゲームは避けるようにしていますが、放置ゲームも私には向いていないのかもしれません。



第16回ウディタコンテストの投票コメントもローカルにあったので、それもついでに残しておきます。本来は去年、ここに投稿するつもりでしたが、その時は忙しくて放置していました。
途中で放棄したゲームは投票しておらず、放棄した理由を書いています。何故放棄したゲームまで書くのかというと、低評価のレビューが書かれるよりも、そもそも反応が無い方が、少なくともゲーム製作者の端くれである私は辛いためで、また、途中でゲームを放棄した理由を、製作者としては知りたいためです。
ウディコンというコンテストは、DL数に対するコメント数の割合が非常に多く、ゲーム製作者にとって夢のようなコンテストに見えます。

<重視度>

【熱中度】100%
【斬新さ】80%
【物語性】90%
【画像/音声】80%
【遊びやすさ】60%

完全に、【52】のための配分。去年は全く違う配分にしました。

<投票したゲーム>

【29】ダーゴラス

<公式紹介コメントの一部抜粋>

箸休めのミニRPGでお口をさっぱりさせましょう

<評価>

【熱中度】7
【斬新さ】5
【物語性】6
【画像/音声】6
【遊びやすさ】10
【その他加点】1

<筆者による紹介>

いわゆるドラクエタイプのレトロ風RPGで、ドラクエ以外にも、船を海賊から奪って手に入れたり、レトロゲームの経験があると懐かしい要素があります。

<投票コメント>

とにかく快適にプレイできるように配慮されているのが嬉しいです。工夫次第で、道を塞ぐ強敵を早めに倒せたり、自由度が高いのが良いので、その他加点+1です。

【32】チリガミの塔

<公式紹介コメントの一部抜粋>

ヘックス(六角形マス)を攻撃して
パズルのように消して敵を倒す
一風変わったノンフィールドRPGです
 プレイヤー協力型の通信機能もあり
  ※非通信でも遊ぶことは可能です

<評価>

【熱中度】8
【斬新さ】8
【物語性】7
【画像/音声】9
【遊びやすさ】4
【その他加点】5

<投票コメント>

ノーマルモードは、最初にもらえた武器が強く、ルールがさっぱりわからないままクリア。ハードモードは四度挑戦し、残ったNPCの助けも借りてなんとかクリア。それでも、ルールを把握できているとは思えません。
ルール説明がゲーム開始後のチュートリアルのみで、マニュアルが同梱されていたりゲーム内で読めたりといった配慮が無い(操作マニュアルのみ)ので、よくわからないままプレイしていました。ダメージ等の予測を見る機能はあるので、それでも問題は無いのかもしれませんが…
シナリオもよくわからないままでしたが、わからないなりに強い情熱は感じました。面白いゲームだと思います。

<投票後追記>

斬突欧の属性がヘクスの色で表示されますが、正直覚えられません。火は赤、電気は黄色だったり青だったりと、そういう共通認識はあると思いますが、物理属性を色分けされても厳しいと思いました。
投票後、二度プレイしてグッドエンドも見ました。異世界のギフト次第で難易度は激変しますね。

【34】霧の街の迷宮譚

<公式紹介コメントの一部抜粋>

疑似3D風RPGです
3DダンジョンRPGのように描写された
霧の街を探索して、霧の街の謎を解き明かしましょう

<評価>

【熱中度】9
【斬新さ】6
【物語性】6
【画像/音声】7
【遊びやすさ】8
【その他加点】5

<投票コメント>

バージョンアップで画面が揺れなくなり、プレイしやすくなりました。要望を叶えていただき、ありがとうございます。その他に加点しました。
序盤の戦闘は厳しいのですが、装備が揃うとあまり緊張感が無くなるのが惜しかったです。ただ、掘り出し物を集めたくて、同じマップを何十週もした私のせいかもしれません。面白いゲームです。

<投票後追記>

霧が濃い中で戦うのはデメリットしかない上、マップも見えづらくなるので、基本的に何らかの手段で回避し、最低レベルで戦うようにしていました。足かせにしかなっていないシステムだと思いますが、霧にメリットでもあれば、また霧の状態を選ぶ楽しさがあったかもしれません。私がメリットを知らないだけの可能性もあります。

【52】記憶のあらいかた

<公式紹介コメントの一部抜粋>

注意
作者がヒロインです(天下無双)
ボイスもとりました。私と恋愛しなくてはなりません。

<評価>

【熱中度】10
【斬新さ】9
【物語性】10
【画像/音声】10
【遊びやすさ】6
【その他加点】0

<投票コメント>

"作者がヒロインです(天下無双)ボイスもとりました。私と恋愛しなくてはなりません。"の強烈なコメントが無ければ、みーちゃんと出会うことは無かったので、感謝しています。 私も、みーちゃんと結婚したかった…

<投票後追記>

強力すぎる公式コメントで、これはプレイせざるを得ませんでした。
この恥ずかしい投票コメントは、ここでは隠したかったのですが、公式にコメントが載ってしまったので仕方ないです。頼むから載らないでくれと願っていましたが、それは届かず。

【54】放浪者セレナ〜少女を救うため、闘技場で戦う女〜

<公式紹介コメントの一部抜粋>

荒廃した世界で暴力が支配する街セミド。
 妹をさらわれた青年ブートのため闘技場に身を投じた放浪者セレナとなり、
 五つの戦いを勝ち抜こう!

<評価>

【熱中度】8
【斬新さ】6
【物語性】7
【画像/音声】7
【遊びやすさ】10
【その他加点】1

<投票コメント>

セレナ以外のメインキャラは割とよく見るタイプですが、それ以外、セレナと看守と囚人たちは基本的にボケで個性的で、特にセレナは選択肢次第でよくわからないキャラになり、非常に楽しいです。
非常に快適なシステムで、育成ゲームとしても面白く、素晴らしいゲームです。

<途中で放棄したゲーム>

【12】魔女にお菓子を届けましょう

<公式紹介コメントの一部抜粋>

ランダム生成ダンジョンを駆け上がる魔塔系RPG

<放棄した理由>

怖いシーンがあったから。以上。
ゲームとしては面白いと思います。マップの全てのマスに戦闘等のイベントがランダムに配置され、マスを踏むとイベントが発生し、その種類によっては何らかの選択を迫られるという、私の好きなタイプのゲームです。怖くなければ。
放棄したのは、ゲームの問題ではなく、私のノミの心臓が原因です。

【25】At End of the World

<公式紹介コメントの一部抜粋>

「At End of the World」は戦闘と「技」の入手を重視したハック&スラッシュRPGです。
戦闘ではカードゲームのように20種類装備された「技」の中からランダムに選ばれた「技」がコマンドに提示されます。
「技」はレアリティとランダムなオプションが設定されており、強力な「技」を入手・装備してプレイヤーを強化していきます。

<放棄した理由>

戦闘が開始すると、所持する20種技の中からランダムに4種の技が選ばれるのですが…
ゲーム開始して数分でしたが、全体攻撃の特性が付いた技を入手しました。しかし、次の戦闘に入ると、敵が複数いるのにそれが選択肢に出て来ない。この理不尽に耐えられず、そこで放棄しました。
例えば、与えるダメージの幅がある武器があったとして、それを選んで最低値が出たとしても、それは受け入れられます。しかし、そもそもその武器を選べるかがランダムというのは、持っているはずなのに何故、と理不尽に思えて、どうにも私にとってはストレスになるようです。
ランダムな特性が多数付いた技を集めて戦う、という要素は大好きで、だからこそダウンロードしましたが…これはゲームの問題というより、私との相性だと思います。

【71】夢幻ノ迷宮

<公式紹介コメントの一部抜粋>

入る旅に形の変わる迷宮を
ランダムな効果の付いた装備でキャラをどんどん強化していく…!といった感じのハクスラRPG。

<放棄した理由>

最初のボスを倒し、拠点に戻ったあたりで放棄。つまらなくはないのですが…
自動生成のマップが妙に広い割に、宝箱が2つ置かれているだけで寂しく、それを延々と降りるのは正直退屈でした。敵はボスを含めやたらと弱かったですし。宝箱を破壊する選択肢は、意味がよくわからないし。
最初のエリアで放棄するのは早すぎるかもしれませんが、どこかで見た要素ばかりで、そこまででこのゲームならではの突出した強みを感じられませんでした。

<ローグライクゲームを放棄したくなる理由>

今回の"【32】チリガミの塔"、前回の"【55】文無し行商人の遺跡探索"などがそうですが…
選択肢を選び、能力値を上げたりアイテムを集めたりして強化しつつ進む、ノンフィールドかつローグライクなゲームの場合、負けた理由がわからないと、もういいかなと思う場合があります。どうすれば良かったのかもわからず、また最初からプレイする気力が減ったり無くなったり。
ルールが複雑だったり編成の自由度が高かったりすると特に、運が悪かったのか、選択が悪かったのかがわからないためです。
それでも、チリガミの塔を放棄しなかったのは、よくわからないなりに楽しんでいたのだろうと思います。文無し行商人の遺跡探索の場合は、最初のステージが突破できず、選択肢をどう選んで行けばいいか全くわからずにやめてしまいましたが。

posted by Takenoko at 15:02| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2024年12月25日

ホームページを移転しました

スターサーバーが終了するため、ホームページを移転しました。このブログは特に変わりなく、たまに更新します。

posted by Takenoko at 13:42| Comment(0) | ネット | このブログの読者になる | 更新情報をチェックする

2024年12月07日

Rogue が難しすぎる人でも、XRogue はなんとかなるかもしれない

はじめに

trimmedRogue54-241122-00.png

最近、古い Linux 機に古典的なローグライクを色々入れて、たまにプレイしたりしているのですが、初代ローグは特に難しいです。本当にすぐ死にます。

trimmedRogue54-241122-03.png

ローグのページの Rogue 5.4.5x には識別の巻物を一種類にまとめるオプションがあり、それを利用しているので少しは簡単なはずですが、それでもすぐ死にます。

日本で有名なローグと言えばローグ・クローンIIだと思いますが、それと比べても難しく感じます。クローンの方のソースは読んだ事がありませんが、ダメージの計算式が全く違うとか。

初代ローグは本当に運が良くないと下層に行けないので、現代にプレイすると、正直辛い部分もあります。上級者にとってはそうではないかもしれませんが…

ただ、ローグは流石に運の要素が強すぎて厳しいという人でも、以下で紹介する XRogue であれば楽しめるかもしれません。

XRogue の紹介

trimmedXRogue8-241122-06.png

XRogue 8.0.3 は、ローグのページにあるローグのヴァリアントです。

プレイ感覚としては、Rogue と NetHack の中間という印象を持ちました。英語ですが、NetHack よりは複雑でないため、慣れてしまえば問題はないと思います。最初のハードルが高いかもしれませんが…

Rogue との違いの一部

  • ゲーム開始時の選択要素

    Rogue では、ゲーム開始直後に迷宮に放り出されますが、XRogue では、まず最初に以下のクラスから一つを選択します。日本語訳は、README_jp.TXT のものです。

    • Fighter(ファイター、戦士)
    • Paladin(聖騎士)
    • Ranger(レンジャー)
    • Magic-User(魔法使い)
    • Cleric(牧師)
    • Thief(盗賊)
    • Assassin(刺客)
    • Druid(ドルイド僧)
    • Monk(修道士)

    もちろん、各クラスには特徴があり、例えばファイターは近接攻撃が強く、序盤の生存に有利です。魔法使いやレンジャーは様々な魔法を使うことができ、identify の魔法は、同名の巻物と同じ効果です。

    trimmedXRogue8-241123-06.png

    次に、能力値を割り振ります。この六種になじみの無い方でも、これらの意味は、README_jp.TXT に書いてあるので安心です。先に紹介したクラスの特徴も、同じテキストにあります。

    trimmedXRogue8-241123-04.png

    そして、冒険を開始する前に、商店で買い物ができます。ほぼ裸一貫で始まる Rogue との大きな違いです。ここの商品は識別されていて、強化値も見ることができます。

    trimmedXRogue8-241123-05.png
  • 豊富なアイテム

    Rogue に比べ、武器、防具、その他のアイテムが、とにかく増えており、Rogue に存在しない魔法のアイテムや、アーティファクトまであります。私はまだ、アーティファクトを手にした事はありませんが…

    trimmedXRogue8-241123-07.png

    魔法のアイテム、Gauntlets of ogre power を装備し、Str が上昇した状態。固定値になるため、Str を下げられても安心。他にも、Cloak of displacement だったり、アイテムを収納できるアイテムなど、色々あります。

  • 増えた手段

    Rogue の場合、アイテムの数は限られており、運が悪いとどうにもならない状況に陥ることがよくあります。しかし、XRogue では、クラスによっては、呪文、祈り、聖歌が使えたり、あるいは敵を脅したり、物を盗んだりできるため、それらによって状況を打開できるかもしれません。

  • 取引

    迷宮の中に、交易所が出現することがあります。また、Quartermaster(補給係将校)と出会えた場合、彼から商品を買うこともできます。

    trimmedXRogue8-241203-04.png
  • 多彩な怪物

    Rogue では各アルファベットに一種類でしたが、多数の怪物が追加されています。多数で出現する怪物や、友好的な怪物など。ただ、モノクロ表示なので、怪物を一目で識別できず、'='コマンドでその怪物を調べる必要がある場面があり、残念ながら手間も増えています。

  • 怪物の行動

    Rogue では、ほぼ全ての怪物が、プレイヤーを認識するとひたすら攻撃し続けましたが、XRogue では、不利になると逃げる場合もあります。また、怪物も罠にかかったり、アイテムを拾ったりします。

  • 速度

    Rogue と違い、プレイヤーと怪物が交互に行動するシステムではなく、速い者が多く行動するようになっています。

開始前にアイテムを購入できたり、迷宮内にも交易所があったり、怪物もよくアイテムを落とすので、物資が不足しがちな Rogue に比べ、どうしようもない死は少ない印象です。もっとも、25階が現時点の最高記録である私の感想なので、もっと深い階層では Rogue より難しくなる可能性もあります。

trimmedXRogue8-241203-06.png

私自身がまだ未熟な事もあり、紹介しきれなかった要素はまだ多くあります。英語ではありますが、Rogue も英語ですが、英語がわからなくてもなんとかなるゲームですし、Rogue が難しすぎるという人や、未知の要素を楽しみたい人には、プレイしてもらいたいゲームです。

本当は、二週間後に NetHack 3.7 についても書くつもりで予約していたのですが、忙しくなりそうなのでキャンセルしました。

明日の記事は、現時点(24/12/06 23:13)では未定です。

以下は、必要な人に向けての、XRogue のデータの一部と、ビルド方法になります。

XRogue の情報

XRogue では様々なアイテムが追加されていますが、以下は武器と防具のリストです。武器のデータはソースを読まないとわからないものではありますが、これを知らないと厳しいと思うので、用意しました。一応、装備制限に関しては、マニュアルにヒントがありますが。

<武器>           <近接> <投射> <装備制限>
mace              2d10   2d10
long sword         3d4    2d8
dagger             2d8    1d6
two-handed sword  3d10    3d8   F R P
dart               2d4    2d6
spear              2d6   3d10
trident            3d6    3d4
spetum             2d6    2d8
bardiche           3d4   2d10
pike               2d8    2d8
bastard sword      3d8    3d6   F A T Mo
halberd            2d8    2d4
battle axe         2d8    3d8
<弓>
short bow          1d1    1d1
sling              1d1    1d1
crossbow           1d1    1d1
<矢>
arrow              2d4    1d6
rock               2d4    1d6
crossbow bolt      2d4    2d4

装備制限に記載がある場合、そのイニシャルのクラスでなければ装備できません。
Mo = Monk です。
<鎧>                  
leather armor           8
ring mail               7
studded leather armor   5
scale mail              7
padded armor            6
chain mail              6
splint mail             5
banded mail             5
plate mail              4
plate armor             3

Thief & Assassin は、(studded) leather armor 以外の鎧を装備できません。
重い鎧を装備すると、速度が低下します。また、所持重量の割合が一定以上になった場合も、速度が低下します。

Linux でのビルド手順例(Rogue, Super Rogue, Ultra Rogue, XRogue, ついでに Moria)

Windows の場合、ローグのページに実行ファイルがあるので、それをダウンロードすれば大丈夫でしょう。

以下は、Linux(AntiX Linux 23.1 32bit)でのビルドの一例です。起動用のシェルスクリプトを同一のディレクトリに作り、そこにパスを通し、起動しやすいようにしています。

マニュアル類や、この例で使わないソースも一応ダウンロードしていますが、必要に応じて判断してください。

ダウンロードは全て wget で済ませたかったですが、私が作成したパッチについては、ブラウザを使う形になります。

以下は、全てのビルドに関する共通事項です。

http://yozvox.web.fc2.com
にあるソースファイルは

~/yozvox.web.fc2.com
にダウンロードし、

~/yozvox.web.fc2.com/games
に起動用シェルスクリプトを作成する

最初の一度だけ、
$ cd ~
$ mkdir yozvox.web.fc2.com
$ mkdir yozvox.web.fc2.com/games
を行い、

~/.bashrc に

# set PATH so it includes user's yozvox.web.fc2.com bin if it exists
if [ -d "$HOME/yozvox.web.fc2.com/games" ] ; then
    PATH="$HOME/yozvox.web.fc2.com/games:$PATH"
fi

を書き込み端末を再起動するとパスが通る

共通事項 終わり

以下が、それぞれのビルドの手順です。

trimmedRogue54-241122-01.png
Rogue 5.4.5x

$ cd ~/yozvox.web.fc2.com

まずはマニュアル類ダウンロード
$ wget http://yozvox.web.fc2.com/rogue36.txt
$ wget http://yozvox.web.fc2.com/rogue36_jp.txt
$ wget http://yozvox.web.fc2.com/rogue.txt
$ wget http://yozvox.web.fc2.com/rogue_jp.txt

スポイラー
$ wget http://yozvox.web.fc2.com/rvm.html
$ wget http://yozvox.web.fc2.com/rvm.pdf
$ wget http://yozvox.web.fc2.com/rvm_jp.html
$ wget http://yozvox.web.fc2.com/rvm_jp.pdf
$ wget http://yozvox.web.fc2.com/rvm-msg.html
$ wget http://yozvox.web.fc2.com/rvm-msg.pdf
$ wget http://yozvox.web.fc2.com/rvm-msg_jp.html
$ wget http://yozvox.web.fc2.com/rvm-msg_jp.pdf

ソース
$ wget http://yozvox.web.fc2.com/rogue5.4.5x-src.zip

今回は使わないが、一応その他のソースも
$ wget http://yozvox.web.fc2.com/rogue3.6-src.tar.gz
$ wget http://yozvox.web.fc2.com/rogue5.2-src.tar.gz
$ wget http://yozvox.web.fc2.com/rogue5.4.5-src.zip
$ wget http://yozvox.web.fc2.com/rogue5.4.5p-src.zip
$ wget http://yozvox.web.fc2.com/rogue5.4.5x-src_o03.zip

$ unzip rogue5.4.5x-src.zip
$ cd rogue5.4.5x-src
$ make dist.m32
$ mkdir ../rogue5.4.5x
$ mv rogue ../rogue5.4.5x
$ cp rogue.ttl  ../rogue5.4.5x
$ cp README.txt ../rogue5.4.5x

カラーモードで起動するシェルスクリプト作成
$ cd ../games
$ touch rogue54
$ echo -e $'#!/bin/sh' > rogue54
$ echo -e $'cd ~/yozvox.web.fc2.com/rogue5.4.5x' >> rogue54
$ echo -e $'if [ -e rogue.save ]; then' >> rogue54
$ echo -e $'  ./rogue rogue.save' >> rogue54
$ echo -e $'else' >> rogue54

オプションについては README.txt を参照
-14 で snake -> slime
-16 で snake -> slime & bright(PC98/88風カラー)
キャラクター名は好きな名前で。英数字以外は受け付けるか不明
$ echo -e $'  ./rogue -10 キャラクター名' >> rogue54
$ echo -e $'fi' >> rogue54

権限付与
$ chmod 755 rogue54

$ cd ~

ゲーム開始
パスは通っているので、次回以降はこれだけで良い
$ rogue54
trimmedSRogue9-241204-01.png
Super Rogue 9.0.1

$ cd ~/yozvox.web.fc2.com

ソース
$ wget http://yozvox.web.fc2.com/srogue9.0-1-src.tar.gz

足りないファイルがあるのでダウンロード
$ wget http://yozvox.web.fc2.com/srogue9.0-1-linux.tar.gz
$ wget https://raw.githubusercontent.com/RoguelikeRestorationProject/srogue/refs/heads/master/rogue.ext

必要であれば、以下のパッチを
~/yozvox.web.fc2.com
にダウンロードする

このファイルは、ブラウザでダウンロードする必要がある
https://www.mediafire.com/file/v2o3ujmi7zhsjro/srogue9.0-1-current_sav_ASCII_LF.patch/file

ファイル展開
$ mkdir srogue9.0-1-src
$ tar zxvf srogue9.0-1-src.tar.gz -C srogue9.0-1-src

$ cd srogue9.0-1-src

足りないファイルをコピー
$ tar zxf ../srogue9.0-1-linux.tar.gz srogue.doc
$ cp ../rogue.ext srogue9.0-1-src

セーブファイルのパスを、スコアファイルと同じ場所に変更する
パッチを当てる。任意
$ patch -p1 < ../srogue9.0-1-current_sav_ASCII_LF.patch

$ make dist.linux

$ mkdir ../srogue9.0-1
$ mv srogue ../srogue9.0-1
$ cp srogue.doc ../srogue9.0-1
$ cp LICENSE.TXT ../srogue9.0-1

シェルスクリプト作成
$ cd ../games
$ touch srogue9
$ echo -e $'#!/bin/sh' > srogue9
$ echo -e $'cd ~/yozvox.web.fc2.com/srogue9.0-1' >> srogue9
$ echo -e $'if [ -e srogue.sav ]; then' >> srogue9
$ echo -e $'  ./srogue srogue.sav' >> srogue9
$ echo -e $'else' >> srogue9

キャラクター名は好きな名前で。英数字以外は受け付けるか不明
$ echo -e $'  ./srogue -n キャラクター名' >> srogue9
$ echo -e $'fi' >> srogue9

権限付与
$ chmod 755 srogue9

$ cd ~

ゲーム開始
パスは通っているので、次回以降はこれだけで良い
$ srogue9
trimmedURogue-241204-01.png
Ultra Rogue 1.0.7

デフォルトのセーブデータ名が存在せず、セーブ時に自分で
名前を付け、ロードはそのファイル名を引数として渡して
実行する形になる。

$ cd ~/yozvox.web.fc2.com

ソース
$ wget http://yozvox.web.fc2.com/urogue1.0.7-src.tar.gz

必要であれば、以下のパッチを
~/yozvox.web.fc2.com
にダウンロードする

このファイルは、ブラウザでダウンロードする必要がある
https://www.mediafire.com/file/f436ftyyy5q64pa/urogue1.0.7-current_chr_ASCII_LF.patch/file

$ mkdir urogue1.0.7-src
$ tar zxvf urogue1.0.7-src.tar.gz -C urogue1.0.7-src
$ cd urogue1.0.7-src

キャラクターファイル(urogue.chr)のパスを、スコアファイルと
同じ場所に変更するパッチを当てる。任意
$ patch -p1 < ../urogue1.0.7-current_chr_ASCII_LF.patch

$ make dist.linux
$ mkdir ../urogue1.0.7
$ mv urogue ../urogue1.0.7
$ cp README ../urogue1.0.7

シェルスクリプト作成
$ cd ../games
$ touch urogue
$ echo -e $'#!/bin/sh' > urogue
$ echo -e $'cd ~/yozvox.web.fc2.com/urogue1.0.7' >> urogue
$ echo -e $'if [ -e "$1" ]; then' >> urogue
$ echo -e $'  ./urogue $1' >> urogue
$ echo -e $'elif [ $# = 0 ]; then' >> urogue

キャラクター名は好きな名前で。英数字以外は受け付けるか不明
$ echo -e $'  ./urogue -n キャラクター名' >> urogue
$ echo -e $'else' >> urogue
$ echo -e $'  echo "$1 is not found."' >> urogue
$ echo -e $'fi' >> urogue

権限付与
$ chmod 755 urogue

$ cd ~

ゲーム開始
パスは通っているので、次回以降はこれだけで良い

ニューゲームの場合は以下
$ urogue
セーブデータをロードする場合、セーブデータ名を引数として渡す
$ urogue セーブデータ名
trimmedXRogue8-241203-03.png
XRogue 8.0

$ cd ~/yozvox.web.fc2.com

マニュアル
$ wget http://yozvox.web.fc2.com/READMEX80.TXT
$ wget http://yozvox.web.fc2.com/READMEX80_jp.TXT

ソース
$ wget http://yozvox.web.fc2.com/xrogue8.0-src.tar.gz

必要であれば、以下のパッチを
~/yozvox.web.fc2.com
にダウンロードする

このファイルは、ブラウザでダウンロードする必要がある
https://www.mediafire.com/file/w2kr9cwwvrmtupp/xrogue8.0-current_sav_ASCII_LF.patch/file

$ mkdir xrogue8.0-src
$ tar zxvf xrogue8.0-src.tar.gz -C xrogue8.0-src
$ cd xrogue8.0-src

セーブファイルのパスを、スコアファイルと同じ場所に変更する
パッチを当てる。任意
$ patch -p1 < ../xrogue8.0-current_sav_ASCII_LF.patch

$ make dist.linux
$ mkdir ../xrogue8.0
$ mv xrogue ../xrogue8.0
$ cp README_jp.TXT ../xrogue8.0

シェルスクリプト作成
$ cd ../games
$ touch xrogue8
$ echo -e $'#!/bin/sh' > xrogue8
$ echo -e $'cd ~/yozvox.web.fc2.com/xrogue8.0' >> xrogue8
$ echo -e $'if [ -e xrogue.sav ]; then' >> xrogue8
$ echo -e $'  ./xrogue xrogue.sav' >> xrogue8
$ echo -e $'else' >> xrogue8

キャラクター名は好きな名前で。英数字以外は受け付けるか不明
$ echo -e $'  ./xrogue -n キャラクター名' >> xrogue8
$ echo -e $'fi' >> xrogue8

権限付与
$ chmod 755 xrogue8

$ cd ~

ゲーム開始
パスは通っているので、次回以降はこれだけで良い
$ xrogue8
moria006.png
Moria 5.6-debian1-2build3p

$ cd ~/yozvox.web.fc2.com

まずはマニュアル類ダウンロード
$ wget http://yozvox.web.fc2.com/moria-jp.txt
$ wget http://yozvox.web.fc2.com/moria-en.txt
$ wget http://yozvox.web.fc2.com/moria-jp.pdf
$ wget http://yozvox.web.fc2.com/moria-en.pdf
$ wget http://yozvox.web.fc2.com/moria_doc.zip

Debian 以外?
$ wget http://yozvox.web.fc2.com/moria5.6-2x-src.zip
Debian であれば、おそらくこのファイル
以降はこのファイル前提で記述
$ wget http://yozvox.web.fc2.com/moria5.6.d.1-2b3p-src.zip

ビルド
$ unzip moria5.6.d.1-2b3p-src.zip
$ cd moria5.6.d.1-2b3p-src
$ sh build32.sh
$ mkdir ../moria5.6.d.1-2b3p
$ mv moria ../moria5.6.d.1-2b3p
$ cp -r files ../moria5.6.d.1-2b3p

カラーモードで起動するシェルスクリプト作成
$ cd ../games
$ touch moria56
$ echo -e $'#!/bin/sh' > moria56
$ echo -e $'cd ~/yozvox.web.fc2.com/moria5.6.d.1-2b3p' >> moria56

以下は移動方法で、片方を選ぶ

ローグキー移動の場合
$ echo -e $'./moria -c -r' >> moria56
テンキー移動の場合
$ echo -e $'./moria -c' >> moria56

権限付与
$ chmod 755 moria56

$ cd ~

ゲーム開始
パスは通っているので、次回以降はこれだけで良い
$ moria56
posted by Takenoko at 00:00| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2024年07月03日

SpliceHack 1.2.0 Role-Based Skills のスポイラー

NetHack のヴァリアント、SpliceHack 1.2.0では、Role 毎に取得、上昇可能なスキルを所有しており、それについてのスポイラーです。強力なスキル、そうでもないスキル、バグで全く意味のないスキル、バグは無さそうだが存在意義の分からないスキルなど、色々あります。

SpliceHack 1.2.0
Role-Based Skills についてのスポイラー

文中のスキル値(skill)は以下の値を返す。
Isrestricted  0
Unskilled     1
Basic         2
Skilled       3
Expert        4
Master        5
Grand Master  6

rn2(v) は、0 ~ (v - 1) の間のランダムな値。

rnd(v) は、1 ~ v の間のランダムな値。

rnl(v) は、0 ~ (v - 1) の間のランダムな値を取るが、
(厳密には違う場合もあるが)運が高いほど低い値になりやすい。

rn1(x, y) は、rn2(x) + y を返す。


スキル上限リスト

+--------------+---+---+---+---+---+---+---+---+---+
|skills \ roles|Arc|Bar|Car|Cav|Con|Dra|Hea|Kni|Mon|
+--------------+---+---+---+---+---+---+---+---+---+
|power attack  |   |Mas|   |Mas|   |Bas|   |Ski|   |
|careful attack|Ski|   |   |   |   |   |   |Ski|   |
|flaming fists |   |   |   |   |   |   |   |   |Gra|
|freezing fists|   |   |   |   |   |   |   |   |   |
|shocking fists|   |   |   |   |   |   |   |   |Gra|
|stunning fists|   |   |   |   |   |   |   |   |Gra|
|backstab      |   |   |   |   |   |   |   |   |   |
|rat tamer     |   |   |   |   |Exp|   |   |   |   |
|dragon tamer  |   |   |   |   |   |Exp|   |   |   |
|blood rage    |   |Exp|   |   |   |   |   |   |   |
|panache       |Exp|   |   |   |   |   |   |   |   |
|wild magic    |   |   |Exp|   |   |   |   |   |   |
|blood magic   |   |   |   |   |   |   |   |   |   |
|code of honor |   |   |   |   |   |   |   |Exp|   |
|disarm        |Exp|Bas|   |Ski|   |Ski|Exp|Exp|Exp|
|sunder        |   |Exp|   |Exp|Bas|Ski|   |   |Exp|
|tumbling      |Ski|   |   |   |Bas|   |   |   |   |
+--------------+---+---+---+---+---+---+---+---+---+

+--------------+---+---+---+---+---+---+---+---+
|skills \ roles|Pri|Pir|Rog|Ran|Sam|Tou|Val|Wiz|
+--------------+---+---+---+---+---+---+---+---+
|power attack  |   |Ski|   |   |Mas|Bas|Ski|   |
|careful attack|   |   |Exp|Bas|   |Bas|   |   |
|flaming fists |   |   |   |   |   |   |   |   |
|freezing fists|   |   |   |   |   |   |Gra|   |
|shocking fists|   |   |   |   |   |   |   |   |
|stunning fists|   |   |   |   |   |Bas|   |   |
|backstab      |   |   |Exp|   |   |Bas|   |   |
|rat tamer     |   |   |   |   |   |   |   |   |
|dragon tamer  |   |   |   |   |   |   |   |   |
|blood rage    |   |   |   |   |   |   |   |   |
|panache       |   |   |   |   |   |   |   |   |
|wild magic    |   |   |   |   |   |Bas|   |Exp|
|blood magic   |   |   |   |   |   |   |   |Exp|
|code of honor |   |   |   |   |Exp|   |   |   |
|disarm        |   |Ski|Bas|   |Exp|Bas|Bas|   |
|sunder        |Bas|Ski|   |Exp|Exp|Bas|Exp|   |
|tumbling      |   |Ski|Exp|   |   |   |   |   |
+--------------+---+---+---+---+---+---+---+---+


スキル経験値の上昇

レベルが上昇した際、その時の role で、
スキル上限 > Unskilled
のスキルの経験値がそれぞれ上昇する。
上昇値は、
rn1(3, 3) * スキル値(該当スキル)
となる。

レベルが下降しても経験値は減らないので、レベルドレインと
レベルアップを繰り返すと経験値を稼ぐ事ができる。レベルを
下げずに Grand Master まで上げる事はできないと思われる。

各スキルの特徴

*** power attack ***

Barbarian     Master
Caveman       Master
Dragon Rider  Basic
Knight        Skilled
Pirate        Skilled
Samurai       Master
Tourist       Basic
Valkyrie      Skilled

効果は、hitval dmgval を参照。

*** careful attack ***

Archeologist  Skilled
Knight        Skilled
Rogue         Expert
Ranger        Basic
Tourist       Basic

効果は、hitval dmgval を参照。

*** flaming fists ***

Monk          Grand Master

効果は、skill_hit_effects を参照。

*** freezing fists ***

Valkyrie      Grand Master

効果は、skill_hit_effects を参照。

*** shocking fists ***

Monk          Grand Master

効果は、skill_hit_effects を参照。

*** stunning fists ***

Monk          Grand Master
Tourist       Basic

武器を装備しておらず、ダメージ > 1 で、近接攻撃で、
変化していない場合、スタン攻撃が発生する可能性がある。

rnd(100) < (スキル値(bare handed combat) + スキル値(stunning fists)
が真であるか、boxing gloves を装備中であり、
攻撃対象が大きくなく、攻撃対象の皮が厚くなく、
攻撃のダメージで攻撃対象が死亡しない場合、
攻撃対象はスタンする。

*** backstab ***

Rogue         Expert
Tourist       Basic

武器攻撃時に、以下の条件で発生する。
対象が恐怖している && (Rogue Lv > 0
|| スキル値(backstab) > Unskilled)
&& 変化していない && (近接攻撃 || 長斧を使った攻撃)
が真の場合、
スキル値(backstab) > Unskilled
であれば、
ダメージ += rnd(プレイヤーレベル * (1 + スキル値(backstab)))
それ以外は、
ダメージ += rnd(プレイヤーレベル)
となる。

*** rat tamer ***

Convict       Expert

Chat した鼠をペットにできるスキル。

Convict Lv > 0 であり、話相手が鼠であり、
対象が友好的でもペットでも無い場合、
rnl(10) - スキル値(rat tamer) < 2
が真の場合、その相手をペットにできる。
偽の場合、
rnl(10) *= 8
が真になると、その相手は友好的になる。

*** dragon tamer ***

Dragon Rider  Expert

Chat したドラゴンをペットにできるスキル。

Dragon Rider Lv > 0 であるか、
スキル値(dragon tamer) > Unskilled) であり
(実際にはこのスキルを持つのが Dragon Rider のみなので意味のない条件)、
話相手がドラゴンであり、
対象が友好的でもペットでも無い場合、
rnl(10) - スキル値(dragon tamer) * 3 + 対象Lv < 2
が真の場合、その相手をペットにできる。
偽の場合、
rnl(10) *= 8
が真になると、その相手は友好的になる。

*** animal friendship ***

実装されていないスキル。

*** blood rage ***

Barbarian     Expert

効果は、skill_hit_effects を参照。

*** panache ***

Archeologist  Expert

スキル値(panache) > Unskilled
が真であれば、(スキル値(panache) - 1)個の
blessed luck stone を持っているのと同じ扱いを受ける。

しかし、このスキルを得ただけでは、さらなる幸運(extra luck)
は得られない。スキルを上昇させた際に、さらなる幸運の再計算を
していないため。

これを解決するには、幸運に影響するオブジェクトを一度
インベントリに加える必要がある。一度でもインベントリに
入れば、その後それを捨てても問題無い。

*** wild magic ***

Cartomancer   Expert
Tourist       Basic
Wizard        Expert

魔法を使用して成功した際、
スキル値(wild magic) > Unskilled が真であり、
rn2(スキル値(wild magic)) > 0 も真であれば、
使用した魔法がランダムな魔法に置換され、
その魔法のスキル値に +1 されて使用する事になる。
魔法は覚えているか否かは関係無く、存在する全ての魔法
から選ばれる。

energy 消費や、使用難易度は元の魔法で計算した後に
魔法が置換される。

このスキルを覚えると、使用した魔法が別の魔法に置換
される可能性が排除できなくなる。

*** blood magic ***

Wizard        Expert

スキル値(blood magic) > Unskilled
が真であれば、energy が足りなくても魔法を使える
ようになり、不足分、hp を代わりに消費する事になる。
(extra) healing の魔法を使った場合、四倍を消費する。
いずれの場合も、hp も足りない場合は死亡する。

魔法使用後、energy <= 0 の場合、
魔法のスキル値 + スキル値(blood magic) - 1
されて使用する事になる。

*** code of honor ***

Knight        Expert
Samurai       Expert

効果は、hitval を参照。

属性値 > -10 であり、
スキル値(code of honor) > Unskilled が真であり、
プレイヤーの属性が秩序である場合、
攻撃対象が動けないか、眠っているか、
恐怖していてかつ怒っていない場合、
属性値 -= スキル値(code of honor) * 3
される。

騎士道と同じ条件だが、ペナルティは騎士道より重く、
それより優先される。

*** disarm ***

Archeologist  Expert
Barbarian     Basic
Caveman       Skilled
Dragon Rider  Skilled
Healer        Expert
Knight        Expert
Monk          Expert
Pirate        Skilled
Rogue         Basic
Samurai       Expert
Tourist       Basic
Valkyrie      Basic

whip を apply コマンドで使用した際、
スキル値(disarm) -1 のボーナスが得られる。

スキル値(disarm) > Unskilled
が真の場合、disarm コマンドを使用できるようになり、
武器を持った怪物にこのスキルを使用した際、
rn2(6) < スキル値(disarm) + スキル値(メイン武器)
が真であれば、怪物のマスに武器を落とす事ができる。
成否に関わらず、対象の怪物を怒らせる。

スキル値によっては確実に武装解除できる。

*** sunder ***

Barbarian     Expert
Caveman       Expert
Convict       Basic
Dragon Rider  Skilled
Monk          Expert
Priest        Basic
Pirate        Skilled
Ranger        Expert
Samurai       Expert
Tourist       Basic
Valkyrie      Expert

スキル値(sunder) > Unskilled
が真の場合、sunder コマンドが使用可能になり、
武器を持っている怪物にスキルを使用した際、
a = スキル値(sunder)
怪物の武器がアーティファクトである場合
a -= 2
rn2(6) < a
が偽である場合、何も起こらない。
真である場合、以下の処理を行う。

対象の怪物が石化生物の死体等(*1)を持っている場合、
プレイヤーが武器を持たず石化耐性も無い場合、
石化して死亡する。それ以外で武器を持たない場合、
持っている武器の素材が石になる処理があるが、
存在しない武器の素材を変更しようとして、
プログラムが強制終了する。武器をもっていた場合に
素材を石に変更する意図だったと思われる。

} else if (!uwep) {
    uwep->material = STONE;

というコードだが、条件を修正した場合、
武器の素材は石にはならず、mysterious
という素材になる。
この"STONE"という定数は地形のための定数であり、
間違った素材を代入しているため。

} else if (uwep && uwep->material != MINERAL) {
    uwep->material = MINERAL
    uwep->owt = weight(uwep);
    costly_alteration(uwep, COST_DRAIN);

とすると、素材は正しく石(MINERAL)になり、
重量も正しく変化し、商品に対する処理も行われる。

怪物の持つ武器は破壊され、怪物は怒る。

*1 缶詰や人形、マスク、エッセンスの注入されたアイテムでも
同じはずだが、少なくとも缶詰や人形、マスクを怪物が武器として
使う事はないと思われる。

*** tumbling ***

Archeologist  Skilled
Convict       Basic
Pirate        Skilled
Rogue         Expert

tumble コマンドを使用した際の処理は以下。

プレイヤーが飲み込まれているか罠にかかっている場合は
必ず失敗する。

Fumbling 状態である場合は必ず失敗し、d20 の物理ダメージを
受ける。

roll = rn2(6)

スキル値(tumbling) <= Unskilled || roll > スキル値(tumbling)
が真である場合、コマンドが失敗する。よって、
このスキルが無い場合でもコマンドは使用できるが、
必ず失敗する。

座標が不正な場合は失敗する。

対象が存在しないか、確認できない場合は失敗する。

コマンドが成功すると、対象と位置が入れ替わる。
プレイヤーの入れ替わり先に罠があった場合、
それが発動する。

roll > スキル値(tumbling)
が真である場合、d2 ターン行動不能になる?
が、前述の失敗条件と同じなので、これは真にならない。

*** spider friend ***

実装されていないスキル。

===========================================================
hitval
(weapon.c)

近接及び飛び道具による攻撃時の一部スキルの処理

命中修正 -= スキル値(power attack)
命中修正 += スキル値(careful attack)
命中修正 += スキル値(code of honor)

===========================================================
dmgval
(weapon.c)

近接及び飛び道具による攻撃時の一部スキルの処理

ダメージ += スキル値(power attack)
ダメージ -= スキル値(careful attack)

===========================================================
skill_hit_effects
(uhitm.c)

素手攻撃時の一部スキルの処理

まず、
dmg = 0
とする。


framing fists > Unskilled && rn2(25) < スキル値
が真の場合、対象に火耐性が無い場合、dmg += d6
dmg > 4 の場合、
相手の持つ巻物が破壊される場合がある。


freezing fists > Unskilled && rn2(25) < スキル値
が真の場合、対象に冷気耐性が無い場合、dmg += d6
dmg > 4 の場合、
相手の持つ水薬が破壊される場合がある。


shocking fists > Unskilled && rn2(100) < スキル値
が真の場合、対象に冷気耐性が無い場合、dmg += d20
dmg > 4 の場合、
相手の持つ杖が破壊される場合がある。
冷気耐性で判定されているのは、バグと思われる。


fists 攻撃は重複できるが、dmg は加算されるので、
アイテムを壊す確率が上昇する。


blood rage > Unskilled && hp < (mhp / 2)
が真の場合、
hp < (hpm / 4)
であれば、dmg += スキル値(blood rage) * 2
そうでなければ、dmg += スキル値(blood rage)

しかし、blood rage は、上記がコードの意図と
思われるが、実際のコードは
u.uhp < (u.uhp / 2)
u.uhp < (u.uhp / 4) ? 2 : 1)
のようになっているため、効力を発揮する場面は無い。


dmg がダメージに加算される。

posted by Takenoko at 20:50| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2024年06月02日

SpliceHack 1.2.0 炉(furnace)のスポイラー

NetHack のヴァリアント、SpliceHack 1.2.0では、炉(furnace)という設備が追加されており(これ以前のバージョンにあるかは不明)、それについてのスポイラーです。検索しても、日本語の情報が全く出て来ないヴァリアントですが、せめて私だけでも書いてみようと思います。日本語版はありませんが、NetHack 経験があればプレイできると思います。バグは多いですが楽しいです。

SpliceHack 1.2.0
炉(furnace)のスポイラー

炉(furnace)の地形の上で #forge コマンドを使うと、二つの
オブジェクトを組み合わせて、オブジェクトを作成したり、
怪物のエッセンスを注入したりできる。順番が結果に影響する
場合もある。

最初に選んだオブジェクトを obj1 とし、
次に選んだオブジェクトを obj2 とする。

装備しているオブジェクトや、同じオブジェクトは合成できない。

オブジェクトが石化生物の死体である場合、それを触る処理が
行われる。

オブジェクトが乗り手の死体である場合、それが蘇る。

obj2 がアーティファクトであり、obj1 がそうではない場合は
合成できない。

1. オブジェクトが両方アーティファクトである場合

以下の組み合わせである場合、それに応じたアーティファクトが
作成され、4 の処理に進む。そうでなければ処理は終了。
アーティファクトが既に存在する場合、そのベースとなる武器が
代わりに生成される。

  Frostburn:      Frost Brand + Fire Brand
  Mortality Dial: Trollsbane + Werebane
  Squall:         Sunspot + Sonicboom

2. obj2 が死体、缶詰、人形、マスクのいずれかであり、怪物の
名前が入っている場合

obj1 にその怪物のエッセンスが注入される。obj1 の種類により、
以下のような変化が起こる。

武器であれば、攻撃時にその怪物によって異なる特殊攻撃が
追加されるようになる。

エッセンスの注入された武器で攻撃した際、50% の確率で
"The (怪物名) essence in (武器名) bursts forth!"
と表示され、XdY の追加ダメージを与える。

  X = min(2, 怪物の一番最初の攻撃のダイス数)
  Y = min(6, 怪物の一番最初の攻撃のダイス面)

  min(x, y) は、x と y の値の内、小さい方を返す。

その場合、怪物の一番最初の攻撃のダメージタイプによる
判定も発生する。ただし、ダメージタイプが
  AD_STON AD_VOID
の場合は 29/30 の確率で、AD_PHYS として扱われる。

効果やその発生率、ダメージ等はタイプによって異なる。
詳細は artifact.c#artifact_hit 関数内の、
/* Imbued objects. */以下を参照。

鎧であれば、変化時にドラゴンの鱗(鎧)と同じように作用する。
ドラゴンの鱗(鎧)に合成した場合、ドラゴンが優先される。
通常は変化できない怪物(M2_NOPOLY)であっても、ユニーク
モンスターであっても、変化できてしまう。

鎧以外の防具にも合成できるが、おそらく意味は無い。

死体、缶詰、人形、マスク、卵、彫像の場合、その怪物の名前の
付いたオブジェクトに変化する。重量などの値は変化しない。
ユニークモンスターの名前が付いた場合、おそらく卵は孵化せず、
変化できない怪物(M2_NOPOLY)の場合、マスクは使用時に消滅する
が、人形は問題無く使えてしまい、ユニークモンスターをペットに
したり騎乗したりできる。

それ以外のオブジェクトは、おそらく変化しない。

5 の処理に進む。

3. それ以外の組み合わせ

以下の組み合わせであれば、それに応じたオブジェクトが作成
される。順番は逆でも問題無い。以下のリストでは、オブジェクト
の定数名で表記している。

武器
  BASEBALL_BAT:    CLUB + RUBBER_HOSE
  BATTLE_AXE:      AXE + AXE
  HEAVY_IRON_BALL: IRON_CHAIN + BOULDER
  LONG_SWORD:      SHORT_SWORD + SHORT_SWORD
  SPIKED_CHAIN:    IRON_CHAIN + DAGGER
  SPIKED_CHAIN:    IRON_CHAIN + KNIFE
  TRIPLE_FLAIL:    FLAIL + FLAIL
  TSURUGI:         TWO_HANDED_SWORD + KATANA
防具
  HELM_OF_TELEPATHY:    AMULET_OF_ESP + HELMET
  SHIELD_OF_REFLECTION: AMULET_OF_REFLECTION + LARGE_SHIELD
  TINFOIL_HAT:          DENTED_POT + DUNCE_CAP
  LEVITATION_BOOTS:     HIGH_BOOTS + RIN_LEVITATION
  LEVITATION_BOOTS:     LOW_BOOTS + RIN_LEVITATION
  SHIELD_OF_REFLECTION: SMALL_SHIELD + AMULET_OF_REFLECTION
  CLOAK_OF_PROTECTION:  PLAIN_CLOAK + AMULET_OF_GUARDING
指輪
  RIN_CONFLICT:          RIN_HUNGER + RIN_AGGRAVATE_MONSTER
  RIN_POLYMORPH_CONTROL: RIN_POLYMORPH + RIN_TELEPORT_CONTROL
  RIN_TELEPORT_CONTROL:  RIN_TELEPORTATION + RIN_POLYMORPH_CONTROL
道具
  LENSES:       CRYSTAL_BALL + TOWEL
  LOCK_PICK:    SKELETON_KEY + SKELETON_KEY
  SKELETON_KEY: LOCK_PICK + LOCK_PICK
魔法の道具
  CRYSTAL_BALL:       LOADSTONE + SCR_IDENTIFY
  CRYSTAL_BALL:       LUCKSTONE + SCR_IDENTIFY
  HORN_OF_PLENTY:     FOOD_RATION + TOOLED_HORN
  MAGIC_FLUTE:        FLUTE + SCR_TAMING
  OILSKIN_SACK:       CAN_OF_GREASE + BAG_OF_HOLDING
  OILSKIN_SACK:       CAN_OF_GREASE + BAG_OF_RATS
  FIRE_HORN:          TOOLED_HORN + WAN_FIRE
  FROST_HORN:         TOOLED_HORN + WAN_COLD
  OILSKIN_SACK:       SACK + CAN_OF_GREASE
  DRUM_OF_EARTHQUAKE: LEATHER_DRUM + SCR_EARTH
  MAGIC_HARP:         HARP + SCR_TAMING
  DWARVISH_MATTOCK:   PICK_AXE + AXE
杖
  WAN_CREATE_MONSTER: WAN_POLYMORPH + WAN_NOTHING
  WAN_ENLIGHTENMENT:  WAN_OPENING + WAN_LIGHT
  WAN_NOTHING:        WAN_OPENING + WAN_LOCKING
食料
  K_RATION:    C_RATION + FOOD_RATION
  FRUITCAKE:   SLICE_OF_CAKE + SLIME_MOLD
  PUMPKIN_PIE: CREAM_PIE + PUMPKIN
  APPLE_PIE:   CREAM_PIE + APPLE
魔除け
  AMULET_OF_REINCARNATION: AMULET_OF_LIFE_SAVING + AMULET_OF_CHANGE
  AMULET_OF_LIFE_SAVING:   AMULET_OF_REINCARNATION + RIN_POLYMORPH_CONTROL

以上に無い組み合わせの場合、処理は終了する。

存在する組み合わせであれば、オブジェクトが作成される。

作成されたオブジェクトの変化し得る素材リストに、obj2
の素材が含まれる場合、オブジェクトの素材はその素材に
変化する。そうでない場合、obj1 の素材が含まれる場合、
オブジェクトの素材はその素材に変化する。この際、重量の
再計算がされないため、素材に関わらず、オブジェクト本来の
重量となる。

また、それとは別に、作成されたオブジェクトの重量が正しく
ならない場合も確認された。これについては原因は不明。

4 の処理に進む。

4. 強化値などの引き継ぎ

作成に使用したオブジェクトと完成したオブジェクトの種類
(class)が同じ場合、強化値や使用回数(spe)を引き継ぐ。
その際、obj1 obj2 が両方同じ種類の場合、値の高い方を
引き継ぐ。

obj2 が呪われていれば、それを引き継ぐ。

obj2 が祝福されていれば、それを引き継ぐ。

obj2 に怪物の名前が付いていれば(**の死体など)、それを
引き継ぐ。それ以外で、obj1 に怪物の名前が付いていれば、
それを引き継ぐ。

obj1 obj2 は消滅する。

処理は終了する。

5. 炉の消滅

50% の確率で、"lava in the furnace cools."と表示され、
炉が消滅する。

消滅しない場合、"lava in the furnace bubbles ominously."
と表示される。

処理は終了する。

posted by Takenoko at 14:30| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2024年04月20日

Linux で、JNetHack 3.6.7 をインストール

ビルド環境: AntiX Linux 23.1 32bit

はじめに

JNetHack 3.6.7 をインストールする手順です。 Debian系であれば、ほぼ同じ手順でいいと思います。

インストール先

この方法だと、インストール先は、

~/nh/install/

となります。よって、この項のパスを通す作業を一度だけ行います。すでにパスが通っている場合は無視します。

~/.bashrc に以下を追記します。

# set PATH so it includes user's nethack bin if it exists
if [ -d "$HOME/nh/install/games" ] ; then
    PATH="$HOME/nh/install/games:$PATH"
fi

以上を書き込み端末を再起動するとパスが通ります。

ダウンロード

ファイルが存在しない場合、以下のファイルを

~/nh
にダウンロードします。ディレクトリが存在しない場合は作成してください。

IBMGraphics | UTF8Graphics については、リンク先を参照してください。

jnethack-3.6.7-0.1-src-230618.zip データベースを日本語化しない場合は無視

jnethack-3.6.7-0.1-shortprefix_1.02_SJIS-JP_LF.patch 祝呪表示等を短縮しない場合は無視

jnethack-3.6.7-0.1-bugfix_1.12_SJIS-JP_LF.patch バグ修正。ダウンロードをお勧めします

jnethack-3.6.7-0.1-ibmtty_SJIS_LF.patch IBMGraphics を表示したい場合

jnethack-3.6.7-0.1-utf8tty_SJIS_LF.patch (IBM | UTF8)Graphics を表示したい場合

jnethack-3.6.7-0.1-linux-no-curses_SJIS_LF.patch 違うバージョンと共存するための名前の変更や、日本語ではまともに表示されない、curses interface の無効化など

ビルド

以下の、文頭が"$"のコマンドを実行します。

$ sudo apt-get install build-essential bison flex libncurses5-dev gzip nkf git
$ cd ~/nh
$ git clone https://github.com/jnethack/jnethack-alpha.git

データベースを日本語化。ダウンロードしていない場合は以下の二行は無視
$ unzip ./jnethack/jnethack-3.6.7-0.1-src-230618.zip jnethack-3.6.7-0.1-build/dat/data.base
$ cp ./jnethack-3.6.7-0.1-build/dat/data.base ./jnethack-alpha/dat/

$ cd jnethack-alpha

バグ修正。当てた方がよいです
$ patch -p1 < ../jnethack-3.6.7-0.1-bugfix_1.12_SJIS-JP_LF.patch

祝呪表記を短縮。任意
$ patch -p1 < ../jnethack-3.6.7-0.1-shortprefix_1.02_SJIS-JP_LF.patch

IBMGraphics 使用可能に。任意。どちらか片方
$ patch -p1 < ../jnethack-3.6.7-0.1-ibmtty_SJIS_LF.patch

IBMGraphics & UTF8Graphics 使用可能に。任意。どちらか片方
$ patch -p1 < ../jnethack-3.6.7-0.1-utf8tty_SJIS_LF.patch

任意
日本語だと、curses interface はおそらく使えないので無効化します。
また、ファイル名を変更し、他のバージョンと共存できるようにします。
これを当てると、設定ファイル名が
.jnethackrc -> .jnh36rc
となり、実行ファイルやディレクトリの名前も
jnethack -> jnh36
となります。
$ patch -p1 < ../jnethack-3.6.7-0.1-linux-no-curses_ASCII_LF.patch

$ ./configure
$ make install

設定変更

~/(.jnethackrc | .jnh36rc) の文字コードを EUC-JP にする必要があります。そうでないと初期設定のペットやフルーツの名前が文字化けします。

WIZARD MODE を利用する場合、

nh/install/games/lib/(jnethackdir | jnh36dir)/sysconf

を開き、

WIZARDS=ユーザー名

に変更します。

ログを出力する場合、

nh/install/games/lib/(jnethackdir | jnh36dir)/sysconf
を開き、

DUMPLOGFILE を有効にします。

私の場合、

DUMPLOGFILE=/home/ユーザー名/nh/log/jnh367.%n.%d.log

のようにしています。

(IBM | UTF8)Graphics パッチを当てた場合、グラフィックの変更は、

readme_(ibm | utf8)tty.txt

を参照してください。

起動

パスが通っているので、カレントディレクトリに関わらず、

jnethack-3.6.7-0.1-linux-no-curses_ASCII_LF.patch を当てた場合
$ jnh36
当てていない場合
$ jnethack

いずれかでゲームが起動します。(IBM | UTF8)Graphics パッチを当てた場合、端末が UTF-8 を表示する設定になっていれば、それらが表示できます。

posted by Takenoko at 13:24| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2024年04月14日

(J)NetHack 3.6.7 win/tty の IBMGraphics について

NetHack 3.6.7 IBMGraphics nh36-ibm.png

NetHack 3.6.7 UTF8Graphics nh36-utf8.png

JNetHack 3.6.7-0.1 IBMGraphics jnh36-ibm.png

JNetHack 3.6.7-0.1 UTF8Graphics jnh36-utf8.png

NetHack 3.6.7 で、Windows とそれ以外の OS で、英語と日本語の両方で、IBMGraphics を表示する方法についての記事です。さらに、可能だったので、UTF8Graphics も表示できるようにしてみました。

日本語の場合、フォントを複数設定できるコンソールで、適切なフォントを指定しないと、正しく表示されないかもしれません。

NetHack 3.6.7

1. Windows

Windows の場合は、デフォルトで表示できるようになっているので、コマンドプロンプトの文字コードを変更する必要はありません。

2. それ以外

3.4.3 と同じように、コンソールの文字コードを cp437 とすることで表示できます。文字コードの変更ができないコンソールの場合、UTF-8 に対応したコンソールであれば、後述のパッチを当ててビルドすることで表示できるようになります。

JNetHack 3.6.7-0.1

1. Windows

日本語版では、cp437 の文字を表示するコードが無効化されていますが、それを有効にすれば英語と同じように表示でき、日本語と共存できます。後述のパッチを当てるか、自分で書き換えてビルドすることで表示できます。

2. それ以外

コンソールの文字コードを cp437 とすると、日本語が表示できなくなります。UTF-8 に対応したコンソールであれば、後述のパッチを当ててビルドすることで両方表示できるようになります。

パッチについて

1. nethack-3.6.7-ibmtty_ASCII_LF.patch

英語版の Windows 以外で、コンソールの文字コードが UTF-8 であれば

IBMGraphics

を表示できるようになるパッチです。前述の通り、Windows の場合は元々文字コードに関係なく表示できるので、このパッチを当てる必要はありません。

2. nethack-3.6.7-utf8tty_ASCII_LF.patch

英語版で、コンソールの文字コードが UTF-8 であれば

IBMGraphics

UTF8Graphics

を表示できるようになるパッチです。

cp437 の文字の内、IBMGraphics で使用していない

0x80 ~ 0x87

の範囲の文字を置換するので、それらを表示できなくなりますが、問題は無いと思います。

3. jnethack-3.6.7-0.1-ibmtty_SJIS_LF.patch

日本語版で、

IBMGraphics

を表示できるようになるパッチです。

Windows の場合はコンソールの文字コードは関係ありませんが、それ以外だと、UTF-8 である必要があります。

4. jnethack-3.6.7-0.1-utf8tty_SJIS_LF.patch

日本語版で、コンソールの文字コードが UTF-8 であれば

IBMGraphics

UTF8Graphics

を表示できるようになるパッチです。

Windows の場合はコンソールの文字コードは関係ありませんが、それ以外だと、UTF-8 である必要があります。

cp437 の文字の内、IBMGraphics で使用していない

0x80 ~ 0x87

の範囲の文字を置換するので、それらを表示できなくなりますが、問題は無いと思います。

posted by Takenoko at 13:53| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2023年11月12日

Chaotic Journey というゲームを公開しました

2023-1109-1358-30-359.png2023-1104-1131-31-464.png

2023-1104-1255-26-939.png2023-1109-1800-57-216.png

javascript製、ゲームライブラリにphina.jsを使用した、ブラウザ用ローグライクフリーゲームです。リンク先で公開しています。感想などがあればコメントを頂けると嬉しいです。

また、Ci-enも始めたので、面白いと思われた方、ソースコードを読んでみたい方は、もしよろしければ、支援していただけると助かります。

posted by Takenoko at 13:46| Comment(8) | 自作ゲーム | このブログの読者になる | 更新情報をチェックする