4.22. 戦闘コマンド

4.22.1. 構造体 $C8C65D: 戦闘コマンド
4.22.2. 戦闘コマンド構造体メソッド
4.22.3. データ

この節では戦闘コマンドの構造について述べる。 戦闘コマンドとは、戦闘中における主人公とその仲間たちへの命令、そして敵の実行するそれを表現するのに必要な情報をカプセル化したものだと定義する。 プログラムではこれを多くの属性の組からなる構造体で表現していて、 コマンドに応じた属性値や処理を必要に応じて参照したり実行したりする仕組みがある。

コマンドオブジェクトはその性質を動的に変更するような設計にはなっておらず、オブジェクトの特定には ID の値さえあればよい。 コマンドオブジェクトの一覧については 付録 B データ に CSV ファイルを収録したので、必要があれば参照して欲しい。 このような ID は戦闘キャラクターオブジェクトそれぞれの属性として保存される。 詳しくは 4.21 戦闘キャラクター構造体 を参照して欲しい。

4.22.1. 構造体 $C8C65D: 戦闘コマンド

戦闘コマンド構造体とは、サイズが #$19 バイトであり、オブジェクトのメモリレイアウトが次の表で示されるようなものだ。 この型のオブジェクトがアドレス $C8C65D から 410 個直列しているので、本書ではたまに戦闘コマンド構造体のことを表題のように表記することがある。

表 4.95 構造体 $C8C65D

オフセット 属性
#$00 #$0001 呪文フラグ
#$00 #$00FE 対象決定判断 0
#$01 #$0001 踊りフラグ
#$01 #$00FE 対象決定判断 1
#$02 #$0001 炎・吹雪フラグ
#$02 #$00FE 対象決定判断 2
#$03 #$003F MP
#$03 #$0040 マヌーサ考慮フラグ
#$03 #$0080 だいぼうぎょ考慮フラグ
#$04 #$0007 ダメージ確率 ID
#$04 #$0008 みかわし考慮フラグ
#$04 #$0010 ため考慮フラグ
#$04 #$0020 バイキルト考慮フラグ
#$04 #$0040 会心痛恨考慮フラグ
#$04 #$0080 対象詳細抽選フラグ
#$05 #$001F 系統分類
#$05 #$0020 まじんのかなづち装備考慮フラグ
#$05 #$0040 複数対象武器有効フラグ
#$05 #$0080 特殊武器ダメージ倍率考慮フラグ
#$06 #$0003 対象陣営分類
#$06 #$0004 どくばり装備考慮フラグ
#$06 #$0008 追加効果武器装備考慮フラグ
#$06 #$0010 連続攻撃武器装備考慮フラグ
#$06 #$0020 追加ダメージ武器装備考慮フラグ
#$06 #$0040 きせきのつるぎ装備考慮フラグ
#$06 #$0080 (未使用)
#$07 #$0003 対象範囲分類
#$07 #$0004 集中攻撃許可フラグ
#$07 #$0008 パラディン即死考慮フラグ
#$07 #$0010 アストロン考慮フラグ
#$07 #$0020 みがわり考慮フラグ
#$07 #$0040 マホカンタ・マホターン考慮フラグ
#$07 #$0080 うけながし考慮フラグ
#$08 #$0007 目的分類
#$08 #$0018 まねまね反応分類
#$08 #$0060 モード
#$08 #$0080 不能確認フラグ
#$09 #$003F ダメージ評価 ID
#$09 #$00C0 退場分類
#$0A #$003F 効能評価 ID
#$0A #$0040 メッセージ表示フラグ
#$0A #$0080 意識回復フラグ
#$0B #$007F ダメージ ID
#$0B #$0080 仲間許可フラグ
#$0C #$00FF 記述 ID
#$0D #$00FF 画面演出 ID
#$0E #$7FFF (調査中)
#$0F #$0080 戦果逸失フラグ
#$10 #$0003 特殊演出 ID
#$10 #$003C 呪文演出効果 ID
#$10 #$FFC0 実行時効果音 ID
#$12 #$FFFF 実行処理アドレス
#$14 #$00FF
#$15 #$FFFF 戦闘メッセージ ID
#$17 #$FFFF 名前文字列 ID

