** 内容はSRC2.2.33のものです **
ForEachコマンド
特定グループのユニットや配列の要素に対して特定のイベントコマンドを実行
書式1
ForEach group [status]
commands
Next
書式2
ForEach variable In array
commands
Next
書式3
ForEach variable In パイロット一覧(mode)
commands
Next
書式4
ForEach variable In ユニット一覧(mode)
commands
Next
指定項目説明
groupコマンドの対象となるユニット集団
status対象となるユニットの状態(出撃、待機、格納、破壊、離脱、全て)
全体を括弧で囲み複数指定可能 (例 (出撃 格納 離脱))
省略時には「出撃 格納」が指定されたものと見なされる
variableループのインデックスになる変数名
arrayループの対象になる配列名
modeパイロット・ユニットを選択する順番の基準となるステータス
commands実行するイベントコマンド。複数行指定可能
解説
指定したユニット集団group の各ユニットや配列の各要素に対してイベントコマンド列commands を実行します。
書式1の場合は選択されたユニットはデフォルトユニットに設定され、コマンドの引数を省略したときにはそのユニットに対してコマンドが実行されたとみなされます。逆に選択ユニットを引数に指定すると同じ名前のパイロットが複数いる場合は意図した通りの処理が行われません。注意して下さい。
status を指定した場合は group のユニットのうちで特定の状態にあるユニットに対してのみcommands が実行されます。指定できる状態は
出撃マップ上に存在
待機出撃していない
格納母艦に収納されている
破壊破壊されている
離脱Leaveコマンドで離脱している
全て状態に関係なく選択される
の6通りです。状態を指定しなかった場合には(出撃 格納)が指定されているとみなされます。
書式2の場合、配列array の各要素に対してイベントコマンド列commands が実行されます。この際、インデックス用の変数variable に要素名が代入されます。例えば A[1], A[2], A[3] の3要素からなる配列に対してForEachコマンドを実行した場合、commands は3回実行され、それぞれの実行の際の variable の値は 1, 2, 3 になります。
なお、配列array にEval関数を使うことで配列の変数の指定に式を使うことが出来ます。
書式3の場合、各パイロット名に対してイベントコマンド列commands が実行されます。この際、インデックス用の変数variable にそれぞれのパイロット名が代入されます。パイロットが選択される順番はmodeの指定で決まります。modeには次の設定が可能です。
レベル
SP
格闘
射撃
命中
回避
技量
反応
名称
パイロットはmodeに指定されたステータスが高いものから選択されます。
名称が選択された場合、順番はパイロットの愛称で決まりますが、Windowsの機能的な制限のため順番は必ずしも読みに一致しません。
書式4の場合、各ユニットに対してイベントコマンド列commands が実行されます。書式1と違ってmodeで指定したステータスの高い順にユニットを選択することができますが、書式1よりもかなり速度が遅くなるので並べ替えが必要な場合以外は書式1を使ってください。インデックス用の変数variable にはそれぞれのユニットのユニットIDが代入されます。選択する順序を決めるmodeには次の設定が可能です。
ランク
HP
EN
装甲
運動性
移動力
最大攻撃力
最長射程
名称
mode に指定したステータスが高いユニットから選択されます。
commands 中にはForEachコマンドは使用できません。つまりForEachのループ内でForEachコマンドを使うことはできません。ForEachのループ内から呼び出したサブルーチンの中から使うことはできませんので注意して下さい。
DoコマンドやForコマンドと同様、SkipコマンドやBreakコマンドを使って実行の流れを変えることができます。
イベントファイルが見やすいようにcommands にはインデントをつけるようにして下さい。
例
Talk 瞬
クッ、クッ、クッ…… さて、これはいかがですか?
End
#全ての味方ユニットを行動不能にする
ForEach 味方
SetStatus 行動不能 -1
Next
Talk 正人
く、体が重い…… 瞬! てめえなにをしやがった!!
Talk 瞬
ふっ……ほんの少しあなたがたのユニットへの重力係数を増加させただけですよ
……お楽しみはこれからです
End