DQ4 攻撃の乱数幅について(修正版)
以前、DQ4の攻撃乱数に関する記事を書きましたが、色々間違いがあったため修正版になります。
<参考:前回の記事>
最初に前回掲載した表で間違っていた部分から見ていきます。
※以下の記載の中で用いている数式はGoogle Sheetsに準拠した記載となります。
※基礎値=ROUNDDOWN((攻撃側の攻撃力ーROUNDDOWN(守備側の防御力÷2))÷2)とします
①基礎値が0の場合
前回表に入れていませんでしたが、0もしくは1のダメージで
同確率ではなく0が出やすい設定となります。
②基礎値が1~7の場合
最大乱数が1低くなっていました。実際には最大乱数は基礎値+1です。
③基礎値が9,10,11,17,18,19の場合
基礎値÷8が1,2,3の場合の最大乱数が1低くなっていました。
面白いことに基礎値が9の場合、8と同じ乱数値です。(これは意外な結果でした)
上記の結果から以下のような法則があると考えることができそうです。
(実際の実行コードを解析したわけではありませんので、その点はご承知ください。)
最小乱数=基礎値ーMAX(1,ROUNDUP(基礎値÷8))
最大乱数=最小乱数+MAX(2,ROUNDDOWN(基礎値÷4))
実際に使われる乱数=MAX(0,RANDBETWEEN(最小乱数,最大乱数))
ここまでで基本的なパターンについては説明できたのですが、
実際には上記のルールに当てはまらないケースがあります。
具体的な例として、味方側の守備力を上げて基礎値が0になる状態にしても
敵から2以上のダメージを受けた経験のある方もいるのではないでしょうか。
ここからは複数のモンスターに対して乱数を調査した結果を見て
上記とは別のルールがどのようなものか検討してみたいと思います。
①スライム(攻撃力9)からの被ダメージ
この場合は上記のルール通りの乱数になっているように見えます。
②エレフローパー(攻撃力22)からの被ダメージ
エレフローパーに対しては守備力が高いと被ダメージが常に0になることは
(RTAをプレイしている人なら)知っている人も多いと思います。
基礎値1以上についてはルール通りですが
0については何か別のルールが適用されていそうです。
③きゅうけつこうもり(攻撃力25)からの被ダメージ
この場合、基礎値2以上はルール通りですが
0、1についてはルール外でかつ同じ乱数幅になっているのが興味深いところです。
④ドラゴンバタフライ(攻撃力36)からの被ダメージ
この場合、基礎値3以上はルール通りですが
0~2については、やはりルール外で同じ乱数幅になっています。
ただ、法則も見えてきた感じです。
以下2つのケースを上げますので、興味のある方は確認ください。
⑤メタルスコーピオン(攻撃力50)からの被ダメージ
⑥キラーアーマー(攻撃力80)からの被ダメージ
ここまでの調査結果から以下のルールが存在すると推測できそうです。
前提条件
①敵→味方への攻撃であること
②基礎値<ROUNDDOWN(敵の攻撃力÷12)となること
この条件を満たす場合、最小乱数と最大乱数が以下に変更となる
最小乱数=0
最大乱数=ROUNDDOWN(敵の攻撃力÷12)ー1
おそらくここまでに記載した内容でほぼ網羅できているのではないかと思われます。
ただ調査数はそこまで多くないため、
今回記載した内容に反するケースが今後見つかることも考えられますので
その点は留意いただけますと幸いです。