前作と今作の戦闘コマンドの表現を比較すると、本作で戦闘コマンドが一気に多様化したことがうかがえる。 (未使用)とあるものは、オブジェクトによって値が異なってはいるものの、参照箇所がないためそのように記した。 以下に各属性の概要を記す。

呪文フラグ

呪文フラグとは、このコマンドが呪文を唱えるものであることを意味するブーリアン型の属性だ。 この値は、コマンド実行には規定の MP 消費を必要とすることや、 ある種のコマンドが適用された標的に対しては、このコマンドの実行が無効化されること等を示唆する。

余談だが、データを調べると呪文フラグが 1 であるときは、踊りフラグと炎・吹雪フラグのいずれの属性も値が 0 に設定されている。 ということは、全ての戦闘コマンドをこの 3 つと、それらのいずれにも該当しないものの 1 つとに類別して考えることができる。 もう一つ言うと、これらの分類 3 フラグを 2 ビット長のメンバーにまとめてしまい、浮いた 1 ビット分を他に回すこともできたようだ。

対象決定判断 k (k = 0, 1, 2)

対象決定判断とは、戦闘員がこのコマンドを自分のレパートリーの中から選択するかどうかを決定するサブルーチンを要素とするジャンプテーブルの行番号を値とする属性だ。 ここで k の値は戦闘員のコマンド選択能力属性から決まるものなのだが、 単純化して説明すると k の値が高いほど選択判断の質が高くなる。 詳しくは 4.14 モンスター の節で述べる。

例えばラリホーのコマンドは決定判断ロジックは 3 通りある。 最も愚直なものは、相手陣の生存キャラクターの有無しか確認しない。 中間のものは、それに加えてラリホー状態の者の有無を考慮に入れる。 最も高級な判断は、さらにマホカンタ・マホターン状態まで考慮に入れ、グループ別に詳細に吟味する。

踊りフラグ

踊りフラグとは、このコマンドが踊るものであることを意味するブーリアン型の属性だ。 この値が 1 のコマンドは、「おどりふうじ」のコマンドが適用された戦闘員による実行が無効化されることを意味する。

先述の通り、踊りフラグが 1 のコマンドについては、呪文フラグと炎・吹雪フラグのどちらも 0 に設定されている。

炎・吹雪フラグ

炎・吹雪フラグとは、このコマンドが炎または吹雪を吐き出すものであることを意味するブーリアン型の属性だ。 この値が 1 のコマンドは、「フバーハ」や「おいかぜ」のコマンドが適用された戦闘員に対して特別な意味があることを意味する。

先述の通り、炎・吹雪フラグが 1 のコマンドについては、呪文フラグと踊りフラグのどちらも 0 に設定されている。

MP

MP とは、このコマンドを実行する戦闘員が必要とする MP の量を意味する数値型の属性だ。 実行する際にこの数だけの MP がなければならないし、実行するとこの数だけ戦闘員の MP が減少する。

一部のコマンドについては、マジックナンバーが設定されている。 これらについては、戦闘員が実行時にその時点における MP 全てを消費することを意味する。

マヌーサ考慮フラグ

マヌーサ考慮フラグとは、マヌーサ、すなけむり、まぶしいひかりの効いている戦闘員がこのコマンドを実行すると失敗する可能性があることを示すブーリアン型属性だ。

だいぼうぎょ考慮フラグ

だいぼうぎょ考慮フラグとは、だいぼうぎょを適用中の戦闘員にこのコマンドでダメージを与えると、 ダメージの値が規定の 1/10 になることを示すブーリアン型属性だ。

ダメージ確率 ID

