この節では戦闘コマンドの構造について述べる。 戦闘コマンドとは、戦闘中における主人公とその仲間たちへの命令、そして敵の実行するそれを表現するのに必要な情報をカプセル化したものだと定義する。 プログラムではこれを多くの属性の組からなる構造体で表現していて、 コマンドに応じた属性値や処理を必要に応じて参照したり実行したりする仕組みがある。
コマンドオブジェクトはその性質を動的に変更するような設計にはなっておらず、オブジェクトの特定には ID の値さえあればよい。 コマンドオブジェクトの一覧については 付録 B データ に CSV ファイルを収録したので、必要があれば参照して欲しい。 このような ID は戦闘キャラクターオブジェクトそれぞれの属性として保存される。 詳しくは 4.21 戦闘キャラクター構造体 を参照して欲しい。
戦闘コマンド構造体とは、サイズが #$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 の値が高いほど選択判断の質が高くなる。 詳しくは 4.14 モンスター の節で述べる。
例えばラリホーのコマンドは決定判断ロジックは 3 通りある。 最も愚直なものは、相手陣の生存キャラクターの有無しか確認しない。 中間のものは、それに加えてラリホー状態の者の有無を考慮に入れる。 最も高級な判断は、さらにマホカンタ・マホターン状態まで考慮に入れ、グループ別に詳細に吟味する。
踊りフラグとは、このコマンドが踊るものであることを意味するブーリアン型の属性だ。 この値が 1 のコマンドは、「おどりふうじ」のコマンドが適用された戦闘員による実行が無効化されることを意味する。
先述の通り、踊りフラグが 1 のコマンドについては、呪文フラグと炎・吹雪フラグのどちらも 0 に設定されている。
炎・吹雪フラグとは、このコマンドが炎または吹雪を吐き出すものであることを意味するブーリアン型の属性だ。 この値が 1 のコマンドは、「フバーハ」や「おいかぜ」のコマンドが適用された戦闘員に対して特別な意味があることを意味する。
先述の通り、炎・吹雪フラグが 1 のコマンドについては、呪文フラグと踊りフラグのどちらも 0 に設定されている。
MP とは、このコマンドを実行する戦闘員が必要とする MP の量を意味する数値型の属性だ。 実行する際にこの数だけの MP がなければならないし、実行するとこの数だけ戦闘員の MP が減少する。
一部のコマンドについては、マジックナンバーが設定されている。 これらについては、戦闘員が実行時にその時点における MP 全てを消費することを意味する。
マヌーサ考慮フラグとは、マヌーサ、すなけむり、まぶしいひかりの効いている戦闘員がこのコマンドを実行すると失敗する可能性があることを示すブーリアン型属性だ。
だいぼうぎょ考慮フラグとは、だいぼうぎょを適用中の戦闘員にこのコマンドでダメージを与えると、 ダメージの値が規定の 1/10 になることを示すブーリアン型属性だ。
ダメージ確率 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 と同じ |
対象陣営分類とは、このコマンドの対象をどの陣営から選択され得るかを示す数を値として取る属性だ。 次の表のような解釈ができる:
この値と対象範囲属性を組み合わせることで、コマンドの用途が大づかみでわかる。
どくばり装備考慮フラグとは、自陣戦闘員がどくばりを装備している状態でこのコマンドを実行すると、 標的戦闘員へダメージを 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 をコマンド実行者が回復することを示すブーリアン値を取る属性だ。
対象範囲分類とは、このコマンドの標的が次のいずれに分類されるのかを意味する値を取る属性だ。
集中攻撃許可フラグとは、集中攻撃特性のある戦闘員がこのコマンドを実行することを許可するためのブーリアン値を取る属性だ。
パラディン即死考慮フラグとは、職業がパラディンである自陣戦闘員がこのコマンドを実行することで、 職業レベルから定まる確率で標的が即死する可能性があることを示すブーリアン値を取る属性だ。 即死発生確率はその他の条件がなければ、次のように決定される。
アストロン考慮フラグとは、このコマンドがアストロン状態の戦闘員に対して無意味であることを示すブーリアン値を取る属性だ。
みがわり考慮フラグとは、みがわりコマンドのかばう相手がこのコマンドの標的になったときに、 みがわり処理が成立することを示すブーリアン値を取る属性だ。
マホカンタ・マホターン考慮フラグとは、これらの呪文が適用されている戦闘員に対してこのコマンドを実行するのが得策でないことを示すブーリアン値を取る属性だ。 こういう属性が存在しなければ、アストロンやマジックバリアも反射するしかなくなってしまう。
うけながし考慮フラグとは、このコマンドの標的がうけながしを適用しているときに、 うけながし処理が発生することを示すブーリアン値を取る属性だ。
目的分類とは、このコマンドの大まかな存在目的を表現する数を値として取る属性だ。 この属性値はコマンド選択に影響するらしい。
まねまね反応分類とは、このコマンドを「まねまね」されるとどのように処理されるかを表す数を値に取る属性だ。 値とその意味との対応を次の表に示す:
モードとは、このコマンドが有効なモードを表す値を属性だ。 次の表に示すような意味らしいが、戦闘中での利用目的は出力メッセージの調整だ。 バーバラ以外の戦闘員がすなのうつわを使用するときにメッセージを変更するためにしか、 この属性は有意な使われ方をしていない。
不能確認フラグとは、戦闘員が AI で実行するコマンドを評価する際に、 自分の状態が検討中のコマンドを実行するのに障害になるかどうかを調べることを示すブーリアン値を取る属性だ。
具体的には、自分の現在の MP の残量、マホトーン状態、おどりふうじ状態を判定するようになる。
ダメージ評価 ID とは、このコマンドによる実効ダメージ(回復量や確率の形態を含む)値を算出するサブルーチンテーブルの行番号を値とする属性だ。
退場分類とは、このコマンドで標的を死亡させたか無効化させたか等を表す値を取る属性だ。 値と意味の対応関係は次の表のとおりだ:
効能評価 ID とは、AI がこのコマンドを実行することによる利点・効能を評価するサブルーチンテーブルの行番号を値に取る属性だ。
メッセージ表示フラグとは、自陣側戦闘員のコマンド実行による画面上の演出とメッセージ出力のタイミングを指示するブーリアン値を取る属性だ。 この値が 1 だと、演出の次にメッセージ表示となる。
意識回復フラグとは、このコマンド実行で標的の戦闘員にダメージを与えると、 標的のラリホー状態やメダパニ状態が良化する可能性があることを示すブーリアン値を取る属性だ。
ダメージ ID とは、このコマンドに関連するダメージオブジェクトを特定する値を取る属性だ。
ダメージオブジェクトとは、このコマンド実行によるダメージ量(または回復量)の計算の基本情報と考えてよい。
アドレス $C8FC9B
にダメージオブジェクトの配列がある。
この属性値はその配列の添字だ。
ダメージオブジェクトは敵陣と自陣それぞれに対してのダメージ量(または回復量)の取り得る範囲を定義する。
データ内容については付録に収録した CSV を参照して欲しい。
ただし、値 1,023 はマジックナンバーであり、実行時には #$FFFF
に置き換わる。
仲間許可フラグとは、このコマンドで敵陣戦闘員を死亡あるいは無効化すれば、 他の条件が許す限り、そのモンスターが戦闘終了後に起き上がって仲間になりたそうにしてもよいことを示すブーリアン値を取る属性だ。
データによると、メガンテで倒しても仲間になることはないようだが、 メガンテのうでわの効果で倒するのありのように見える。これは本当だろうか。
記述 ID とは、このコマンドに関連して画面ウィンドウに表示される記述データの ID を値とする属性だ。
アドレス $C9002E
にメッセージ ID 三つの組からなる配列があり、この属性値とはその添字だ。
具体例は 付録 B データ に収録の当該 CSV を参照して欲しい。
画面演出 ID とは、このコマンドを自陣側戦闘員が実行するときになされる視聴覚的演出の ID を取る属性だ。
言い換えると、アドレス $C770A0
にある構造体配列の添字だ。
例えばメダパニ、メダパニダンス、ほしのかけら、ゆうわくおどり、はしりまわりの属性値は同じだ。
戦果逸失フラグとは、このコマンドで敵陣戦闘員を死亡させるか無効化させると、 戦闘終了後の獲得経験値およびゴールドを加算しないようになることを示すブーリアン値を取る属性だ。 例を挙げると、ニフラム、メガンテ、バシルーラは属性値が 1 となっている。
特殊演出 ID とは、このコマンドを敵陣戦闘員が実行するときにキャラクタースプライト自身に適用する視覚効果の ID 値を取る属性だ。 文章で説明するのは厳しい。なし、呪文色で点滅、ある色でフェードのような 3 種類がある。
呪文演出効果 ID とは、敵陣戦闘員がこのコマンドを実行するときの画面演出を指定する値を取る属性だ。 呪文コマンドを実行するときの円形の光のようなスプライトを描画させるのに用いる。
実行時効果音 ID とは、コマンド実行時に再生する効果音の ID を値を取る属性だ。 ただし、コマンドによっては動的に別の効果音に採用する。
実行処理アドレスとは、このコマンド実行の成否を動的に決定するサブルーチンの開始位置を示すフルアドレスを値に取る属性だ。 このコマンドの挙動そのものを表現すると言ってもよい。
戦闘メッセージ ID とは、このコマンドが実行されるとメッセージ出力ウィンドウに最初に表示されるメッセージの ID を値とする属性だ。
例えば呪文コマンドのほとんどは「[BC][B7]は [B2]を となえた![B1]」を指定する #$005E
を属性値とする。
戦闘モードにおけるテキスト処理については 4.3.1 戦闘モード で述べる。
名前文字列 ID とは、このコマンド名を意味する文字列の ID を値とする属性だ。 名前文字列はコマンド入力ウィンドウやメッセージ出力ウィンドウ上のテキスト内に表示される。
文字列については 4.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
この処理は戦闘員が相手陣による戦闘コマンド実行を受けて、呪文、踊り、炎・吹雪の対策を講じるようなものだろう。 前節ではこれらの三つのタイプは重複しないと述べたが、上記のコードでは重複したコマンドが存在したとしても対応できる。
付録のデータについて、コマンドの名前、メッセージ内容、さらに処理アドレスを見ても実態を特定しづらいオブジェクトがある。 それについてここで補足しておく。
ダメージの応酬や状態の変化しか行わないようなコマンドは、先ほど述べた属性値から簡単にその振る舞いが理解できるが、
一部の特殊なコマンドは別途処理コードが存在する。
そのようなものについてはサブルーチン $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
|
(なし) |
併せて、モンスターデータのコマンドリストも参照して欲しい。