=== ユーザー設定ファイル ===

TObandではゲームの様々な点を自分好みに変更することが出来ます。設定ファ
イルを書き変える事で、キー配置を変更すること(押されたキーに対応する内
部的キー配置の割り当てを変更します)、マクロを作成すること(一つのキーに
一連の複数のキーを押す手順を記憶させます)、画面表示を変更すること(モン
スターやアイテムや地形をあらわす文字や色を変更します)、カラーを変更す
ること(一定のカラーを明るくしたり暗くしたり全く別の色に変えたりします)、
オプションを設定すること(その機能をオン・オフします)、及びアイテムの自
動拾いと自動破壊を設定する事ができます。

TObandではユーザーの変更した様々な情報を「ユーザー設定ファイル(user
pref file)」と呼ばれるファイルに保存します。そのファイルはコメントと、
簡単な設定変更のコマンドで構成されています。ユーザー設定ファイルを読み
込む方法は色々とありますし、自動的に読み込まれるものもあります。

TObandにもともと用意された設定ファイルは「lib/pref/」ディレクトリに
入っています。ユーザーの設定を保存したりユーザー自身が書く設定ファイル
は、「ユーザーディレクトリ」に保管されます。これは標準の設定でコンパイ
ルされた場合ならば、 Unix の場合は ~/.angband/TOband/ その他の機種の
場合は、lib/user/ の下になります。また設定変更コマンド (") を使って、
普通はファイルに書いている設定変更のコマンドをゲーム上で直接打ち込むこ
ともできます。ゲームの画面に影響する設定を変更したならば、画面描き直し
コマンド(^R) が必要になるかもしれません。

ゲームをスタートして、以前のキャラクタのセーブ・データを読み込むか新し
いキャラクタを作るかした後に、自動的に設定ファイルがいくつか読み込まれ
ます。まず始めに "pref.prf" ファイルが読み込まれます。このファイルには
全てのシステムで機能するいくつかのユーザー設定コマンドが記入されていま
す。次に文字表示の場合は "font-xxx.prf" が読み込まれます。このファイル
には、モンスター、アイテム、地形の表示方法や色を、それぞれのシステムに
適合させるような変更が記載されています。次に "pref-xxx.prf"ファイルが
読み込まれます。このファイルには、それぞれのシステムで必要なマクロや色
などの設定が記載されています。次に "user-xxx.prf" ファイルが読み込まれ
ます。このファイルには通常ユーザーが設定したことが記載しますが、全ての
ユーザーに共通です。"user-xxx.prf"ファイルは多くの場面においてデフォル
トのユーザー設定ファイルとして使われています。

今までに出てきた "xxx" の部分にはシステムに応じた文字が入ります。具体
的には実行ファイルを作成するのに使われた "main-xxx.c" の "xxx" の部分
の文字が入ります。その後で "<種族名>.prf" "<クラス名>.prf" "<キャラク
ター名>.prf" ファイルが読み込まれます。ただし<種族名>にはプレイヤーの
種族名、<クラス名>にはプレイヤーのクラス名、<キャラクター名>には現在プ
レイしているキャラクタの名前が入ります。あなたがが自分の設定を書き込む
のは、主に"<キャラクター名>.prf"になるでしょう。

最後に自動拾い/破壊設定の専用ファイル "picktype.prf" と "picktype-<キャ
ラクター名>.prf"を読み込みます。このファイルの中ではマクロ等の設定を書
き込める事に加えて、自動拾いのアイテム名の登録ができます。このファイル
はあなた自身がエディターを使って書かなければなりません。

設定を変更したい場合には、設定変更コマンドをユーザー設定ファイルにエディ
ターなどを使って直接記述するのも良いのですが、ゲーム中で「マクロの設定」
(@)、「画面表示の設定」(%)、「カラーの設定」(&)を使えばより感覚的に設
定を変更することが出来ます。またこれらコマンド中では、現存するユーザー
設定ファイルを読み込んだり、新しいユーザー設定ファイルを作成したり、現
存するユーザー設定ファイルに情報を上書きしたりもできます。

TObandでは現存するユーザー設定ファイルに情報を上書きするときに古い設定
行は削除してくれます。つまり追加書き込みを繰り返してファイルがどんどん
巨大に膨れ上る心配はありません。ぞんぶんに書き込みましょう。


***** <Commands>
=== ユーザー設定ファイルのコマンド ===

オプションの設定 (=)
     オプション設定画面を表示して、そこでTObandの動作を変更すること
     ができます。「詐欺オプション」の扱いには注意して下さい。一度でも
     このオプションを有効にすると、そのことがセーブファイルに記録され
     てしまって、ハイスコアリストに載ることが不可能になってしまいま
     す。通常のオプションはユーザー設定ファイルの中で "X"と"Y"コマンド
     で設定することもできます。また、オプションによっては画面描き直し
     コマンド (^R) を入力しないと有効にならないものもあります。

マクロの設定 (@)
     マクロの設定をすることができます。ユーザー設定ファイルからマクロ
     を読み込んだり、ユーザー設定ファイルにマクロをセーブしたり、様々
     な種類のマクロを定義したり、キー配置を変更したりできます。

画面表示の設定 (%)
     画面表示に関する設定をすることができます。画面表示の設定をユー
     ザー設定ファイルから読み込んだり、ユーザー設定ファイルにセーブし
     たり、モンスターやアイテムや地形の色や文字を変更したりすることが
     できます。設定を変更したら、画面描き直しコマンド (^R) を使って画
     面を描き直して下さい。

カラーの設定 (&)
     カラーの設定をすることができます。このコマンドはシステムによって
     は機能しません。設定を変更したら、画面描き直しコマンド (^R) を使っ
     て画面を描き直して下さい。

自動拾い/破壊設定ファイルの読み込み ($)
     このコマンドを実行すると、"picktype.prf" と "picktype-<キャラクター
     名>.prf"を読み込みます。ゲーム中にこれらのファイルをエディタで書
     き変えたときに便利でしょう。


***** <Macros>
=== ユーザー設定ファイル(マクロ) ===

「マクロの設定」コマンドではマクロを設定したり無効にしたりできます。マ
クロとは、ファンクションキーや未使用のキー入力などに、一連のキー操作を
定義することを言います。マクロは、いちいち何度も同じ様な一連のキー入力
をする煩雑さを解消するためにあるのです。

マクロはどのような時にも適用されます(マクロ設定コマンドでトリガーキー
を選んでいる最中だけが例外です)。したがって、例えばエスケープキーや'y' 
キーをマクロのトリガーとして使ってしまうと、後で元のエスケープキー等を
入力できなくなり、非常に困った事になるでしょう。

マクロは連続したいくつかのキー入力に対応させられますが、特殊なキー(リ
ターンキーや CTRLキー)を使用するときには特別な書式で書かれなければなり
ません。"^X" と書けばCTRL-X と解釈され(他の CTRL キーも同じです)、
"\NNN" と書けば十進数の NNN と解釈され、"\xHH"と書けば16進数の HH と解
釈されます。また、"\e" は ESC、"\n" は次の行(ラインフィード)、"\r" は
リターンキー、"\s" はスペースキー、"\\" はバックスラッシュ、"\^" は 
"^" という文字を表します。

マクロのトリガーキーとして特殊なキーを使うときも同様に特別な書式で表現
されます。CTRL-X なら ^X 、F1キーなら \[F1]、コントロールキー + F2キー
なら \[control-F2]等と書かれます。実際にどう書かれるかはマクロを設定す
るコマンド '@'の中で表示されるので、いろいろと試してみてください。

マクロ行動の解釈中においては、他のマクロのトリガーをチェックしていませ
んので、マクロ行動の作成において無限ループを作ってしまうことを心配する
必要はありません。また、マクロはどんなに長くても結構ですが、システムの
内部的な入力機能によって制限されます。通常は 1024 文字くらいが限度でしょ
う。

"\" コマンド(マクロ行動に記述するときには "\\" と入力します)はマクロに
おいて大変便利なコマンドです。どのマクロやキー配置においても、"\" コマ
ンドに続くキーは全てTObandの「内部的キー配置」のキーと解釈されます。
「内部的キー配置」のリストは "jcommand.txt" を見て下さい。例えば、マク
ロ行動に "\\.6"と記述し、トリガーキーを"SHIFT-(テンキー)6" にしたとしま
す。つまり SHIFT-(テンキー)6 に "\" + "." + "6" が定義されたとすると、
どのキー配置を使用しているときでも、「東に走る」と解釈されます。キー配
置や定義に依存しないという点でマクロはなるべく "\" コマンドを使って内部
的キー配置で記述したほうがよいでしょう。

マクロの定義はユーザー設定ファイル中では２行に渡って記述されています。
１行目は "A:<文字列>" で、これはエンコードされたマクロ行動を表します。
２行目は "P:<文字列>" で、これはエンコードされたトリガーキーを表します。


***** <Keymaps>
=== ユーザー設定ファイル(キー配置) ===

「マクロの設定」コマンド中では「キー配置」を変更することもできます。
「キー配置」とはそれぞれのコマンドを実行する文字として何かのキーを割り
当てることです。マクロがあらゆる状況で適用されるのと違い、キー配置はコ
マンドの入力をするときにのみ関係します。つまりあなたが 'n'キーに'f'コ
マンドを定義してしまったとしても、アイテムの選択時や、文字列の入力時に
は 'n'キーはそのまま'n'と解釈されます。

オリジナルキー配置とローグ風キー配置は、実は内部的なキー配置とは異なり、
設定ファイルによって、内部的なキー配置に割り当てられているだけです。し
たがって、ユーザーがこの割り当てに手を加えることもできます。プレイヤー
が「キー配置」の変更を行う場合には、実行するべきコマンドはオリジナルキー
配置やローグ風キー配置のコマンド文字ではなく、必ず内部的キー配置の文字
で指定しなければなりません。

オリジナルキー配置は内部的キー配置に非常によく似たキー配置です。ただ追
加的に、全ての数字が ";" + (方向) に、"5" が "," に、コントロールキー
が様々なことに割り当てられています。内部的キー配置自体については 
"jcommand.txt" を参照して下さい。キー配置の変更には他に、特定のコマン
ドに "\x00" を割り当てて、そのコマンドを使用不能にすることもできます。

キー配置はユーザー設定ファイル中ではマクロと同様に 2 行に渡って記述さ
れています。1 行目は "A:<文字列>" で、これは内部的キー配置の文字で書か
れたコマンドです。２行目は "C:<0か1の数字>:<文字列>" で、これはエンコー
ドされたトリガーキー(実際にあなたが押すキー)を表します。ローグ風配置の
ときは数字に1を、オリジナル配置のときは数字に0を指定します。


***** <Visuals>
=== ユーザー設定ファイル(画面表示) ===

「画面表示の設定」コマンドでは様々な画面表示を変更できますが、現在の
所、様々なモンスターやアイテムや地形をあらわす文字と色を変更できます。

色や文字を変更するときの具体的なキー操作ですが、通常は大文字を押すと値
を一つ減らし、小文字を押すと値を一つ増やします。"n" か "N" を押して変
更しようとするキャラクターを選択して下さい。"a" か "A" を押すとそのキャ
ラクターの色が変更され、"c" か "C" を押すとそのキャラクターをあらわす
文字が変更されます。また、"^N"や"^A"や"^C"を押すと直接数値を入力して変
更することができます。

<<注意>>この機能を使うとゲーム中の全てのモンスターの名前を見ることがで
きます。そのような情報を望まないのなら、この機能は使わないで下さい。

画面表示の設定はユーザー設定ファイル中では "R:<N>:<A>/<C>"
"K:<N>:<A>/<C>" "F:<N>:<A>/<C>" という形式で記述されています。


***** <Colors>
=== ユーザー設定ファイル(カラー) ===

「カラーの設定」コマンドでは様々な画面表示のカラーの値を変更することが
出来ます。このコマンドはシステムによっては機能しないこともあります。最
もよくこの機能を発揮するシステムでは、TObandで使用される 16 色のカラー
をそれぞれ RGB の値で変更することができ、現在使用されていない新しいカ
ラーを設定することもできるでしょう。

カラーの設定はユーザー設定ファイル中では "V:<N>:<V>:<R>:<G>:<B>" とい
う形式で記述されています。


***** <Options>
=== ユーザー設定ファイル(オプション) ===

「オプションの設定」コマンドではオプションの効果をオン・オフする事が出
来ます。このオプションのオン・オフをユーザー設定ファイル中で行うことも
できます。そのコマンドはそれぞれ "X:<option>" "Y:<option>" です。

この方法はあなたがマクロ中で使いたいと思う事もあるでしょう。例えば、魔
法書 b の３番目の魔法を使う操作をF1キーにマクロ登録して、何度も何度も
休憩しながら使いたいとき、単純に 'R\r'を挿入するだけでは、次の魔法を使
うコマンド文字を押したときに休憩を中断してしまうので、「ユーザー設定を
1行実行する」コマンド(")を使って、次のように書くのが便利です。

A:"X:avoid_abort\rR\rmbc"Y:avoid_abort\r
P:\[F1]

avoid_abort オプションについては、効率化オプション [b] を参照してくだ
さい。
***** [b] joption.txt#Efficiency

***** <Autopick>
==== アイテム自動拾い/破壊設定ファイル ====

ユーザーディレクトリに"picktype.prf"又は "picktype-<名前>.prf" という
ファイルを作って各行にアイテムの名前を書くと、TObandにそのアイテムを
自動的に拾ったり破壊するように指示する事ができます。この設定ファイルは
ゲームを始めるときに読み込まれますし、ゲーム中に設定ファイルを書き変え
たときも、'$'コマンドを使うと読み込まれます。

例えば次のように書きます。
---------
賞金首のアイテム
!の死体
!の骨
未判明の薬
~未鑑定の光源
~未鑑定の武器
~未鑑定の防具
*破壊*
抹殺
体力回復
スピードの
致命傷の治癒の薬
---------

もっと実用的な設定例は (autopick.txt [c]) を参照してください。条件分岐を用
いてどのクラスでも快適に自動拾い/破壊を使えます。

***** [c] ../autopick.txt

--- 自動拾い/破壊の基本書式 ---

基本的に、名前の一部にファイルに書いた文字列が含まれていれば、そのアイ
テムを自動的に拾います。ただし頭に…、

・「!」がついている場合はそのアイテムを自動的に破壊します。
・「~」がついている場合は拾いも破壊もせずに床に残します。
・「;」がついている場合は拾う前に確認メッセージが出ます。

さらに、これらに加えて、「(」を付け加える事でマップコマンド中でのその
アイテムの表示を抑止する事ができます。(以下のTipsを参照してください。)
picktype.prf の先頭から順番に優先的に評価するので、不要なものの破壊の
設定の下にその他のアイテムを拾う設定を書いたり、高級なアイテムを拾う設
定の下にその他の低質なアイテムを破壊する設定を書くのが便利な方法です。

自動拾いや破壊や放置として設定されたアイテムはダンジョンの全体図'M'コ
マンドの中でその位置と名前を表示する事ができます。設定コマンドの説明
(jcommdesc.txt#Looking [d])のダンジョンの全体図を表示を参照してくださ
い。

***** [d] jcommdesc.txt#Looking

--- 特別なキーワード ---

各行の以下のようなキーワードで始まるものは特別扱いになります。

・すべての〜        : すべてのアイテムが対象になります。
・収集中の〜        : 既に同じ種類の物を持っているアイテムが対象になります。
・未判明の〜        : 効果の分からないアイテムが対象になります。
・未鑑定の〜        : 鑑定されていないアイテムが対象になります。
・鑑定済みの〜      : 鑑定されているアイテムが対象になります。
・*鑑定*済みの〜    : 完全に鑑定されているアイテムが対象になります。
・ダイス目の違う〜  : 殺戮の武器等でダイスの目が通常と異なるアイテムが対象になります。
・ダイス目n以上の〜 : ダイス数×面数が n 以上のアイテムが対象になります。
・修正値n以上の〜   : 能力修正値が(+n)以上のアイテムが対象になります。
                      能力修正が無い場合は他の数値が+n以上なら対象になります。
・無価値の〜        : 価値のない(売却できない)アイテムが対象になります。
・アーティファクト〜: 判明しているアーティファクトが対象になります。
・エゴ〜            : 判明しているエゴアイテムが対象になります。
・無銘の〜          : 非エゴ, 非アーティファクトのアイテムが対象になります。
・賞金首の〜        : 賞金首の死体または骨が対象になります。
・ユニーク・モンスターの〜： ユニーク・モンスターの死体、骨、彫像が対象になります。
・金属製の〜        : 金属製のアイテムが対象になります。(弾丸作成で使用)
・読めない〜        : 専門としない魔法領域の魔法書が対象になります。
・n冊目の           : nが1から3のとき、n冊目の魔法書が対象になります。

〜の部分では、アイテムの種類を表す以下のようなキーワードが特別扱いになります

・アイテム          : すべてのアイテムが対象になります。
・武器              : 武器が対象になります。
・防具              : 防具が対象になります。
・矢                : 矢、クロスボウの矢が対象になります。
・弾丸              : 銃弾が対象になります。
・光源              : たいまつやランタン等が対象になります。
・魔法アイテム      : 巻物・杖・魔法棒・ロッドが対象になります。
・がらくた          : 折れた棒や像等の役に立たないものが対象になります。
・魔法書            : 魔法書が対象になります。
・鈍器              : 武器のうち鈍器であるものが対象になります。(聖職者用)

武器に対してはスキル/必殺技上の分類を対象とするキーワード: 小剣、カタナ、剣、
大剣、斧、槍、乗馬槍、爪、鎌、鞭、ハンマー、杖、扇、ヌンチャク、弓、銃、
掘削道具 が使用できます。

他に部位別の装備品を対象とするキーワード: 盾、射撃武器、指輪、アミュレット、
鎧、クローク、兜、籠手、靴 が使用できます。

この後に区切り記号のコロン「:」を挟んでさらに文字列が続く場合は、その
文字列が名前の一部に含まれているアイテムが対象になります。ここで、アイ
テムの種類を表すキーワード(アイテム、武器、防具等) を使用しない場合は
区切り記号は省略できます。また、文字列の頭に記号「^」を入れるとそれは
アイテム名の先頭部分に一致します。具体的には以下のように解釈されます。

光源:石          // 名前に"石"を含む光源を拾う。「光源石」 は使用不可。
籠手:麻痺知らずの // 麻痺知らずのガントレットを拾うが、麻痺知らずの指輪は
                     拾わない。
!ローブ          // 名前に"ローブ"を含むもの(ローブ、グローブ等)を破壊。
!^ローブ         // グローブは破壊しない。
!防具:^耐        // 耐火、耐冷、耐電、耐酸の防具を破壊。全耐性は破壊しない。

また、行の最後に # で始まる文字列を書くと、鑑定したりアイテムの
上に立った瞬間に自動的にその文字列がアイテムに刻まれます。


--- 厳密な書式 ---

各行の厳密な書式は以下のような順番です。未鑑定の や ダイス目の違う 等
のキーワードは一行に並べて書く事で両方の制限を適用させる事が出来ます。
現在のバージョンではキーワードの順番も自由です。

   [! ~ ; (]
   [[すべての] [収集中の]
    [未判明の] [未鑑定の] [鑑定済みの] [*鑑定*済みの]
    [ダイス目の違う] [ダイス目n以上の] [修正値n以上の]
    [無価値の] [アーティファクト] [エゴ] [無銘の]
    [賞金首の] [ユニーク・モンスターの] [金属製の]
    [読めない] [n冊目の]
    [アイテム|アーティファクト|武器|防具|矢|弾丸|光源|魔法アイテム|
     がらくた|魔法書|鈍器|小剣|カタナ|剣|大剣|斧|槍|乗馬槍|爪|鎌|鞭|
     ハンマー|杖|扇|ヌンチャク|弓|銃|掘削道具|盾|射撃武器|指輪|
     アミュレット|鎧|クローク|兜|籠手|靴] :]
   [[^]その他の文字列] [#自動刻み文字列]


***** <Condition>
=== 条件付きの設定ファイル ===

全てのユーザー設定ファイルは、種族やクラス、種族レベル等に条件を付け
て設定することが出来ます。特に自動拾いやマクロの設定に利用すると便利
です。


---  条件分岐の書式  ---

?:引数

   引数が"0"なら以降の自動拾い／破壊の登録をスキップする。
   引数が"1"なら以降の登録を行う。 引数が"0"以外は全て"1"と見なす。

 (注意!)条件分岐を入れ子にすることは出来ません。


---  使用可能な演算子  ---

特別な文字列といくつかの引数のリストを'['と']'で囲むことと演算子として
の働きをして、結果が真 "1" であるか、 偽 "0" であるかを返します。

[EQU 引数１ 引数２ ...]
   全ての引数が等しいとき"1"、等しくないとき"0"を返す。

[IOR 引数１ 引数２ ...]
[AND 引数１ 引数２ ...]
   IORは引数の論理和、ANDは引数の論理積をとって真なら"1"、偽なら"0"を
   返す。

[NOT 引数]
   引数が"1"なら"0"、"0"なら"1"を返す。

[LEQ 引数１ 引数２ ...]
[GEQ 引数１ 引数２ ...]

   LEQは引数の大きさを「文字列として比較」して引数１≦引数２≦...のと
   き"1"を返す。GEQは引数１≧引数２≧...のとき"1"を返す。


---  変数説明  ---

条件判定分の中で、'$'で始まるいくつかの文字列は自動的にキャラクターの
状態を表わす文字列に置き変えられます。

$ELEM
   エレメントを英語名で返す。
   Fire, Aqua, Earth, Wind
   のどれか

$RACE
   種族を英語名で返す。
   Human, Hawkman, Lizardman, Fairy, Gremlin, Skeleton,
   Ghost, Pumpkin-Head, Goblin, Gorgon, Mermaid
   のどれか

$CLASS
   クラスを英語名で返す。
   Soldier, Knight, Berserker, Terror-Knight, BeastTamer,
   Sword-Master, Dragoon, Ninja, Wizard, Warlock, Exorcist,
   Amazoness, Valkyrie, Archer, DragonTamer, Witch, Sirene,
   Cleric, Priest, Lich, Angel-Knight, High-Witch, Gunner,
   Temple-Knight, White-Knight
   のどれか

$PLAYER
   プレイヤーの名前を返す。

$SEX
   プレイヤーの性別を返す。
   Female, Male

$LEVEL
   プレイヤーの種族レベルを２桁の文字列で返す。
   "01","09","10","50" 等

$CLEVEL
   プレイヤーの現在のクラスのレベルを２桁の文字列で返す。
   "01","09","10","50" 等

$CLEVEL(ClassStr)
   指定したクラスのレベルを２桁の文字列で返す。ClassStrには
   $CLASSで使えるクラス名を入れる。
   "01","09","10","50" 等
   無効なクラス名の場合は"00"を返す。


---  ファイルの挿入の書式  ---

%:ファイル名
   lib\user\ファイル名 か ~/.angband/TOband/ファイル名 を自
   動拾いの登録ファイルとして読み込みます。

(*警告!!*) 自分自身(例えばpicktype.prf)を読み込んでしまうと永久ループ
           になってクラッシュするので絶対やらないように。


--- 自動拾い設定に活用した例 ---

?:[EQU $CLASS Archer]
の骨

?:[EQU $CLASS Gunner]
~*鑑定*済みの弾丸#%all
金属製のアイテム
?:1

?:[GEQ $LEVEL 20]
(!無銘の武器:(+0,+0)
(!無銘の防具:,+0]
?:1


--
Original   : Alexander Cutler and Andy Astrand
Updated    : (2.7.6) by Russ Allbery (rra@cs.stanford.edu)
Updated    : (2.7.9) by Ben Harrison (benh@phial.com)
Updated    : Zangband 2.2.0 through 2.2.6c by Robert Ruehlmann
Updated    : Zangband DevTeam
Updated    : Hengband 1.3.0
Updated    : TOband 0.0.3