ダメージ確率 ID とは、このコマンドがダメージ系については係数を、確率的については的中率を指定する値からなる表の行番号を値に取る属性だ。 表は論理的には 3 つあり、それぞれマジックバリア適用向け、ぶきみなひかり適用向け、一般版だ。

参考までに一般版の確率表を次に示す。横軸と縦軸は戦闘員耐性属性と本属性値をそれぞれ意味する。 この各値を 256 で割った値が生ダメージ値への係数になるのだが、 コマンドによっては全く別の利用法を採用するものもあることを注意しておく。

表 4.96 構造体 $C28C30

ID 耐性 0 耐性 1 耐性 2 耐性 3
0 256 218 128 0
1 256 256 192 0
2 128 51 26 0
3 256 179 102 0
4 256 205 128 0
5 333 294 192 77
6 192 128 64 0
7 230 154 77 0

みかわし考慮フラグ

みかわし考慮フラグとは、標的の自陣側戦闘員がかわすことにより失敗する可能性がこのコマンドにあることを示すブーリアン値を取る属性だ。

ため考慮フラグ

ため考慮フラグとは、「ちからため」「きあいため」等のコマンド適用中戦闘員が実行すると、このコマンドの威力が増幅することを示すブーリアン値を取る属性だ。 他に条件がなければ、ダメージ値を 1.5 倍とするような処理が有効になる。

バイキルト考慮フラグ

バイキルト考慮フラグとは、このコマンドの威力が「バイキルト」コマンド適用中戦闘員が実行すると、このコマンドの威力が増幅することを示すブーリアン値を取る属性だ。 他に条件がなければ、ダメージ値を 2 倍にする処理が有効になる。

会心考慮フラグ

会心痛恨考慮フラグとは、このコマンドの実行についてかいしんの いちげき!またはつうこんの いちげき!が発生する可能性があることを示すブーリアン値を取る属性だ。 ダメージ量がコマンド実行者の攻撃力(と乱数)だけで決まるようになる。

対象詳細抽選フラグ

対象抽選フラグとは、このコマンドの標的を抽選によって決定することを示すブーリアン値を取る属性だ。 敵陣側の抽選方針だけ説明すると、自陣の誰を標的とするかを、馬車外の生存者の人数と並び順によって決める。 自陣側のロジックは複雑でよく判明していないが、敵陣戦闘員のマヒ状態やメダパニ状態も抽選に影響するようだ。

系統分類

系統分類とは、このコマンドの系統的性質を表現する数を値に取る属性だ。 次のような対応関係があるようだ(ドラクエ 7 のデバッグ機能を参考にした)。

表 4.97 系統分類

系統
#$00 メラ
#$01 ギラ
#$02 イオ
#$03 ヒャド
#$04 バギ
#$05 デイン
#$06 マヌーサ
#$07 ラリホー
#$08 ザキ
#$09 ニフラム
#$0A マホトラ
#$0B マホトーン
#$0C メダパニ
#$0D ルカニ
#$0E n/a
#$0F どく
#$10 やすみ
#$11 おどりふうじ
#$12 ほのお
#$13 ふぶき
#$14 たたき
#$15 まひ
#$16 ぐんたい
#$17 n/a
#$18
#$19
#$1A
#$1B
#$1C
#$1D
#$1E
#$1F 無属性

まじんのかなづち装備考慮フラグ

まじんのかなづち装備考慮フラグとは、まじんのかなづちを装備している戦闘員がこのコマンドを実行すると、 その結果が失敗と会心の一撃発生かのどちらかにしかならないことを示すブーリアン値を取る属性だ。

他に条件がなければ 1/4 の確率で会心の一撃化する。 ちなみにまじんぎりによる会心の一撃が発生する確率と同じだ。

複数対象武器有効フラグ

複数対象武器有効フラグとは、自陣戦闘員がグループ以上対象武器を装備しているときにこのコマンドを実行することで、 指定した標的戦闘員全てにダメージが発生するかどうかを示すブーリアン値を取る属性だ。

特殊武器ダメージ倍率考慮フラグ

