ページ 1 / 1
[解決]ダメージ計算式を見直してほしい
Posted: 2024年7月14日(日) 23:22
by 公魚(わかさぎ)
最近になってMZを本格的に触り始めたのですが、敵用に設定した通常攻撃のダメージ計算式を
コード: 全て選択
a.atk * 4 - b.def + b.level * 2
と設定したところ、この式だと「攻撃力100のモンスターの攻撃を防御力1 レベル1の味方がダメージ0で耐えてしまう」ようです。試しに
コード: 全て選択
a.atk * 4 - b.def + b.level
や
コード: 全て選択
a.atk * 4 - b.def + b.level * 0.3
と設定しても同様でした。
出来ればアクターのレベルを組み込みつつ扱いやすい計算式にしたいのですが、何か良い案はありますでしょうか?
(無理ならば無理と言ってほしいです)
もう一点。こちらも無理ならばそれで良いのですが、ダメージ計算式に「武器の攻撃力、盾の防御力」を独立して組み込む事は可能でしょうか?
(こちらのイメージとしては
コード: 全て選択
a.atk * 3 + a.level * 0.3 - b.def * 2 + ※武器の攻撃力※
みたいにして、「武器を装備している限りダメージが0にならない」ようにしたいです)
以上2点、教えていただけますと幸いです。
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月15日(月) 06:14
by 剣崎 宗二
公魚(わかさぎ) さんが書きました:最近になってMZを本格的に触り始めたのですが、敵用に設定した通常攻撃のダメージ計算式を
コード: 全て選択
a.atk * 4 - b.def + b.level * 2
と設定したところ、この式だと「攻撃力100のモンスターの攻撃を防御力1 レベル1の味方がダメージ0で耐えてしまう」ようです。
こちら私の方でも新規プロジェクトでステータス調整を特にせず試してみましたが、ダメージが0になるような事態はありませんでした。
敵の攻撃力を思い切り上げても0ダメージでしょうか?
(その場合は式自体にエラーがあり、何かしら変な文字が入っていたりです)
公魚(わかさぎ) さんが書きました:
もう一点。こちらも無理ならばそれで良いのですが、ダメージ計算式に「武器の攻撃力、盾の防御力」を独立して組み込む事は可能でしょうか?
(こちらのイメージとしては
コード: 全て選択
a.atk * 3 + a.level * 0.3 - b.def * 2 + ※武器の攻撃力※
みたいにして、「武器を装備している限りダメージが0にならない」ようにしたいです)
「何も装備していない」際にエラーが出やすく判定が煩雑になるのであまり式でやる事はおすすめしませんが…
a.weapons()[0].params[2] で恐らく武器の攻撃力は出るかなと。
(私の場合はプラグインを自作してやるのでこういうやり方は明確には覚えてません。間違ってたら申し訳ないです)
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月15日(月) 15:03
by 公魚(わかさぎ)
剣崎 宗二様
回答ありがとうございます。新規プロジェクトで試してみたところ、正常なダメージ計算になっているのを確認しました。恐らく計算式を記述する際にミスがあったのだと思いますが、いま出先で元のプロジェクトには触れない状況ですので戻り次第確認いたします。
計算式に武器の攻撃力・盾の防御力を独立して組み込む方法も教えて頂きありがとうございました。こちらも後ほど試させていただきます
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月15日(月) 23:45
by 公魚(わかさぎ)
元のプロジェクトと新規プロジェクトを用意して検証しました。
- ☆元のプロジェクトでa.atk * 4 - b.def + b.level * 2を記述する→ダメ
☆元のプロジェクトのプラグインを全てオフにして戦闘テストする→ダメ
☆敵キャラの特徴「攻撃スキル」をa.atk * 4 - b.def + b.level * 2と記述した方の攻撃(スキルNo4)に設定する→ダメ
☆新規プロジェクトでa.atk * 4 - b.def + b.level * 2を記述する→OK
☆元のプロジェクトで記述した計算式を新規プロジェクトへコピペする→OK
☆元のプロジェクトの中身を新規プロジェクトに移し替える→ダメ
☆新規プロジェクトのスキルや職業、敵キャラを元のプロジェクトへコピペして戦闘テストする→ダメ
☆元のプロジェクトのコアスクリプトを1.8.0に更新する→ダメ
☆スキルNo1の「攻撃」の計算式を「a.atk * 3 + a.level * 0.3 - b.def * 2」から「a.atk * 4 - b.def * 2」に戻す→OK
☆敵キャラの特徴「攻撃スキル」はそのまま、行動パターンにスキルNo4の攻撃を設定する→OK
という結果で、つまり単純な設定ミスだったようです。(敵キャラの特徴「攻撃スキル」がどういう意味なのか分からなくなったのですが)ひとまず1つ目の質問はこれで解決といたします。ありがとうございました。
(2つ目の質問はまだ継続してます)
追記 スキルNo1の攻撃の計算式を再度a.atk * 3 + a.level * 0.3 - b.def * 2と記述した上で、敵キャラの行動パターンにスキルNo4の攻撃を設定しても問題なくダメージ計算されました
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月16日(火) 02:58
by Plasma Dark
攻撃スキル特徴は、以下の行動を指定したスキルに置き換えます。
- アクターが「攻撃」コマンドを選択した場合に取る行動
- 混乱したバトラーが取る行動
- 反撃率設定による反撃行動
敵キャラに「攻撃」コマンドを選択するという概念は存在しないので、攻撃スキル特徴は敵キャラにとっては混乱と反撃のみ、意味を持つことになります。
2つ目の質問はまだ継続してます
装備している武器の攻撃力をダメージ計算式内で参照する方法については、剣崎さんが答えてくださっている通りです。
二刀流のときどうすべきかとか、色々と考え始めると無限に複雑にできてしまうので、私としてもダメージ計算式の中で参照することは推奨しません。
「武器を装備している限りダメージが0にならない」ようにしたい
これを厳密に満たそうとすると、ダメージ計算式だけではどうにもなりません。
属性倍率、物理ダメージ率、魔法ダメージ率、分散、対象の防御によるダメージ減少が、ダメージ計算式を評価した後に行われるからです。
ダメージ計算式の評価結果について最低値を決めたいというのであれば Math.max を使って実現できそうですが、その後にかかる各種倍率まで考慮するとなると、プラグインを書く以外になさそうです。
ちょっと元が古いので変な仕様が混じってて微妙ではありますが、
ダメージの最低値を固定値で設定するプラグインなら公開しています。
Game_Action.prototype.minimumDamageValue を、ダメージの最低値を返す関数として追加しているので、それを適当に書き換えてカスタマイズするのが一番手っ取り早そうです。
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月16日(火) 07:51
by 公魚(わかさぎ)
Plasma Dark 様
回答ありがとうございます。特徴「攻撃スキル」は例えば「通常攻撃の代わりに炎が出てくる杖」や「混乱すると3回攻撃になって厄介になる敵」みたいな物を作る為にあると言う認識で間違いないでしょうか?
武器の攻撃力・盾の守備力を独立して組み込む方はまだ試していなかったので「後で試して報告します」と言う意味合いで継続としたのですが、言葉足らずだったようです。申し訳ありません。
それに、そこまで考慮するポイントが多いと思いませんでした。複雑になるのであれば、いっそ組み込まなくても良いかと思っております。
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月16日(火) 09:32
by Plasma Dark
特徴「攻撃スキル」は例えば「通常攻撃の代わりに炎が出てくる杖」や「混乱すると3回攻撃になって厄介になる敵」みたいな物を作る為にあると言う認識で間違いないでしょうか?
その通りです。
補足ですが、コード上では行動制約に「**を攻撃」が設定されたステートを混乱状態と定義しており、デフォルト設定の「激昂」「魅了」も混乱に含みます。
攻撃スキルに回復効果を持つスキルを設定して、激昂させるとこちらを回復してくれる敵とか、3回攻撃を攻撃スキルに設定して、魅了すると良いダメージソースになってくれる敵とか、工夫次第では面白い敵が作れそうです。
あんまりプレイヤーに不利な設定をすると、警戒されて混乱系統のステートそのものが使われなくなってしまう可能性もあるので、ゲームにおける混乱状態の立ち位置次第ではありますが、基本的にプレイヤーに有利になる設定をオススメしたいですね。
Re: ダメージ計算式を見直してほしい
Posted: 2024年7月17日(水) 00:00
by 公魚(わかさぎ)
Plasma Dark 様
追加の回答ありがとうございました!
問題が解消しましたので、これにて解決といたします。ご協力頂いた皆様に感謝申し上げます。