2018年10月4日木曜日

【サンリオタイムネット】ダメージ計算


本項の情報はプログラミングの素人である筆者個人が調べたものです。
誤りの指摘や情報提供などお待ちしています。

調査に使ったカートリッジ
過去編 刻印00
未来編 刻印12

計算式

ダメージ=攻防差+(技の威力×補正値)+ダメージ乱数

・補正値
=タイプ相性による補正+技のタイプ一致による補正+見事に決まった!による補正

・攻防差+(技の威力×補正値)/8<1のとき
ダメージ乱数=0

・攻防差+(技の威力×補正値)/8≧1のとき
0 ≦ ダメージ乱数 < {攻防差+(技の威力×補正値)}/8

※ゲーム内の乗算・除算は全て小数点以下切り捨て


ダメージ計算の内部処理


全体の流れ

1.攻防差を計算 ※特別な技はこころの差で計算
2.技の威力×タイプ相性等の補正値
3.数値1+数値2を計算。これを"仮ダメージ"とする。
4."仮ダメージ"を元にダメージ乱数をつくる
5."仮ダメージ"+ダメージ乱数=与えるダメージ

--------------------------------------------------------------------------------------------

攻防差について

攻撃側の「ちから」から防御側の「まもり」を引く。そのままの値がダメージの一部になる。
相性やレベル差等の補正を受けない為、ダメージ計算での比重はかなり大きいと言える。


★以下の9個の技は、「こころ」の差でダメージ計算を行う

番号 技名 属性 命中 急所 威力 追加効果 発動率 備考
15 ハウリング なし 208 32 16 パニック 21 急所にあたりやすい。優秀。
25 ねつうつし ヒート 240 16 5 ちからダウン 32 ヒートの初期技。
4B ひとだま れい 224 16 5 なし 0 れいの初期技。
4C てんしのうたごえ れい 255 0 12 HP吸収 必ず ライフドレインのこころ版。命中最高値。
58 サイコキネシス ESP 224 16 14 なし 0 使いやすいが威力はマインドブラストにやや劣る。
59 メンタルアタック ESP 213 16 19 こころダウン 48 耐久ダウンを狙いつつ攻撃できる。
7E 39ど8ぶ ヒート 208 16 16 はやさダウン 32 スキルパック27。はやさダウンはかなり有用。
7F セントエルモのひ ほのお 208 16 19 パニック 16 スキルパック28。
8F マインドブラスト ESP 224 16 17 むがむちゅう 37 スキルパック44。

-------------------------------------------------------------------------------------------

技の威力について

全体的に低めに設定されている。
格上相手だと弱点を突いて三倍になっても攻防差で相殺されてしまう。

<技の威力の代表例>
威力1(最小) しにものぐるい・ビーンズショット  最弱の技と最凶の技
威力2~4    しょくしゅ・ライジングサン等     複数回攻撃
威力5     パンチ・シャイニング・いしなげ等  各属性の弱攻撃

威力26     げきりん
威力27(最大)コメットフォール・マグニチュードX

-------------------------------------------------------------------------------------------

補正値について

[タイプ相性・タイプ一致・見事に決まる]の三つ。
その合計が技にかける倍率になる。

●タイプ相性による補正

相性なし   +1
弱点をついた +3
苦手なようだ +2.5
平気なようだ +0.25
あまり効いてない+0.5

●タイプ一致による補正

以下の二つの条件を満たすと倍率+0.25
・自分のタイプと使う技のタイプが一致している
・タイプ相性が「相性なし」以外

●見事に決まった!による補正

所謂クリティカルヒット。倍率+0.5。
相手より素早い程決まりやすくなる。

●補正の組み合わせ一覧

内部処理ではそれぞれの組み合わせに番号が割り当てられている。


