14、バトル編6 アクションプロセス 

 この項目では、アクションプロセスを扱います。

アクションプロセスとは、

・呼び出されたときに決められた人の、
・決められた相手への
・決められた特殊技能またはアイテムの効果を呼び出し、(「アイテム効果」「特殊技能効果」)
・その効果を画面に反映する(「今の各キャラクター状態表示」)

プロセスです。

なお、手順では飛ばされますが、
このプロセスの先頭で、
番が回ってきた人が行動可能かを判定し、
行動不能だったら一気にアクションプロセス終了まで飛ばすという処理が必要です。

この講座の戦闘不能の敵は、コマンド入力はしているけれど、行動不可能だからアクションプロセスはないという処理になっています。

 懐かしいコモンイベントと、最近作ったばっかりのコモンイベントを1つずつ呼び出して使います。前者「〜〜効果」はおまけでさらっと言っただけ&場合分けを網羅していないコモンイベントだったりするんで、解説しましょう。

コモンイベント「〜〜効果」は、
・アイテムや特殊技能の効果にあわせて、主人公または敵のパラメータが変化して、
・特殊技能アイテムに対応した効果音や戦闘アニメが出てくる
(戦闘アニメ表示)
 コモンイベントのことです。

アイテム効果と、 「〜〜効果」の効果音や戦闘アニメ……は、「戦闘アニメ表示」(8、アイテム)の戦闘時の場合に、表示する座標や枚数をいじる、または対象に敵を増やす動作を行えば終了。

ということで、前半に行きましょう。 ずっと前にとっておいた、ダメージ計算式のメモは残ってますか! メモは残ってなくっていいんで、式覚えてますか?

よし、じゃあ、アイテムや特殊技能の効果にあわせて、主人公または敵のパラメータが変化するというプロセスを細かく分割しましょう。

0,特殊技能効果または、アイテム効果を呼び出す
以下、特殊技能の場合を解説
1,能動者のMPを特殊技能に応じて引く
2,能動者と受動者の技能ごとに決まっている(はず)の正否判定に用いる能力の能力値を取得
3,それを用いて、正否判定をする
→失敗の場合 表示する戦闘アニメを失敗を示すものに変更する
→成功の場合
4,能動者と技能者の技能ごとに決まっている(はず)の正否判定に用いる能力値を取得
5,それを用いて、威力計算をする
6,受動者のパラメータを威力に応じて変化させる
 と、なると思います。

成功判定に使う能力値、威力計算に使う能力値、受動者の変化するパラメータは何かを、設定してない場合は今から設定すればいいので、UDBへ戻りましょう。そのとき、敵と味方の能力値IDと、特殊設定で決めた選択肢の内蔵する数値をあわせておくととても楽です。

第1段階は文字のまま。
 2、4段階目は、まず特殊技能から、何の能力を判定に使うかを引き出し、その能力値を敵と味方からもらってきます。
補足的に言うと、2段階目の、「成功判定」がそもそもあるかないかの場合分けもほしいですね。能動側、受動側のどっちでもいいんですけど、判定能力に(判定なし)とつけておき、その場合だけ除外して、威力計算にいけた方がいいと思います。回復魔法や補助魔法に成功判定があると、すごいストレスフルなゲームになる気がしますから。
あと、ここでは、全体攻撃の場合は、受動者の数だけ正否判定、威力判定を咬ませます。そこにいる人が倒れていようとも、いなくとも。戦闘で終わったかを管理するのは、「戦闘不能でない人の人数」だけだったりするし、後でちゃんと修正します。

 3、5段階目は、もらってきた能力値の値を使って計算、それを用いて成功したかの判定、ダメージの計算をします。 威力判定の場合の補足ですが、回復魔法や補助魔法は使う人だけの能力に依存した方がプレイヤーにはわかりやすいと思います。また、アイテムなど、使う人によって効果が変わらないものってありますよね!
そう言う場合など、能力による依存度が技能によって異なる場合を考えるときは、能動能力依存度または受動能力依存度を決めておいて、威力計算の式に組み込めばいいのではと思います。属性補正的に。

 6段目の補足というか、解説事項は、0以下になったり、最大値を超えてしまう場合の処理と、受動者の変化するパラメータに、状態異常変化が含まれている場合ですね。

