ダメージ計算式解説


目次

参考

近似式

まずは近似的な計算式を示しておく。

トルネコからモンスターへの攻撃
ダメージ=基本攻撃力×(剣の強さ+ちから+8)/16×(15/16)^防御力±1/8倍の範囲の乱数
モンスターからトルネコへの攻撃
ダメージ=攻撃力×(15/16)^盾の強さ±1/8倍の範囲の乱数

実用上は以上の式が十分良い近似になっている。基本攻撃力(とここで呼ぶ値)はこのページの最後に、モンスターの攻撃力と防御力はモンスターデータに示した。


攻撃力の算出

以下、厳密な計算式を示していく。まず、攻撃側のステータスに応じて、0から255までの値をとる整数値が算出される。ダメージはこれに比例することになるため、ここではこの値を「攻撃力」と呼ぶことにする。

トルネコの通常攻撃

攻撃力=基本攻撃力+[基本攻撃力×(剣の強さ+ちから−8)/16の小数点以下を四捨五入した値]

「基本攻撃力」とここで呼ぶのは、レベルによって決まる整数値である。ゲームスタート時のステータスである「武器なし、ちから8」の状態に対応する攻撃力がレベルごとに決まっており、剣の強さとちからの値によるズレを1/16のファクターをかけて補正するという形式になっている。ただし最大で255までで、これを超える場合は一律255になる。基本攻撃力の一覧はこのページの最後に示した。

「剣の強さ+ちから−8」の部分は符号つき8ビット(-128〜+127)の数として扱われるので、剣の強さとちからの合計が136以上の場合は一見奇妙なダメージ値となる。 すなわち、まず[基本攻撃力×(剣の強さ+ちから−8−256)/16を四捨五入]を計算する。ただし値が-255以下になった場合は一律-255として扱う。次いで基本攻撃力を足す。計算結果が負の数になった場合は、最後に256を足す。こうして攻撃力が得られる。

矢によるトルネコの攻撃

通常攻撃の式の「剣の強さ+ちから」の部分を、矢の強さ(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. 攻撃力に112〜143の整数値乱数をかける
  2. 15/16をかけて端数を切り上げる、という工程を防御力の回数分だけ繰り返す
  3. 128で割って端数を切り捨てる

という(精度の低い)計算で算出されるため、端数が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
1029 700
1133 950
1237 1200
1341 1500
1446 1800
1551 2300
1656 3000
1761 4000
1865 6000
1971 9000
2074 15000
2177 23000
2280 33000
2383 45000
2486 60000
2589 80000
2690 100000
2791 130000
2892 180000
2993 240000
3094 300000
3195 400000
3296 500000
3397 600000
3498 700000
3599 800000
36100 900000
37100 999999

トップ > ゲームの話 > トルネコの大冒険 > ダメージ計算式解説