5.23. アイテム

5.23.1. 構造に関する構成要素
5.23.1.1. 構造体 $C40043: アイテム
5.23.2. 振る舞いに関する構成要素

本節ではアイテムについて述べる。

5.23.1. 構造に関する構成要素

アイテムを表現するオブジェクト型について説明する。

5.23.1.1. 構造体 $C40043: アイテム

アドレス $C40043 に全アイテムのデータが定義されている。 オブジェクトのサイズは #$13 バイトであり、これが 229 個配列されている。 次の表はオブジェクトのメモリレイアウトだ。

表 5.47 構造体 $C40043

オフセット 属性
#$00 #$00FFFF 名前
#$02 #$0000FF 分類
#$03 #$0000FF 作用属性
#$04 #$0000FF 属性値変化量
#$06 #$000001 装備フラグ 0: ゆうしゃ
#$06 #$000002 装備フラグ 1: せんし
#$06 #$000004 装備フラグ 2: まほうつかい
#$06 #$000008 装備フラグ 3: そうりょ
#$06 #$000010 装備フラグ 4: ぶとうか
#$06 #$000020 装備フラグ 5: けんじゃ
#$06 #$000040 装備フラグ 6: しょうにん
#$06 #$000080 装備フラグ 7: あそびにん
#$07 #$000001 装備フラグ 8: とうぞく
#$07 #$000002 永続フラグ
#$07 #$000004 処分許可フラグ
#$07 #$000008 希少性
#$07 #$000010 呪い
#$07 #$000060 性別
#$07 #$000080 整理許可フラグ
#$08 #$0001FF コマンド
#$09 #$00007E 演出
#$09 #$000080 必需品
#$0A #$FFFFFF 価格
#$0D #$000001 使用フラグ 0: ゆうしゃ
#$0D #$000002 使用フラグ 1: せんし
#$0D #$000004 使用フラグ 2: まほうつかい
#$0D #$000008 使用フラグ 3: そうりょ
#$0D #$000010 使用フラグ 4: ぶとうか
#$0D #$000020 使用フラグ 5: けんじゃ
#$0D #$000040 使用フラグ 6: しょうにん
#$0D #$000080 使用フラグ 7: あそびにん
#$0E #$000001 使用フラグ 8: とうぞく
#$0F #$0000FF 移動中つかう処理
#$10 #$0000FF 鑑定処理
#$11 #$000001 (不明)
#$11 #$0000FE アイコン
#$12 #$0000FF 性格

各属性の意味を次に述べる。

名前

アイテムの名前を表す文字列の ID を値とする属性だ。 文字列については 5.2 文字列 で述べる。

分類

アイテムの分類を表す値をとる属性だ。値と意味との対応は次のようになっている。

表 5.48 アイテムの分類

意味
0 ぶき
1 よろい
2 たて
3 かぶと
4 そうしょくひん
5 どうぐ

作用属性

仲間キャラクターがこのアイテムを装備可能であるとする。 そのときに、そのキャラクターのどの属性に作用するのかを示す値を取る属性だ。 値と意味との対応は次のようになっている。

表 5.49 作用属性

対象属性
0 (なし)
1 こうげきりょく
2 すばやさ
3 しゅびりょく
4 かしこさ
5 うんのよさ
6 たいりょく

属性値変化量

仲間キャラクターがこのアイテムを装備可能であるとする。 そのときに、そのキャラクターの作用属性値(上述)がどれだけ上昇するのかを示す値を取る属性だ。

装備フラグ k (k=0..8)

一つのフラグが一つの職業に対応し、その職業である仲間キャラクターがこのアイテムを装備可能であるか否かを示す値を取る属性だ。

職業については 5.24 職業 で述べる。

永続フラグ

永続フラグとは、このアイテムを無制限に「つかう」ことが可能かどうかを示す値を取る属性だ。 例えば「やくそう」の属性値は 0 であるが「けんじゃのいし」では 1 だ。

処分許可フラグ

処分許可フラグとは、このアイテムを「すてる」こと等で処分することが認められているかどうかを示す値を取る属性だ。 値が 1 ならば捨てたり売ったりすることができる。

