ダメージ計算式入門
RPG Maker MV & MZ 完全ガイド
RPG Maker のダメージ計算式は、単なる JavaScript の式です。
通常の数学的な演算順序(PEMDAS)に従います:
- 括弧
- 指数
- 乗算と除算(左から右へ)
- 加算と減算(左から右へ)
そのため、a.atk * 4 - b.def * 2 は (a.atk * 4 - b.def) * 2 とは同じではありません。
順序を制御する必要がある場合は、必ず括弧を使用してください。
最も重要な2つの変数
a = 使用者(攻撃側)
b = 対象(防御側)
これらからほぼすべてのパラメータにアクセスできます:
a.atk, a.def, a.mat, a.mdf, a.agi, a.luk
a.hp, a.mp, a.tp, a.mhp, a.mmp
a.level, a.hpRate(), a.mpRate(), a.tpRate()
b についても同じオプションが存在します。
基本演算子
-
加算 → a.atk + 50
-
減算 → a.atk - b.def
-
乗算 → a.atk * 4
/ 除算 → a.atk / 2
% 剰余 → a.hp % 10
** 指数 → a.atk ** 2
便利な数学関数
Math.max(x, y) // 大きい方の値
Math.min(x, y) // 小さい方の値
Math.floor(x) // 切り捨て
Math.ceil(x) // 切り上げ
Math.round(x) // 四捨五入
Math.random() // 0 から 1 の間の値
Math.randomInt(n) // 0 から n-1 の間の整数
必須の計算式構築ブロック
-
クラシック物理攻撃
a.atk * 4 - b.def * 2 -
クラシック魔法攻撃
a.mat * 4 - b.mdf * 2 -
最大HPの割合
b.mhp * 0.25 -
現在/欠損HP
b.hp * 0.3
(b.mhp - b.hp) * 0.5 -
レベルスケール
a.atk * 2 + a.level * 5 -
最小ダメージ保証
Math.max(a.atk * 4 - b.def * 2, 1) -
変数の使用
a.atk * 4 - b.def * 2 + v[10] -
条件演算子(三項演算子)
a.hpRate() < 0.3 ? a.atk * 6 : a.atk * 4 -
属性倍率
(a.atk * 4 - b.def * 2) * b.elementRate(2)
実践的な完全な例
バランスの取れた物理スキル
Math.max(a.atk * 4 - b.def * 2, a.atk)
レベルスケール付き魔法
a.mat * 3 + a.level * 8 - b.mdf * 1.5
真のダメージ(防御を無視)
a.atk * 3
即死攻撃(HPが25%未満で強力)
b.hpRate() < 0.25 ? a.atk * 8 : a.atk * 3
重要な注意点とよくある落とし穴
- 変動値(ランダム要素)は計算式適用後に適用されます。
- クリティカルヒットは、計算式と変動値を適用した後の最終結果に掛けます(デフォルト×3)。
- 防御(ガード)は、それらすべてを適用した後にダメージを半減させます。
- 0 での除算はゲームをクラッシュさせます。必ず保護してください:
a.atk / Math.max(b.def, 1) - 非常に大きな数値は問題を引き起こす可能性があります。値を適切な範囲に保つか、Math.floor() を使用することを推奨します。
クイックリファレンスチートシート
a.atk * 4 - b.def * 2 // 基本物理攻撃
a.mat * 4 - b.mdf * 2 // 基本魔法攻撃
Math.max(a.atk * 4 - b.def * 2, 1) // 最小ダメージ1
b.mhp * 0.2 // 最大HPの20%
a.level * 10 + a.atk * 2 // レベルスケール
a.hpRate() < 0.5 ? a.atk * 5 : a.atk * 3 // 条件分岐
質問がある場合や、独自の計算式を共有したい場合は、お気軽に以下に投稿してください。
楽しい計算式作成を!