WOLF RPGエディター(ウディタ)[3.337]/基本システム【サイトトップへ戻る】
■戦闘処理の処理構造
(更新:2024/05/18)


戦闘処理の処理構造について解説します。


ショートカット
■戦闘処理の基本
■可変DBや変数について
■データID(スロット)について
■戦闘処理の流れを解説
■アイテムや技能を選択する処理を解説
■攻撃や回復を実行する処理の流れを解説

基本システムについての説明は別ページに記載しています。
【基本システムについての説明を見る】


  
■戦闘処理の基本

戦闘処理は基本的に以下のような流れで実行されます。

【1】マップイベントでコモン[028]or[037]を呼び出す。
    
【2】コモン[028]or[037]からコモン[188]を呼び出す。(以降は全てコモン[188]からの処理です)
    
【3】戦闘準備。(主人公・敵キャラ・背景などの画像を表示し、戦闘用の可変DBの準備)
    
【4】[戦闘]or[逃走]の選択。(1ターン目のみ表示。2ターン目以降は逃走失敗時に次ターンで表示)
    
【5】主人公の行動内容を登録。(逃走に失敗した場合は処理されません)
    
【6】敵キャラの行動内容を登録。
    
【7】主人公と敵キャラの行動順を敏捷性の高い順に登録。
    
【8】ターン処理を実行。(どちらかが全滅した場合はその時点で戦闘終了→【10】へ移行)
    
【9】ターン終了。
    
【4】へ戻る。



戦闘が終了した場合は以下の処理へ移行します。

【10】戦闘終了。(主人公のHPなどを移動用の可変DBに設定。勝利の場合は経験値やお金を獲得)
    
【11】戦闘用の画像を消去し、元のBGMに戻す。(敗北の場合はゲームオーバーイベントを実行)
    
【12】呼び出し元の【1】のマップイベントへ処理を戻す。



まずマップイベントからコモンイベント[028:◆バトルの発生]コモンイベント[037:◇ランダムエンカウント処理]を呼び出します。

コモンイベント[028:◆バトルの発生]の方は、ボス戦などの指定した敵グループと戦う時に使います。

コモンイベント[037:◇ランダムエンカウント処理]の方は、指定した歩数を歩くと敵が出現する処理を実行する時に使います。
【エンカウントについての説明を見る】


そしてコモンイベント[028:◆バトルの発生]コモンイベント[037:◇ランダムエンカウント処理]から
コモンイベント[188:X◆戦闘処理]が呼び出されます。

このコモンイベント[188:X◆戦闘処理]は戦闘が終了するまで実行し続け、
コモンイベント[188:X◆戦闘処理]から他のコモンイベントを呼び出して戦闘処理全体を動かします。



コモンイベントの戦闘に関する処理は、
戦闘用・内部処理」「戦闘用・画面処理」「戦闘用・実行処理」「変更可」の4つのジャンルに分かれています。



戦闘用・内部処理 コモンID[135〜176] データベースの情報のやり取りや計算処理などを実行します。
戦闘用・画面処理 コモンID[178〜186] ピクチャの表示など、ゲーム画面上に画像を表示する処理を実行します。
戦闘用・実行処理 コモンID[188〜201] 戦闘の処理全体を動かす設定があり、
必要に応じてコモンID[135〜186]を呼び出して実行しています。
変更可 コモンID[203〜206] 戦闘の処理でゲーム制作者がオリジナルの設定を導入したい時に使います。



コモンイベントは処理内容ごとに細かく分かれています。

基本的に「呼び出せば自動的に処理してくれる」と言った感じになっており、例えば…
SEを鳴らしたい → コモンイベント[049:X[共]システムSE再生]を呼び出す
と言った感じに、1つの処理に特化した複数のコモンイベントを繋ぎ合わせて、戦闘処理全体を処理していきます。

このように1つの処理に特化したコモンイベントを設定しておく事で…
SEを鳴らす処理を改造したい → コモンイベント[049:X[共]システムSE再生]を改造する
と言ったように、改造する時にも細かく分かれていた方が改造しやすくなります。



基本システムのピクチャ番号は「10000〜19999」を使用しています。

また主人公の行動を決定する選択肢の表示やアイテム・特殊技能の一覧表示では、万能ウィンドウを使用しています。


当ページには万能ウィンドウに関する説明が無いため、万能ウィンドウに関しては、以下のページをご覧ください。
【万能ウィンドウの説明を見る】



コモンイベントの処理は複数のコモンイベントを繋ぎ合わせて処理しているため、
処理構造を把握しないで改造を行うと原因不明のバグが発生する可能性があります。


▲トップへ戻る▲


  
■可変DBや変数について

戦闘の処理では、戦闘用の可変DBを使って現在のHPや攻撃力などを保存します。

そのため、戦闘中に主人公の攻撃力が2倍になっても、マップ移動時の攻撃力(可変DB[0:主人公ステータス])には変化が無く、
戦闘終了後に元の攻撃力に戻すような処理は必要ありません。



戦闘中に使用される可変DBは以下のとおりです。

