2021年10月24日日曜日

【ケルリート】ダメージ計算式

RPG作っていたらいつかはしたいなと思っていた、ダメージ計算式の紹介をします。

基本形は2作目『レイユウサイ』で完成していて、『ケルリート』の計算式にはそれを少し調整したものを使っています。

用語

『ケルリート』を遊んだことない人は、以下の単語をこのように読み替えてください。
力:物理攻撃力
知能:魔法攻撃力
生命力:物理防御力
信仰心:魔法防御力

基本式

(固定値+(攻撃側攻撃力×スキル倍率×力・知能依存比率×防御軽減A×防御軽減B×Lv補正B-防御減算))×Lv補正A×耐性補正×クリティカル・ガード補正×難易度補正
※計算結果が0未満の場合、1~5のダメージを与えます。

場効果や付与呪文、パッシブスキルによる補正まで書くと大変なので、ここでは省略しますが、それを除いて計算式全体を網羅したものが上の通りです。
各項については以下に詳細を書いていきます。

1.固定値
技能ごとに設定されている固定値。

2.攻撃側攻撃力
式:攻撃側の力および知能×バフ・デバフ補正

複数ある場合は乗算でかかります。×1.5が2つあったら、×2.25です。
防御側防御力も同様です。

3.スキル倍率
技能ごとに設定されている数値。
力、知能それぞれに設定可能。(設定を変えれば生命力、信仰心にもできる)
ちなみに付与呪文の「スキル威力を上げる/下げる」効果は、この値に加算します。

4.力・知能依存比率
式:力or知能依存スキル倍率/(力依存スキル倍率+知能依存スキル倍率)

たいていはどちらか一方しか使わないですが、「剣を使う魔法攻撃」みたいな謎のスキルを実装するために入れているものです。
どちらも100%ステータスを使えてしまうと強すぎるからね。

5.防御軽減A
式:(100-((生命力or信仰心×バフデバフ補正×力・知能依存比率/4)/(攻撃側攻撃力×力・知能依存比率/50)))/100
※計算結果が0.7未満の場合は、計算結果を0.7とする。
※力・知能依存比率が0の場合は、計算結果を1とする。

内部では反応防御と呼んでいます。最大で30%ダメージ軽減できるってことですね。
スゲー強い攻撃は受け止めるのしんどいですよね? じゃあ防御側の防御能力に対して強い攻撃を受けたら防御力がききづらくしよう! ということで作られた補正です。
4とか50といった定数は、調整用です。深い意味は無いです。

6.防御軽減B
式:((1-生命力or信仰心×バフデバフ補正×防御側レベル/40/500)
※計算結果が0.5未満の場合は、計算結果を0.5とする。

内部では素防御と呼んでいます。最大で50%ダメージ軽減できるってことですね。
こちらはキャラクターの成長に応じて軽減能力が強くなっていくという、いわゆる成長感をブーストする補正です。
バフデバフ補正後のステータスを使う関係で、バフデバフがわりといい仕事します。
40とか500といった定数は、調整用です。深い意味は無いよ。
当たり前っちゃ当たり前ですが、到達想定レベルをもとに調整しています。『ケルリート』ではLv70付近で補正が最大になります。

7.Lv補正B
式:((攻撃側レベル-防御側レベル)/-2+100)/100
※計算結果が0.7未満の場合、計算結果を0.7とする。
※計算結果が1.25超の場合、計算結果を1.25とする。

防御軽減を適用した後のダメージにレベル補正をかけて、数値の過激な変動を抑制する補正。
攻撃側のレベルが防御側のレベルより高いと、ダメージが軽減されます。
これだけだったらよかったんですが、Lv補正Aくんのせいであまり機能していない……。

8.防御減算
式:(生命力or信仰心×バフデバフ補正)/2

防御軽減AとBだけでは(とくに序盤が)弱いので、減算処理もします。

9.Lv補正A
式:((攻撃側レベル-防御側レベル)+100)/100
※計算結果が0.5未満の場合、計算結果を0.5とする。
※計算結果が1.5超の場合、計算結果を1.5とする。 
 
最終ダメージに補正をかけるもの。正直いらんかった気がしている補正ですね。

10.耐性補正
防御側の属性耐性を乗算で反映します。

11.クリティカル・ガード補正
クリティカル発生時、×1.5。またクリティカル発動した場合はガードが発動しない。
ガード発生時、×0.5。前回被弾時と同じ技を食らってガード発動した場合は、×0.33。
ちなみに パッシブスキル(生命の灯火など)のダメージ補正は、この補正の後にかかります。
 
12.難易度補正
難易度ふつう:主人公→敵は×1.2、敵→主人公は×0.8
難易度やさしい:主人公→敵は×1.5、敵→主人公は×0.6

難易度むずかしいは補正ないです。
 
補正爆盛りすぎて扱いづらさがあるのを感じていたので、次回作のダメージ計算式は少し単純になってます。