特殊武器ダメージ倍率考慮フラグとは、自陣戦闘員が次に挙げる武器のいずれかを装備している状態でこのコマンドを実行することで、 特別なダメージ調整が発生することを示すブーリアン値を取る属性だ。

表 4.98 特殊武器ダメージ倍率

ID 装備武器 ダメージ調整方式
#$0D ドラゴンキラー ドラゴン系統のモンスター対してはダメージ値を 1.5 倍に調整する
#$10 はやぶさのけん ダメージ値を 3/4 に調整する
#$12 ゾンビキラー ゾンビ系統のモンスターに対してはダメージ値を 1.5 倍に調整する
#$43 ドラゴンキラー #$0D と同じ
#$44 はやぶさのけん #$10 と同じ
#$46 ゾンビキラー #$12 と同じ

対象陣営分類

対象陣営分類とは、このコマンドの対象をどの陣営から選択され得るかを示す数を値として取る属性だ。 次の表のような解釈ができる:

表 4.99 対象陣営分類

意味
0 コマンド実行者自身もしくは誰でもない
1 コマンド実行者の属する陣営
2 コマンド実行者の反対側の陣営
3 その場にいる全員

この値と対象範囲属性を組み合わせることで、コマンドの用途が大づかみでわかる。

どくばり装備考慮フラグ

どくばり装備考慮フラグとは、自陣戦闘員がどくばりを装備している状態でこのコマンドを実行すると、 標的戦闘員へダメージを 1 しか与えないか、急所を直撃するかのいずれかになることを示すブーリアン値を取る属性だ。

例えばさみだれけんのコマンドをどくばり装備者が実行すると、敵陣全員に対して上記のダメージ判定が適用される。

追加効果武器装備考慮フラグ

追加効果武器装備考慮フラグとは、自陣戦闘員が次の表にある武器を装備している状態でこのコマンドを実行すると、 標的にダメージを与えるだけでなく、追加で対応する状態属性値をセットすることを示すブーリアン値を取る属性だ。

表 4.100 追加効果武器

ID 装備武器 追加効果
#$0A どくがのナイフ 標的戦闘員のマヒ状態を 1/6 の確率でセット
#$0E ゆうわくのけん 標的戦闘員のメダパニ状態を 1/4 の確率でセット
#$0F まどろみのけん 標的戦闘員のラリホーカウンターを 1/4 の確率で 4 にセット
#$32 あくまのツメ 標的戦闘員のもうどく状態を 1/4 の確率でセット
#$33 まじゅうのキバ どくがのナイフと同じ

連続攻撃武器装備考慮フラグ

連続攻撃武器装備考慮フラグとは、自陣戦闘員が「はやぶさのけん」または「キラーピアス」を装備している状態でこのコマンドを実行すると、 一度のコマンド実行で二回またはそれ以上のダメージが発生することを示すブーリアン値を取る属性だ。

追加ダメージ武器装備考慮フラグ

追加ダメージ武器装備考慮フラグとは、自陣戦闘員が次に示す武器のいずれかを装備している状態でこのコマンドを実行すると、 規定のダメージ発生に加えて、通常攻撃によるダメージの 1/2 に相当する量のダメージが発生することを示すブーリアン値を取る属性だ。

表 4.101 追加ダメージ武器

ID 装備武器
#$13 ふぶきのつるぎ
#$17 ほのおのつるぎ
#$2D ほのおのツメ
#$2E こおりのやいば
#$40 ラミアスのつるぎ
#$41 ラミアスのつるぎ
#$42 ラミアスのつるぎ
#$47 ほのおのつるぎ

きせきのつるぎ装備考慮フラグ

きせきのつるぎ装備考慮フラグとは、自陣戦闘員が「きせきのつるぎ」を装備している状態でこのコマンドを実行すると、 標的に与えたダメージの 1/4 の量の HP をコマンド実行者が回復することを示すブーリアン値を取る属性だ。

対象範囲分類

