WOLF RPGエディター(ウディタ)[3.175]/基本システム【サイトトップへ戻る】
■コモンイベント[194:X┣◆行動順の計算]の解説
(更新:2023/04/24)


コモンイベント[194:X┣◆行動順の計算]について解説します。


ショートカット
■コモンイベント[194:X┣◆行動順の計算]って何?
■スロットに関して
■[入力の数/結果を返す]について
■コモンイベント呼び出しの一覧
■セルフ変数の一覧
■イベントコマンドの解説

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

コモンイベントの一覧と補足説明のページも用意しています。
【コモンイベントの一覧と補足説明のページを開く】


  
■コモンイベント[194:X┣◆行動順の計算]って何?

コモンイベント[194:X┣◆行動順の計算]では、次のターンの主人公と敵キャラの行動順を決定する処理を実行します。



ターン進行中の行動順は可変DB[14:×┣ コマンド処理リスト]データID順になります。

この可変DB[14:×┣ コマンド処理リスト]には、
既にコモンイベント[192:X┃┣◆味方コマンド選択]や、
コモンイベント[193:X┃┗◆敵・味方AI計算]の処理によって、
主人公や敵キャラの行動内容が設定されていますが、まだ正しい行動順にはなっていません。

そのため、 このコモンイベント[194:X┣◆行動順の計算]で正しい行動順に並び替えます。



行動順は敏捷性が高い順になります。

但しユーザーDB[0:技能]項目[16:先制・後攻行動オプション]の「必ず先制(敏捷 +10万)」か「必ず後攻(敏捷 -10万)」の
設定が使用する技能に設定されている場合は、この設定が敏捷性になります。

また同じ敏捷性のキャラが複数いる場合は、スロットの番号が小さい方が優先されます。



並び替えは、可変DB[14:×┣ コマンド処理リスト]項目[1:発動敏捷性]の値を比較して、
後ろのキャラの方が敏捷性が高い場合は、処理中のキャラと後ろのキャラの位置(データID)を入れ替えます。

処理の流れとしては「AとBを比較」「BとCを比較」「CとDを比較」と処理していくので、
例えばDのキャラの敏捷性が最も高い場合は…
1回目の処理:CとDを入れ替え(順番:A→B→D→C)
2回目の処理:BとDを入れ替え(順番:A→D→B→C)
3回目の処理:AとDを入れ替え(順番:D→A→B→C)

と処理を3回繰り返して先頭まで移動します。



入れ替え処理が一度でも実行されるとセルフ[20:一度でも交換した?]の値が「1」となり、
セルフ[20:一度でも交換した?]の値が「1」の場合は、
全てのキャラのチェックが終わった後に再び最初から敏捷性の比較処理が実行されます。

そして最初から全員の敏捷性を調べて、並び替えが一度も行われなかった場合は、
セルフ[20:一度でも交換した?]=0」となり、コモンイベント[194:X┣◆行動順の計算]の処理が終了します。



以下は並び替えの変動例です。
青=並び替えなし」「赤=並び替え実行」で表記。

最初 1回目の処理 2回目の処理 3回目の処理 確定
200
100
400
150
200
100
400
150
200
400
100
150
200
400
150
100
400
200
150
100
400
200
150
100
400
200
150
100
400
200
150
100
400
200
150
100
400
200
150
100
400
200
150
100


▲トップへ戻る▲


  
■スロットに関して

このページにある「スロット」とは、可変DB[10:×┏ 戦闘一時ステータス[基]]データIDの事を言っています。

スロットの番号は、主人公の場合はパーティの並び順で一人目から「0、1、2…」と付けられ、
敵キャラの場合はユーザーDB[13:敵グループ]項目[0〜6]項目ID+10で「10、11、12…」と付けられます。

ユーザーDB[13:敵グループ]項目[0〜6](項目[3]に設定した敵キャラの場合はスロット[13]になる)


▼スロット(可変DB[10:×┏ 戦闘一時ステータス[基]]のデータID)


なお、
可変DB[11:×┣ 属性耐性計算結果]
可変DB[12:×┣ 状態耐性計算結果]
可変DB[13:×┣ 状態リスト]

の3つも可変DB[10:×┏ 戦闘一時ステータス[基]]と同じくスロットで処理しています。


▲トップへ戻る▲


  
■[入力の数/結果を返す]について

コモンイベント[194:X┣◆行動順の計算][入力の数/結果を返す]には、何も設定されていません。


▲トップへ戻る▲


  
■コモンイベント呼び出しの一覧

コモンイベント[194:X┣◆行動順の計算]を呼び出しているコモンイベントの一覧です。

