本節ではアイテムについて述べる。
アイテムを表現するオブジェクト型について説明する。
アドレス $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.24 職業 で述べる。
永続フラグとは、このアイテムを無制限に「つかう」ことが可能かどうかを示す値を取る属性だ。 例えば「やくそう」の属性値は 0 であるが「けんじゃのいし」では 1 だ。
処分許可フラグとは、このアイテムを「すてる」こと等で処分することが認められているかどうかを示す値を取る属性だ。 値が 1 ならば捨てたり売ったりすることができる。
希少性とは、このアイテムがいわゆるレアアイテムであるかどうかを示す値を取る属性だ。 値が 1 ならばレアであり、店屋でこのアイテムを売ろうとすると、店員から念を押されることになる。
プログラムの中では処分許可フラグのほうを優先して参照する場合が多い。
仲間キャラクターがこのアイテムを装備可能であるとする。 もしこの道具を装備した場合、呪われるか否かを示す値を取る属性だ。
仲間キャラクターがこのアイテムを装備可能であるとする。 このアイテムを装備するのには、装備したい人物の条件に性別が関係するか否かを示す値を取る属性だ。 値 0, 1, 2 が男専用、女専用、無条件をそれぞれ意味する。
整理許可フラグとは、移動モードにおける「どうぐせいり」コマンドの処理に対して、 このアイテムを仲間キャラクターの道具袋からパーティー全体の道具袋に収納するかどうかを示す値を取る属性だ。 値が 1 ならばふくろに移すが、0 ならばそのままキャラクターの道具袋に残す。
戦闘中にこのアイテムを「つかう」ことで起こる戦闘コマンドの ID を値とする属性だ。
コマンドについては 5.6 コマンド で述べる。
特に効果のない道具の属性値は #$6B
であることを憶えておくとよい。
このアイテムが武器であるとき、装備キャラクターが敵を直接攻撃すると画面上に描画される演出を指定するための値を取る属性だ。
具体的に言うと配列 $FEE82C
の添字に相当する。
必需品とは、移動中に「どうぐ」コマンドでアイテムを選択している途中に、 画面上に小さく表示するウィンドウのテキストを「ひつようなときにつかおう」にするかどうかを示す値である。
このアイテムを店屋で買うときに必要なゴールドを値とする属性だ。
一つのフラグが一つの職業に対応し、その職業である仲間キャラクターがこのアイテムを戦闘中に「つかう」ことが可能であるか否かを示す値を取る属性だ。
移動時に「つかう」コマンドを実行することで処理されるサブルーチンを特定する値を取る属性だ。
この属性値はジャンプテーブル $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 性格 で述べる。