まず、0以下になったり、最大値を超えてしまう場合の処理は、
後のパラメータ表示の前に、
・各敵・味方のHP・MPを調べる
・それらのうち、0以下になっているものがあった場合、0に代入する形で訂正する
また、HPが0になっていたときにその人の状態異常を「戦闘不能」にする。
・それらのうち、最大値を超えているものがあった場合、最大値に代入する形で訂正する

ことをします。
最大値取ってないや、と言う方は、セットアッププロセスで最大HPと最大MPも入手する過程を入れておきましょう。
この過程をさらっと忘れると、最大HP・最大MPの最大の意味がなくなりますね。最大MPがないゲームは知っていますけど、HPは最大値があった方がよいでしょう。

また、状態異常が起こる場合について。HP切れによる戦闘不能は上で上げたとおりでいいんですけど、それ以外の状態異常について。多くのゲームは、一度にたくさんの状態異常になることはないです
「誰それが麻痺になっているかスイッチ的変数」を全員分前状態異常分コンプリートすればいいだけなので、全部かかりうると言うのが、必要な変数の数は多いけれど単純な方法
ですが、なるとしても3つぐらいですね。麻痺と眠りと毒に同時になるゲームというのもすごいサドゲーな気がしますけど。

ということで、ある状態異常にかかったという特殊技能の効果を受け取ったとき、本当にその状態異常になれるのか判断し、その通りに処理する必要があります。

ということで、ここでも、コモンイベント、「状態異常変化(アクション)」 を作ります。このコモンイベントで果たすべき内容はさっき言ったことですが、
それを詳しく分解してみると、
・特殊技能の効果によって、なる予定の状態異常と、受動者の今の状態異常を取得
・優先順位によって、その状態異常がなれるか判定
・なれる場合は、受動者の状態をなる予定の状態異常にし、なれない場合は、その状態異常にはしないでそのままにする
 といった感じです。
このイベントで使う優先順位は、状態異常のDBで決めてください、と言うことなのですが、2つの考え方があると思います。

優先順位を、層のようなものだと考えて、その層の中の状態異常に1つかかっているときは、同じ層の状態異常にはかからない。この場合、メニューで表示される毒や麻痺と言った戦闘状態と、戦闘時にだけかかる補助的ステータスが違う層になるでしょう。
優先順位の高い状態異常に新たにかかる場合、前の状態異常は治る、と言うか上書きされる。優先順位が高い状態異常とは、戦闘不能のことではないでしょうか。

実際にはこれらは組み合わされることが多いかと思いますが、上手く組み合わせてください。最初に上げた考え方の方が処理と状態異常の格納場所を用意する点で簡便だと思います。 全体攻撃で状態異常になる場合が出てきたら、全員分処理をかませてください。

……ということで、アクションプロセスの解説を終了させてもらいます。次は、クリンナッププロセスを解説しますね。

おまけ

コマンドプロセスの追記内容
ある人のコマンドプロセスを呼び出す前に、
・その人の状態を把握し、
その人が行動可能な状態だったら、コマンドプロセスをそこで終了する  ことが必要でした。
敵は飛ばしてしまえばいいのですが、味方は出てはいけませんね、選択肢。
重大な抜けが出て、すみません。

また、質問スレッドからネタを拝借したり、自分が思いついていた簡単なネタのヒント集。どうして質問スレッドで回答しないのかという理由は、おまけで語らせてもらいます。

・2ターンかけた必殺技 状態異常(アイコン的には無表示)を使って、アクションプロセスにて 1ターン目、2ターン目と分け、2ターン目の場合、技が発動するコマンドをつっこむ。
・歌など、使用したターンだけ効果のあるもの 1ターンだけ、かかる状態異常。自動的にターンの最初で実行してあげるように設定した方が親切。
・カウンター これもまた状態異常を使う。アクションプロセス時に、受動者がその状態異常の時、攻撃が命中したり、ダメージを受ける場合などに、成功判定を作って、成功したらこっちの通常攻撃の効果を入れる。
・HPが低い状態で出てくる、強力な逆転用の技 状態異常を利用。通常攻撃でそうなるのか、行動時にコマンドが勝手にすり替わってくれるのかは知らないが、その場合に、通常攻撃を入力したら、技をすり替える。
 

前の項目へ 講座トップへ 次の項目へ

 

 

 

 

 

 

 

 

inserted by FC2 system