4.24. 移動中の道具使用コマンド処理

4.24.1. コマンドハンドラーテーブル
4.24.2. 解析
4.24.2.1. やくそう
4.24.2.2. どくけしそう
4.24.2.3. せかいじゅのは
4.24.2.4. せかいじゅのしずく
4.24.2.5. まほうのせいすい
4.24.2.6. ちからのたね
4.24.2.7. すばやさのたね
4.24.2.8. かしこさのたね
4.24.2.9. まもりのたね
4.24.2.10. いのちのきのみ
4.24.2.11. ふしぎなきのみ
4.24.2.12. いのりのゆびわ
4.24.2.13. せいすい
4.24.2.14. むらのみんげいひん
4.24.2.15. ゆめみのしずく
4.24.2.16. キメラのつばさ
4.24.2.17. かぜのぼうし
4.24.2.18. おうごんのつるはし
4.24.2.19. ラーのカガミ
4.24.2.20. すなのうつわ
4.24.2.21. まほうのじゅうたん
4.24.2.22. マーメイドハープ
4.24.2.23. せかいちず
4.24.2.24. ふしぎなちず
4.24.2.25. ふるびたパイプ
4.24.2.26. へいしのふく4つ
4.24.2.27. ろうごくのカギ
4.24.2.28. しんじつのオーブ
4.24.2.29. りせいのタネその他
4.24.2.30. デセオのパス
4.24.2.31. てんまのたづな
4.24.2.32. アモールのみず
4.24.2.33. うつくしそう

本節では移動中に道具を使うときに発生する処理を見ていく。 プレイヤーがコマンドメニューから「どうぐ」を選択し、 それからいずれかのパーティーメンバーの持ち物を選択すると、 プログラムは選択された道具に対応するサブルーチンを呼び出す。 そのようなサブルーチンについて簡単に述べる。

4.24.1. コマンドハンドラーテーブル

道具インデックス、使用直後表示メッセージインデックス、 そして処理コードの開始アドレスの三つ組を要素とする配列がアドレス $C3C8C0 に次に示すように定義されている。 サブルーチン $C3C86D が対象の道具インデックスをこの配列中から検索し、 もし見つかれば後述する道具固有の処理を実行するようになっている。 そうでなければ、単純な汎用処理を実行する。

C3/C8C0:    D100D5165DCA
C3/C8C6:    D200D516FDCA
C3/C8CC:    D500D5167DCB
...
C3/C9FE:    E100D51661D3

このデータコードを見易いように表にまとめておく:

表 4.113 $C3C8C0 コマンドハンドラーテーブル

文字列 ID どうぐ メッセージ ID 処理アドレス
#$00D1 やくそう #$16D5 $CA5D
#$00D2 どくけしそう #$16D5 $CAFD
#$00D5 せかいじゅのは #$16D5 $CB7D
#$00D6 せかいじゅのしずく #$16D5 $CBFC
#$00D8 まほうのせいすい #$16D5 $CCB8
#$00DB ちからのたね #$16D5 $CD3D
#$00DC すばやさのたね #$16D5 $CD9B
#$00DD かしこさのたね #$16D5 $CDF9
#$00DE まもりのたね #$16D5 $CE57
#$00DF いのちのきのみ #$16D5 $CEB5
#$00E0 ふしぎなきのみ #$16D5 $CF13
#$00CA いのりのゆびわ #$16D5 $CF71
#$00D3 せいすい #$16D5 $D02B
#$00E3 むらのみんげいひん #$16D5 $D067
#$00E7 ゆめみのしずく #$16D5 $D082
#$00D4 キメラのつばさ #$16D5 $D098
#$00AC かぜのぼうし #$16D5 $D162
#$00EF おうごんのつるはし #$16D5 $D169
#$00EA ラーのカガミ #$16D5 $D17F
#$00F4 すなのうつわ #$16D5 $D195
#$00EE まほうのじゅうたん #$16D5 $D1AB
#$00F1 マーメイドハープ #$16D5 $D1BC
#$00E5 せかいちず #$16D5 $D1D1
#$00F3 ふしぎなちず #$16D5 $D1E6
#$00CD ふるびたパイプ #$16D5 $D1FB
#$00FA へいしのふく4つ #$16D5 $D211
#$00F9 ろうごくのカギ #$16D5 $D227
#$00CF しんじつのオーブ #$16D5 $D23D
#$00EC りせいのタネ #$16D6 $D253
#$00E6 つうこうしょう #$1743 $D253
#$00CC くじけぬこころ #$1745 $D253
#$00E8 じょうせんけん #$1747 $D253
#$00EB おうのしょじょう #$1749 $D253
#$00F0 ゆうきのかけら #$174F $D253
#$00F5 ぎしきのそなえもの #$1751 $D253
#$00F7 エンデのどうぐ #$1753 $D253
#$00CE デセオのパス #$1755 $D274
#$00F6 てんまのたづな #$16D5 $D2B0
#$003F さびたつるぎ #$175D $D253
#$0040 ラミアスのつるぎ #$175E $D253
#$0041 ラミアスのつるぎ #$175E $D253
#$0042 ラミアスのつるぎ #$175E $D253
#$009B スフィーダのたて #$1760 $D253
#$0066 オルゴーのよろい #$1762 $D253
#$008A オルゴーのよろい #$1762 $D253
#$00AD セバスのかぶと #$1763 $D253
#$00BA セバスのかぶと #$1763 $D253
#$00E2 アモールのみず #$16D5 $D2C1
#$00E9 カガミのカギ #$170E $D253
#$00FC まほうのカギ #$170E $D253
#$00FB とうぞくのカギ #$170E $D253
#$00F2 すいもんのカギ #$170E $D253
#$00FD さいごのカギ #$170E $D253
#$00E1 うつくしそう #$16D5 $D361