可変DB
(クリックで説明ページを表示)
使用内容
10:×┏ 戦闘一時ステータス[基] 主人公や敵キャラのHPや攻撃力などを設定します。
主人公は可変DB[0:主人公ステータス]からデータをコピー。
敵キャラはユーザーDB[9:敵キャラ個体データ]からデータをコピー。
11:×┣ 属性耐性計算結果 主人公や敵キャラの属性の耐性を設定します。
主人公は可変DB[3:┣ 属性耐性]からデータをコピー。
敵キャラはユーザーDB[10:┣ 属性耐性]からデータをコピー。
12:×┣ 状態耐性計算結果 主人公や敵キャラの状態異常の耐性を設定します。
主人公は可変DB[4:┣ 状態耐性]からデータをコピー。
敵キャラはユーザーDB[11:┗ 状態耐性からデータをコピー。
13:×┣ 状態リスト 主人公や敵キャラの状態異常を設定します。
主人公は可変DB[5:┗ 状態リスト]からデータをコピー。
敵キャラは状態異常なしで戦闘開始。
14:×┣ コマンド処理リスト 次のターンの主人公や敵キャラの行動内容を行動順に設定します。
15:×┗ お宝リスト 戦闘勝利時に獲得する経験値やお金、アイテムの種類などを保存する時に使います。
17:×主人公一時DB 項目[0〜1]は戦闘終了時に全回復設定になっている場合に全回復の値の取得で使います。
項目[18〜20]は行動内容の決定やアイテム・特殊技能の前回の選択位置を記憶します。
18:基本システム用変数 データ[4:現在パーティー人数]データ[68〜74]の戦闘に関する変数を使います。
19:万能ウィンドウ一時DB [通常攻撃]や[特殊技能]などの行動内容を決定する選択肢の表示の他、
使用するアイテムや特殊技能の一覧を表示する時にも使います。



コモンイベントのセルフ変数は、基本的にそのコモンイベント内の処理だけに使われます。

複数のコモンイベントをまたいで数値や文字列の情報を共有する時には、可変DBを使います。

なお、戦闘の処理ではシステムDBにある「文字列変数」「通常変数」「予備変数」は使っていません。


▲トップへ戻る▲


  
■データID(スロット)について

可変DB[10〜13]のデータIDは、以下のように設定されています。

主人公 データID[0〜9] パーティの並び順
敵キャラ データID[10〜19] 敵グループの並び順



▼データIDと戦闘画面の並び順




主人公はパーティの並び順なので、「ウルファール」「P・G・エディ」「夕一」などと並んでいる場合は…
データID[0] ウルファール
データID[1] P・G・エディ
データID[2] 夕一
となり、「夕一」「P・G・エディ」「ウルファール」と並んでいる場合は…
データID[0] 夕一
データID[1] P・G・エディ
データID[2] ウルファール
となります。



敵キャラはユーザーDB[13:敵グループ]項目[0〜6]の並び順になります。

例えば…

の場合は、以下のようになります。
データID[10] なし
データID[11] 巨大ニワトリ
データID[12] 巨大ニワトリ
データID[13] なし
データID[14] なし
データID[15] なし
データID[16] なし

主人公の場合は最初のデータID[0]に必ず主人公が設定されていますが、
敵キャラの場合は必ずしもデータID[10]に敵キャラが登録されているとは限りません。

そのため、コモンイベント内の処理では可変DB[10:×┏ 戦闘一時ステータス[基]]項目[3:【戦闘不能?】]を調べて、
戦闘不能になっているかどうかで、指定したデータIDのキャラがいるかどうかを判断しています。



このデータIDは「9以下=主人公」「10以上=敵キャラ」と判断する事ができるので、
例えば敵キャラが別の敵キャラに変身する処理を行うコモンイベント[168:X[戦]変身判定]では、
データID9以下=主人公」と判断して、主人公の場合は変身の処理が実行されないようにしています。

他にも「9以下」「10以上」の条件分岐はかなり多く使われています。



なお、セルフ変数の名前にある「対象スロット」「発動者スロット」などの「スロット」は、このデータIDの事を言っています。


▲トップへ戻る▲


  
■戦闘処理の流れを解説

戦闘の処理の流れを解説します。



コモンイベントは「コモンID(行数)」で「[188(40)]」などと表記しています。

また「ラベル「戦闘終了処理」(174)へ移動」の「(174)」の部分は、移動先の行数を表しています。



下記の一覧は大まかな処理の流れが書かれているだけであり、変数の値の変化やSEの演奏などの細かい設定は書かれていません。

細かい設定内容については、ウディタのコモンイベントの設定画面をご覧ください。

各コモンイベントの処理構造については、YADOT-WOLFにある各コモンイベントの解説ページをご覧ください。
【コモンイベントの一覧を開く(コモン名をクリックすると、そのコモンの解説ページが表示されます)】



▼指定した敵グループを戦う場合
マップイベントから[028]を呼び出し、
[028]から[188]を呼び出す。
▼エンカウントで敵グループが出現する場合
マップイベントから[037]を呼び出し、
敵が出現する条件になっている場合は[188]を呼び出す。

[188(9-35)]戦闘用のBGMを演奏。
[188(40)] [067]戦闘開始時の白フラッシュを表示。
[188(41)] [189]背景の表示や可変DBを準備。
[188(41)] [189(12)] [180]背景を表示。
[188(41)] [189(13)] [079]パーティ人数集計。
[188(41)] [189(15)] [140]可変DB[18]データ[70・71]を初期化。
[188(41)] [189(16-21)可変DB[10〜14]を初期化。
[188(41)] [189(22)]処理終了。
[188(42)] [190]装備補正などの計算を行い、主人公や敵キャラを画面上に表示。
[188(42)] [190(14-32)]■回数付きループ [ CSelf20[繰り返し回数] ]回
      パーティにいる主人公を1キャラずつ準備。
[188(42)] [190(14-32)](16) [105]パーティの並び順から主人公IDを取得。
[188(42)] [190(14-32)](17) [143]主人公のデータを可変DB[10〜13]に保存。
[188(42)] [190(14-32)](17) [143(231・236・241・244)] [151]戦闘コマンドを設定。
[188(42)] [190(14-32)](17) [143(255)]処理終了。
[188(42)] [190(14-32)](18-20)装備や状態異常を加えたパラメータを可変DB[10]に設定。
[188(42)] [190(14-32)](21-29)主人公のステータス画面を表示。
[188(42)] [190(38-81)]■回数付きループ [ CSelf20[繰り返し回数] ]回
      敵グループにいる敵キャラを1キャラずつ準備。
[188(42)] [190(38-81)](68) [144]敵キャラのデータを可変DB[10〜13]に保存。
[188(42)] [190(38-81)](69) [146]可変DB[10]項目[44〜65]にて、敵キャラのパラメータなどを設定。
[188(42)] [190(38-81)](70-78)敵キャラを画面上に表示。
[188(42)] [190(82)]処理終了。
[188(43)] [203]制作者が設定した戦闘開始時に実行するイベントを実行。
[188(45-50)]主人公が全員戦闘不能などで戦闘が終了した場合は、ラベル「戦闘終了処理」(174)へ移動。
[188(52-173)]■ループ開始
       戦闘が終了するまでこの中でループし続ける。ループ1回=1ターン。
[188(52-173)](54) [191][戦闘]or[逃走]の処理の他、全ての主人公と敵キャラの行動内容を決定する。
[188(52-173)](54) [191(21-30)][戦闘]or[逃走]を表示しない場合は、ラベル「戦闘終了処理」(95)へ移動。
       逃走に失敗した場合は、ラベル「戦闘終了処理」(152)へ移動。
[188(52-173)](54) [191(31)]●ラベル「第一コマンド」
[188(52-173)](54) [191(35)]逃走できない場合は[戦闘]or[逃走]を表示しないので、
     ラベル「戦闘終了処理」(95)へ移動。
[188(52-173)](54) [191(41-72)][戦闘]or[逃走]の選択肢を表示。
[188(52-173)](54) [191(73-83)]■ループ開始
      [戦闘]or[逃走]の選択肢をどちらか選ぶまでループし続ける。
[188(52-173)](54) [191(85-91)][戦闘]or[逃走]の選択肢を消去。
      逃走を選択した場合は【イベント処理中断】を実行。
[188(52-173)](54) [191(95)]●ラベル「コマンド選択開始」
[188(52-173)](54) [191(96)] [157]可変DB[14]を初期化。
[188(52-173)](54) [191(99-148)]■ループ開始
       パーティにいる主人公全員の行動を決定するまでループし続ける。
[188(52-173)](54) [191(99-148)](104)1人目の主人公でキャンセルが押されたらラベル「第一コマンド」(31)へ移動し、
         [戦闘]or[逃走]の選択肢へ戻る。
[188(52-173)](54) [191(99-148)](107) [141]可変DB[10]の並び順から主人公IDを取得。
[188(52-173)](54) [191(99-148)](108-112)AI行動以外の主人公の行動内容を全て決定した場合は分岐し、
           【ループ中断】を実行してAI行動の行動設定へ移行。
[188(52-173)](54) [191(99-148)](113) [192]処理中の主人公の行動を決定。
[188(52-173)](54) [191(99-148)](113) [192(32)]●ラベル地点「最初」
[188(52-173)](54) [191(99-148)](113) [192(33-49)]行動を決定する状態ではない場合は【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(53-60)]戦闘不能の場合は【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(66-73)]状態異常で行動不能の場合は【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(74)]●ラベル地点「コマンド開始」
[188(52-173)](54) [191(99-148)](113) [192(75)] [155]前に選択した位置を取得。
[188(52-173)](54) [191(99-148)](113) [192(80-88)][通常攻撃][特殊技能]などの選択肢を可変DB[19]に登録。
      選択肢のデータが無い場合は【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(97-127)][通常攻撃][特殊技能]などの選択肢を万能ウィンドウで表示。
