教程:伤害公式入门

伤害公式入门指南
RPG Maker MV & MZ 完全指南

RPG Maker 中的伤害公式是普通的 JavaScript 表达式。
它们遵循标准的数学运算顺序(PEMDAS):

  1. 括号
  2. 指数
  3. 乘法与除法(从左到右)
  4. 加法与减法(从左到右)

因此,a.atk * 4 - b.def * 2 并不等同于 (a.atk * 4 - b.def) * 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


基本的公式构建模块

  1. 经典物理攻击
    a.atk * 4 - b.def * 2

  2. 经典魔法攻击
    a.mat * 4 - b.mdf * 2

  3. 最大生命值百分比
    b.mhp * 0.25

  4. 当前/缺失生命值
    b.hp * 0.3
    (b.mhp - b.hp) * 0.5

  5. 等级缩放
    a.atk * 2 + a.level * 5

  6. 最小伤害保证
    Math.max(a.atk * 4 - b.def * 2, 1)

  7. 使用变量
    a.atk * 4 - b.def * 2 + v[10]

  8. 条件(三元运算符)
    a.hpRate() < 0.3 ? a.atk * 6 : a.atk * 4

  9. 元素属性倍率
    (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

处决(低于 25% HP 时更强)
b.hpRate() < 0.25 ? a.atk * 8 : a.atk * 3


重要提示与常见陷阱

  • 随机波动是在公式计算之后应用的。
  • 暴击会乘以最终结果(默认 ×3),这是在公式 + 波动之后进行的。
  • 防御(Guard)会在其他所有计算之后将伤害减半。
  • 除以零会导致游戏崩溃。务必进行保护:
    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 // 20% 最大生命值
a.level * 10 + a.atk * 2 // 等级缩放
a.hpRate() < 0.5 ? a.atk * 5 : a.atk * 3 // 条件判断


欢迎在下方提问或分享你自己的公式。
祝公式制作愉快!

1 个赞