計算式の書き方
すべての計算は「class Scene_Battler」の内部、「def first_attack_calculate」にて行われます。
つまりScene_Battlerで使うことの出来ない変数などを用いて計算することは出来ません。
計算結果について
計算式の途中、あるいは最後に計算結果を返す処理が必要ですが、その際の返り値によって先制攻撃する側が決定します。
| 計算結果 |
返す値 |
| どちらも先制攻撃にならない場合 |
0 |
| アクター側の先制攻撃 |
1 |
| エネミー側の先制攻撃 |
-1 |
上記の要領で決定します。
つまり、def first_attack_calculateの一行目に「return 1」とすれば常にアクター先制になる、とすることも可能です。
デフォルト計算式
デフォルトは意図的に非常に複雑な計算式を採用しています。
計算の流れ
まずアクターとエネミーの素早さの合計を算出します。
この時、戦闘に参加していない(戦闘不能、あるいは不可視状態)バトラーの素早さは取得しません。
その合計値に、ステート補正をかけます。
例えば「電光石火(補正は10)」の場合は、素早さの合計に10%が上乗せされます。
全員の素早さの「平均値」を算出します。
二つの大小からお互いの先制攻撃確率を算出します
| 計算結果 |
アクター先制攻撃確率 |
エネミー先制攻撃確率 |
| アクターAGI合計 > エネミーAGI合計 + 全員のAGI平均 |
15% |
3% |
| アクターAGI合計 > エネミーAGI合計 |
10% |
3% |
| アクターAGI合計 < エネミーAGI合計 |
5% |
10% |
| アクターAGI合計 + 全員のAGI平均 < エネミーAGI合計 |
3% |
15% |
この後、先にアクターが先制攻撃かどうかを計算し、
アクターが先制攻撃不可能だった場合、エネミーの先制攻撃が成功するかを計算します。
どちらにも引っかからなかった場合には通常通りの戦闘が始まります。
ソース
デフォルトで含まれていますが、一応以下に計算式の部分だけを公開します。
デフォルト計算式: ソース
基準値を基点とした計算
指定した変数IDの中身の値を基点として、先制攻撃確率を計算します。
設定
ACTORS_FIRST_ATTACK_RATE
ENEMIES_FIRST_ATTACK_RATE
アクターあるいはエネミーの先制攻撃の確率の基準値を格納する変数IDです。
# プレイヤー側先制攻撃性効率の基準値を格納した変数のID
ACTORS_FIRST_ATTACK_RATE = 2
# エネミー側先制攻撃性効率の基準値を格納した変数のID
ENEMIES_FIRST_ATTACK_RATE = 3
どちらもその値ではなく、変数IDが「ACTORS_FIRST_ATTACK_RATE」あるいは
「ENEMIESS_FIRST_ATTACK_RATE」の値だという点に留意してください。
計算の流れ
まずアクターとエネミーの素早さの合計を算出します。
この時、戦闘に参加していない(戦闘不能、あるいは不可視状態)バトラーの素早さは取得しません。
その合計値に、ステート補正をかけます。
例えば「電光石火(補正は10)」の場合は、素早さの合計に10%が上乗せされます。
二つの大小からお互いの先制攻撃確率を算出します
| アクター先制攻撃確率 |
アクター先制攻撃基準値 × アクターAGI合計 ÷ エネミーAGI合計 |
| エネミー先制攻撃確率 |
エネミー先制攻撃基準値 × エネミーAGI合計 ÷ アクターAGI合計 |
この後、先にアクターが先制攻撃かどうかを計算し、
アクターが先制攻撃不可能だった場合、エネミーの先制攻撃が成功するかを計算します。
どちらにも引っかからなかった場合には通常通りの戦闘が始まります。
ソース
基準値から算出する計算式: ソース
先制攻撃確率固定型
指定した変数IDの中身の値をそのままお互いの先制攻撃率として算出する形式です。
設定
ACTORS_FIRST_ATTACK_RATE
ENEMIES_FIRST_ATTACK_RATE
アクターあるいはエネミーの先制攻撃の確率を格納する変数IDです。(上のものと同じ変数名)
# プレイヤー側先制攻撃性効率を格納した変数のID
ACTORS_FIRST_ATTACK_RATE = 2
# エネミー側先制攻撃性効率を格納した変数のID
ENEMIES_FIRST_ATTACK_RATE = 3
どちらもその値ではなく、変数IDが「ACTORS_FIRST_ATTACK_RATE」あるいは
「ENEMIESS_FIRST_ATTACK_RATE」の値だという点に留意してください。
計算の流れ
アクターとエネミー全員のステート補正を取得し、各々の規定値に、ステート補正をかけます。
例えば「電光石火(補正は10)」の場合は、先制攻撃成功率が10%増しになります。
| アクター先制攻撃確率 |
アクター先制攻撃成功率 × ステート補正 |
| エネミー先制攻撃確率 |
エネミー先制攻撃成功率 × ステート補正 |
この後、先にアクターが先制攻撃かどうかを計算し、
アクターが先制攻撃不可能だった場合、エネミーの先制攻撃が成功するかを計算します。
どちらにも引っかからなかった場合には通常通りの戦闘が始まります。
ソース
先制攻撃率を固定した計算式: ソース