いつもお世話になっております。
表題について、例えば分散度が20%の攻撃スキルについて使用者の運を参照し
運が0~100の時:ダメージは80%~120%
運が100~200の時:ダメージは90%~120%
運が200~300の時:ダメージは100%~120%
運が300~400の時:ダメージは110%~120%
運が401以上の時:ダメージは120%
となるように処理をしたいと考えております。
何かよい手段や計算方法等がありましたら教えて頂きたいです。
よろしくお願いいたします。
【解決済み】運が高いほど分散度がよい方向に働くように処理する方法
【解決済み】運が高いほど分散度がよい方向に働くように処理する方法
最後に編集したユーザー Dante [ 2022年3月14日(月) 21:40 ], 累計 1 回
Re: 運が高いほど分散度がよい方向に働くように処理する方法
スキルの分散度の仕様を変更するのはプラグイン必須になると思います。Dante さんが書きました:いつもお世話になっております。
表題について、例えば分散度が20%の攻撃スキルについて使用者の運を参照し
運が0~100の時:ダメージは80%~120%
運が100~200の時:ダメージは90%~120%
運が200~300の時:ダメージは100%~120%
運が300~400の時:ダメージは110%~120%
運が401以上の時:ダメージは120%
となるように処理をしたいと考えております。
何かよい手段や計算方法等がありましたら教えて頂きたいです。
よろしくお願いいたします。
そこで、ダメージ計算式の中に分散度を含めてしまうのが、手っ取り早いと考えます。
ダメージ計算式で、行動者の運は a.luk で取得されます。
参考
https://tkool.jp/mv/guide/004_006d.html
Dante氏が求めているであろう、運でダメージが変動する分散度を算出する式は下記になります。
コード: 全て選択
Math.floor(Math.random() * (121 - Math.floor(Math.min(499, a.luk) / 100) * 10 - 80)) + Math.floor(Math.min(499, a.luk) / 100) * 10 + 80
例:デフォルトのスキル「攻撃」
元
コード: 全て選択
a.atk * 4 - b.def * 2
変更後
コード: 全て選択
(a.atk * 4 - b.def * 2) * (Math.floor(Math.random() * (121 - Math.floor(Math.min(499, a.luk) / 100) * 10 - 80)) + Math.floor(Math.min(499, a.luk) / 100) * 10 + 80) / 100
一応、ここに至るまでの過程を整理します。
100や200の値が重複しているので、100上がる毎に分散値の最低値が上がると判断しました。
(3桁目の数字だけで判別できるシンプル化にもなります)
条件を表に整理すると下記になると思います。
運最低値 運最高値 分散最低値 分散最高値
0 99 80 120
100 199 90 120
200 299 100 120
300 399 110 120
400 499 120 120
500 --- 120 120
※RPGツクールMVで運の最低値は1ですが、便宜上
つまり、
・分散最低値は運の3桁目が上がる毎に10上がる。
・運の影響は500未満まで。
・最高値は120で固定。
という条件になります。
最低分散度の値は下記で算出できます。
コード: 全て選択
Math.floor(Math.min(499, a.luk) / 100) * 10 + 80
Math.min は()内の数値の小さい方を使用
する関数です。
あとは、乱数の発生方法「Math.random()」を理解すれば、分かると思います。
参考
https://www.sejuku.net/blog/22432
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 運が高いほど分散度がよい方向に働くように処理する方法
ムノクラ様ムノクラ さんが書きました:スキルの分散度の仕様を変更するのはプラグイン必須になると思います。Dante さんが書きました:いつもお世話になっております。
表題について、例えば分散度が20%の攻撃スキルについて使用者の運を参照し
運が0~100の時:ダメージは80%~120%
運が100~200の時:ダメージは90%~120%
運が200~300の時:ダメージは100%~120%
運が300~400の時:ダメージは110%~120%
運が401以上の時:ダメージは120%
となるように処理をしたいと考えております。
何かよい手段や計算方法等がありましたら教えて頂きたいです。
よろしくお願いいたします。
そこで、ダメージ計算式の中に分散度を含めてしまうのが、手っ取り早いと考えます。
ダメージ計算式で、行動者の運は a.luk で取得されます。
参考
https://tkool.jp/mv/guide/004_006d.html
Dante氏が求めているであろう、運でダメージが変動する分散度を算出する式は下記になります。
この式に、本来のダメージ計算式を乗算すれば、分散値として働きます。コード: 全て選択
Math.floor(Math.random() * (121 - Math.floor(Math.min(499, a.luk) / 100) * 10 - 80)) + Math.floor(Math.min(499, a.luk) / 100) * 10 + 80
例:デフォルトのスキル「攻撃」
元
分散度:20%コード: 全て選択
a.atk * 4 - b.def * 2
変更後
分散度:0%コード: 全て選択
(a.atk * 4 - b.def * 2) * (Math.floor(Math.random() * (121 - Math.floor(Math.min(499, a.luk) / 100) * 10 - 80)) + Math.floor(Math.min(499, a.luk) / 100) * 10 + 80) / 100
一応、ここに至るまでの過程を整理します。
100や200の値が重複しているので、100上がる毎に分散値の最低値が上がると判断しました。
(3桁目の数字だけで判別できるシンプル化にもなります)
条件を表に整理すると下記になると思います。
運最低値 運最高値 分散最低値 分散最高値
0 99 80 120
100 199 90 120
200 299 100 120
300 399 110 120
400 499 120 120
500 --- 120 120
※RPGツクールMVで運の最低値は1ですが、便宜上
つまり、
・分散最低値は運の3桁目が上がる毎に10上がる。
・運の影響は500未満まで。
・最高値は120で固定。
という条件になります。
最低分散度の値は下記で算出できます。Math.floor は端数切捨てコード: 全て選択
Math.floor(Math.min(499, a.luk) / 100) * 10 + 80
Math.min は()内の数値の小さい方を使用
する関数です。
あとは、乱数の発生方法「Math.random()」を理解すれば、分かると思います。
参考
https://www.sejuku.net/blog/22432
こんばんわ。ご回答ありがとうございます。
計算方法を詳細に教えて頂きまして、本当にありがとうございます。
運の値と乱数で場合分けするしかないんじゃないかとか考えてたのですが、こうやって1つの式で表せられるのですね・・・全く考え付かなかったです。
おかげさまで運の使い道が1つ増えて嬉しい限りです。
改めまして、本当にありがとうございました。