投稿者: atomos 投稿日: 8月 10日, 1999 at 05:43:46:
リプライ元: 【質問】ダメージの算出 投稿者: 0061あらため伊藤悠 投稿日: 7月 29日, 1999 at 22:36:37:
> タクティクスオウガで、ダメージがどうやって算出されているかご存知の方は
> いますか?
> データを改造したりして、いろいろ試しているのですが、どうもよくわかりま
> せん。
> いまのところわかったのは、
> ・LUKに差があると、ダメージは(LUK差)/2 【切り上げ】 だけ上下する
> ということぐらいです。
以前、タクティクスオウガ(SFC版)のコード解析でダメージ計算方法について
調べたことがあるので答えさせて下さい。といっても、あまりに(コードが)
難解なので、部分的にしかわからないのですが。
まず、基本的な算出の骨格は次のようになります。(すべての攻撃について確認した
わけではないのでかなり欠けているとは思いますが)
ダメージ算出法:
(1)基本攻撃値の算出。
(2)基本防御値の算出。
(3)攻撃値補正率の算出。
(4)防御値補正率の算出。
(5)基本ダメージの算出。
A=(基本攻撃値*攻撃値補正率/100)
-(基本防御値*防御値補正率/100);
A=MAX(A,1);
A=A*防御側の対応耐性値/100;
(6)LUK,RANDOM等の追加。
ここで基本攻撃値というのはステータスで表示されるものと同じと考えてもらって
結構です。一方、基本防御値は表示されているものとは違います。具体的には、
表示されている防御力に物理耐性値/100を掛けたものとなります。物理耐性値等
はすでに理解されているでしょうから説明を省きます。
(3),(4)の攻撃値および防御値補正率は地形効果や武器との相性などで変化します。
直接攻撃の場合、具体的に説明すると、(以下補正率をRとして表現)
直接攻撃防御補正率:
(1)基本値
R=100;ただし、ノックバックが成功した場合は110
(2)攻撃地形効果
R+=表示される攻撃地形効果+?(地肌は90)
(3)使用武器との属性相性
R+-=10;
(4)天候影響
R+=F2[天候値,ALI];
R+=クラス別天候耐性値(0,2,4)
F2[]の表:
天候値| N L C
------+--------
0| 0 1 -3
1| 0 0 -2
2| 0 -1 -1
3| 0 -2 0
4| 0 -3 1
※天候値が大きい程、天気が悪くなる
(5)得意武器
R+=3
(6)ドラゴンキラー効果
R+=8*効果数
(7)恐怖効果
(N) R-= 4*恐怖効果の数
(L) R-= 8*恐怖効果の数
(C) 効果なし
(8)ビースト、ドラゴン、ゴーレム応援効果
R+=5*効果数
(9)MINMAX
Rの下限0上限200に丸め込む。
防御補正率について簡潔に示すと
直接攻撃防御補正率:
(1)基本値 R=100;
(2)防御地形効果 攻撃地形効果とほぼ同じ
(3)ドラゴン防御効果 攻撃側がドラゴンの場合、耐ドラゴン防具ごとに+4
(4)恐怖効果
(5)ビースト、ドラゴン、ゴーレム応援効果
(6)MINMAX
ダメージ算出法の(6)のLUKについては私の調べた限りではLUK差だけダメージが増える
となっていました。どうも伊藤さんの結果とは違うようです。もっとも私の場合、実際
に確かめたわけではないので、おそらくこちらの方が間違っているのでしょう。
RANDOMはある範囲にプラスマイナスする疑似正規分布確率になります。フェアリー等で
はこのばらつきの範囲が大きくなるようです。
ここまで読まれたならわかるように以上の計算には欠けている部分があります。
例えば・・・
・攻撃側の属性と対象の属性との相性によるダメージ補正が欠けている。
・段差によるダメージ補正が欠けている。
・飛び道具によるダメージはもっと複雑なのではないか?
こういった疑問点は残りますが、結局これ以上解析するのは困難だったのであき
らめてしまいました。これ以上は伊藤さんのように試行錯誤で調べた方がうまく
いくかもしれません。
(参考)
・魔法によるダメージもおそらく上の方法と同じ。魔法によって基本攻撃値が
違うということはない。ただし、補正率計算は魔法ごとにかなり異なってくる。
これは試行錯誤で調べるのは困難。
・SFC版でのメモリ位置
天候のメモリ位置は7E1EA1
マップ属性値は 7EBE44-風属性値,7EBE46-炎,7EBE48-土,7EBE4A-水
ノックバック成功は7ED360を1にする。
以上、長文で申し訳ありません。