Project1

标题: 请问如何改变MV的百分比规则? [打印本页]

作者: nhycs01    时间: 2022-8-12 09:12
标题: 请问如何改变MV的百分比规则?
比如我给一个装备加上了攻击+50%的属性,这个时候,如果我的攻击力是100,穿上这个装备后,攻击力变成150,这没问题。
但是,我在上述的基础上,又穿了一件攻击+50%的装备,这时候系统默认的是在150攻击力的基础上再加50%,也就是150+75=225。
这时候问题来了,我想要的百分比效果是单纯的加法,还是上面的例子,也就是说总体增加了50%+50%的攻击力,那么角色最终的攻击力应该是100+50+50=200
不知道我是否描述清楚了。
因为我设计的装备有很多+百分比的属性,最后发现这样“利滚利”叠加起来,最后的属性远超我的希望值。
希望大佬们能告诉我如何改变MV的这一百分比规则,或者支支招也行。
作者: alexncf125    时间: 2022-8-12 09:44
本帖最后由 alexncf125 于 2022-8-12 10:05 编辑

那我支支招好了...

//这段是原本就有的代码, 其中this.traitsPi是乘法
Game_BattlerBase.prototype.paramRate = function(paramId) {
    return this.traitsPi(Game_BattlerBase.TRAIT_PARAM, paramId);
};

//这段是复制上面那段改的, 其中this.traitsSum是加法
Game_BattlerBase.prototype.paramRateSum = function(paramId) {
    return this.traitsSum(Game_BattlerBase.TRAIT_PARAM, paramId);
};

//这段也是原本就有的代码, 我加了两行console.log
//第一句console.log按你的设定会得出2.25
//第二句console.log按同样的设定会得出3
Game_BattlerBase.prototype.param = function(paramId) {
    var value = this.paramBase(paramId) + this.paramPlus(paramId);
    value *= this.paramRate(paramId) * this.paramBuffRate(paramId);
    console.log(this.paramRate(paramId));
    console.log(this.paramRateSum(paramId));

    var maxValue = this.paramMax(paramId);
    var minValue = this.paramMin(paramId);
    return Math.round(value.clamp(minValue, maxValue));
};
作者: nhycs01    时间: 2022-8-12 10:45
alexncf125 发表于 2022-8-12 09:44
那我支支招好了...

//这段是原本就有的代码, 其中this.traitsPi是乘法

感谢大佬指点,但是我按照你的方法修改以后,运行游戏直接是这样。





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1