対象範囲分類とは、このコマンドの標的が次のいずれに分類されるのかを意味する値を取る属性だ。

表 4.102 対象範囲分類

対象範囲
0 単体
1 グループ
2 全体
3 その他

集中攻撃許可フラグ

集中攻撃許可フラグとは、集中攻撃特性のある戦闘員がこのコマンドを実行することを許可するためのブーリアン値を取る属性だ。

パラディン即死考慮フラグ

パラディン即死考慮フラグとは、職業がパラディンである自陣戦闘員がこのコマンドを実行することで、 職業レベルから定まる確率で標的が即死する可能性があることを示すブーリアン値を取る属性だ。 即死発生確率はその他の条件がなければ、次のように決定される。

表 4.103 パラディンのコマンド実行による即死発生確率

レベル 確率
0 0
1 1/64
2 1/48
3 1/32
4 1/32
5 1/16
6 1/16
7 1/8

アストロン考慮フラグ

アストロン考慮フラグとは、このコマンドがアストロン状態の戦闘員に対して無意味であることを示すブーリアン値を取る属性だ。

みがわり考慮フラグ

みがわり考慮フラグとは、みがわりコマンドのかばう相手がこのコマンドの標的になったときに、 みがわり処理が成立することを示すブーリアン値を取る属性だ。

マホカンタ・マホターン考慮フラグ

マホカンタ・マホターン考慮フラグとは、これらの呪文が適用されている戦闘員に対してこのコマンドを実行するのが得策でないことを示すブーリアン値を取る属性だ。 こういう属性が存在しなければ、アストロンやマジックバリアも反射するしかなくなってしまう。

うけながし考慮フラグ

うけながし考慮フラグとは、このコマンドの標的がうけながしを適用しているときに、 うけながし処理が発生することを示すブーリアン値を取る属性だ。

目的分類

目的分類とは、このコマンドの大まかな存在目的を表現する数を値として取る属性だ。 この属性値はコマンド選択に影響するらしい。

まねまね反応分類

まねまね反応分類とは、このコマンドを「まねまね」されるとどのように処理されるかを表す数を値に取る属性だ。 値とその意味との対応を次の表に示す:

表 4.104 まねまね反応分類

まねまね反応
0 無視する
1 やりかえせない
2 通常攻撃としてやりかえす
3 やりかえす

モード

モードとは、このコマンドが有効なモードを表す値を属性だ。 次の表に示すような意味らしいが、戦闘中での利用目的は出力メッセージの調整だ。 バーバラ以外の戦闘員がすなのうつわを使用するときにメッセージを変更するためにしか、 この属性は有意な使われ方をしていない。

表 4.105 モード

モード
0 n/a
1 移動モードでしか有効でない
2 戦闘モードでしか有効でない
3 どちらのモードでも有効である

不能確認フラグ

不能確認フラグとは、戦闘員が AI で実行するコマンドを評価する際に、 自分の状態が検討中のコマンドを実行するのに障害になるかどうかを調べることを示すブーリアン値を取る属性だ。

具体的には、自分の現在の MP の残量、マホトーン状態、おどりふうじ状態を判定するようになる。

ダメージ評価 ID

ダメージ評価 ID とは、このコマンドによる実効ダメージ(回復量や確率の形態を含む)値を算出するサブルーチンテーブルの行番号を値とする属性だ。

退場分類

退場分類とは、このコマンドで標的を死亡させたか無効化させたか等を表す値を取る属性だ。 値と意味の対応関係は次の表のとおりだ:

表 4.106 退場分類

意味
0 n/a
1 逃亡
2 消滅や行方不明
3 死亡

効能評価 ID

効能評価 ID とは、AI がこのコマンドを実行することによる利点・効能を評価するサブルーチンテーブルの行番号を値に取る属性だ。

メッセージ表示フラグ

メッセージ表示フラグとは、自陣側戦闘員のコマンド実行による画面上の演出とメッセージ出力のタイミングを指示するブーリアン値を取る属性だ。 この値が 1 だと、演出の次にメッセージ表示となる。