[188(52-173)](54) [191(99-148)](113) [192(137-146)]■ループ開始
       各ターン始めに決定キーを押し続けている場合は、
       決定キーを離すまではループし続ける。
[188(52-173)](54) [191(99-148)](113) [192(157)] [065][通常攻撃][特殊技能]などの選択肢を決定する処理を実行。
[188(52-173)](54) [191(99-148)](113) [192(163)] [064][通常攻撃][特殊技能]などの選択肢を消去。
[188(52-173)](54) [191(99-148)](113) [192(170)]●ラベル地点「キャンセル」
     [何もしない]でキャンセルが押された場合はここに来る。
[188(52-173)](54) [191(99-148)](113) [192(172)][通常攻撃][特殊技能]などの選択肢でキャンセルが押された場合、
     【イベント処理中断】を実行して、前の主人公に戻す。
[188(52-173)](54) [191(99-148)](113) [192(175-223)][何もしない]の選択肢を表示する場合は分岐。
[188(52-173)](54) [191(99-148)](113) [192(175-223)](177-209)[何もしない]の選択肢を万能ウィンドウで表示。
[188(52-173)](54) [191(99-148)](113) [192(175-223)](210) [065][何もしない]の選択肢の決定処理を実行。
[188(52-173)](54) [191(99-148)](113) [192(175-223)](211) [064][何もしない]の選択肢を消去。
[188(52-173)](54) [191(99-148)](113) [192(175-223)](214)[何もしない]の選択肢でキャンセルが押された場合は、
          ラベル地点「キャンセル」(170)へ移動。
[188(52-173)](54) [191(99-148)](113) [192(175-223)](217)[何もしない]の選択肢で左右キーの場合は、
          ラベル地点「コマンド開始」(74)へ移動。
[188(52-173)](54) [191(99-148)](113) [192(175-223)](222)[何もしない]で決定が押された場合は、
          ラベル地点「コマンド選択」(226)へ移動。
[188(52-173)](54) [191(99-148)](113) [192(226)]●ラベル地点「コマンド選択」
     [何もしない]で決定が押された場合はここに来る。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157]行動内容を可変DB[14]に登録する処理を実行。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(13-20)]1つ前の主人公に戻すため、
       可変DB[14]の登録位置を1つ前に戻し、
       【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(26-29)]1人目の主人公の行動選択前に可変DB[14]
      初期化して、【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(44)] [158]アイテムの選択&使用対象者の選択。
※この部分は当ページ下記にある
 ■アイテムや技能を選択する処理を解説
 をご覧ください。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(49)] [159]技能の選択&使用対象者の選択。
※この部分は当ページ下記にある
 ■アイテムや技能を選択する処理を解説
 をご覧ください。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(59-63)][防御]などのコマンド技能を選択した時の登録準備。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(68-70)][何もしない]を選択した時の登録準備。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(73-79)]アイテムや技能の選択をキャンセルしたため、
      【イベント処理中断】を実行。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(80-120)]選択した行動内容を可変DB[14]に登録。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(137-171)]AIとして可変DB[14]に登録。
       AIの行動内容は[191]で設定するため、
       ここでは主に敏捷性の設定を行う。
[188(52-173)](54) [191(99-148)](113) [192(228)] [157(174)]処理終了。
[188(52-173)](54) [191(99-148)](113) [192(237)]技能やアイテムの一覧でキャンセルが押された場合は、
     ラベル地点「コマンド開始」(74)へ移動。
[188(52-173)](54) [191(99-148)](113) [192(256-274)]即実行の技能を発動する場合は分岐して技能を発動し、
       ラベル地点「最初」(32)へ戻って、行動内容を再び選択。