メッセージインデックスと実際のテキストとの対応を次に示す:

表 4.114 メッセージ一覧

ID メッセージ
#$16D5 しかし 何も おこらなかった。
#$16D6 しかし ここでは 何もおこらなかった。
#$170E カギが あえば[AD]もっているだけで 扉はひらくぞ!
#$1743 [B5]は[AD]くしゃくしゃに なってしまった…。
#$1745 すこし ゆうきが わいてきた!
#$1747 乗船券は くしゃくしゃに[AD]なってしまった。
#$1749 文字は きたないが こころの[AD]こもった 文章で [C0]たちを[AD]よろしくと 書いてあった。
#$174F 小さいのに ズッシリと 重さが[AD]つたわってくる。
#$1751 [C0]は きもちわるく[AD]なってしまった…。
#$1753 どうぐは すぐにも 使えるよう[AD]ひとつ ひとつ みがきこまれている…。
#$1755 よく見ると ビキニを着た[AD]美しい女性の 絵が かいてある…。
#$175D さびたつるぎには なにやら[AD]もようが きざまれている。[AF][AD]しかし さびていて[AD]よく わからない……。
#$175E ラミアスのつるぎには なにやら[AD]いなずまのような しるしが[AD]きざまれている。
#$1760 スフィーダのたてには なにやら[AD]十字架のような しるしが[AD]きざまれている。
#$1762 オルゴーのよろいには なにやら[AD]ハートのような しるしが[AD]きざまれている。
#$1763 セバスのかぶとには なにやら[AD]太陽のような しるしが[AD]きざまれている。

4.24.2. 解析

まずは各処理に共通して見受けられる仕様傾向を列挙しておこう:

  • 前述のメッセージに加えて、対象の道具に固有のメッセージを道具データから取得するときには、 サブルーチン $C3CA04 を実行する。 道具データのメッセージ各種属性については 4.13.1 構造体 $C4003D: アイテム で述べる。
  • コマンド入力のすべてが終了した直後にメッセージを表示するには、サブルーチン $C3B8C5 を実行する。 これは移動時の呪文コマンドハンドラーも利用するサブルーチンだが、 呪文とは異なり、道具に対しては呪文効果音が出ない。
  • 原則的にコマンド処理が成功するときにしか道具を消費することはない。 道具の消費処理については、サブルーチン $C3EE2E または $C3EE03 を呼び出すことで実現する。
  • 原則的に、対象者が死んでいるとメッセージ #$1770 「しかし [C1]は 死んでいる」を表示して処理を終える。 例外はせかいじゅのはなど。
  • 回復系の処理なのに、対象者の回復する必要がない場合である等、 道具の効果が全くない場合にはサブルーチン $C3CA3B を実行する。 すなわちメッセージ #$16D5 「しかし 何も おこらなかった」を表示する。
  • コマンドが対象パーティーメンバーを必要とするときには「だれに」ウィンドウで入力する。 これはウィンドウ表示サブルーチン $C37236 を実行するときに #$002A を指定する。
  • 幅のある乱数処理には、呪文コマンド同様にサブルーチン $C3B8FC を利用する (詳細は 4.23.2.1 ホイミ・べホイミ・ベホマ の説明を参照)。
  • パーティーメンバーのパラメーターを上げる道具については、 もし既に彼のパラメーターが上限値のときには、結果メッセージを表示しないようになっている。 このような場合においても、道具を消費する。
  • 道具の用途が高度に特殊な場合には、別の場所で実装されたサブルーチンに処理を委譲する。 乗り物やイベントアイテムにこの傾向が見られる。
  • HP を回復するコマンドについては、効果音 #$00CD を鳴らす。 該当するのはやくそう、せかいじゅのしずく、アモールのみずだ。
  • 対象者のパラメーターを上昇させるコマンドについては、次の規則が働く:

    • 道具を消費してから上昇値を抽選する。
    • 道具使用前後で対象者のパラメーターの値が変わらないときには、 何ポイント上がったかを伝えるメッセージを表示しない。

以下、各道具の処理の特徴を簡単に記す。 なお、普通のプレイヤーには常識である振る舞いについては細かい説明をしない。

4.24.2.1. やくそう

HP の回復ポイント量は 30 から 40 だ。

4.24.2.2. どくけしそう

「もうどく」と「どく」のいずれの状態についてもリセットする。