意識回復フラグ

意識回復フラグとは、このコマンド実行で標的の戦闘員にダメージを与えると、 標的のラリホー状態やメダパニ状態が良化する可能性があることを示すブーリアン値を取る属性だ。

ダメージ ID

ダメージ ID とは、このコマンドに関連するダメージオブジェクトを特定する値を取る属性だ。 ダメージオブジェクトとは、このコマンド実行によるダメージ量(または回復量)の計算の基本情報と考えてよい。 アドレス $C8FC9B にダメージオブジェクトの配列がある。 この属性値はその配列の添字だ。

ダメージオブジェクトは敵陣と自陣それぞれに対してのダメージ量(または回復量)の取り得る範囲を定義する。 データ内容については付録に収録した CSV を参照して欲しい。 ただし、値 1,023 はマジックナンバーであり、実行時には #$FFFF に置き換わる。

仲間許可フラグ

仲間許可フラグとは、このコマンドで敵陣戦闘員を死亡あるいは無効化すれば、 他の条件が許す限り、そのモンスターが戦闘終了後に起き上がって仲間になりたそうにしてもよいことを示すブーリアン値を取る属性だ。

データによると、メガンテで倒しても仲間になることはないようだが、 メガンテのうでわの効果で倒するのありのように見える。これは本当だろうか。

記述 ID

記述 ID とは、このコマンドに関連して画面ウィンドウに表示される記述データの ID を値とする属性だ。 アドレス $C9002E にメッセージ ID 三つの組からなる配列があり、この属性値とはその添字だ。 具体例は 付録 B データ に収録の当該 CSV を参照して欲しい。

画面演出 ID

画面演出 ID とは、このコマンドを自陣側戦闘員が実行するときになされる視聴覚的演出の ID を取る属性だ。 言い換えると、アドレス $C770A0 にある構造体配列の添字だ。 例えばメダパニ、メダパニダンス、ほしのかけら、ゆうわくおどり、はしりまわりの属性値は同じだ。

戦果逸失フラグ

戦果逸失フラグとは、このコマンドで敵陣戦闘員を死亡させるか無効化させると、 戦闘終了後の獲得経験値およびゴールドを加算しないようになることを示すブーリアン値を取る属性だ。 例を挙げると、ニフラム、メガンテ、バシルーラは属性値が 1 となっている。

特殊演出 ID

特殊演出 ID とは、このコマンドを敵陣戦闘員が実行するときにキャラクタースプライト自身に適用する視覚効果の ID 値を取る属性だ。 文章で説明するのは厳しい。なし、呪文色で点滅、ある色でフェードのような 3 種類がある。

呪文演出効果 ID

呪文演出効果 ID とは、敵陣戦闘員がこのコマンドを実行するときの画面演出を指定する値を取る属性だ。 呪文コマンドを実行するときの円形の光のようなスプライトを描画させるのに用いる。

実行時効果音 ID

実行時効果音 ID とは、コマンド実行時に再生する効果音の ID を値を取る属性だ。 ただし、コマンドによっては動的に別の効果音に採用する。

実行処理アドレス

実行処理アドレスとは、このコマンド実行の成否を動的に決定するサブルーチンの開始位置を示すフルアドレスを値に取る属性だ。 このコマンドの挙動そのものを表現すると言ってもよい。

戦闘メッセージ ID

戦闘メッセージ ID とは、このコマンドが実行されるとメッセージ出力ウィンドウに最初に表示されるメッセージの ID を値とする属性だ。 例えば呪文コマンドのほとんどは[BC][B7]は [B2]を となえた![B1]を指定する #$005E を属性値とする。

戦闘モードにおけるテキスト処理については 4.3.1 戦闘モード で述べる。

名前文字列 ID

名前文字列 ID とは、このコマンド名を意味する文字列の ID を値とする属性だ。 名前文字列はコマンド入力ウィンドウやメッセージ出力ウィンドウ上のテキスト内に表示される。

