RPG INSTITUTE > Sa・Ga2 > 真・ダメージ計算式 公開開始 2001/3/3
Sa・Ga2の真・ダメージ計算式
乱数テーブルまで考慮した究極のダメージ計算式を作る予定。1さえ誤差は出ないはず。出たら意味なし(笑)。
報告1.移動時のケアルの回復量
ケアルの回復量は次のようにして計算できます。
回復量=基本回復量+対象ボーナス+乱数補正 基本回復量=使用者の魔力×4 対象ボーナス=対象の魔力×4 乱数補正=乱数(mod 魔力+1) |
注意1 | XX(mod**)とはXXを**で割った余りのこと |
注意2 | 乱数とは、その時の乱数テーブルにある値のこと(0〜255) |
注意3 | アイテム欄にあるケアルのしょを使う場合は使用者と対象は同じになる |
注意4 | いやしのつえの回復量もケアルと同じ。ただし、上のキャラから順に乱数を消費する。 |
注意5 | マギによる補正は持っていないので検証不可能。後日、報告する予定。 |
このままでは意味不明なので条件を設定して回復量の計算例を示します。
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | 200 | 225 | 188 | 2 | 47 | 121 | 251 | 170 | 167 | 110 | 51 | 45 | 159 | 41 | 235 | 133 |
本体条件.SFC+SGBで電源を入れた直後
基本回復量 | 対象ボーナス | 乱数補正 | 回復量 | |
1回目(200) | 99×4=396 | 3×4=12 | 200(mod100)=0 | 396+12+0=408 |
2回目(225) | 99×4=396 | 3×4=12 | 225(mod100)=25 | 396+12+25=433 |
3回目(188) | 99×4=396 | 3×4=12 | 188(mod100)=88 | 396+12+88=496 |
4回目(2) | 99×4=396 | 3×4=12 | 2(mod100)=2 | 396+12+2=410 |
5回目(47) | 99×4=396 | 3×4=12 | 47(mod100)=47 | 396+12+47=455 |
基本回復量 | 対象ボーナス | 乱数補正 | 回復量 | |
1回目(200) | 3×4=12 | 99×4=396 | 200(mod4)=0 | 12+396+0=408 |
2回目(225) | 3×4=12 | 99×4=396 | 225(mod4)=1 | 396+12+1=409 |
3回目(188) | 3×4=12 | 99×4=396 | 188(mod4)=0 | 396+12+0=408 |
4回目(2) | 3×4=12 | 99×4=396 | 2(mod4)=2 | 396+12+2=410 |
5回目(47) | 3×4=12 | 99×4=396 | 47(mod4)=3 | 396+12+3=411 |
基本回復量 | 対象ボーナス | 乱数補正 | 回復量 | |
1回目(200) | 99×4=396 | 70×4=280 | 200(mod100)=0 | 396+280+0=676 |
2回目(225) | 99×4=396 | 70×4=280 | 225(mod100)=25 | 396+280+25=701 |
3回目(188) | 99×4=396 | 70×4=280 | 188(mod100)=88 | 396+280+88=764 |
4回目(2) | 99×4=396 | 70×4=280 | 2(mod100)=2 | 396+280+2=678 |
5回目(47) | 99×4=396 | 70×4=280 | 47(mod100)=47 | 396+280+47=723 |
注意1 | これらのデータは実際の回復量を使用している |
注意2 | 回数の後の( )内にあるのはその時の乱数の値 乱数テーブルとの色の対応を参考にしてください。 |
報告2.戦闘時のケアルの回復量
計算式自体は移動中のものと同じです。ここで注意しないといけないのは、戦闘時のダメージ用乱数テーブルの進み方についてです。これを知らないと戦闘時のケアルの回復量は求められません。
本体条件.SFC+SGBで電源を入れた直後
Sa・Ga2では、戦闘時も移動中もダメージ用の乱数テーブルは同じアドレスで認識されているようです。つまり、移動中にケアルなどを使用して乱数を消費するとテーブルの位置が進み運命が変化します。(ダメージだけですが・・・)
エンカウント条件.最初の町の周辺で敵に遭う (ごうとう×4)
ここで示した乱数の消費の対象は推定です。そのあたりをご了承下さい。
乱数補正 | 乱数補正前の値 | 乱数補正後の値 | |
1人目のすばやさ(200) | ? | 99 | ? |
2人目のすばやさ(225) | ? | 97 | ? |
3人目のすばやさ(188) | ? | 97 | ? |
4人目のすばやさ(2) | ? | 19 | ? |
NPCのすばやさ(47) | ? | 99 | ? |
ごうとう1のすばやさ(121) | ? | ? | ? |
ごうとう2のすばやさ(251) | ? | ? | ? |
ごうとう3のすばやさ(170) | ? | ? | ? |
ごうとう4のすばやさ(167) | ? | ? | ? |
2人目のブロンズのたて(なし) | |||
1人目のブロンズのたて(なし) | |||
3人目のケアルによる回復(110) | 110(mod100)=10 | 99×4+99×4=792 | 792+10=802 |
NPCのイージスのたて(なし) | |||
4人目のブロンズのたて(なし) | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→2人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
NPCのオートヒーリング(なし) | |||
1人目のすばやさ(51) | ? | 99 | ? |
2人目のすばやさ(45) | ? | 97 | ? |
3人目のすばやさ(159) | ? | 97 | ? |
4人目のすばやさ(41) | ? | 19 | ? |
NPCのすばやさ(235) | ? | 99 | ? |
ごうとう1のすばやさ(133) | ? | ? | ? |
ごうとう2のすばやさ(23) | ? | ? | ? |
ごうとう3のすばやさ(65) | ? | ? | ? |
ごうとう4のすばやさ(220) | ? | ? | ? |
NPCのイージスのたて(なし) | |||
1人目のブロンズのたて(なし) | |||
2人目のブロンズのたて(なし) | |||
3人目のケアルによる回復(193) | 193(mod100)=93 | 99×4+99×4=792 | 792+93=885 |
4人目のブロンズのたて(なし) | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→2人目 | |||
NPCのオートヒーリング(なし) |
乱数補正 | 乱数補正前の値 | 乱数補正後の値 | |
1人目のすばやさ(225) | ? | 99 | ? |
2人目のすばやさ(188) | ? | 97 | ? |
3人目のすばやさ(2) | ? | 97 | ? |
4人目のすばやさ(47) | ? | 19 | ? |
NPCのすばやさ(121) | ? | 99 | ? |
ごうとう1のすばやさ(251) | ? | ? | ? |
ごうとう2のすばやさ(170) | ? | ? | ? |
ごうとう3のすばやさ(167) | ? | ? | ? |
ごうとう4のすばやさ(110) | ? | ? | ? |
NPCのイージスのたて(なし) | |||
1人目のブロンズのたて(なし) | |||
2人目のブロンズのたて(なし) | |||
3人目のケアルによる回復(51) | 51(mod100)=51 | 99×4+99×4=792 | 792+51=843 |
4人目のブロンズのたて(なし) | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→2人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
NPCのオートヒーリング(なし) |
乱数補正 | 乱数補正前の値 | 乱数補正後の値 | |
1人目のすばやさ(188) | ? | 99 | ? |
2人目のすばやさ(2) | ? | 97 | ? |
3人目のすばやさ(47) | ? | 97 | ? |
4人目のすばやさ(121) | ? | 19 | ? |
NPCのすばやさ(251) | ? | 99 | ? |
ごうとう1のすばやさ(170) | ? | ? | ? |
ごうとう2のすばやさ(167) | ? | ? | ? |
ごうとう3のすばやさ(110) | ? | ? | ? |
ごうとう4のすばやさ(51) | ? | ? | ? |
1人目のブロンズのたて(なし) | |||
3人目のケアルによる回復(45) | 45(mod100)=45 | 99×4+99×4=792 | 792+45=837 |
NPCのイージスのたて(なし) | |||
2人目のブロンズのたて(なし) | |||
4人目のブロンズのたて(なし) | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→2人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
ごうとう?のパンチ(なし)→1人目 | |||
NPCのオートヒーリング(なし) |
注意1 | すばやさの判定はターンの始めに行われる |
注意2 | ごうとうのパンチは全てたてで防いだ |
注意3 | ダメージに関係しない行動はダメージ用テーブルには影響しない ただし、確率判定用テーブル(仮)に影響しているようだ。 |
注意4 | 戦闘中にリセットをかけてフィールド上のケアルの回復量から乱数を逆算した |
注意5 | 回復量は戦闘で実際出たものを使用している |
報告3.魔法ダメージ
とりあえず、ダメージ計算式ができました(笑)。敵の魔力が分からないので勝手に数字いれちゃってますが(死)。
(a)敵へ与えるダメージについて
乱数 | 基本ダメージ | 乱数補正 | 計算値 | インターセプター | 魔防 | ごうとう | 魔防 | まどうし | 魔防 |
110 | 990 | 10 | 1000 | 1000 | 0 | 985 | 15 | 680 | 320 |
51 | 990 | 51 | 1041 | 1041 | 0 | 1026 | 15 | 1036 | 5 |
45 | 990 | 45 | 1035 | 1035 | 0 | 1020 | 15 | 1032 | 3 |
159 | 990 | 59 | 1049 | 1049 | 0 | 1034 | 15 | 1041 | 8 |
41 | 990 | 41 | 1031 | 1031 | 0 | 1016 | 15 | 1029 | 2 |
235 | 990 | 35 | 1025 | 1025 | 0 | 1010 | 15 | 1025 | 0 |
乱数 | 基本ダメージ | 乱数補正 | 計算値 | インターセプター | 魔防 | ごうとう | 魔防 | まどうし | 魔防 |
110 | 693 | 10 | 703 | 703 | 0 | 693 | 10 | 479 | 224 |
51 | 693 | 51 | 744 | 744 | 0 | 733 | 11 | 506 | 238 |
45 | 693 | 45 | 738 | 738 | 0 | 727 | 11 | 502 | 236 |
159 | 693 | 59 | 752 | 752 | 0 | 741 | 11 | 512 | 240 |
41 | 693 | 41 | 734 | 734 | 0 | 723 | 11 | 500 | 234 |
235 | 693 | 35 | 728 | 728 | 0 | 718 | 10 | 496 | 232 |
乱数 | 基本ダメージ | 乱数補正 | 計算値 | インターセプター | 魔防 | ごうとう | 魔防 | まどうし | 魔防 |
110 | 910 | 39 | 949 | 949 | 0 | 935 | 14 | 646 | 303 |
51 | 910 | 51 | 961 | 961 | 0 | 947 | 14 | 654 | 307 |
45 | 910 | 45 | 955 | 955 | 0 | 941 | 14 | 650 | 305 |
159 | 910 | 17 | 927 | 927 | 0 | 914 | 13 | 631 | 296 |
41 | 910 | 41 | 951 | 951 | 0 | 937 | 14 | 647 | 304 |
235 | 910 | 22 | 932 | 932 | 0 | 919 | 13 | 634 | 298 |
乱数 | 基本ダメージ | 乱数補正 | 計算値 | インターセプター | 魔防 | ごうとう | 魔防 | まどうし | 魔防 |
110 | 490 | 39 | 529 | 529 | 0 | 522 | 7 | 360 | 169 |
51 | 490 | 51 | 541 | 541 | 0 | 533 | 8 | 368 | 173 |
45 | 490 | 45 | 535 | 535 | 0 | 527 | 8 | 364 | 171 |
159 | 490 | 17 | 507 | 507 | 0 | 500 | 7 | 345 | 162 |
41 | 490 | 41 | 531 | 531 | 0 | 524 | 7 | 362 | 169 |
235 | 490 | 22 | 512 | 512 | 0 | 505 | 7 | 349 | 156 |
計算値 | ごうとう | MR/D | まどうし | MR/D |
507 | 7 | 0.0138 | 162 | 0.320 |
531 | 7 | 0.0132 | 169 | 0.318 |
535 | 8 | 0.0150 | 171 | 0.320 |
541 | 8 | 0.0148 | 173 | 0.320 |
728 | 10 | 0.0137 | 232 | 0.319 |
734 | 11 | 0.0150 | 234 | 0.319 |
932 | 13 | 0.0139 | 298 | 0.320 |
949 | 14 | 0.0148 | 303 | 0.319 |
1000 | 15 | 0.0150 | 320 | 0.320 |
1025 | 15 | 0.0146 | 0 | 0 |
注意1 | 戦闘の組み立て方には触れません。報告2を見ればだいたいわかるはず。 |
注意2 | 基本ダメージと乱数補正はケアルの回復量と同じ物を使用した。 |
注意3 | 魔防は魔法防御のこと。便宜上、実ダメージ-計算値とした。 |
注意4 | スルメの記憶が確かなら機械(インターセプター)の魔力は0だったようなきがする。 |
注意5 | 魔法の威力はインターセプターのダメージにあうように設定した。 |
注意6 | MR:魔法防御、D:ダメージのこと |
注意7 | 計算値=基本ダメージ+乱数補正 以降この計算値を補正ダメージと呼ぶ |
1 | 魔力0の敵は魔法防御が0である。 |
2 | ケアルの回復量とほぼ同じ式で魔法ダメージを出せる |
3 | 魔法防御は対象が同じなら基本的にはダメージに比例 まどうしにフレアをした時になぜか魔法防御が消滅している場合がある ループしているにしても数字が320程度と半端だし・・・。 |
(b)敵から魔法で受けるダメージと味方の魔力について
魔力が違う味方が、乱数45の時にまどうしのサンダーのしょを受けた時について考える。
魔力 | 補正ダメージ | 魔法防御 | 魔法防御/魔力 |
0 | 685 | 0 | |
3 | 675 | 10 | 3.3333333 |
18 | 624 | 61 | 3.3888889 |
49 | 518 | 167 | 3.4081633 |
58 | 487 | 198 | 3.4137931 |
70 | 446 | 239 | 3.4142857 |
99 | 674 | 11 | 0.1111111 |
この表から明らかなように基本的に魔法防御は魔力に比例する。99の時は魔法防御がループしちゃってるみたいですが(死)。
サンダーのしょの攻撃力が10であることをインターセプターへの攻撃で確認している。ここで、これを利用してまどうしの魔力を推定してみる。魔力0の時のダメージが685である。また、乱数が45なので次のようにして魔力が分かる。
魔力=(ダメージ-乱数補正)/攻撃力 (対象の魔力が0の場合)
この式にダメージ=685、乱数補正=45、攻撃力=10を代入すると魔力=64となる
1 | 魔法防御は魔力と補正ダメージに比例する |
2 | まどうしの魔力は64である(実際にそうかは知らん) |
3 | 魔法防御はやっぱりループしちゃってる(笑) |
補正ダメージ | 魔法防御 | D×OM | D×OM/魔法防御 |
507 | 162 | 32448 | 200.3 |
531 | 169 | 33984 | 201.1 |
535 | 171 | 34240 | 200.2 |
541 | 173 | 34624 | 200.1 |
728 | 232 | 46592 | 200.8 |
734 | 234 | 46976 | 200.8 |
932 | 298 | 59648 | 200.2 |
949 | 303 | 60736 | 200.4 |
1000 | 320 | 64000 | 200.0 |
1025 | 0 | 65600 | 0 |
注意1 | 補正ダメージをD、対象の魔力をOMとした |
見てのとおりです。とってもわかりやすい結果になりました。魔法防御は補正ダメージと対象の魔力の積を200で割ったものになると考えられます。ここで重要なのはこの積が65535を超えた場合にループしていると考えられることです。つまり、これを一度8ビット認識でデータ保持しているが、8ビットの限界を超えて9ビット目に突入した場合も真っ正直に計算しているためですね。
これらのことを総合するとダメージ計算式は次のようになります。
ダメージ=基本ダメージ+乱数補正-魔法防御 基本ダメージ=使用者の魔力×魔法の攻撃力 乱数補正=乱数(mod 魔力+1) 補正ダメージ=基本ダメージ+乱数補正 魔法抵抗=(補正ダメージ×対象の魔力)(mod 65536) 魔法防御=魔法抵抗/200 (端数切り捨て) |
以下に示すのは乱数45の時にまどうしのサンダーのしょを食らった時のダメージです。
魔力 | ダメージ | 計算値 | 魔法防御 | 計算値 |
0 | 685 | 685 | 0 | 0 |
3 | 675 | 674.7 | 10 | 10.3 |
18 | 624 | 623.4 | 61 | 61.7 |
49 | 518 | 517.2 | 167 | 167.8 |
58 | 487 | 486.4 | 198 | 198.7 |
70 | 446 | 445.3 | 239 | 239.8 |
99 | 674 | 673.6 | 11 | 11.4 |
注意 | その他の例も計算式で誤差なしで計算できた。ただし、ごうとうの魔力は3と仮定した。 |
今後の予定
1.武器ダメージの計算式を作る 2.戦闘中の行動順を乱数テーブルによって予測する |
これができればダメージ計算式は90%完成したようなものでしょう。
もっとも次はロマサガ1の善行をやるからいつになるかは知りませんが(爆)。
RPG INSTITUTE > Sa・Ga2 > 真・ダメージ計算式