查看: 2297|回复: 2

[有事请教] 关于MZ的能力计算公式

[复制链接]
梦石
0
星屑
182
在线时间
74 小时
注册时间
2022-10-19
回帖
23
发表于 2022-10-31 14:47:56 | 显示全部楼层 |阅读模式
悬赏20星屑已解决
在MZ原版中,按百分比变动能力值的计算方式太简单,就是直接乘;
例如,人物有100的攻击力,一把武器有攻击力+50%的效果,一件盔甲也有攻击力+50%的效果;
那么,按照MZ原版的计算方式,能力值就是:100*150%*150%=225

我想把这种计算方式改为:100*(100%+50%+50%)=200
因为觉得这样更符合人的直观思维,也更好控制数据。

我该怎么做?

最佳答案

查看完整内容

Game_BattlerBase.prototype.traitsPi = function(code, id) { return this.traitsWithId(code, id).reduce((r, trait) => r * trait.value, 1); }; rmmz_objects.js第2830行左右有上述函数,可以看到它是将若干个【1和2之间的数】相乘。 只要将它改成下面的函数,就会变成【把那些数先全部减1,再相加,总和再加1】。 Game_BattlerBase.prototype.traitsPi = function(code, id) { return this.traitsWithId(code, id).re ...
梦石
2
星屑
8479
在线时间
463 小时
注册时间
2021-12-4
回帖
486

MZ评测员

发表于 2022-10-31 14:47:57 | 显示全部楼层
Game_BattlerBase.prototype.traitsPi = function(code, id) {
    return this.traitsWithId(code, id).reduce((r, trait) => r * trait.value, 1);
};
rmmz_objects.js第2830行左右有上述函数,可以看到它是将若干个【1和2之间的数】相乘。
只要将它改成下面的函数,就会变成【把那些数先全部减1,再相加,总和再加1】。
Game_BattlerBase.prototype.traitsPi = function(code, id) {
    return this.traitsWithId(code, id).reduce((r, trait) => r + trait.value - 1, 1);
};
这样,比如说对于两个1.2,上面的函数会得到1.44,下面的函数会得到1.4。
回复

使用道具 举报

梦石
0
星屑
182
在线时间
74 小时
注册时间
2022-10-19
回帖
23
 楼主| 发表于 2022-10-31 17:43:43 | 显示全部楼层
小秋橙 发表于 2022-10-31 14:47
Game_BattlerBase.prototype.traitsPi = function(code, id) {
    return this.traitsWithId(code, id).re ...

非常感谢!有效了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部