希少性

希少性とは、このアイテムがいわゆるレアアイテムであるかどうかを示す値を取る属性だ。 値が 1 ならばレアであり、店屋でこのアイテムを売ろうとすると、店員から念を押されることになる。

プログラムの中では処分許可フラグのほうを優先して参照する場合が多い。

呪い

仲間キャラクターがこのアイテムを装備可能であるとする。 もしこの道具を装備した場合、呪われるか否かを示す値を取る属性だ。

性別

仲間キャラクターがこのアイテムを装備可能であるとする。 このアイテムを装備するのには、装備したい人物の条件に性別が関係するか否かを示す値を取る属性だ。 値 0, 1, 2 が男専用、女専用、無条件をそれぞれ意味する。

整理許可フラグ

整理許可フラグとは、移動モードにおける「どうぐせいり」コマンドの処理に対して、 このアイテムを仲間キャラクターの道具袋からパーティー全体の道具袋に収納するかどうかを示す値を取る属性だ。 値が 1 ならばふくろに移すが、0 ならばそのままキャラクターの道具袋に残す。

コマンド

戦闘中にこのアイテムを「つかう」ことで起こる戦闘コマンドの ID を値とする属性だ。 コマンドについては 5.6 コマンド で述べる。 特に効果のない道具の属性値は #$6B であることを憶えておくとよい。

演出

このアイテムが武器であるとき、装備キャラクターが敵を直接攻撃すると画面上に描画される演出を指定するための値を取る属性だ。 具体的に言うと配列 $FEE82C の添字に相当する。

必需品

必需品とは、移動中に「どうぐ」コマンドでアイテムを選択している途中に、 画面上に小さく表示するウィンドウのテキストを「ひつようなときにつかおう」にするかどうかを示す値である。

価格

このアイテムを店屋で買うときに必要なゴールドを値とする属性だ。

使用フラグ k (k=0..8)

一つのフラグが一つの職業に対応し、その職業である仲間キャラクターがこのアイテムを戦闘中に「つかう」ことが可能であるか否かを示す値を取る属性だ。

移動中つかう処理

移動時に「つかう」コマンドを実行することで処理されるサブルーチンを特定する値を取る属性だ。 この属性値はジャンプテーブル $C30B31 の行番号だ。

例えば「すごろくけん」の属性値は #$0058 であり、 ジャンプテーブルをダンプして調べると $$C91D16 がハンドラーであることがすぐにわかる。 そのサブルーチンの内容とは次のようなものだ。

C9/1D16:    22D4A8C1    JSR $C1A8D4    ; text #$0D9A: [C0]は [B5]を[AD]にぎりしめた![AF]
C9/1D1A:    9A0D
C9/1D1C:    22D4A8C1    JSR $C1A8D4    ; text #$0D9C: なんだか 胸が わくわくする。
C9/1D20:    9C0D
C9/1D22:    22F740C3    JSR $C340F7
C9/1D26:    18          CLC
C9/1D27:    6B          RTL
鑑定処理

パーティーに職業が商人である仲間キャラクターがいる場合、「みる」「みせる」コマンドの処理をするサブルーチンを特定する値を取る属性だ。 この属性値はジャンプテーブル $C30C66 の行番号だ。

(不明)

ブーリアン型属性だが、プログラムからの参照が見当たらない。

アイコン

移動中に「しらべる」コマンドでこのアイテムを発見したときなどに画面上にポップアップ描画するアイコンスプライトを特定する値を取る属性だ。 具体的には $C8F571 オブジェクトの ID を属性値とする。

性格

このアイテムが装備可能品であれば、仲間キャラクターがこれを「そうび」したときに、 このアイテムが本であれば、仲間キャラクターがこれを「つかう」ときに変化する性格の ID を値とする属性だ。

ただし「エッチなほん」に関しては、 サブルーチン $C45319 でキャラクターの性別による性格振り分け処理を行う。

性格については 5.25 性格 で述べる。

5.23.2. 振る舞いに関する構成要素

「つかう」および「みる」各コマンドを説明する。 「つかう」については戦闘モードと移動モードの振る舞いの違いについても述べたい。