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) | 自作ゲーム | このブログの読者になる | 更新情報をチェックする

2023年08月27日

SlashTHEM-0.8.0 のアイテムの和名について

SlashTHEM-0.8.0で、侍及び忍者で開始すると、一部のアイテムが和名に変換されますが、NetHack に比べて数が増えていて、英語であることもあり、わかりづらいものもあるのでリスト化してみました。

SlashTHEM-0.8.0 Japanese-Item 英日変換用リスト

侍及び忍者でプレイすると、一部のアイテムが和名に変換されますが、そのリストです。
ゲームでは英語ですが、わかりやすいよう和訳も併記しています。英名の翻訳は日本語版
(JNetHack-3.6.7-0.1, JSlash'EM-0.0.7E7F3-J0.2.1)から。それらに存在しないものは
そのまま訳したり検索してヒットしたものだったりします。

変換されるのは名前だけで、性能や材質は変わりません。
"nunchaku"は、鎖カテゴリに和名ではない"nunchiaku"があるので混同に注意して下さい。

<記号について>
! NetHack の時点で存在する和名。
+ NetHack の時点で存在するが、和名が変更されたもの。
* ソースには存在するが、コメントアウトされていてゲーム内では変換されないもの。

 battle-axe(戦斧):                  ono(斧)
!broadsword(幅広の剣):              ninja-to(忍者刀)
 bronze plate mail(青銅の鎧):       tanko(短甲)
 club(こん棒):                      bokken(木剣)
 crystal plate mail(水晶の鎧):
                    jade o-yoroi(翡翠の大鎧)
 dagger(短剣):                      kunai(苦無)
 dart(投げ矢):
                    bo-shuriken(棒手裏剣)
 dwarvish mattock(ドワーフのつるはし):
                    dwarvish zaghnal(ドワーフのザグナル)
!flail(フレイル):
                    nunchaku(ヌンチャク)
!food ration(食料):                 gunyoki(丸薬)
 gauntlets of fumbling(お手玉の小手):
                    kote of fumbling(お手玉の小手)
 gauntlets of power(力の小手):
                    kote of power(力の小手)
!glaive(グレイブ):                  naginata(なぎなた)
 guisarme(ギザルム):                kamayari(鎌槍)
 halberd(ハルバード):               bisento(眉尖刀)
!helmet(兜):                        kabuto(兜)
!knife(ナイフ):                     shito(刺刀)
 lance(ランス):                     uma-yari(馬槍)
!leather gloves(革の手袋):          yugake(弓懸)
!lock pick(鍵開け器具):             osaku(おさく)
 long sword(長剣):                  chokuto(直刀)
+plate mail(鋼鉄の鎧):              o-yoroi(大鎧)
!potion of booze(酔っぱらいの薬):   sake(酒)
 quarterstaff(六尺棒):              bo(棒)
!short sword(小剣):                 wakizashi(脇差し)
 shuriken(手裏剣):
                    hira-shuriken(平手裏剣)
 spear(槍):                         yari(槍)
 splint mail(鉄片の鎧):             dou-maru(胴丸)
 silver dagger(銀の短剣):
                    jade-hilted kunai(翡翠の柄の苦無)
 silver spear(銀の槍):
                    jade-set yari(翡翠付きの槍)
 trident(トライデント):             magari yari(曲槍)
 two-handed sword(両手剣):          no-dachi(野太刀)
 war hammer(ウォーハンマー):        dai tsuchi(大鎚)
!wooden harp(木の竪琴):             koto(琴)
 doughnut(ドーナツ):                onigiri(おにぎり)
*wedge sandals(ウェッジサンダル):
                    jika-tabi(地下足袋)
 water walking boots(水上歩行の靴):
                    mizugumo(水蜘蛛)
 grappling hook(ひっかけ棒):        kaginawa(鉤縄)
 bow(弓):                           dai-kyu(大弓)
 small shield(小さな盾):            timbe(ティンベー)
 baseball bat(野球のバット):        jo(杖)
 pancake(パンケーキ):
                    okonomiyaki(お好み焼き)

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

2023年06月21日

JNetHack で IBMGraphics を表示する方法について

23/06/22 追記: Alt+F を有効にする方法を追加.

23/06/24 追記: メイリオを使う方法を追加.

ibm_hyper004.png ibm_hyper003.png

メイリオを使った場合の画像

ibm_hyper008.png

前回、IBMGraphics を表示できるようにした JNetHack を公開しましたが, 使用するターミナルやフォントによっては問題が起こることがあります. そこで, 簡単に表示する手順を記事にしました. ただし, 64bit windows 限定です.


1. hyper をダウンロードしインストールする

hyper 公式サイトから

Windows (.exe) v3.4.1

をダウンロードします. バージョンは今現在のものです. そしてダウンロードした Hyper-Setup-3.4.1.exe を実行し, hyper をインストールします.

2. hyper を起動する

インストール後の画面からそのまま起動するか, デスクトップに新しくできたアイコンから起動します.

3. 設定を変更する(任意)

フォント, フォントサイズ, カラーリングなどを変更したい場合, アプリ左上のバーガーメニューを左クリックし, Edit -> Preferences を左クリックし, 設定ファイルを開き, 該当箇所の設定を変更します. 以下は一例です.

fontSize: 24,
fontFamily: 'Consolas, "MS Gothic", monospace',
blue: '#05C3DD',
lightBlue: '#A4DBE8',

日本語同士の間隔が空いていて気になる場合は, 以下のようにメイリオを使うといいかもしれません. その場合, MS Gothic を指定している部分は消してください.

fontFamily: 'Consolas, "メイリオ", monospace',

また, Alt+F で #force したい場合, 以下の行の下に

    // Example
    // 'window:devtools': 'cmd+alt+o',

この一行を追加します.

      'window:hamburgerMenu': 'ctrl+alt+f',

ファイルを保存すると設定が反映されます.

4. ウィンドウのサイズを手動で変更する

ターミナルの列数と行数を変更する項目が見当たらないので、ウィンドウをゲーム画面が問題なく表示されるサイズに手動で変更します.

5. 起動

JNetHack.exe のプロパティを開き, 場所の項目の右側にある文字列をコピーします. そして hyper 上で,

cd コピーした文字列
jnethack

の順に入力するとゲームを開始できます. 次回以降は, hyper を起動してこの項目を実行するだけで大丈夫です.

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

2023年06月18日

JNetHack 3.6.7-0.1 win/tty で IBMGraphics を表示可能にしました

23/06/21 追記: JNetHack で IBMGraphics を表示する方法についてという記事を書きました. ゲーム画面の描画に問題がある場合, 参考にしてください.

23/09/30 追記: 日本語版の公式で配布しているバイナリのように、ゲームと別の場所に設定やセーブファイルを保存したい場合、バイナリ内の拡張子の無い sysconf ファイルを削除して下さい。また、公式の日本語版のセーブデータは、ここで配布しているもので読み込むと、問題が起こるかもしれません。設定ファイルは問題ないはずです。


前回公開したファイルの軽微なメッセージのミスを修正し, データベースの日本語訳を追加し, タイル版を追加し, win/tty で IBMGraphics を使用可能にしました. また, コンパイラが gcc だとプログラムが強制終了することがあったので, msvc に変更しました.


ibm_wt_consolas2.png ibm_wt_consolas5.png

ダウンロードリンク: バイナリ ソース

画像は, IBMGraphics を有効にしたものです. 設定は, windows terminal 上のコマンドプロンプトで,

スタートアップ -> 起動サイズ
列: 81
行: 25
コマンドプロンプト -> 外観
配色: Tango Dark
フォント フェイス: Consolas
フォント サイズ: 16
フォントの太さ: 太字
カーソルの形: ビンテージ
のようになっています.

公式で公開されているものとの違いは以下です.

  • データベースを, ssakusha 氏が日本語化されたファイルに差し替えました.
  • 厄介者の召喚が正常に動作するようにしました.
  • .jnethackrc で設定したペットやフルーツの名前が文字化けする現象を修正しました.
  • 全角文字を不正な座標に表示しようとして問題が起こるバグを修正しました.
  • 魔法書の不確定名が一つ未訳だったので修正しました.
  • メッセージのミスを修正しました.
  • .jnethackrc を書き換えることで、windows/tty で IBMGraphics を使用できるようにしました. readme.ibmwin.txt に使用法が書いてあります. タイル版で使用できるかは確認していません.
  • オプションで修飾語を短縮して表示できるように. このオプションがオンであれば、願いの際も短縮した形で入力できます. readme_shortprefix.txt に使い方が書いてあります.
  • sysconf ファイルを同梱. sysconf 内のオプションにより, セーブデータや設定ファイルが全てゲームと同じフォルダに生成されるようになっています. 変更もできます.

設定ファイル(.jnethackrc)に以下を追記すると, 友好的な怪物に接触した際などに(y/n)ではなく(yes/no)を確認するようになるため, 特にローグライクキー入力時に安全になります.

OPTIONS=paranoid:Confirm quit die bones attack pray wand-break Were-change Remove


元のソース及び適用したパッチは以下です.
nethack-367-src.tgz
に,

以上のパッチを当て, データベースを ssakusha 氏が日本語化されたファイルに差し替えました.


使用したいバイナリをダウンロードし, 展開し, フォルダ内の JNetHack.exe を実行すると開始できます. .jnethackrc を編集することで, 設定を変更できます. 詳しいことは, フォルダ内の readme_homemade_msvc.txt, それ以外のテキストファイルなどを参考にして下さい.

バグ等があった場合, このブログかツイッターまでご連絡下さい. 修正できる可能性があります. ただ, ブログはあまり確認しません.

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

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。