[188(52-173)](54) [191(99-148)](113) [192(275)]処理終了。
[188(52-173)](54) [191(99-148)](114-146)行動を決定した場合は次の主人公へ移行。
           1つ前の主人公に戻る場合は[157]を実行。
           行動選択中に戦闘が終了した場合は【イベント処理中断】を実行。
[188(52-173)](54) [191(152)]●ラベル地点「AI処理開始」
     逃走を失敗した場合は(28)からここへ移動して来る。
[188(52-173)](54) [191(153-162)]AI行動の場合は[193]を呼び出して行動を決定する。
       逃走を失敗した場合は敵キャラのみ行動を決定する。
[188(52-173)](54) [191(163)]処理終了。
[188(52-173)](58-62)「逃走」を選択した場合はラベル地点「逃走処理」(188)へ移動。
          逃走失敗した場合は(60)にある●ラベル地点「逃走戻り」へ戻ってきて、
          [191]を呼び出し、敵キャラの行動内容だけを設定。
[188(52-173)](65-67)戦闘が終了した場合は【ループ中断】を実行し、戦闘終了の処理へ移行。
[188(52-173)](70) [194]敏捷性順に可変DB[14]の並び順を変更。
[188(52-173)](71) [204]制作者が設定したターン開始時に実行するイベントを実行。
[188(52-173)](73-78)戦闘が終了している場合はラベル「戦闘終了処理」(174)へ移動。
[188(52-173)](83-96)■回数付きループ [ CSelf23[繰り返し回数] ]回
          ターン開始前に全ての主人公のパラメータを更新。
[188(52-173)](100-113)■回数付きループ [ CSelf23[繰り返し回数] ]回
           ターン開始前に全ての敵キャラのパラメータを更新。
[188(52-173)](116) [195]全ての主人公と敵キャラの行動を敏捷性順に1キャラずつ実行していく。
[188(52-173)](116) [195(16-49)]■回数付きループ [ CSelf19[全アクション数] ]回
       全キャラの行動し終えるまでループし続ける。
[188(52-173)](116) [195(16-49)](26) [139]自分の番が来た時に実行される状態異常を実行。
[188(52-173)](116) [195(16-49)](28) [196]行動可能かどうか、技能発動のSPが足りているかどうかなどを判定。
   「〇〇の攻撃!」などの文字列も表示。
[188(52-173)](116) [195(16-49)](31) [197]行動可能だったので、実際に行動内容を実行。
[188(52-173)](116) [195(16-49)](31) [197(7-9)]可変DB[14]から行動者、行動内容、ターゲットの情報を取得。
[188(52-173)](116) [195(16-49)](31) [197(13-51)]アイテム使用を含めた特殊技能の発動回数を取得。
[188(52-173)](116) [195(16-49)](31) [197(56-76)]敵キャラが逃走を実行した時の処理。
[188(52-173)](116) [195(16-49)](31) [197(79-81)]特に行動内容が無い場合は【イベント処理中断】を実行。
[188(52-173)](116) [195(16-49)](31) [197(85-95)]イベント発動の場合は、そのイベントを呼び出し、
      呼び出したイベントが終了したら【イベント処理中断】を実行。
[188(52-173)](116) [195(16-49)](31) [197(111-215)]■回数付きループ [ CSelf20[発動回数] ]回
       指定した回数だけ行動(連続攻撃など)を実行。
       ※この部分は当ページ下記にある
        ■攻撃や回復を実行する処理の流れを解説をご覧ください。
[188(52-173)](116) [195(16-49)](31) [197(111-215)](118-147)武器依存ではない行動を実行。
[188(52-173)](116) [195(16-49)](31) [197(111-215)](150-211)武器の行動を実行。
[188(52-173)](116) [195(16-49)](31) [197(217)]処理終了。
[188(52-173)](116) [195(16-49)](34-41)戦闘が終了していたら分岐し、【イベント処理中断】を実行。
[188(52-173)](116) [195(16-49)](43) [139]自分の番が終わった時に実行される状態異常を実行。
[188(52-173)](116) [195(16-49)](45) [168]行動終了時に変身する場合は実行。
[188(52-173)](116) [195(52)]処理終了。
[188(52-173)](117) [198]1ターンの処理が終了した時に1キャラずつ状態異常と変身有無をチェック。
[188(52-173)](118) [205]制作者が設定したターン終了時に実行するイベントを実行。
[188(52-173)](120-125)戦闘が終了した場合は【ループ中断】を実行し、戦闘終了の処理へ移行。
[188(52-173)](130-143)■回数付きループ [ CSelf23[繰り返し回数] ]回
           ターン開始前に全ての主人公のパラメータを更新。
[188(52-173)](147-160)■回数付きループ [ CSelf23[繰り返し回数] ]回
           ターン開始前に全ての敵キャラのパラメータを更新。
[188(52-173)](163-169)戦闘が終了した場合は【ループ中断】を実行し、戦闘終了の処理へ移行。
[188(174)]●ラベル「戦闘終了処理」
[188(175)] [199]主人公のパラメータを戦闘用の可変DBから移動時の可変DBへ複製。
[188(176)] [200]経験値やお金、アイテムなどを獲得する処理を実行。
   主人公が逃走したり敗北したりした場合は獲得しません。
[188(176)] [200(22)] [186]獲得した経験値やお金を表示。
[188(176)] [200(24)] [186]獲得したアイテムを表示。
[188(176)] [200(26)]■キー入力:CSelf10[一時変数A][入力待ち] 決定(10) キャンセル(11)
     獲得した物の確認のため、決定かキャンセルが押されるまで待機。
[188(176)] [200(32-59)]■回数付きループ [ CSelf97[入手アイテムシステム限界数] ]回
      可変DB[15]に保存された獲得したアイテムを取得。
[188(176)] [200(69-114)]■回数付きループ [ CSelf20[繰り返し回数] ]回
       獲得した経験値を主人公1人ずつ増やし、レベルアップや特殊技能の習得などを表示。
[188(176)] [200(115-119)]獲得したお金を所持金(可変DB[6]項目[0])に加算。
[188(176)] [200(123)] [186]獲得品の表示を消去。
[188(176)] [200(126)]処理終了。
[188(177)] [201]主人公や敵キャラ、背景などの画像を消去。
[188(177)] [201(16-20)]■回数付きループ [ CSelf20[対象ID] ]回
      主人公を1キャラずつ消去。