番号 補正の組み合わせ 倍率
00 相性なし 1
01 弱点を突いた 3
02 苦手なようだ 2.5
03 平気なようだ 0.25
04 あまり効いていない 0.5
05 弱点+タイプ一致 3.25
06 苦手+タイプ一致 2.75
07 平気+タイプ一致 0.5
08 あま+タイプ一致 0.75
09 なし+見事 1.5
0A 弱点+見事 3.5
0B 苦手+見事 3
0C 平気+見事 0.75
0D あま+見事 1
0E 弱点+一致+見事 3.75
0F 苦手+一致+見事 3.25
10 平気+一致+見事 1
11 あま+一致+見事 1.25
-------------------------------------------------------------------------------------------

ダメージ乱数について

{攻防差 +(技の威力×補正値)}を"仮ダメージ"とする。
始めに 仮ダメージ/8 が計算される。
1未満なら処理終了。乱数による加算はなし。

1以上の場合、乱数を使った計算が行われる。
計算結果の範囲は下記の通り。
0≦ ダメージ乱数 < 仮ダメージ  /8

仮ダメージ16 ⇒ 16/8=2なので、乱数の範囲は0~1
仮ダメージ80 ⇒ 80/8=10なので、乱数の範囲は0~9

最終的なダメージは(C988-89)に格納される。

乱数の計算詳細

かなり面倒な計算処理が行われている。

・前準備
Aレジスタ=仮ダメージ/8
Hレジスタ=00 
Lレジスタ=00~FFのランダム数
この状態で call 048A する
・048A
HLを16回二倍し溢れた分をAに入れていくプログラム。
Aが仮ダメージ/8以上になると仮ダメージ/8で引かれる(乱数<仮ダメージ/8となる)。
ROM0:048A D5               push de
ROM0:048B 16 10            ld   d,10   ’D=繰り返しの回数
ROM0:048D 5F               ld   e,a     ’E=仮ダメージ
ROM0:048E AF               xor  a     ’Aは初期化
ROM0:048F 29               add  hl,hl    ’Lに入れたランダム数を二倍していく
ROM0:0490 17               rla        ’HLから溢れた分がaに入る
ROM0:0491 38 03            jr   c,0496
ROM0:0493 BB               cp   e     ’A-E
ROM0:0494 38 02            jr   c,0498  ’A-E が負数ならジャンプ
ROM0:0496 93               sub  e
ROM0:0497 2C               inc  l
ROM0:0498 15               dec  d
ROM0:0499 20 F4            jr   nz,048F
ROM0:049B D1               pop  de
ROM0:049C C9               ret  


実例

過去編のビッグシティにてテリテリボーズLv35の水技で実験した。
[ちから、まもり、はやさ、こころ]=[55 54 56 56](ウォッチ補正込み)

防御側① ゲッスイキンLv38[63 57 63 53]

攻防差=55-57=-2
水→土 相性なし:倍率+1.0
相性が普通なのでタイプ一致補正なし

てっぽうみず タイプ水 威力5
通常HIT:-2+int(5*1.0)=3 ’3/8が1未満なのでダメージ乱数なし
見事HIT:-2+int(5*1.5)=7

ウォーター タイプ水 威力9
通常HIT:-2+int(9*1.0)=7
見事HIT:-2+int(9*1.5)=11+0

防御側② ゼンマイパソゴンLv35[46 45 43 47]

攻防差=55-45=10
水→マシン 苦手なようだ!!:倍率+2.5
水 水 タイプ一致:倍率+0.25

てっぽうみず タイプ水 威力5
通常HIT:10+int(5*2.75)=23+0~1
見事HIT:10+int(5*3.25)=26+0~2

ウォーター タイプ水 威力9
通常HIT:10+int(9*2.75)=34+0~3
見事HIT:10+int(9*3.25)=39+0~3

防御側③ Mr.ドルキャンLv34 [49 46 48 57]

攻防差=55-46=9
水→炎 弱点を突いた:倍率+3
水 水 タイプ一致:倍率+0.25

てっぽうみず タイプ水 威力5
通常HIT:9+int(5*3.25)=25+0~2
見事HIT:9+int(5*3.75)=27+0~2

ウォーター タイプ水 威力9
通常HIT:9+int(9*3.25)=38+0~3
見事HIT:9+int(9*3.75)=42+0~4

0 件のコメント:

コメントを投稿