4.24.2.3. せかいじゅのは

死んでいるメンバーの状態異常をすべてリセットし、HP を 999 ポイント回復する。

4.24.2.4. せかいじゅのしずく

まず生きているパーティーメンバーそれぞれに対して、 その HP が 最大 HP と一致する者がいるかどうかを確かめる。 もし生存者が皆そのようであれば、何も起こらないでコマンドを終了する。

次に回復メッセージ #$1730 を表示した後に、 生きているパーティーメンバーそれぞれの HP を 999 ポイント回復する。 4.23.2.2 べホマラー・べホマズン もそうだが、 このときなぜか乱数処理が走る。

最後に全員の HP を表示するウィンドウを表示してから、道具を消費してコマンドを終了する。

4.24.2.5. まほうのせいすい

MP の回復ポイント量は 40 から 50 だ。

4.24.2.6. ちからのたね

ちからの上昇値は 1 から 3 だ。

4.24.2.7. すばやさのたね

すばやさの上昇値は 1 から 3 だ。

4.24.2.8. かしこさのたね

かしこさの上昇値は 1 から 3 だ。

4.24.2.9. まもりのたね

みのまもりの上昇値は 3 から 5 だ。

4.24.2.10. いのちのきのみ

さいだい HP の上昇値は 4 から 6 だ。

4.24.2.11. ふしぎなきのみ

さいだい MP の上昇値は 3 から 5 だ。

4.24.2.12. いのりのゆびわ

さいだい MP がゼロのメンバーについては何も起こらない。

MP の回復ポイント量は 20 から 30 だ。

指輪が壊れる処理は道具コマンドのものではなく、 パーティーメンバーの持ち物を消費する用途の汎用サブルーチン $C4535C に組み込まれている。 この指輪は使用する度に一定の確率で壊れ、もし壊れたならばメッセージ #1733 を表示する。

4.24.2.13. せいすい

道具を消費した後に、カウンター $7E3BA9 をリセットする。 このカウンターは 4.23.2.9 トヘロス とせいすいとで共用になっている。

カウンターリセット後に、どういうわけかトヘロスフラグとせいすいフラグの両方をセットする。 それからメッセージ #$16B6 を表示して、モンスターの気配が消えたことを通知する。

4.24.2.14. むらのみんげいひん

道具コマンド既定のメッセージ処理に加え、メッセージ #$173B 「とても よくできた 木ぼり細工と~」を表示する。

4.24.2.15. ゆめみのしずく

専用サブルーチン $C9A8D3 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.16. キメラのつばさ

キメラのつばさの処理は概ね 4.23.2.6 ルーラ のコピーアンドペーストとなっている。 違いは表示メッセージと消費するものだけだろう。

4.24.2.17. かぜのぼうし

かぜのぼうしは 4.23.2.6 ルーラ の処理コードの途中にプログラムカウンターを飛ばす。 これによりコマンド処理を共有している。

4.24.2.18. おうごんのつるはし

専用サブルーチン $C9AABC にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.19. ラーのカガミ

専用サブルーチン $C9AA29 にて処理をする。

4.24.2.20. すなのうつわ

専用サブルーチン $C9AB92 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.21. まほうのじゅうたん

専用サブルーチン $C304E1 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.22. マーメイドハープ

専用サブルーチン $C30614 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.23. せかいちず

専用サブルーチン $C30712 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.24. ふしぎなちず

専用サブルーチン $C30728 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.25. ふるびたパイプ

専用サブルーチン $C9AC45 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.26. へいしのふく4つ

専用サブルーチン $C9AC6C にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.27. ろうごくのカギ

専用サブルーチン $C9ACE0 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.28. しんじつのオーブ

専用サブルーチン $C9AD6B にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.29. りせいのタネその他

移動時ならばいかなる状況でも同じ実行結果になる道具は $C3D253 で処理する。 次に示す道具のコマンド処理は、道具データ固有のメッセージとコマンドハンドラーテーブル内のメッセージの二つを表示して終了する:

  • りせいのタネ
  • つうこうしょう
  • くじけぬこころ
  • じょうせんけん
  • おうのしょじょう
  • ゆうきのかけら
  • ぎしきのそなえもの
  • エンデのどうぐ
  • さびたつるぎ
  • ラミアスのつるぎ(全種)
  • スフィーダのたて
  • オルゴーのよろい(全種)
  • セバスのかぶと
  • カガミのカギ
  • まほうのカギ
  • とうぞくのカギ
  • すいもんのカギ
  • さいごのカギ

4.24.2.30. デセオのパス

使用者が「おとこ」ならばメッセージ #1756 を表示する。

4.24.2.31. てんまのたづな

専用サブルーチン $C30544 にて処理をする。 複雑ゆえ本項では解説しない。

4.24.2.32. アモールのみず

HP の回復ポイント量は 60 から 70 だ。

4.24.2.33. うつくしそう

かっこよさの上昇値は 1 固定だ。 うつくしそうは唯一乱数処理を必要としないパラメーター上昇系アイテムだ。 なお結果メッセージ #1764 内にこの数値がハードコードされている。