FF5乱数解析
0.概要
ファイナルファンタジーV(以下FF5)の乱数についてはIndex of /~s-endo/において
乱数テーブル、敵の出現や敵グループの判定についての解析結果が公開されている。
ここでは戦闘中における乱数の流れと使い方の解析の手段と結果について紹介する。
1.解析手順
以下は私が乱数解析を行うための一般的手順に基づいてFF5の乱数の解析を行った手段である。
(ただし、実際の試行錯誤過程はかなり省略されている)
1ー1.ループ(状況再現)を確認する
まず、戦闘のループ(状況再現)を起こして、以下の事項を確認する。
・ループの長さ(16進数かどうか)
・ループの安定性(手動操作の速度に強く依存するか)
まず、ターン辺りの消費乱数が同じで長期間同じ状態で戦闘を続けどの程度の長さでループするか確認した。
実践では敵にバーサクを掛けて、まもりをしたナイトが瀕死の味方をかばい続けるという手段をとった。
そして、敵の攻撃ターゲットを記録していき、何ターンでループするのかを調べた。
最終的に、最長で512ターンでループすることが分かった。
これは一戦中の乱数の周期は512であることを意味している。
ループを確認したら、まずSTARTやメニューを開くという、単なる時間稼ぎ的動作を行って、
パターン(乱数)がずれるかどうかを確かめた。
結果、STARTやメニューを開くといった行動では乱数はずれないことが分かった。
次に乱数を消費しないと思われる行動を行ってパターンがずれるか調べた。
結果、バトルスピードが1の場合はずれがおこらず、それ以外の場合はずれが起こることがわかった。
これはコマンド入力待ち時間も乱数が流れていることを示している。
1ー2.乱数テーブルを構築する
得られた行動のループから乱数テーブルを構築するのだが、
FF5の場合はIndex of /~s-endo/において既に256周期の乱数テーブルが公開されているので、
それを利用して乱数テーブルへの当てはめを行った。
前節で得られている敵の攻撃ターゲットのパターンを使い、
いくつかの仮定を行って乱数テーブルの当てはめを行う。
実際には以下のような仮定をした。
・行動一回辺りの消費乱数は同じ
・行動ターゲットは 乱数%4 で決める
この仮定に基づいて、条件に当てはまる乱数条件が存在するか調べた結果、
256ターンループの場合には256周期の乱数テーブルでうまく説明できることが分かった。
更なる調査の結果、256周期の乱数テーブル二つを組み合わせたような形で乱数が供給されていることが分かった。
また、1ターン辺りの消費乱数は「120-素早さ+5」程度であることも分かった。
「120-素早さ」は行動ゲージの長さに当たるのでゲージが一つ進むごとに一つの乱数を消費しており、
残りの5は行動による乱数消費であることが予想できる。
1ー3.本格的な調査
敵に魔法剣ファイアとバーサクを掛けて、炎吸収装備ででひたすら攻撃を受け回復するという調査を行う。
まず、攻撃による乱数の使い方、ターゲットと攻撃の間の乱数間隔を調査しておく。
それが分かれば次からはターゲットとダメージから乱数条件を特定できる。
条件が特定できたら敵の攻撃に調べたい行動を行う。
そして、次回以降の敵の攻撃から再び乱数条件を特定することでその行動の消費乱数を知ることができる。
消費乱数から使われた乱数列を特定し、行動の結果と組み合わせて乱数の使い方を推測する。
(あるいはあらかじめ推測した結果と一致するかを確かめる)
2.解析結果
ここでは実際に得られた解析結果を紹介する。
多くは、処理を予想し数回の試行による予想の確認のみしかしていないので、
勘違い、データ記録ミス、偶然に予想通りになった等により必ずしも正しいという保障はない。
2−1.乱数テーブルとその流れ方
2−1−1.乱数テーブル
戦闘中の乱数は二つの乱数位置があり、256周期の基本乱数テーブルからその乱数位置に当たる乱数を交互に取得している。
したがって基本的に512周期の乱数となる。
また、二つの乱数位置の組み合わせは128通りになる。
ただし、乱数範囲が1しかないような乱数取得を行う際には乱数の流れが乱れて、
該当する乱数位置は進まず、代わりに他方の乱数位置が+1される。
該当する処理は確認されてるのは以下のものになる。
攻撃力が7以下の敵の攻撃力判定
アスピル、ミステリーワルツ、りゅうけん(MP)の攻撃力判定
レベル3以下時の素手の攻撃力判定
ナイフ(基礎攻撃力7)を投げたとき
2−1−2.時間による乱数の流れ
乱数が時間とともに流れるのは
・バトルスピードが2以上の時の行動入力待ち時
・ATBゲージが進んでいる時
のみである。
スリップダメージを受ける時と同じである。
ATB時間1に対して乱数が1消費される。(スリップダメージ1に対して乱数は4の割合で消費)
また、行動入力待ち時間は 15*2^(バトルスピード-2) で表せる。(スリップダメージからも分かるように通常より早く流れる)
2−2.基本的な判定
2−2−1.ターゲット判定
敵の行動のターゲットや、召喚チョコボ、みだれうち、メテオなどのランダムターゲット、
対象がいないときのターゲット再抽選、リフレク反射ターゲットの決定に使われる判定。
敵やパーティーの数に関わらずに以下のように決定される。
敵側単体を対象とする場合
乱数%8
パーティー側単体を対象とする場合
乱数%4
それぞれ対応する順番のキャラが対象になる。
行動直前で対象となるキャラが存在しない時は再抽選される。
メテオなどのランダム複数ターゲットも行動前に連続で取得する
*指定つきターゲット(女性のみ等)については未調査。
*敵の使う死のルーレット(敵味方全体が対象)については未調査。
2−2−2.成功判定
命中、回避、追加効果、クリティカルなど、様々な判定に用いられる判定。
乱数%100<成功率
ならば成功。
ただし、乱数は0から255までなので、成功率<成功の確率(%)である。
例えば、
成功率が25の場合 75/256≒29.3%
成功率が50の場合 150/256≒58.6%
成功率が80の場合 216/256≒84.4%
などのようになる。
2−2−3.攻撃力判定
FF5においてはダメージにおけるランダム成分は全て攻撃力に掛かっている。
ランダム成分は武器や魔法の種類によって異なる。
また、チキンナイフやブレイブブレイドなどは、ランダム成分が無く乱数を消費しない。
乱数幅は基礎攻撃力に依存するものが多い。
通常の魔法攻撃、敵の通常攻撃、剣系、槍系、刀系など:
攻撃力=基本攻撃力+乱数%(基礎攻撃力/8+1)
短刀、忍刀、弓、ムチ、投函系:
攻撃力=基本攻撃力+乱数%4
防御1/4武器(斧系、ハンマー系、槌杖系、ルーンのベル、大地のベル、ルーンブレイド):
攻撃力=基本攻撃力/2+乱数%(基本攻撃力+1)
武器投げ:
攻撃力=(乱数%(投げる武器の基本攻撃力/8+1))*2
ティンカーベル、ギヤマンの鐘:
攻撃力=基本攻撃力/2+乱数%(基本攻撃力/2+1) (SFC版)
攻撃力=基本攻撃力+乱数%(基本攻撃力/2+1) (GBA版)
ロッド系:
攻撃力=(乱数%(基本攻撃力+1))*2
魔法防御1/32系魔法(フレア、マインドブラスト、MP吸収魔法など):
攻撃力=基本攻撃力+(乱数%(基本攻撃力/32+1))
素手:
攻撃力=3+乱数%(レベル/4+1)
(格闘アビリティ時は+レベル*2、カイザーナックル+50)
メテオ系(メテオ、コメット、落盤など):
攻撃力=50+乱数%151
デルタアタック、蜂の群れ、ポイズンブレス等:
攻撃力=10+乱数%91
ハイパーリストは武器の基礎攻撃力に+10する。
単体魔法の全体化時は得られた攻撃力を1/2、
こびと、蛙時の物理攻撃は結果に関わらず攻撃力を3として計算。
バーサク時の物理攻撃、敵の技の1.5倍攻撃時は得られた攻撃力を3/2にする。
剣の舞、魔法種族特攻時は得られた攻撃力をそれぞれ2倍、8倍にする。
魔法剣フレアは攻撃力に+100する。
光の杖、裁きの杖、賢者の杖は基礎攻撃力は表示攻撃力とは異なる。
2−2−4.全体攻撃
全体攻撃時は内部番号一番目(味方の場合は一番上のキャラ)から順に判定していく。
リフレクによる反射後のターゲットも順次決めていく。
2−3.行動決定
2−3−1.敵の行動決定
敵がランダム行動を行う時は
乱数%3
で行う行動を決める。
必要であればその後に行動のターゲットを決める。
2−3−2.混乱、ゾンビ、バーサク時の行動決定
ゾンビ、バーサク時はターゲット決定のみを行う。
味方混乱時は、まず、白、黒、時空魔法が使えるアビリティを持つ時
成功率50の成功判定で魔法を使用するか判定する。
失敗した場合は味方一人をターゲットに通常攻撃。
判定に成功した場合
乱数%54
で該当する白、黒、時空魔法を使用する。(連続魔の時の並び順)
必要ならばその後にターゲットを決める。
使用できない魔法が選択された場合は再度判定される。
*混乱時に使用できない魔法が選択された時は次の順の魔法になるようだ(ディスペル→ファイア)
*何も魔法を覚えない場合、混乱時に使用できない魔法しか使えない場合は未調査。
敵の混乱時は未調査。
ただし、操る時の行動から乱数%4で選ぶと予想される。
2−4.武器攻撃時の判定
武器には主に物理武器、魔法武器、必中武器の3種類がある。
物理武器:回避率、ブリンクで回避される
魔法武器:魔法回避率で回避される
必中武器:回避されない
いずれの場合も以下の流れで判定する。([]内は該当時のみ判定)
[追加効果判定]→武器攻撃判定→[左手武器判定(二刀流、両素手時)]
追加効果判定でコマンドが発動した時はそのコマンドの判定に取ってかわる。
各種回避判定に成功した場合や命中判定に失敗した場合はそこで判定は打ち切られ、ミスとなる(追加魔法も発動しない)。
*対象がいないときのターゲット再決定が追加効果の前か後かは未調査。
2−4−1.追加効果の判定
追加効果がある武器の場合はその発動率で成功判定を行う。
判定は右手から行い、右手がコマンド系の追加効果(ぶんどる、おどる、地震、ツインランサーなど)
に成功した場合は左手の判定は行われない。
また、コマンド系以外の追加判定に成功しても攻撃がミスした場合は追加魔法は発生しない。
「ぶんどる」、「ためる」、「ジャンプ」、「つるぎのまい」、全切りなどでの武器攻撃では追加判定は行われない。
「たたかう」、「ねらう」、「みねうち」、「クリティカル!」では追加判定を行う。
2−4−2.物理武器判定
一般的な武器や、敵の攻撃による、
物理武器攻撃判定については以下のようになる
[白刃取り判定]→[武器回避判定1]→[武器回避判定2]→[エルフのマント回避判定]
→命中判定→(盾)回避判定→[分身回避]→ダメージ判定→[クリティカル、追加:暗闇、追加:即死判定]→[追加攻撃]
の順番で行う。該当するもののみ判定。
白刃取りの回避率は25。
武器回避は二種あるが、マインゴーシュが一方で、ディフェンダーと佐助の刀が他方に属する。
(どちらが1か2かは判別不能)
同種の装備を両手にしても効果は変わらない。
つまり、マインゴーシュ+ディフェンダーかマインゴーシュ+佐助の刀の組み合わせのみ回避可能性が高まる。
いずれも回避率は25。
エルフのマントの回避率は33。
命中判定の成功率は武器の命中率。暗闇時は1/4。
(盾)回避判定は敵の場合は回避率、味方の場合は盾の回避率になる。
(ソーサリマント、ロイヤルクラウンによる回避率は影響しない)
こびとの時は回避率2倍(ただし最大99)、蛙のときは0として判定する。
また、ナイフ系、弓系、ムチの一部では回避率半減して判定。
カテゴリ弱点を突いた時、無防備時(眠り、混乱、麻痺、ストップ)、狙う、乱れうち、ジャンプ、剣の舞時は
分身を除く命中、回避判定は行われない。
自分を攻撃した場合は分身を除く各種回避判定はするが必ず失敗扱いになる。
分身による回避は判定なしで必ず成功。
クリティカル判定の成功率は武器のクリティカル率。
暗闇の弓矢やキラーボウの追加効果もこの段階で判定される。
追加効果やクリティカル率の無い弓矢もクリティカル判定をしているようだ(消費乱数から推測)。
「ひっさつ」コマンドでのクリティカル時はクリティカル判定は行われない。
2−4−3.魔法武器判定
ロッド系、ブラッドソードなどの魔法武器による攻撃判定については以下のようになる。
命中判定→回避判定→ダメージ判定→[追加攻撃]
命中判定の成功率は武器の命中率、暗闇の影響なし。
ただし、リリスのロッドは色目と同じと思われる(未確認)。
回避判定の成功率は相手の魔法回避率。
ブラッドソードのみ、みだれうち、狙う、ジャンプ、カテゴリ弱点で命中、回避判定なし。
2−4−4.必中武器判定
一切の回避を無視し、必ず当たる武器。
ダメージ判定があるものと無いものの2タイプある。
ダメージ判定のあるもの:裁きの杖、光の杖、賢者の杖、ギヤマンの鐘、ティンカーベル
これらはダメージ判定のみ行う。
ダメージの無いもの:竪琴系、癒しの杖、力の杖、ワンダーワンド
これらは追加効果のみの武器。
ダメージ固定:エクスカリパー
判定なしで必ず1ダメージ
2−5.魔法攻撃時の判定
魔法攻撃、追加の魔法効果も含む判定について。
応じて以下のような判定の種類がある。
判定なし:一般的な補助、一部の状態異常魔法
ダメージ判定のみ:一般的な攻撃魔法
命中判定→回避判定:一般的な状態異常魔法
命中判定→回避判定→ダメージ判定:ドレインなど
ダメージ判定→必中の追加効果:マインドブラストなど
ダメージ判定→追加効果の命中判定→回避判定:暗黒魔法など
2−5−1.魔法攻撃の命中、回避判定
命中判定の成功率:基本命中率+対象とのレベル差
回避判定の成功率:対象の魔法回避率
イージスの盾による回避:回避可能な魔法攻撃や属性魔法攻撃に対して判定。
詳細は未調査
単体魔法の全体攻撃時は命中率半減。
対象がシェル状態時は命中率半減。
対象が蛙状態時は回避率0。
追加効果の命中判定については詳細未調査。
追加効果の回避判定は対象の魔法回避率。
カテゴリ弱点を突いた時は命中、回避判定なし。
*耐性がある場合にも判定するが、
種族による性質の場合(不死系にデス、ボス系にデジョンなど)は判定しないようだ(詳細は未調査)。
2−6.特別な行動の判定各種
2−6−1.ぬすむ
以下の順で判定される。
「ぶんどる」時の判定も武器攻撃後に同様に行われる。
「何も持っていない」場合は判定を行わない。
命中判定→回避判定→アイテム判定
命中判定の成功率:40(盗賊の籠手装備時は80)
回避判定の成功率:0
命中判定に失敗したら盗みに失敗する。
回避判定は消費乱数からの推測。
アイテム判定:
乱数<10ならば低確率アイテム
それ以外ならば高確率アイテム
が盗める。
盗賊のナイフで味方から「ぶんどる」場合はアイテム判定を行わない。
(あるいは味方の回避率が100とも考えられる)
敵が該当する確率のアイテムを持っていない場合、あるいは
アイテム欄がいっぱいでかつ該当する確率のアイテムがアイテム欄に無い場合は
盗みに失敗する。
盗む成功判定→アイテム判定は間に実質的に無効な乱数消費(回避判定)を一つ挟んでいるため、
盗む判定はレアアイテム判定の二つ前の乱数になる
乱数の性質上、ある乱数の二つ前の乱数は常に同じ数であるので、
低確率アイテムが盗める可能性があるときの乱数組み合わせは
成功判定 アイテム判定
134 ○ 0 盗み成功
11 ○ 1 盗み成功
204 ○ 2 盗み成功
188 × 3 必ず失敗
38 ○ 4 盗み成功
235 ○ 5 盗み成功
14 ○ 6 盗み成功
248 △ 7 盗賊の籠手装備時のみ成功
238 ○ 8 盗み成功
30 ○ 9 盗み成功
に限られる。
注目すべき点は、この中で、盗賊の籠手の有無が影響するのがわずか一つしかないということ。
失敗 高確率 低確率
盗賊の籠手なし 136/256 112/256 8/256=0.0313
盗賊の籠手あり 40/256 207/256 9/256=0.0352
となって、低確率を盗める確率はわずかしか上がらない。
また、何か盗めるまで粘った場合
高確率 低確率
盗賊の籠手なし 112/120 8/120=1/16=0.0667
盗賊の籠手あり 207/216 9/216=1/24=0.0417
とかえって下がってしまう。
2−6−2.ちけい、どうぶつ
乱数%(レベル+1)
で種類を決める。
レベルが99以上でも99として扱う。
厳密に調べてわけではないが、「どうぶつ」の場合は
0:ミシディアうさぎ
1- 4:りす
5- 9:蜂の群れ
10-19:ナイチンゲール
20-29:モモンガ
30-39:ファルコン
40-49:スカンク
50-59:ワイルドボー
60-99:ユニコーン
となると推測される。
2−6−3.よびだす
乱数%15
で種類を決める。
順番は魔法の並び順と同じ。
該当する召喚魔法を取得していないときは再決定する。
2−6−4.おどる
乱数%4
で種類が決まる
0:ミステリーワルツ
1:ふたりのジルバ
2:みわくのタンゴ
3:つるぎのまい
ラミアのティアラ、レインボードレス、赤い靴装備時は
改めて 乱数%2 で判定を行い0ならつるぎのまい
1なら再び乱数%2で上のテーブルで決める。
2−6−5.いろめ
魔法命中判定と同じ。
ラミアのティアラ、レインボードレス、赤い靴装備時は命中率2倍。
2−6−7.チョコボ
まず、成功率8の判定を行い、成功時はデブチョコボ、
失敗時はチョコボキックになる。
チョコボキックは対象決定後、物理武器同様の命中、回避判定を行う。
2−6−8.ひっさつ
(乱数%100)%16
で判定。
剣闘士のジョブレベルに依存する。
ジョブレベル 0 1 2 3 4
失敗 0- 6 0- 4 0- 4 0- 4 0- 3
クリティカル! 7-12 5-10 5- 9 5- 8 4- 7
エレメントアタック 13-15 11-15 10-15 9-15 7-15
剣闘士L4(マスター)のときは
0- 3:失敗(72/256)
4- 7:クリティカル!(64/256)
8-15:エレメントアタック(120/256)
になる。
2−6−9.ほうげき
(乱数%100)%16
で以下のように判定。
0- 5:暗闇(104/256)
6- 9:毒(62/256)
10-13:混乱(60/256)
14-15:即死(30/256)
その後にダメージ判定があるが
追加効果は判定なしで必中(耐性が無い場合は必ず効果を示す)。
2−6−10.めいやく
乱数%16
で以下のように判定。
0- 5:スケルトン(6/16)
6- 9:ピラミディア(4/16)
10-13:フレアー(4/16)
14-15:ドラゴンゾンビー(2/16)
2−6−11.カーズ
乱数%13
で以下のように判定。
0:蛙
1:小人
2:毒
3:暗闇
4:老化
5:睡眠
6:麻痺
7:混乱
8:狂戦士
9:沈黙
10:停止
11:鈍化
12:スリップ
となる。
未調査だが、状態異常の種目は違うがグランドクロスも同様と思われる。
2−6−12.れんぞくま
ターゲットやコマンドがランダムな魔法が含まれている場合は、
行動前にそれらの処理を行う。
例:連続魔チョコボ+メテオ
デブチョコボ判定(失敗)→メテオの対象決定1→メテオの対象決定2→メテオの対象決定3→メテオの対象決定4
→チョコボキックの命中判定→チョコボキックの回避判定→→チョコボキックのダメージ判定
→メテオのダメージ判定1→メテオのダメージ判定2→メテオのダメージ判定3→メテオのダメージ判定4
2−6−13.瀕死攻撃
ミールストームなど瀕死攻撃喰らった場合は残りHPは
1+乱数%9
にで決まる。
現在HPがこれより低い場合は変化なし。
2−6−14.ケアルガ
単体掛けした場合も乱数を1消費する。
アンデットを瀕死にできる場合はさらに瀕死HPの判定をする。
2−7.戦闘開始と終了時の判定
2−7−1.先制攻撃とバックアタック
先制攻撃は乱数<32(「せんせいこうげき」アビリティ時は乱数が64)で成功。
バックアタックも同様に乱数<32で成功と思われる。
どちらを先に判定するのかは不明。
2−7−2.戦利品
確率でアイテムを落とす敵の場合は
乱数<16ならアイテムを落とす。
何も持っていない敵、100%落とす敵の場合でも判定をするのかどうかは未調査。
2−7−3.逃げる
一定時間LとRを押し続けた時に判定すると思われるが詳細は未調査。
2−8.未調査事項
あやつる(成功判定)
オーディン(斬鉄剣とグングニル)
3.参考サイト
Index of /~s-endo/
乱数テーブル、武器、魔法、コマンドの命中率と攻撃力、敵グループ、行動パターンなど。