[188(177)] [201(24-28)]■回数付きループ [ CSelf21[パーティ人数] ]回
      敵キャラを1キャラずつ消去。
[188(177)] [201(34-79)]■回数付きループ [ CSelf21[パーティ人数] ]回
      戦闘終了時に戦闘不能の解除やHP・SPの全回復を実行する場合は、1キャラずつ処理。
[188(177)] [201(83)] [061]ウェイトの時間を設定。決定キーやサブキーを押していると設定時間が短くなる。
[188(177)] [201(85)] [180]背景を消去。
[188(177)] [201(87)]処理終了。
[188(187-228)]■回数付きループ [ 0 ]回
       このループ内へはラベル「逃走処理」で移動して来ます。
[188(187-228)](188)●ラベル「逃走処理」
          [戦闘]or[逃走]で逃走を選択した時にここへやってくる。
[188(187-228)](194-217)逃走に成功したので、可変DB[15]にあるこの戦闘で獲得した経験値やアイテムを初期化し、
            主人公1キャラずつステータス画面を消去して、ラベル「戦闘終了処理」(174)へ移動。
[188(187-228)](220-224)逃走に失敗したので「逃走に失敗した!」を表示し、ラベル「逃走戻り」(60)へ移動。
[188(233-244)]BGMを元に戻す。
[188(245-260)]敗北時にゲームオーバー用のコモンイベントを実行する場合はここで実行。
呼び出し元のマップイベントに戻って、戦闘処理終了。


▲トップへ戻る▲


  
■アイテムや技能を選択する処理を解説

アイテムや技能を選択する処理について解説します。



アイテムの選択はコモンイベント[158:X[戦]アイテム選択実行]
技能の選択はコモンイベント[159:X[戦]技能選択実行]で処理しています。

基本的に「アイテムや技能を選択 → 誰に使うのかを選択」となっていますが、アイテムを使用すると技能が発動する場合は、
[159]でアイテムを選択 → [159]を呼び出して技能の仕様で誰に使うのかを選択」となっています。



▼アイテム選択
[157(44)] [158]アイテムの選択&使用対象者の選択。
[157(44)] [158(10)]●ラベル地点「アイテム開始」
     アイテムを使用する者を選択する場面でキャンセルが押された場合は、
     ここへ戻ってきて再びアイテムの選択を実行します。
[157(44)] [158(12-29)]アイテムを選択する画面を表示。
[157(44)] [158(31-39)]アイテムを選択したらアイテムの一覧を消去。
[157(44)] [158(47-49)]アイテムの選択でキャンセルが押されたら、【イベント処理中断】を実行。
[157(44)] [158(67)] [161]「味方一人」の場合、アイテム使用対象者となる主人公1人を選択。
[157(44)] [158(67)] [161(11-26)]パーティに一人しか居ない状況で、
      「自分以外の味方一人」の技能を発動するアイテムを選択した時には分岐し、
      警告を表示後にイベント処理中断を実行して、アイテムの選択に戻す。
[157(44)] [158(67)] [161(27-98)]■ループ開始
      回復させる主人公を選択するまでループし続ける。
[157(44)] [158(67)] [161(27-98)](30-38)「自分以外の味方一人」で自分を選択している場合は、選択位置を次の人へ移動。
[157(44)] [158(67)] [161(27-98)](40-41)主人公全員の点滅を停止し、選択中の主人公のみを点滅。
[157(44)] [158(67)] [161(27-98)](43)■キー入力:CSelf20[キー入力1][入力待ち] 4方向 決定(10) キャンセル(11)
[157(44)] [158(67)] [161(27-98)](46-54)決定かキャンセルを押されたら、【ループ中断】を実行。
[157(44)] [158(67)] [161(27-98)](57-96)押された方向キーに合わせて選択する主人公を変える。
[157(44)] [158(67)] [161(100)]処理終了。
[157(44)] [158(71)]「自分自身」の場合は、アイテム使用者をアイテム使用対象者にする。
[157(44)] [158(74-90)]「味方全員」の場合は、主人公全員を点滅させ、キーが押されたら点滅を停止。
[157(44)] [158(96・111・121)] [159]アイテムを使用すると技能が発動する場合は、
   技能の仕様でアイテム使用対象者を選択する。
[157(44)] [158(131)]アイテム使用対象者の選択でキャンセルが押された場合は、
     ラベル地点「アイテム開始」(10)へ戻り、アイテムの選択を再実行。
[157(44)] [158(139)]処理終了。

▼技能選択
[157(49)] [159]発動する技能の選択&技能使用対象者を選択。
   なお、使用すると技能が発動するアイテムを選択した場合もこの[159]が呼び出され、
   技能を使用する対象者の選択を行います。
   この場合、イベント処理が終了した時には[157]ではなく、[158]に戻ります。
[157(49)] [159(14-38)]使用すると技能が発動するアイテムを選択した場合は技能IDを取得。
[157(49)] [159(43-103)]技能を選択する画面を表示する場合は分岐。
[157(49)] [159(43-103)](52)●ラベル地点「技能選択」
[157(49)] [159(43-103)](57-73)技能の一覧を表示。
[157(49)] [159(43-103)](77-83)技能を選択したら技能の一覧を消去。
[157(49)] [159(43-103)](88-91)技能の選択でキャンセルが押されたら、【イベント処理中断】を実行。
[157(49)] [159(43-103)](94-97)技能を選択した場合は、ラベル「使用処理2」(108)へ移動。
[157(49)] [159(108)]●ラベル地点「使用処理2」
[157(49)] [159(124-125)]「イベント呼出」の場合は分岐し、【イベント処理中断】を実行。
[157(49)] [159(133-136)]「自分自身のみ」の場合は分岐し、【イベント処理中断】を実行。
[157(49)] [159(141-159)]「味方一人」の場合は分岐。
[157(49)] [159(141-159)](143) [161]技能使用対象者となる主人公1人を選択。
[157(49)] [159(141-159)](143) [161(11-26)]パーティに一人しか居ない状況で、
      「自分以外の味方一人」の技能を選択した時には分岐し、
      警告を表示後に【イベント処理中断】を実行して、技能の選択に戻す。
