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(使用者の魔力99、対象の魔力3)
  基本回復量 対象ボーナス 乱数補正 回復量
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

 

サンプル2(使用者の魔力3、対象の魔力99)
  基本回復量 対象ボーナス 乱数補正 回復量
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

 

サンプル3(使用者の魔力99、対象の魔力70)
  基本回復量 対象ボーナス 乱数補正 回復量
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(使用者の魔力99、対象の魔力99)
  乱数補正 乱数補正前の値 乱数補正後の値
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のオートヒーリング(なし)      

 

 

サンプル2(使用者の魔力99、対象の魔力99、戦闘前にポーションを1度使用)
  乱数補正 乱数補正前の値 乱数補正後の値
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のオートヒーリング(なし)      

 

サンプル3(使用者の魔力99、対象の魔力99、戦闘前にポーションを2度使用)
  乱数補正 乱数補正前の値 乱数補正後の値
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)敵へ与えるダメージについて

サンプル1(魔力99、フレア(10))
乱数 基本ダメージ 乱数補正 計算値 インターセプター 魔防 ごうとう 魔防 まどうし 魔防
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

 

サンプル2(魔力99、ブリザド(7))
乱数 基本ダメージ 乱数補正 計算値 インターセプター 魔防 ごうとう 魔防 まどうし 魔防
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

 

サンプル3(魔力70、フレアのしょ(13))
乱数 基本ダメージ 乱数補正 計算値 インターセプター 魔防 ごうとう 魔防 まどうし 魔防
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

 

サンプル4(魔力70、ブリザド(7))
乱数 基本ダメージ 乱数補正 計算値 インターセプター 魔防 ごうとう 魔防 まどうし 魔防
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
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となる

考察2
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 > 真・ダメージ計算式