ダメージ分散度の内部計算について【解決済み】

焔 硝
記事: 2
登録日時: 2016年9月01日(木) 01:01

ダメージ分散度の内部計算について【解決済み】

投稿記事by 焔 硝 » 2016年9月01日(木) 01:28

通常攻撃や、スキル(魔法)等で攻撃した際に発生する分散度についての質問です。

データベースで設定できるスキルの分散度の割合に関わらず、
行動を行ったアクター(エネミー含む)の特定ステータスに影響を受けて分散度が増減させたいと思いスクリプトを覗いて見ましたが、さっぱりわかりませんでした。(それらしい部分は見つけましたが、javaができない為いじれませんでした。)

具体的には(全ての)スキルで与えるダメージの分散度を『使用者』の『運』のステータスによって減らしたいです。
(運の名称を変えて使おうかなと考えています。)

例:スキル『攻撃』 分散度 20(%) 使用キャラA 運50 実際に実行される分散度 10(%)
  スキル『攻撃』 分散度 20(%) 使用キャラB 運25 実際に実行される分散度 15(%)
(キャラクターの成長に応じ、運は0~100の間で変動して最大時(100)には分散度がなくなる(0%になる))

皆さんのお力を貸して頂けたら幸いです。
最後に編集したユーザー 焔 硝 on 2016年9月04日(日) 20:20 [ 編集 1 回目 ]

アルツール
記事: 64
登録日時: 2016年4月10日(日) 23:15

Re: ダメージ分散度の内部計算について

投稿記事by アルツール » 2016年9月01日(木) 04:05

こんばんは。
参考になるかどうかは分かりませんが、自分が以前組んだ類似のケースを載せておきます。

※自分の場合は特定のスキル限定で適用させたかった為、下記のようにしていますが
  システムの根本を弄ってデフォルト化したい場合は、他の方法を試された方が良いかもです。

1. Yanfly様のプラグイン「YEP_DamageCore」を使用
 計算式を分かりやすく整理したかったので、使用しています

2. 分散度を0%にする
 分散度は、後ほどの計算式に含めます

3. 「YEP_DamageCore」のマニュアルを参考に、スキルのメモ欄に計算式を記入

4. 計算式の最後に、分散度を決定する為の計算式を加える
 JAVAScriptの計算式の記述方法を参考に、randomを使用した計算式を加えます

上記を元に自分が「YEP_DamageCore」で組んだスキル「ファイアボール」の計算式になります。

<damage formula>
value = user.mat
value -= target.mdf / 2
value *= 2
value *= 100 - (Math.random() * Math.min(50, target.luk * target.luk / (user.luk / 2) / (user.luk / 2) * 5)) + 1
value /= 100
</damage formula>

おなじみの「術者の魔法攻撃力 - 対象の魔法防御力」の式の後にややこしい行がありますが、
要は「術者の運が対象と比べて大きいほど、ダメージのブレ幅が少なくなる」という表現をしています。
(もしかしたらもう少しスマートな書き方があったかもしれませんが、自分にはこれが限界でした・・・)

このrandomの計算式の部分を上手くアレンジ出来れば、
ステータスを参照した分散度の操作も可能だと思います。
焔 硝
記事: 2
登録日時: 2016年9月01日(木) 01:01

Re: ダメージ分散度の内部計算について

投稿記事by 焔 硝 » 2016年9月01日(木) 20:43

迅速且つ丁寧な解答ありがとうございます。

javaがさっぱりな私にとってとても参考になり、助かりました。
が、本当に我儘で申し訳ないのですが、
『全てのスキル(通常攻撃含む)に適応させたい』のと『対象者のステータスは考慮しない』方向で考えていましたので
同じ方法がとれないのがとても残念です・・・。

アルツールさんから頂いた知識を元にもう少し自身で何かできないか弄ってみようと思います。

引き続き情報があれば、と思いますので解決済みにはせず
もう少しの間トピックはそのままさせて下さい・・・。

“MV:質問” へ戻る