文字列については 4.2 文字列 で述べる。

4.22.2. 戦闘コマンド構造体メソッド

バンク $C2 の逆アセンブルの便宜を図るため、 以下に $C8C65D 構造体の各属性にアクセスするためのサブルーチンの一覧を次に示す。 ただし、LDA $C8C662,X のように直接値にアクセスする処理も当然のように存在する。

表 4.107 戦闘コマンド構造体の属性にアクセスするサブルーチン

サブルーチン 固定引数長 入力 機能
$C2F0C2 2 x 2 バイト型属性値を取得する
$C2F0C9 2 y 2 バイト型属性値を取得する
$C2F0DF 4 x ビットフィールド型属性値を取得する
$C2F0E6 4 y ビットフィールド型属性値を取得する
$C2F0FC 4 x ビットフィールド型属性値が設定されているかを見る
$C2F103 4 y ビットフィールド型属性値が設定されているかを見る

ここで、レジスター x および y は戦闘員の添字をそれぞれ指定する。 また、いずれの処理においても出力をレジスター a に格納する。 出力値としては属性値か、ビットシフト工程を省略した値のいずれかだ。

固定引数長とあるのは、各 JSR 命令に続く非プログラムバイト列の長さのことだ。 値が 2 ならばオブジェクトのベースアドレスからのオフセット値が、 値が 4 ならばオフセット値とビットマスク値がコード中に埋め込まれていることを示す。 以下に参考コードと解釈例を示す。 本節の表と 4.21.1 構造体 $7E2030: 戦闘キャラクター を照合しながら内容を確かめるといいだろう:

C2/741B:    22FCF0C2    JSR $C2F0FC         戦闘コマンド x の属性値が設定されているかを見る
C2/741F:    5FC6
C2/7421:    0100                            対象属性は炎・吹雪フラグ
C2/7423:    F00B        BEQ $7430           if(炎・吹雪フラグ){
C2/7425:    A90100      LDA #$0001              a = 1
C2/7428:    223DF0C2    JSR $C2F03D             戦闘員 y の属性を値 a で更新する
C2/742C:    5620
C2/742E:    1000                                対象属性は「炎・吹雪コマンドを相手に実行された」フラグ
                                            }
C2/7430:    22FCF0C2    JSR $C2F0FC         戦闘コマンド x の属性値が設定されているかを見る
C2/7434:    5DC6
C2/7436:    0100                            対象属性は呪文フラグ
C2/7438:    F00B        BEQ $7445           if(呪文フラグ){
C2/743A:    A90100      LDA #$0001              a = 1
C2/743D:    223DF0C2    JSR $C2F03D             戦闘員 y の属性を値 a で更新する
C2/7441:    5620
C2/7443:    2000                                対象属性は「呪文コマンドを相手に実行された」フラグ
                                            }
C2/7445:    22FCF0C2    JSR $C2F0FC         戦闘コマンド x の属性値が設定されているかを見る
C2/7449:    5EC6
C2/744B:    0100                            対象属性はおどりフラグ
C2/744D:    F00B        BEQ $745A           if(おどりフラグ){
C2/744F:    A90100      LDA #$0001              a = 1
C2/7452:    223DF0C2    JSR $C2F03D             戦闘員 y の属性を値 a で更新する
C2/7456:    5620
C2/7458:    4000                                対象属性は「おどりコマンドを相手に実行された」フラグ
                                            }
C2/745A:    7A          PLY
C2/745B:    60          RTS

この処理は戦闘員が相手陣による戦闘コマンド実行を受けて、呪文、踊り、炎・吹雪の対策を講じるようなものだろう。 前節ではこれらの三つのタイプは重複しないと述べたが、上記のコードでは重複したコマンドが存在したとしても対応できる。

4.22.3. データ

付録のデータについて、コマンドの名前、メッセージ内容、さらに処理アドレスを見ても実態を特定しづらいオブジェクトがある。 それについてここで補足しておく。

