獲得経験値の計算
ファミコン版ドラゴンクエスト2の、戦闘終了時に得られる経験値の計算方法について解説します。
概要
ファミコン版ドラクエ2の戦闘終了時に得られる経験値は、倒した敵モンスターの経験値の単純な合計ではありません。敵モンスターの数に応じて獲得経験値が割り増しされる仕組みとなっています。
計算方法
倒した敵モンスターの経験値を単純に合計したものをE、戦闘開始時の敵モンスターの合計匹数をNとします。
N = 1(敵モンスターが1匹)の場合は、Eがそのまま獲得経験値となります。
N ≧ 2(敵モンスターが2匹以上)の場合、獲得経験値は以下の式で計算されます(割り算は小数部分切り捨て)
E + (E * (N - 1) / 10) + 1
要するに、得られる経験値が(N - 1)割ほど割り増しされます。例えば、3匹で現れた敵モンスターを全て倒したとすると、得られる経験値は約20%割り増しされます。
割増率は戦闘開始時の敵数にのみ依存
勘違いしやすいのですが、Nはあくまでも戦闘開始時の敵モンスターの合計匹数であって、実際に倒した数ではありません。そのため、戦闘中に敵モンスターが逃げて数が減ったり、仲間を呼んで数が増えたりしても、Nの値は変動せず割増率はそのままです。
上限は9999
一度の戦闘で得られる経験値の上限は9999です。N = 1の場合はEの値が、N ≧ 2の場合は上式の計算結果が、10000を超えた場合でも、獲得経験値は9999となります。
オーバーフローするケース
Eの最大値は65535となっており、敵を倒し続けてもそれ以上には増えません。(どのみち9999の制限に引っかるので、そんなに稼ぐ意味はないのですが。)またオーバーフローしてEの値が0に戻るということもありません。
しかし、上述のN ≧ 2の場合の獲得経験値の計算はオーバーフローの発生を想定しておらず、計算の途中で65535以上の数字が出てくるとオーバーフローして獲得経験値がおかしくなります。もっとも、Eの値がよっぽど大きくならない限りオーバーフローすることはないので(はぐれメタルだと60匹くらい?)、普通にプレイしている分には発生しないでしょう。