[157(49)] [159(141-159)](143) [161(27-98)]■ループ開始
      回復させる主人公を選択するまでループし続ける。
[157(49)] [159(141-159)](143) [161(27-98)](30-38)「自分以外の味方一人」で自分を選択している場合は、
          選択位置を次の人へ移動する。
[157(49)] [159(141-159)](143) [161(27-98)](40-41)主人公全員の点滅を停止し、選択中の主人公のみを点滅。
[157(49)] [159(141-159)](143) [161(27-98)](43)■キー入力:CSelf20[キー入力1][入力待ち] 4方向 決定(10) キャンセル(11)
[157(49)] [159(141-159)](143) [161(27-98)](46-54)決定かキャンセルが押されたら、【ループ中断】を実行。
[157(49)] [159(141-159)](143) [161(27-98)](57-96)押された方向キーに合わせて選択する主人公を変える。
[157(49)] [159(141-159)](143) [161(100)]処理終了。
[157(49)] [159(145-159)](145-159)主人公の点滅を停止し、【イベント処理中断】を実行。
            キャンセルが押された場合で、
            技能を選択した場合はラベル「技能選択」(108)へ移動。
            アイテムを選択した場合はイベント処理中断で[158]へ戻る。
[157(49)] [159(162-186)]「味方全員」の場合は、
       主人公全員を点滅させ、キーが押されたら点滅を停止し、
       決定が押された場合は【イベント処理中断】を実行。
       キャンセルが押された場合で、
       技能を選択した場合はラベル「技能選択」(108)へ移動。
       アイテムを選択した場合は【イベント処理中断】[158]へ戻る。
[157(49)] [159(191-216)]「味方一人ランダム」の場合は、
       主人公全員をランダムに点滅させ、キーが押されたら点滅を停止し、
       決定が押された場合は【イベント処理中断】を実行。
       キャンセルが押された場合で、
       技能を選択した場合はラベル「技能選択」(108)へ移動。
       アイテムを選択した場合は【イベント処理中断】[158]へ戻る。
[157(49)] [159(219-248)]「自分以外の味方一人」の場合は分岐。
[157(49)] [159(219-248)](220)●ラベル地点「自分以外の味方一人」
[157(49)] [159(219-248)](221) [161]技能使用対象者となる主人公1人を選択。
[157(49)] [159(219-248)](221) [161(11-26)]パーティに一人しか居ない状況で、
      「自分以外の味方一人」の技能を選択した時には分岐し、
      警告を表示後に【イベント処理中断】を実行して、技能の選択に戻す。
[157(49)] [159(219-248)](221) [161(27-98)]■ループ開始
      回復させる主人公を選択するまでループし続ける。
[157(49)] [159(219-248)](221) [161(27-98)](30-38)「自分以外の味方一人」で自分を選択している場合は、
          選択位置を次の人へ移動する。
[157(49)] [159(219-248)](221) [161(27-98)](40-41)主人公全員の点滅を停止し、選択中の主人公のみを点滅。
[157(49)] [159(219-248)](221) [161(27-98)](43)■キー入力:CSelf20[キー入力1][入力待ち] 4方向 決定(10) キャンセル(11)
[157(49)] [159(219-248)](221) [161(27-98)](46-54)決定かキャンセルが押されたら、【ループ中断】を実行。
[157(49)] [159(219-248)](221) [161(27-98)](57-96)押された方向キーに合わせて選択する主人公を変える。
[157(49)] [159(219-248)](221) [161(100)]処理終了。
[157(49)] [159(219-248)](223-248)主人公の点滅を停止し、【イベント処理中断】を実行。
            キャンセルが押された場合で、
            技能を選択した場合はラベル「技能選択」(108)へ移動。
            アイテムを選択した場合は【イベント処理中断】[158]へ戻る。
            技能発動者と技能使用対象者が同じである場合は、
            警告文を表示後、ラベル「自分以外の味方一人」(220)へ移動。
[157(49)] [159(254-269)]「敵一体」の場合は分岐。
[157(49)] [159(254-269)](255) [162]技能使用対象者となる敵キャラ1体を選択。
[157(49)] [159(254-269)](255) [162(15-21)]敵キャラの並び順をセルフ変数に保存。
[157(49)] [159(254-269)](255) [162(27-101)]■ループ開始
       攻撃する敵キャラを選択するまでループし続ける。
[157(49)] [159(254-269)](255) [162(27-101)](29-43)■回数付きループ [ CSelf11[選択可能最大値] ]回
          指定した位置に敵キャラがいない場合は、次の位置へ移動。
[157(49)] [159(254-269)](255) [162(27-101)](48-49)敵キャラ全ての点滅を停止し、選択中の敵キャラのみを点滅。
[157(49)] [159(254-269)](255) [162(27-101)](50)■キー入力:CSelf20[キー入力1][入力待ち] 4方向 決定(10) キャンセル(11)
[157(49)] [159(254-269)](255) [162(27-101)](53-65)決定かキャンセルが押されたら、【ループ中断】を実行。
[157(49)] [159(254-269)](255) [162(27-101)](68-95)押された方向キーに合わせて選択する敵キャラを変える。
[157(49)] [159(254-269)](255) [162(103)]処理終了。
[157(49)] [159(254-269)](256-269)技能使用対象者の選択で決定が押されたので、【イベント処理中断】を実行。
            キャンセルが押された場合で、
            技能を選択した場合はラベル「技能選択」(108)へ移動。
            アイテムを選択した場合は【イベント処理中断】[158]へ戻る。
[157(49)] [159(272-294)]「敵全体」の場合は、
       敵キャラ全てを点滅させ、キーが押されたら点滅を停止し、
       決定が押された場合は【イベント処理中断】を実行。
       キャンセルが押された場合で、
       技能を選択した場合はラベル「技能選択」(108)へ移動。
       アイテムを選択した場合は【イベント処理中断】[158]へ戻る。
[157(49)] [159(297-320)]「敵一体にランダム」の場合は、
       敵キャラ全てをランダムに点滅させ、キーが押されたら点滅を停止し、
       決定が押された場合は【イベント処理中断】を実行。
       キャンセルが押された場合で、
       技能を選択した場合はラベル「技能選択」(108)へ移動。
       アイテムを選択した場合は【イベント処理中断】[158]へ戻る。