ダメージの応酬や状態の変化しか行わないようなコマンドは、先ほど述べた属性値から簡単にその振る舞いが理解できるが、 一部の特殊なコマンドは別途処理コードが存在する。 そのようなものについてはサブルーチン $C2791C 以下の実装を解読する必要がある。

他にも通常攻撃に加えて状態変化を伴うコマンドがいくつかあることと、 装備武器に由来する追加ダメージの発生がコマンドとして実現されていること、 あるいはそれ以外にも注意しないとコマンドの全容が把握できないだろう。 CSV に載せられないコマンド概要を表にして次に示す:

表 4.108 特別な戦闘コマンド

ID コマンドの挙動
#$0000 (なし)
#$0042 通常攻撃
#$004B せいれいのうたの終了時に起こる
#$004F まねまね不発時に起こる
#$0057 メガザルダンス終了時に起こる
#$00AF 攻撃ミス1(混乱による)
#$00B0 攻撃ミス2(混乱による)
#$00B1 混乱による逃げる(失敗)
#$00C3 パルプンテによる HP の全回復
#$00C4 パルプンテによる砕け散る作用
#$00C6 パルプンテによる力がみなぎる作用
#$00C7 ラリホー中
#$00C8 MP 全消費
#$00CA パルプンテによるドラゴラム作用
#$00CB パルプンテによる魔神
#$00CC パルプンテによる時間逆戻り
#$00CD パルプンテによる自陣全員回復
#$00CE パルプンテによる冷たい風
#$00CF (死亡者生き返り)
#$00D0 MP 回復
#$00DA 攻撃ミス3
#$00DB 合体
#$00DC 痛恨の一撃1
#$00DD 痛恨の一撃2
#$00DE 眠り攻撃
#$00DF 毒攻撃
#$00E0 マヒ攻撃
#$00E1 混乱攻撃
#$0101 馬車のドアを閉める
#$0102 声真似して作戦を変える
#$0104 自分の所属グループに仲間を呼ぶ1
#$0105 自分の所属グループに仲間を呼ぶ2(即時コマンド実行型?)
#$0106 自分の所属グループに仲間を呼ぶ3(収容枠まで連続して呼ぶ)
#$0107 しのどれいを呼ぶ
#$0108 ホイミスライムを呼ぶ
#$0109 ぬけがらへいを呼ぶ
#$010A ダークホーンを呼ぶ
#$010B トロルを呼ぶ
#$010C ランプのまじんを呼ぶ
#$010D ベホマスライムを呼ぶ
#$010E ヒートギズモを呼ぶ
#$010F ランプのまおうを呼ぶ
#$0110 しもべのきりさきピエロを呼び付ける
#$0111 助けを呼ぶ1
#$0112 助けを呼ぶ2(即時コマンド実行型?)
#$0113 しもべのデビルアーマーを大声で呼び付ける
#$0114 デスタムーア #$EF に完全変身する
#$0115 デスタムーア #$F1 に完全変身する
#$0116 デスタムーア #$F3 に完全変身する
#$0117 ダークドレアム #$F7 に完全変身する
#$0118 ダークドレアム #$F8 に完全変身する
#$0119 まおうのつかい #$E1 に完全変身する
#$011A デスタムーア #$EE に完全変身する
#$011B デスタムーア #$F0 に完全変身する
#$011C デスタムーア #$F2 に完全変身する
#$011D ダークドレアム #$F6 に完全変身する
#$011E ムラサキのひとみ
#$0129 戦闘コマンドに割り当てられていない道具を使う
#$015A ふぶきのつるぎ装備時の追加ダメージ発生作用
#$015B ほのおのつるぎ装備時の追加ダメージ発生作用
#$015C ほのおのツメ装備時の追加ダメージ発生作用
#$015D こおりのやいば装備時の追加ダメージ発生作用
#$015E ラミアスのつるぎ装備時の追加ダメージ発生作用
#$0198 (なし)

併せて、モンスターデータのコマンドリストも参照して欲しい。