◆◆◆◆◆命中率◆◆◆◆◆
バーコードワールドを解析するとで、長年の謎だった命中率を解析しました。
(通常の「バトル」コマンドのみ。魔法のときの命中率はまだ未計算)
詳しい解析が読みたい方はこちら
まず、スピードを元に命中率アップ値の計算が行われます。
スピードの算出方法は、先攻のページ参照。
自分のスピードが相手のスピード値と同じか、上回っているときは、
命中率アップ値=自分のスピード - (自分のHP/ 100 / 83)
計算の結果命中率アップ値が負の値になった場合は更に下記の計算を行う。
命中率アップ値=256 + 命中率アップ値
自分のスピードが相手のスピードを下回っているときは命中率アップ値はゼロとなる
命中率アップ値=0
次に、命中率の初期値が決定される。命中率初期値は下記の表の通りとなる。
解析の途中で謎だった、39の特殊能力が判明しました。
特殊能力 |
特殊能力の内容 |
命中率初期値 |
38 |
自分の命中率アップ |
230 |
40 |
自分の命中率ダウン |
50 |
39 |
相手の命中率アップnew! |
230 |
41 |
相手の命中率ダウン |
50 |
その他 |
デフォルト値 |
204 |
※自分が命中率の特殊能力を持っていなかった場合のみ相手の命中率系の特殊能力が有効となる。
(つまり相手が命中率ダウンを持っていても、自分が命中率アップを持っていた場合は、自分の命中率アップのみが有効となる)
そして、命中の計算処理が行われる。まず、
命中率初期値 + 命中率アップ値 > 255 なら命中
次に、命中率初期値 + 命中率アップ値 と 乱数(0〜255)で比較が行われ、
命中率初期値 + 命中率アップ値 > 乱数 なら命中
命中率初期値 + 命中率アップ値 <= 乱数 ならMISSとなる。
つまり、自分のスピードが9で、相手のスピードを上回っており、
自分のHPが49900、命中系の特殊能力なしのときの計算をしてみると
命中率アップ値=9 - (49900 / 100 / 83) = 6 となるので、
204 + 6 > 乱数(0〜209) なら命中
204 + 6 <= 乱数(210〜255) ならMISSとなる。
命中率は、 210 / 256 = 82%となる
もし、スピードが相手を下回っていて、命中系の特殊能力なしなら、
204 + 0 > 乱数(0〜203) なら命中
204 + 0 <= 乱数(204〜255) ならMISSとなる。
命中率は 204 / 256 = 79%となる
また、自分のスピードが9でスピードが相手を上回っていて、
HPが100、自分の命中率アップの特殊能力を持っている場合は、
230 + 9 > 乱数(0〜238) なら命中
230 + 9 <= 乱数(239〜255) ならMISSとなる。
命中率は239 / 256 = 93%となる
もし、スピードが相手を下回っていて、命中率ダウンの特殊能力なら、
50 + 0 > 乱数(0〜49) なら命中
50 + 0 <= 乱数(50〜255) ならMISSとなる。
命中率は50 / 256 = 20%となる
もし、スピードが2で、相手のスピードを上回っていて、HPが49900で、特殊能力なしだと、
命中率アップ値=2 - (49900 / 100 / 83) = -4
命中率アップ値=256 +(–4) = 252となる
204 + 251 > 255となるので、このときは必中となる。
この必中現象は、ファミコン版のプログラマーの意図するものなのかは不明。
(命中率アップ値が負になったときは、命中率アップ値を0にすべきな気もするので、バグかも)
ファミコン版であるバーコードワールドには、守護星の処理がないため、BBIIでの計算式は不明だが、
命中率初期値 + 命中率アップ値) × 守護星(0.8〜1.2) > 乱数
または、
(命中率初期値 + 命中率アップ値 × 守護星(0.8〜1.2))> 乱数
のいずれかの計算がおこなわれているのが濃厚と思われる。