伤害公式入门指南
RPG Maker MV & MZ 完全指南
RPG Maker 中的伤害公式是普通的 JavaScript 表达式。
它们遵循标准的数学运算顺序(PEMDAS):
- 括号
- 指数
- 乘法与除法(从左到右)
- 加法与减法(从左到右)
因此,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
基本的公式构建模块
-
经典物理攻击
a.atk * 4 - b.def * 2 -
经典魔法攻击
a.mat * 4 - b.mdf * 2 -
最大生命值百分比
b.mhp * 0.25 -
当前/缺失生命值
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
处决(低于 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 // 条件判断
欢迎在下方提问或分享你自己的公式。
祝公式制作愉快!