▲トップへ戻る▲


  
■攻撃や回復を実行する処理の流れを解説

コモンイベント[197:X┃┗◆1行動ループ]から始まる攻撃や回復を実行する処理について解説します。



コモンイベント[197:X┃┗◆1行動ループ]では、
コモンイベント[164:X[戦]行動実行結果算出]を攻撃や回復を1回実行するごとに1回呼び出しています。

コモンイベント[197:X┃┗◆1行動ループ]からの呼び出し回数は、
ユーザーDB[0:技能]項目[18:発動回数/武器の影響]の設定で決まります。

項目[18:発動回数/武器の影響]が「[-1]武器依存 [武器効果も発動]」の場合は、
8つの装備欄(武器欄1つ+防具欄7つ)を1つずつ処理していくため、
コモンイベント[197:X┃┗◆1行動ループ]からの呼び出し回数は8回になります。
[-2]武器数×2 [武器効果も発動]」の場合は16回呼び出されます。

項目[18:発動回数/武器の影響]が武器依存では無い場合は、
項目[18:発動回数/武器の影響]で指定した回数を呼び出します。



攻撃に対してカウンター(反撃)が発生した場合は、
コモンイベント[165:X[戦]┗単体処理]からコモンイベント[197:X┃┗◆1行動ループ]を呼び出し、
さらにコモンイベント[167:X[戦]カウンター実行結果算出]を呼び出しています。

そのため「攻撃→カウンター」と処理する流れは、
[197]→[164]→[163]→[164]→[165](カウンター発生)→[197]→[167]→[163]→[167]→[165](カウンター攻撃)
となり、そして…
[165](カウンター攻撃終了)→[167]→[197]→[165]→[164]→[197]
と処理が戻ります。

スタート地点のコモンイベント[197:X┃┗◆1行動ループ]が攻撃とカウンターで二重に呼び出される処理構造であり、
改造などを行う際には注意が必要です。

通常の処理の[164]とカウンターの処理の[167]はほぼ同じ処理構造であり、
また通常の処理部分([197]→[164]→[163]→[164]→[165])と、
カウンターの処理部分([197]→[167]→[163]→[167]→[165])もほぼ同じ処理構造になっています。

そのため下記の一覧では、カウンターの処理部分は記載していません。



[197] [164]攻撃対象者、回復対象者へ1キャラずつ攻撃や回復を実行。
[197] [164(13-48)]アニメーションの表示で使用するの技能IDを取得。
[197] [164(56-233)]■ループ開始
       攻撃や回復の対象者全員を処理するまでループし続ける。
[197] [164(56-233)](58) [163]次に攻撃や回復を実行するスロットを設定。
   この[163]の呼び出しは「対象人数+1回」になります。
   単体への攻撃や回復の場合は2回。
   敵3体へ攻撃の場合は4回となります。
   なお、全員回復の場合は、1キャラずつの回復ではなく、
   全員が一気に回復する仕様であるため、
   [163]の呼び出し回数は単体と同じく2回になります。
[197] [164(56-233)](58) [163(11-48)]アイテム使用で技能を発動する場合は、その技能IDを取得。
[197] [164(56-233)](58) [163(51-94)]全体が対象なのか単体が対象なのか、
      また敵に攻撃なのか、味方に回復なのかをセルフ変数に設定。
[197] [164(56-233)](58) [163(96-106)]対象が単体の場合は1キャラ目の攻撃や回復が終わって
       2回目の[163]の実行ではここで【イベント処理中断】を実行。
       全員回復の場合も2回目はここで【イベント処理中断】を実行。
[197] [164(56-233)](58) [163(108-135)]攻撃する順番をセルフ変数[60〜66]に登録。
       主人公はパーティの並び順で登録。
       敵キャラの場合は画面左側にいる敵からの登録なので、
       「15→13→11→10→12→14→16」の順で登録。
[197] [164(56-233)](58) [163(137-155)]狙われ度の設定にて、
       味方への回復の場合は狙われ度を設定しないので、
       ラベル「攻撃集中判定終了」(199)へ移動。
[197] [164(56-233)](58) [163(158-177)]■回数付きループ [ 7 ]回
       状態異常の狙われ度の設定で「1:全攻撃が集中」の
       状態異常になっている攻撃対象者が居るかどうかを検索。
[197] [164(56-233)](58) [163(182-194)]■回数付きループ [ 7 ]回
       「1:全攻撃が集中」の状態異常が1キャラでもいた場合、
       「1:全攻撃が集中」以外のキャラを攻撃対象から除外。
[197] [164(56-233)](58) [163(199)]●ラベル地点「攻撃集中判定終了」
[197] [164(56-233)](58) [163(205-340)]■回数付きループ [ CSelf20[対象数] ]回
       セルフ変数[60〜66]に保存したスロット(技能の使用順)を
       呼び出し、1キャラずつ実際に技能を使用するのかを判定。
       技能を使用するスロットはセルフ変数[40〜46]に登録。
[197] [164(56-233)](58) [163(205-340)](209-214)今回の技能を使用する対象ではないキャラなので、
            【ループ開始へ戻る】を実行して、次のキャラを調べる。
[197] [164(56-233)](58) [163(205-340)](215-220)1つ前に攻撃したキャラを戦闘不能になった事にして、
            1つ前に攻撃したキャラの並び順を設定。
[197] [164(56-233)](58) [163(205-340)](221-231)敵への攻撃で、現在調べているキャラが戦闘不能の場合は、
            【ループ開始へ戻る】を実行して、次のキャラを調べる。
[197] [164(56-233)](58) [163(205-340)](235-292)単体が対象の場合は分岐し、
            現在調べているキャラが狙われ度で攻撃を受けない場合は、
            【ループ開始へ戻る】を実行して、次のキャラを調べる。
[197] [164(56-233)](58) [163(205-340)](285-292)単体が対象で技能を発動する指定したキャラである場合は、
            セルフ変数[99]に現在のキャラを設定して【イベント処理中断】を実行。