コモンイベント[194:X┣◆行動順の計算]を呼び出しているコモンイベント
コモンイベント(ID順) 処理内容
188:X◆戦闘処理 主人公と敵キャラの行動内容が設定され、
ターンが開始する直前に呼び出されます。

【コモンイベント呼び出しの一覧を別ウィンドウで表示】


▲トップへ戻る▲


  
■セルフ変数の一覧

コモンイベント[194:X┣◆行動順の計算]のセルフ変数の一覧です。

セルフ変数
番号 名前 使用内容
11 注目位置 可変DB[14:×┣ コマンド処理リスト]のデータIDを設定。
12 次の注目位置 セルフ[11]の値+1」の値を設定し、
可変DB[14:×┣ コマンド処理リスト]の次に保存されたキャラの敏捷性を取得するのに使用。
15 敏捷1 現在処理中のキャラの敏捷性を代入。
16 敏捷2 現在処理中のキャラの次のキャラの敏捷性を代入。
17 発動者 処理中のキャラの発動者番号を代入。
18 発動技能 処理中のキャラの行動内容を代入。
19 使用対象 処理中のキャラのターゲット情報を代入。
20 一度でも交換した? 一度でも並び順を変えた場合はセルフ[20]の値が「1」になり、
並び替えのチェックが終わったら、
再び可変DB[14:×┣ コマンド処理リスト]データID[1]からチェックし直します。
そして再チェック後、一度も並び替えが行われずにセルフ[20]の値が「0」である場合は、
コモンイベント[194:X┣◆行動順の計算]の処理が終了します。
21 発動者2 処理中のキャラの次のキャラの発動者番号を代入。
22 発動技能2 処理中のキャラの次のキャラの行動内容を代入。
23 使用対象2 処理中のキャラの次のキャラのターゲット情報を代入。
30 *名前なし* 主人公人数+敵キャラ数+1」の値を設定し、ループ回数の設定で使用。

【変数の一覧を別ウィンドウで表示】


▲トップへ戻る▲


  
■イベントコマンドの解説

イベントコマンドの解説を行います。

なお、見た目で設定内容が分かるような簡単なイベントコマンドの解説は省略しています。

処理内容
5-7 ▼ バブルソートで敏捷の高い順に処理する
▼ ソートを行う。セルフ10-1個目が最終地点
可変DB[18:基本システム用変数]データ[73:[戦闘]コマンド入力位置]セルフ[30]に取得。
8 ●ラベル地点「処理開始」 <<<<<<<<<<<<<<<<<<<<<<<<★
可変DB[14:×┣ コマンド処理リスト]の並び替え処理をもう一度行う時に、
60行目からここへジャンプしてくる。
9-10 ▼ セルフ20は「一度でも前後交換したかどうか」のフラグ 0で終わればソート完了
セルフ[20]に「0」が設定。
ループ処理中に一度でも入れ替え処理が行われた場合はセルフ[20]に「1」が設定され、
ラベル「処理開始」へ戻ってくる処理が実行されます。
11 ▼ セルフ11が現在注目地点 ※1から始まる (0番は一時使用)
13-43 ■回数付きループ [ CSelf30 ]回
主人公人数+敵キャラ数+1」の数だけループ。
  18-41 ■条件分岐(変数): 【1】 CSelf15[敏捷1] が CSelf16[敏捷2] 未満
処理中のキャラよりも、次にいるキャラの方が敏捷性が多い場合は分岐。
    20-37 ▼ もし一個次の中身の敏捷性の方が低かったら交換
可変DB[14:×┣ コマンド処理リスト]に登録されている内容を、
処理中のキャラと次にいるキャラと入れ替える。
    39 セルフ[20]に「1」を設定し、
このループ処理が終わったらもう一度初めから処理し直します。
44-57 ■回数付きループ [ 0 ]回
デバッグ用の設定です。
可変DB[14:×┣ コマンド処理リスト]に設定されている値の変化を確認する時に使います。
58-62 ■条件分岐(変数): 【1】 CSelf20[一度でも交換した?] が 1 以上
可変DB[14:×┣ コマンド処理リスト]で順番の入れ替えがあった場合は分岐。
  60 ●ラベル「処理開始」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
8行目にジャンプし、
もう一度可変DB[14:×┣ コマンド処理リスト]の敏捷性をチェックする。


▲トップへ戻る▲



◎関連ページ

◆「基本システム」って何?
┣◆コモンイベントの一覧と補足説明
┣◆メニュー画面の処理構造
┗◆戦闘処理の処理構造

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