まずは近似的な計算式を示しておく。
実用上は以上の式が十分良い近似になっている。基本攻撃力(とここで呼ぶ値)はこのページの最後に、モンスターの攻撃力と防御力はモンスターデータに示した。
以下、厳密な計算式を示していく。まず、攻撃側のステータスに応じて、0から255までの値をとる整数値が算出される。ダメージはこれに比例することになるため、ここではこの値を「攻撃力」と呼ぶことにする。
攻撃力=基本攻撃力+[基本攻撃力×(剣の強さ+ちから−8)/16の小数点以下を四捨五入した値]
「基本攻撃力」とここで呼ぶのは、レベルによって決まる整数値である。ゲームスタート時のステータスである「武器なし、ちから8」の状態に対応する攻撃力がレベルごとに決まっており、剣の強さとちからの値によるズレを1/16のファクターをかけて補正するという形式になっている。ただし最大で255までで、これを超える場合は一律255になる。基本攻撃力の一覧はこのページの最後に示した。
「剣の強さ+ちから−8」の部分は符号つき8ビット(-128〜+127)の数として扱われるので、剣の強さとちからの合計が136以上の場合は一見奇妙なダメージ値となる。 すなわち、まず[基本攻撃力×(剣の強さ+ちから−8−256)/16を四捨五入]を計算する。ただし値が-255以下になった場合は一律-255として扱う。次いで基本攻撃力を足す。計算結果が負の数になった場合は、最後に256を足す。こうして攻撃力が得られる。
例
基本攻撃力=5
剣・力による補正=5×(0+8−8)/16=0
攻撃力=5+0=5
基本攻撃力=46
剣・力による補正=46×(2+2−8)/16=-11.5
四捨五入→-12
攻撃力=46−12=34
基本攻撃力=56
剣・力による補正=56×(2+7−8)/16=3.5
四捨五入→4
攻撃力=56+4=60
基本攻撃力=5
剣・力による補正=5×(37+99−8−256)/16=-40
攻撃力=5−40+256=221
通常攻撃の式の「剣の強さ+ちから」の部分を、矢の強さ(4または12)で置き換えた値。
通常攻撃の式の「剣の強さ+ちから」の部分を、投げる武器の強さで置き換えた値。
モンスターデータに記載した値。モンスターがレベルアップした場合は、レベルが1上がる度に1.5倍になる(端数は切り上げ)。ただし、256以上になった場合はその数値から256を引いた値になる。
例:レベルアップに伴うキメラの攻撃力の変化
22→33→50→75→113→170→255→127→191→31→…
通常攻撃の式の「剣の強さ+ちから」の部分を4で置き換えた値。何故かトルネコが木の矢でモンスターを攻撃した時の計算法が採用されるようで、リリパット自身のレベルでなくトルネコのレベルによって攻撃力が変化する。
例:リリパットの矢がモンスターに当たった場合、トルネコのレベルが7だと攻撃力14相当のダメージが、トルネコのレベルが23だと攻撃力62に相当するダメージが発生する。
矢の罠、毒矢の罠、落としあなにかかった場合は、攻撃力8に相当するダメージが発生する。
前節で求められた攻撃力を元に、具体的なダメージが計算される。以下に示したうち第一式は防御力(盾の強さ)によるダメージの減少を、第二式は乱数によるダメージの分布を表す式である。最終的には端数が切り捨てられダメージは整数値を取る。ただし、後述するようにこれらの式は武器以外のものをぶつけた時のダメージには当てはまらない。
基本ダメージ=攻撃力×(15/16)^防御力
ダメージ=基本ダメージ×n/128 (n=112〜143の整数値乱数)の端数を切り捨てた値
上式での計算結果が255を超える場合は255に修正される。ただしはぐれメタルに対するダメージの場合は1を超えると1に修正される。ドラゴンキラー装備時のドラゴンへの攻撃はこの数値の2倍になる。非装備時のダメージがまず求められその2倍として計算されるため、偶数ダメージしか与えられない。矢や武器の投げつけにも適用されるが、装備していたドラゴンキラーを投げた場合には、命中時に装備していないことになるため2倍にはならない。
乱数によるダメージ分布については、n=112〜143に対応するダメージ量がそれぞれ1/32の確率で均等に生じる。よって、整数値に直した結果のダメージだけを見ると、値によって出現率に差が生じることがある。また、32種類の値しかとらないので、攻撃力が大きく防御力が小さい場合にはとびとびの値をとる分布になる。
厳密に言うと、上式は近似式である。 実際の数値は
という(精度の低い)計算で算出されるため、端数が1に近い場合は差が生じる。おそらくソースコードがアセンブラで書かれているか、もしくは整数型の変数が使われているのだろう。
この場合のみ、レベルにも相手の防御力にも無関係な特殊なダメージ計算になる。ドラゴンキラーによる補正もなし。ただしはぐれメタルに最大で1のダメージしか与えられないのは同様である。
盾の強さが1〜127の場合は、盾の強さと等しいかそれより1少ないダメージを与える。盾の強さが0もしくは128以上の場合は、盾の強さと等しいダメージを与える。
1もしくは2のダメージを与える。
0もしくは1のダメージを与える。
応用問題として、次のような状況を想定してモンテカルロシミュレーションを試みた。ソースコードはCで書いた。
トルネコのパラメータはゲーム開始時のもの(レベル1、武器・盾なし、ちから8)。二匹のゴーストと同時に戦って生き延びられる確率は?
攻撃が外れる確率は双方ともに1/8とした(→補足その1・確率と統計を参照)。試行回数は1000000回。そのうち、トルネコが勝利できた(=トルネコがやられる前にゴーストを二匹とも倒すことができた)回数は507430回であった。統計誤差が0.05%程度見込まれるものの、生存確率はおおよそ五割であると言って良いと思われる。
追記:解析的な計算 (ソースコード) では、50.76%の確率でトルネコが勝利するという結果が出た。先のシミュレーションでは無視していた10ターンごとのHP回復も考慮に入れてあるが、そもそも10ターン以上戦闘が続く確率は400万分の一以下とかなり小さく、結果にはほとんど影響しないようだ。ちなみに、回復分を計算に入れると、互いの攻撃が外れ続けて長いターンがかかるケースの分を厳密に計算するのが非常に面倒になるため、このコードでは確率が100億分の一以下になった時点で計算を打ち切り、それ以上長いターンの分は切り捨てている。
レベルアップに必要な経験値の方は、トルネコとモンスターに共通である。モンスター自身の経験値は、そのモンスターを倒した時にトルネコが得る経験値に等しい。
図: レベルアップに伴う基本攻撃力の変化
レベル | 基本攻撃力 | 経験値 |
---|---|---|
1 | 5 | 0 |
2 | 7 | 10 |
3 | 9 | 30 |
4 | 11 | 60 |
5 | 13 | 100 |
6 | 16 | 150 |
7 | 19 | 230 |
8 | 22 | 350 |
9 | 25 | 500 |
10 | 29 | 700 |
11 | 33 | 950 |
12 | 37 | 1200 |
13 | 41 | 1500 |
14 | 46 | 1800 |
15 | 51 | 2300 |
16 | 56 | 3000 |
17 | 61 | 4000 |
18 | 65 | 6000 |
19 | 71 | 9000 |
20 | 74 | 15000 |
21 | 77 | 23000 |
22 | 80 | 33000 |
23 | 83 | 45000 |
24 | 86 | 60000 |
25 | 89 | 80000 |
26 | 90 | 100000 |
27 | 91 | 130000 |
28 | 92 | 180000 |
29 | 93 | 240000 |
30 | 94 | 300000 |
31 | 95 | 400000 |
32 | 96 | 500000 |
33 | 97 | 600000 |
34 | 98 | 700000 |
35 | 99 | 800000 |
36 | 100 | 900000 |
37 | 100 | 999999 |
トップ > ゲームの話 > トルネコの大冒険 > ダメージ計算式解説