[197] [164(56-233)](58) [163(205-340)](295-325)全体が対象の場合は分岐し、
            現在調べているキャラが狙われ度で攻撃を受けない場合は、
            【ループ開始へ戻る】を実行して、次のキャラを調べる。
[197] [164(56-233)](58) [163(328-329)]現在調べているキャラをセルフ変数[40〜46]に登録。
[197] [164(56-233)](58) [163(334-338)]1つ前に攻撃したキャラが戦闘不能ではなかった場合は、
       「加算1」で次のキャラが攻撃されるようにする。
[197] [164(56-233)](58) [163(351-357)]技能を発動する対象者が1キャラ以上いる場合は分岐し、
        既に1体に発動済みの場合はセルフ変数[99]を「-1」にして、
        【イベント処理中断】を実行。
[197] [164(56-233)](58) [163(358-376)]まだ1体も発動していない場合は、
       発動対象者の中でランダムに1体を設定。
       なお、指定した1体に技能を発動する場合は、
       (285-292)でイベント処理を中断しているので、
       この時点で単体で残っている処理はランダムのみとなる。
[197] [164(56-233)](58) [163(382-409)]全体攻撃の場合は、攻撃対象を次のキャラにして、
       【イベント処理中断】を実行。
[197] [164(56-233)](58) [163(413-414)]技能の発動対象が見つからなかった場合は、
       セルフ変数[99]に「-1」を設定して【イベント処理中断】を実行。
[197] [164(56-233)](62-111)アイテム使用による技能発動の場合は技能IDを取得。
[197] [164(56-233)](112-125)対象が単体の場合は、その単体のスロットを可変DB[14]に登録。
[197] [164(56-233)](129-133)もう攻撃や回復を行う者がいない場合は、【ループ中断】でイベント処理終了。
[197] [164(56-233)](135-164)パラメータを更新。
[197] [164(56-233)](167-219)技能使用の場合はアニメーションを表示。アイテム使用の場合はSEを演奏。
[197] [164(56-233)](221) [165]攻撃や回復を実行し、攻撃の場合はカウンター発動有無も処理する。
[197] [164(56-233)](221) [165(35-81)]アイテム使用で技能が発動する場合は技能IDを取得。
[197] [164(56-233)](221) [165(87-287)]技能発動ではない、単なるアイテム使用の場合は分岐。
[197] [164(56-233)](221) [165(87-287)](93-149)状態異常を回復。
[197] [164(56-233)](221) [165(87-287)](156-280)■回数付きループ [ 2 ]回
           1回目のループはHP増減、
           2回目のループはSP増減を処理。
[197] [164(56-233)](221) [165(87-287)](156-280)(158-177)HPやSPの増減量を計算。
[197] [164(56-233)](221) [165(87-287)](156-280)(192-216)回復量の画面上に表示。
[197] [164(56-233)](221) [165(87-287)](156-280)(219-276)ダメージ量の画面上に表示。
                HPダメージの場合は、
                主人公や敵キャラが上下に揺れる量も計算。
[197] [164(56-233)](221) [165(294-878)]技能発動の場合は分岐。
[197] [164(56-233)](221) [165(294-878)](300-306)カウンターが発動するかどうかを判定。
            連続攻撃の場合は、最後の一撃の時に判定。
[197] [164(56-233)](221) [165(294-878)](309-328)命中率を計算。
[197] [164(56-233)](221) [165(294-878)](331-342)命中しなかった場合の処理。
[197] [164(56-233)](221) [165(294-878)](351)HPやSPの増減を行わない場合は、
          ラベル「計算終了」(653)へ移動。
[197] [164(56-233)](221) [165(294-878)](355-366)回復系の技能かどうかを調べる。
[197] [164(56-233)](221) [165(294-878)](369-652)HP・SPの増減量を計算。
[197] [164(56-233)](221) [165(294-878)](653)●ラベル地点「計算終了」
[197] [164(56-233)](221) [165(294-878)](655-679)状態異常を回復。
[197] [164(56-233)](221) [165(294-878)](682-808)■回数付きループ [ CSelf42[HPかSPへの効果?] ]回
            HPかSPの増減がある場合はループ内を処理。
            なお、セルフ変数[42]は「0」か「1」にしかならないので、
            ここのループ回数は最大で1回。
[197] [164(56-233)](221) [165(294-878)](682-808)(714-740)回復量の画面上に表示。
[197] [164(56-233)](221) [165(294-878)](682-808)(743-747)反動やカウンターで使用する
                ダメージ量などの情報をセルフ変数に保存。
[197] [164(56-233)](221) [165(294-878)](682-808)(748-804)ダメージ量の画面上に表示。
                HPダメージの場合は、
                主人公や敵キャラが上下に揺れる量も計算。
[197] [164(56-233)](221) [165(294-878)](682-808)(810-870)状態異常を付与。
[197] [164(56-233)](221) [165(882-919)]技能やアイテム使用を受けた者のパラメータや画面表示を更新。
       戦闘不能になった場合は、戦闘不能の演出も表示。
[197] [164(56-233)](221) [165(926-1054)]ユーザーDB[0:技能]項目[35:与えた効果を自分に返す?]にて、
        反動や吸収を設定している場合は、ここで処理する。
        吸収は「ダメージを与えた量×吸収%」を技能発動者が吸収(回復)。
        反動は「ダメージを与えた量×反動%」を技能発動者がダメージ。
[197] [164(56-233)](221) [165(1063-1139)]カウンターが発動する条件の場合は分岐し、
        [197]を呼び出してカウンター攻撃の処理を実行する。
[197] [164(56-233)](221) [165(1140)]処理終了。
[197] [164(56-233)](222-231)単体対象で既に1体を処理したので、【ループ中断】でイベント処理終了。


▲トップへ戻る▲



◎関連ページ

◆「基本システム」って何?
┣◆コモンイベントの一覧と補足説明
┣◆基本システムで使用しているピクチャ番号
┣◆メニュー画面の処理構造
┗◆戦闘処理の処理構造

◆エンカウントで敵を出現

◆万能ウィンドウについて
┗◆万能ウィンドウの設定例

◆[戦闘画面]敵キャラの表示設定について
┗◆[戦闘改造]敵キャラの表示位置を移動&主人公画面の後ろに表示

YADOT-WOLFトップ  気紛れな空間へ戻る  メール